Forum: Mikrocontroller und Digitale Elektronik Zigbee end point auf ESP32-C6


von M. M. (anonusr)


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.

von Christoph K. (backdraft007)


Lesenswert?

Warum muss das Zigbee sein?
Geht nicht auch einfach ESPHome?
https://www.home-assistant.io/integrations/esphome/

von M. M. (anonusr)


Lesenswert?

Christoph K. schrieb:
> Warum muss das Zigbee sein?
> Geht nicht auch einfach ESPHome?
> https://www.home-assistant.io/integrations/esphome/

Mein ganzen bestehendes Netzwerk ist Zigbee, und ich möchte dabei 
bleiben.

von Helmut -. (dc3yc)


Lesenswert?

Hast du auch die Seiten von Seeed Studio gelesen? Da steht eine Menge 
drin! https://wiki.seeedstudio.com/xiao_esp32c6_zigbee/

von M. M. (anonusr)


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.

von M. M. (anonusr)


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](https://docs.espressif.com/projects/esp-zigbee-sdk/en/latest/esp32/api-reference/zcl/esp_zigbee_zcl_command.html?highlight=esp_zb_zcl_update_reporting_info#_CPPv432esp_zb_zcl_update_reporting_infoP27esp_zb_zcl_reporting_info_t).

Wie diese verwendet wird, ist aber nicht erklärt. Als Argument nimmt sie 
eine 
[esp_zb_zcl_reporting_info_t](https://docs.espressif.com/projects/esp-zigbee-sdk/en/latest/esp32/api-reference/esp_zigbee_type.html#_CPPv427esp_zb_zcl_reporting_info_s) 
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...

von Pit S. (pitschu)


Lesenswert?

Schau mal auf github und gebe ESP32C6 im Suchfeld ein, da kommen zig 
Beispiele. Ich habe mit dem C6 schon Sensoren und auch RGB Steuerung 
realisiert.

von Ko (emko)


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)

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.