Zigbee end point auf ESP32-C6

OP #7844350
Lesenswert?

Ich möchte mir mit einem ESP32-C6 einen eigenen Zigbee-Sensor bauen. esp-idf habe ich installiert und die einfachen Beispiele (z.B. Lichtschalter) funktionieren und werden in Home Assistant problemlos erkannt.

Mein Sensor soll erst mal aus einer Temperatur/Luftfeuchtigkeitsmessung und drei "binary inputs" bestehen.

Nun ist mir trotz Lektüre der Espressif-docs und Internetsuche nicht klar, wie der Zigbee-Endpoint am besten aufgebaut wird.

In der Doku befindet sich eine Auflistung von "HA Automation Device Types". Muss ich mich an einen dieser halten, damit der EP von HomeAssistant erkannt wird? Kann ich einen Standard-Endpoint, in meinem Fall z.B. "temperature_sensor", erzeugen, und dann durch zusätzliche Cluster für die anderen Messgrössen (Feuchtigkeit, binary inputs) ergänzen? Oder sollten die Funktionen in separate EP eingepackt werden?

Und gibt es ev. Code-Beispiele, in welchen so was gemacht wird, so dass ich diese als Anhaltspunkt verwenden könnte? Die Espressif-Doku ist mehr eine Auflistung der einzelnen Funktionen ohne wirkliche Erklärung, wie diese zusammen verwendet werden.

OP #7844612
Lesenswert?

Danke für den Hinweis, ich habe diese Doku gerade angeschaut. Das sind halt die Beispiele, die Espressif mit dem sdk mitgeliefert, mit ein paar Code-Erläuterungen.

Meine Fragen sind wohl eher grundsätzlicher Natur.

Wenn ich z.B. Temperatur und Luftfeuchtigkeit messen möchte, nehme ich die Feuchtigkeit als weiteres Attribut in den Temperatur-Messcluster? Oder ist das dann ein weiterer Cluster im selben Endpoint? Wenn ich weiter "binary sensors" habe (3 Stück sollen es sein), kann ich diese da ebenfalls als Attribute mit in denselben Temperaturmesscluster reinpacken, oder geht das nicht, und es sind 3 weitere EP dafür notwendig? Oder ein "custom cluster", der die drei Signale kombiniert? Wenn ein "custom cluster", wird der dann in Home-Assistant erkannt?

Wenn ich mich da für einen vernünftigen Ansatz entschieden habe, stellt sich dann die Frage, wie ich das alles in Software implementiere. Wobei das weniger meine Sorge ist.

OP #7845426
Lesenswert?

Hier noch ein Beispiel für die Unklarheiten, die die Espressif-Doku bei mir zurücklässt:

Für das Reporting von Attributen gibt es die Funktion esp_zb_zcl_update_reporting_info.

Wie diese verwendet wird, ist aber nicht erklärt. Als Argument nimmt sie eine esp_zb_zcl_reporting_info_t entgegen. Welche Felder aber benötigt werden und welche nicht, ist nirgends beschrieben. In einem Beispiel wird diese struct dann so verwendet:

1
    esp_zb_zcl_reporting_info_t reporting_info = {
2
        .ep = ep_id,
3
        .direction = ESP_ZB_ZCL_CMD_DIRECTION_TO_SRV,
4
        .cluster_id = ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT,
5
        .cluster_role = ESP_ZB_ZCL_CLUSTER_SERVER_ROLE,
6
        .dst.profile_id = ESP_ZB_AF_HA_PROFILE_ID,
7
        .u.send_info.min_interval = 1,
8
        .u.send_info.max_interval = 0,
9
        .u.send_info.def_min_interval = 1,
10
        .u.send_info.def_max_interval = 0,
11
        .u.send_info.delta.u16 = 100,
12
        .attr_id = ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID,
13
        .manuf_code = ESP_ZB_ZCL_ATTR_NON_MANUFACTURER_SPECIFIC,
14
    };
15
    esp_zb_zcl_update_reporting_info(&reporting_info);

Das lässt für mich z.B. unklar, welche Felder spezifiziert werden müssen, und ob welche optional sind.

Ich frage mich da schon, ob es nicht irgendeine Art von Doku gibt, die das ausführt, und die ich noch nicht gefunden habe... So muss man sich von Beispiel zu Beispiel durchhangeln und raten. Für Standardanwendungen mag das gehen, aber wenn ich etwas abweichendes programmieren möchte, wird es schwierig...

#7846074
Lesenswert?

M. M. schrieb:

Das lässt für mich z.B. unklar, welche Felder spezifiziert werden müssen, und ob welche optional sind.

Die Doku von espressif bzgl. Zigbee ist noch sehr ausbaufähig und besteht im Wesentlichen aus Beispielcode.

Die Zigbee Cluster Library Doku ist da sehr hilfreich und erklärt auch welche Felder wofür da sind und erforderlich sind. (https://zigbeealliance.org/wp-content/uploads/2021/10/07-5123-08-Zigbee-Cluster-Library.pdf)

M. M. schrieb:

Welche Felder aber benötigt werden und welche nicht, ist nirgends beschrieben. In einem Beispiel wird diese struct dann so verwendet

Schau dir in der ZCL Doku mal das Kapitel 2.5.7 an. Dann erkennst du auch direkt die parallelen zum struct.

M. M. schrieb:

Wenn ich z.B. Temperatur und Luftfeuchtigkeit messen möchte, nehme ich die Feuchtigkeit als weiteres Attribut in den Temperatur-Messcluster?

Die ZCL definiert dafür separate Cluster. In deinem Fall (0x0402) für die Temperatur und (0x0405) für die Feuchtigkeit.

Wenn du dich auch an die Standard Cluster hälst erkennt HA das automatisch.

Die Zigbee Spezifikation wirst du früher oder später auch benötigen. (https://csa-iot.org/wp-content/uploads/2023/04/05-3474-23-csg-zigbee-specification-compressed.pdf)

#7970494
Lesenswert?

M. M. schrieb:

ESP32-C6

Hallo, ich habe aktuell eine ähnliche Herausforderung, bin auch schon ein paar Schritte weiter. U.a. bin ich auf den ESP32-H2 gewechselt, da ich wir Du Wifi nicht brauche, nur Zigbee. Aber das spielt für das grundsätzliche Verständnis keine Rolle. Leider finde ich aus dem ESP32 Forum von Espressif bislang keines wo man diesbezpglich diskutieren und Erfahrungen austauschen könnte. Dieses Forum hier beheimatet viele Profis mit hohem Wissensstand, Anfängern gegenüber ist man sehr kritisch eingestellt und erntet schnell Shit-Storms vom feinsten... man will ja niemand nerven aber manchmal braucht man trotz KI und jeder Menge Infos einfach mal etwas "menschliche" Unterstützung.

: Bearbeitet durch User
#7976284
Lesenswert?

Olli Z. schrieb:

M. M. schrieb:

ESP32-C6

Hallo, ich habe aktuell eine ähnliche Herausforderung, bin auch schon ein paar Schritte weiter. U.a. bin ich auf den ESP32-H2 gewechselt, da ich wir Du Wifi nicht brauche, nur Zigbee. Aber das spielt für das grundsätzliche Verständnis keine Rolle. Leider finde ich aus dem ESP32 Forum von Espressif bislang keines wo man diesbezpglich diskutieren und Erfahrungen austauschen könnte. Dieses Forum hier beheimatet viele Profis mit hohem Wissensstand, Anfängern gegenüber ist man sehr kritisch eingestellt und erntet schnell Shit-Storms vom feinsten... man will ja niemand nerven aber manchmal braucht man trotz KI und jeder Menge Infos einfach mal etwas "menschliche" Unterstützung.

Ja, der Austausch ist mir auch wertvoll:-) Leider scheint es noch wenig Austausch zu Zigbee-Devices mit ESP geben. Für Batteriebetriebene Geräte gibt es ja leider wenig Alternativen zu Zigbee. Es sieht jetzt ein bisschen so aus, als würde der Trend weg von Zigbee zu "Matter over Thread" gehen. Ikea macht es vor und stellt konsequent um (siehe https://esphome.io/components/openthread/), die "Dirigera Hubs" werden per update "Matter over Thread" tauglich. Habe mir überlegt, parallel zu Zigbee ein Thread-Netzwerk aufzubauen, welches dann über die Jahre die Zigbee-Geräte ablöst. Der Aufwand dazu ist ja minimal (zweiter Coordinator oder einer welcher Zigbee und Thread kann, wie z.B. die SLZB-MR-Serie). Damit wird es für uns Selberbauer interessant: ESPHome hat neu eine "Open Thread-Komponente" (siehe https://esphome.io/components/openthread/). So wie ich es verstanden habe, können damit schnell und einfach Sensoren mit Thread (ohne Matter) realisiert werden, basierend zB. auf dem ESP32-C6 oder ESP32-H2. Das könnte interessant werden...

: Bearbeitet durch User
#7976304
Lesenswert?

Richard B. schrieb:

Für Batteriebetriebene Geräte gibt es ja leider wenig Alternativen zu Zigbee.

Ja, das eigentlich dafür gedachte DECT ULE krankt an für Normalsterbliche verfügbaren Chips, Entwicklungskits und Dokumentation.

Wohl auch deswegen hat AVM sich vor einiger Zeit entschieden, einige neuere Fritzboxen auch für ZigBee zu öffnen.

https://fritz.com/blogs/fritz-entdecken/smart-home-zigbee-im-fritz-smart-home

Für andere Fritzboxen brauchts dann das "Fritz!smart Gateway", wenn man denn im AVM-Ökosystem bleiben will.

Das kann dann immerhin auch "Matter".

#7976574
Lesenswert?

Richard, ja das Matter Zeugs klingt interessant, sowohl mit Wifi als auch mit Thread. Für Batteriebetrieb kommt eh nur Thread in Frage. Die ESP32-H2 könnten das ja. Ich habe sogar Berichte gefunden die beschreiben das man Coordinator (nennt sich bei Matter wohl Border-Router?) und Router damit bauen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren