Backend
zigbee-controller
Zigbee-Geräte über Zigbee2MQTT und MQTT mit Apple HomeKit verbinden. Läuft vollständig im eigenen Netzwerk, ohne Cloud-Zugriff.
GoMQTTZigbee2MQTTHomeKit (HAP)Docker
Features
- HomeKit-Bridge über das HAP-Protokoll (brutella/hap): Lampen und Scrollrad erscheinen als native Apple-HomeKit-Accessories
- MQTT-Anbindung an Zigbee2MQTT (Eclipse Paho) mit bidirektionaler Zustandssynchronisierung zwischen HomeKit und den Geräten
- YAML-Konfiguration (Viper) für MQTT-Broker, HomeKit-Parameter und Geräte, inklusive Schnittstellen-Filter für die mDNS-Ankündigung im Docker-Host-Netzwerk
Code-Beispiel
Scrollrad-Dimmer: zwei MQTT-Befehle pro Geste (Start/Stop) statt eines Broadcasts pro Zwischenschritt. Die Lampe interpoliert die Helligkeit selbst
// Start beginnt das Dimmen in die angegebene Richtung.
// Ein bereits laufender Vorgang wird zuvor beendet.
func (d *Dimmer) Start(action zigbee.RemoteAction) {
dir := 0
switch action {
case zigbee.ActionBrightnessMoveUp:
dir = 1
case zigbee.ActionBrightnessMoveDown:
dir = -1
default:
return
}
d.Stop()
d.mu.Lock()
d.aktiv = true
d.generation++
d.mu.Unlock()
cmd := zigbee.BrightnessMoveCommand(d.rate * dir)
for _, b := range d.bulbs {
// Ausgeschaltete Lampen bleiben aus -- "brightness_move" würde sie
// ohnehin nicht wecken, aber so wird gar nicht erst gefunkt.
if on, _, _ := b.GetState(); !on {
continue
}
d.publishTo(b, cmd)
}
}