Zigbee
Allgemeines
Erst war ich skeptisch, ob Zigbee das Richtige als Ergaenzung fuer mein EIB/KNX ist. Es gab tatsaechlich in meinem Haus einen Fall, bei dem die vorhandene Elektroinstallation es nicht erlaubte eine Leuchte direkt (ohne Kernbohrungdurch die Stahlbetondecke) an den KNX anzuschlieszen. WLAN fuer 230V-Schalter war fuer mich OK. Die Datenerfassung von Temperatur, Praesenz, usw. per KNX war an vielen Stellen aber schlecht oder gar nicht moeglich. Neben WLAN habe ich jetzt noch ein Zigbee-Netz installiert.
Vorabueberlegungen
- Matter ist keine Alternative. Es ist einfach noch nicht soweit.
- Ich brauche keine App-Unterstuetzung.
- Die Integration in Home Assistant soll nur ueber MQTT laufen.
NB: HA zu einer Eierlegendenwollmilchsau zu machen halte ich fuer keine gute Idee. Das heiszt fuer mich so viel als geht in MQTT zentieren und in HA (oder FHEM) die Automation hinterlegen. ZHA ist ueberfluessig. Zigbee2MQTT im docker auf meinem Homeserver war die beste Wahl.
Startschwierigkeiten
Nach der Installation von Zigbee2MQTT auf dem Homeserver habe ich auch eine Zigbee-Coordinator Anbindung über LAN probiert. Ich habe aber der USB-Stick Anbindung den Vorzug gegeben.
Erst hatte ich den default Kanal 11 belassen, aber schnell festgestellt, dass die Zigbees gegen mein WLAN (6 APs im Haus verteilt) nicht angkommen (Verbindungsabbrueche).
Zigbee unbedingt Kanal 25 einstellen.
Die zweite Huerde war, dass ich die notwendige Anzahl der Router unterschaetzt habe.
Nur steckerbetriebene Devices besitzen Routerfunktionalitaet.
Das fuehrte dazu, dass ich 10 weitere Smartplugs installiert habe, einfach nur um das Netz zu stabilieren.
Der durchschnittliche Abstand fuer ein stabiles Netz ist beim mir etwa 5 Meter.
Was ich nervig finde ist, dass auf den Devices die IEEE-Address nicht abgedruckt ist. Ich habe schon nach den ersten 10 Devices (mittlerweile ueber 50) den Ueberblick verloren. Also alles auf Anfang und nach jedem Join direkt die IEEE-Address auf das Device geschrieben und gleich in Zigbee2MQTT den Installationsort in der Device-Beschreibung vermerkt.
HA Automation
HA ist zwar ganz nett, aber das unendliche Geklicke nur um einen Schalter mit einem Socket (Geraet) zu verbinden finde ich nervig.
Was ich brauche ist schnell und einfach eine Verknuepfung Zigbee -> MQTT -> Zigbee/KNX oder KNX -> MQTT -> Zigbee
Um die Zigbee/MQTT Entitaeten anzusprechen benoetige ich zu Eintragung in die 'automation.yaml' nur den entsprechenden Topic. Bei KNX habe ich noch keine einfachere Loesung gefunden als den "Umweg" ueber eine entity_id zur gehen. Hier mein erstes Testbeipsiel.
- id: '1774891422778'
alias: Licht_indirekt
description: ''
triggers:
- trigger: mqtt
options:
topic: zigbee2mqtt/0x00124b002919efa7
conditions:
- condition: template
value_template: '{{ trigger.payload_json.action == ''single'' }}'
actions:
- action: light.toggle
metadata: {}
data: {}
target:
entity_id: light.ug_r8_hobby_licht_indirekt
mode: single
In dem Automationen-GUI wird der Eintrag in 3 Portionen angeboten.
Sobald (triggers)
trigger: mqtt options: topic: zigbee2mqtt/0x00124b002919efa7
Und wenn (conditions)
condition: template
value_template: "{{ trigger.payload_json.action == 'single' }}"
Dann
action: light.toggle
metadata: {}
data: {}
target:
entity_id: light.ug_r8_hobby_licht_indirekt <- KNX.Entity
Eine Unique_ID kann man nicht selbst vergeben! [1]
Um eine KNX-Gruppenadresse anzusprechen muss/sollte eine Entitaet (in der KNX YAML) angelegt sein. Dann kann sie ueber die entity_id angesprochen werden.
Beispiel Licht:
knx:
light:
- name: Wohnzimmer Licht
address: "1/2/3"
danach existiert die Entity:
light.wohnzimmer_licht
D.h. der Entity-Name ergibt sich aus dem Namen in LowerCase und Unterstrichen.
Eine schnelle Loesung zum Testen geht auch mit:
Alternative: KNX direkt per Service ansprechen
ohne vorher eine Entity anzulegen:
action:
- service: knx.send
data:
address: "1/2/3"
payload: true
oder:
action:
- service: knx.send
data:
address: "1/2/3"
payload: 1
Beispiel Dimmwert senden
action:
- service: knx.send
data:
address: "1/2/5"
payload: 50
HA "Programmierung"
Bei **Home Assistant** kannst du die `configuration.yaml` **nicht komplett per CLI neu laden**, aber du kannst:
- die Konfiguration prüfen
- Home Assistant neu starten
- einzelne YAML-Bereiche neu laden
Hier sind die relevanten Befehle.
---
- 1. Konfiguration prüfen (ohne Neustart)
```bash ha core check ```
prüft die `configuration.yaml` auf Fehler.
---
- 2. komplette Konfiguration neu laden (Neustart)
```bash ha core restart ```
lädt die gesamte YAML neu.
---
- 3. nur YAML neu laden (ohne Neustart)
nicht alles kann hot-reload, aber viele Bereiche schon:
```bash ha core reload ```
lädt unterstützte YAML-Komponenten neu.
---
- 4. nur MQTT neu laden
wenn du MQTT Entities geändert hast:
```bash ha mqtt reload ```
---
- 5. Alternative über Service Call
```bash ha service call homeassistant.reload_core_config ```
oder z. B.:
```bash ha service call mqtt.reload ```
---
- 6. wenn du Home Assistant Container nutzt
```bash docker restart homeassistant ```
---
- typische Nutzung
nach Änderung:
```bash ha core check ha core restart ```
---
- Übersicht
| Zweck | Befehl | | ----------------- | --------------- | | config prüfen | ha core check | | alles neu laden | ha core restart | | teilweises reload | ha core reload | | mqtt reload | ha mqtt reload |
---
wenn du möchtest, kann ich dir auch zeigen:
- welche YAML Teile ohne Neustart reloadbar sind
- wie man YAML Fehler schneller findet
- wie man config automatisch prüfen lässt
KNX Geraete Verwirrung
In Home Assistant bilden Integration, Gerät und Entität eine Hierarchie. Der Unterschied ist wichtig, weil viele Einstellungen davon abhängen.
Kurz gesagt:
Integration → Gerät → Entität
1 Integration
Die Integration ist die Schnittstelle zu einem System oder Protokoll.
Beispiele:
- MQTT
- KNX
- Zigbee
- Zigbee2MQTT
- ZHA
- Philips Hue
Eine Integration:
- stellt Verbindung her
- organisiert Kommunikation
- erzeugt Geräte und Entitäten
2 Geraet (Device)
Ein Gerät ist ein physisches oder logisches Gerät im System.
Beispiele:
- Zigbee Temperatursensor
- KNX Aktor
- WLAN Steckdose
- Kamera
Ein Gerät kann mehrere Funktionen haben.
Beispiel Zigbee Sensor:
Gerät:
Temperatursensor Wohnzimmer
Eigenschaften:
- Hersteller
- Modell
- Firmware
- Verbindung (z. B. Zigbee Router)
3 Entität (Entity)
Die Entität ist der einzelne messbare oder steuerbare Wert.
Beispiele:
sensor.wohnzimmer_temperatur
sensor.wohnzimmer_luftfeuchte
sensor.wohnzimmer_batterie
Alle gehören zum selben Gerät.
Eine Entität hat:
- Zustand (state)
- Attribute
- Einheit
- device_class
Beispiel komplett
Zigbee Multisensor
Integration
Zigbee2MQTT
Gerät
Multisensor Wohnzimmer
Entitäten
sensor.wohnzimmer_temperatur
sensor.wohnzimmer_luftfeuchte
sensor.wohnzimmer_batterie
binary_sensor.wohnzimmer_bewegung
Beispiel KNX Aktor
Integration
KNX
Gerät
Schaltaktor Flur
Entitäten
switch.flur_licht
sensor.flur_strom
Darstellung im Home Assistant UI
Integration
Einstellungen → Geräte & Dienste
Geräte
Geräteseite mit Eigenschaften
Entitäten
einzelne steuerbare Objekte
Merksatz
Integration = Verbindung zum System
Gerät = physisches Objekt
Entität = einzelne Funktion oder Messwert
Typische Verwechslung
Viele denken:
Gerät = Entität
Das stimmt nicht.
Ein Gerät enthält meist mehrere Entitäten.
Beispiel aus der Praxis
Steckdose mit Messfunktion:
Gerät:
Zigbee Steckdose Küche
Entitäten:
switch.steckdose_kueche
sensor.stromverbrauch_kueche
sensor.spannung_kueche
sensor.energie_kueche
Warum das wichtig ist
Unterschied relevant für:
- Automationen
- Dashboard
- Geräteverwaltung
- Diagnose
- Gruppierung
Automationen arbeiten meist mit:
Entitäten
Wenn du möchtest, kann ich dir auch zeigen:
- wie Entitäten intern aufgebaut sind
- wie entity_id entsteht
- wann Home Assistant kein Gerät erzeugt
- warum MQTT oft nur Entitäten ohne Gerät erzeugt
Bei KNX und Home Assistant treffen zwei unterschiedliche Konzepte aufeinander:
- KNX ist telegramm- und funktionsorientiert
- Home Assistant ist geräte- und entitätsorientiert
Dadurch entsteht oft Verwirrung.
Gesamtübersicht
KNX Welt Home Assistant Welt
------------------------------------------------------------
physikalische Adresse → Gerät (Device)
Gruppenadresse → Entität (Entity)
Funktion im Aktor → Entität (Entity)
KNX Busgerät → Gerät (Device)
Physikalische Adresse (KNX)
Die physikalische Adresse identifiziert ein konkretes KNX-Gerät im Bus.
Format:
Bereich.Linie.Teilnehmer
z. B.
1.1.15
Eigenschaften:
- eindeutig im KNX Bus
- gehört zu einem realen Gerät
- wird für Programmierung und Diagnose verwendet
- wird normalerweise nicht direkt in Home Assistant genutzt
Beispiel:
1.1.20 = KNX Schaltaktor im Schaltschrank
Gruppenadresse (KNX)
Die Gruppenadresse ist die wichtigste Adresse für die Funktion.
Format:
Hauptgruppe/Mittelgruppe/Untergruppe
z. B.
1/2/10
Sie beschreibt:
Funktion
- B.:
1/2/10 = Licht Wohnzimmer EIN/AUS
KNX arbeitet primär über Gruppenadressen.
Mehrere Geräte können dieselbe Gruppenadresse verwenden:
Beispiel:
- Taster sendet
- Aktor empfängt
Geraet (Home Assistant)
Ein Geraet ist die Zusammenfassung von Funktionen eines realen Geräts.
Beispiel:
KNX Schaltaktor 8-fach
enthält mehrere Kanäle:
- Kanal A
- Kanal B
- Kanal C
In HA:
Gerät = KNX Aktor
4️⃣ Entitaet (Home Assistant)
Jede Funktion eines KNX-Geräts wird eine Entität.
Beispiel:
switch.licht_wohnzimmer
light.kueche
cover.rollladen_buero
sensor.temperatur_bad
Jede Entität verwendet eine oder mehrere Gruppenadressen.
Beispiel KNX Schaltaktor 4-fach
KNX:
physikalische Adresse:
1.1.20
Gruppenadressen:
1/1/1 Licht Küche
1/1/2 Licht Flur
1/1/3 Licht Bad
1/1/4 Licht Büro
Home Assistant:
Gerät:
KNX Aktor 4fach
Entitäten:
switch.licht_kueche
switch.licht_flur
switch.licht_bad
switch.licht_buero
Beispiel configuration.yaml
knx:
switch:
- name: licht_kueche
address: "1/1/1"
state_address: "1/1/101"
- name: licht_flur
address: "1/1/2"
state_address: "1/1/102"
Beziehung im Detail
physikalische Adresse
identifiziert:
Hardware-Gerät im KNX Bus
wird hauptsächlich genutzt für:
- ETS Programmierung
- Diagnose
- Busmanagement
Gruppenadresse
definiert:
Funktion im Gebäude
- B.:
- Licht schalten
- Dimmen
- Temperatur messen
- Jalousie fahren
Entität
repräsentiert:
eine Funktion als Objekt in Home Assistant
Wichtig zu verstehen
Home Assistant kennt normalerweise:
Gruppenadresse
aber nicht zwingend:
physikalische Adresse
HA arbeitet funktionsorientiert.
Beispiel Taster
KNX:
physikalische Adresse:
1.1.10
sendet Gruppenadresse:
1/1/1
Home Assistant:
keine eigene Entität notwendig, da der Aktor reagiert.
Optional:
binary_sensor.taster_wohnzimmer
wenn Status gewünscht.
Sonderfall: mehrere Gruppenadressen pro Entität
Dimmer:
knx:
light:
- name: wohnzimmer
address: "1/2/1"
state_address: "1/2/2"
brightness_address: "1/2/3"
brightness_state_address: "1/2/4"
Eine Entität nutzt mehrere Gruppenadressen.
Merkschema
physikalische Adresse
= KNX Hardware Adresse
Gruppenadresse
= KNX Funktion
Gerät
= KNX Gerät logisch zusammengefasst
Entität
= einzelne Funktion eines Geräts
Praxisregel
Wenn du in Home Assistant arbeitest:
→ du brauchst meist nur die Gruppenadresse
die physikalische Adresse ist nur relevant für:
- ETS
- Diagnose
- Busstruktur