Zum Inhalt springen
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)
	}
}