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.
Warum muss das Zigbee sein? Geht nicht auch einfach ESPHome? https://www.home-assistant.io/integrations/esphome/
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.
Hast du auch die Seiten von Seeed Studio gelesen? Da steht eine Menge drin! https://wiki.seeedstudio.com/xiao_esp32c6_zigbee/
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.
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...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.