Zigbee

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

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. 1. Konfiguration prüfen (ohne Neustart)

```bash ha core check ```

prüft die `configuration.yaml` auf Fehler.

---

  1. 2. komplette Konfiguration neu laden (Neustart)

```bash ha core restart ```

lädt die gesamte YAML neu.

---

  1. 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.

---

  1. 4. nur MQTT neu laden

wenn du MQTT Entities geändert hast:

```bash ha mqtt reload ```

---

  1. 5. Alternative über Service Call

```bash ha service call homeassistant.reload_core_config ```

oder z. B.:

```bash ha service call mqtt.reload ```

---

  1. 6. wenn du Home Assistant Container nutzt

```bash docker restart homeassistant ```

---

  1. typische Nutzung

nach Änderung:

```bash ha core check ha core restart ```

---

  1. Ü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
  1. 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
  1. 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