NEWS
Zigbee Adapter + MQTT an Zigbee Devices
-
Hallo liebe IoBroker Gemeinde,
ich bin relativ neu hier habe aber eine "steile Lernkurve" hinter mir, und brauche jetzt einen Tipp.Ich habe neulich einen Nedis (=Siterwell GS361A-H04/Tuya) Heizkörperthermostat Zigbee Heizkörperthermostat gekauft und mir bei Koenkk die Schnittstellen angeschaut. Leider passen die Beschreibungen dort so garnicht zu den Datenpunkten, die im IoBroker angelegt werden. Bspw. kann ich, entgegen der Doku bei Zigbee2Mqtt.io manche Parameter nicht setzen. Es sollte eigentlich einen Switch geben der den "window_detection" mode umschaltet ("Fenster offen-Erkennung"), im IoBroker wird nach dem Pairing ein read-only Datenpunkt "window_detected" angelegt - Setzen kann ich da garnichts.
Ich würde also gerne "experimentell" mit diesem einen Gerät gerne direkt MQTT Nachrichten austauschen können und frage mich, wie ich das am Besten bewerkstellige.
Wenn ich es richtig verstanden habe, könnte ich den Zigbee Adapter deaktivieren und alles von Hand mit dem MQTT Adapter und Zigbee2MQTT lösen - aber ich schätze den Komfort den der ZigbeeAdapter bietet, bei den anderen Geräten sehr.
Gibt es da eine Chance, eine MQTT-basierte Kommunikation ohne den Zigbee Adapter rauszuwerfen?
-
gelöscht
-
@schlaubstar bevor du was anfängst
packe den bitte erstmal unter ausschliessen Tab rein
.. kommt dann der Datenpunkt ??
adapter neustarten nicht vergessenund welche Adapterversion ist installiert ?
-
@schlaubstar sagte in Zigbee Adapter + MQTT an Zigbee Devices:
Wenn ich es richtig verstanden habe, könnte ich den Zigbee Adapter deaktivieren und alles von Hand mit dem MQTT Adapter und Zigbee2MQTT lösen - aber ich schätze den Komfort den der ZigbeeAdapter bietet, bei den anderen Geräten sehr.
Gibt es da eine Chance, eine MQTT-basierte Kommunikation ohne den Zigbee Adapter rauszuwerfen?Nein, diese Option gibt es nicht.
Du kannst versuchen über den Datenpunkt
Send to Device
(ab1.6.161.6.17 bzw. einer 1.6.16 die nach dem 1.3.2022 von Github installiert wurde) oder die FunktionsendToDevice
Daten an das Gerät in der Form zu senden wie es auf zigbee2mqtt.io beschrieben ist.Beispiel:
Die Beschreibung auf Zigbee2mqtt beinhaltet die folgende Beschreibung:
Switch
The current state of this switch is in the published state under the window_detection property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"window_detection": "ON"}, {"window_detection": "OFF"} or {"window_detection": "TOGGLE"}. It's not possible to read (/get) this value.Sofern du den neusten Zigbee Adapter nutzt kannst du
"{'window_detection':'on'}
in den DatenpunktSend to Device
hinein schreiben. Ein Beispiel wie es ohne diesen Datenpunkt direkt aus einem Skript heraus geht findest du hier:
https://forum.iobroker.net/topic/51361/zigbee-wie-oft-erfolgt-aktualisierung/57?_=1646812228118A.
-
@arteck Hey: vielen lieben Dank. Nach dem "Ausschluss" und Neustart ist der Datenpunkt, sowie einige weitere die mehr mit der Doku übereinstimmen sofort dagewesen ! Adaperversion ist v1.6.16
Ich habe, weil er dann die falschen Datenpunkte hatte, das Device gelöscht und neu gepaired und jetzt scheint zumindest von der Struktur der Datenpunkte her alles zu passen.@asgothian Leider habe ich, auch nach dem Löschen und re-pairen, den Datenpunkt "sendToDevice" nicht, auch wenn die JavaScript Lösung funktioniert hat. Zwar brauche ich ihn eigentlich nicht mehr, denn nach dem Exclude stimmen ja die Datenpunkte mit den tatsächlich steuerbaren Parametern überein, aber es wäre cool zu wissen, wie ich ihn herbekommen könnte, z.B. um wie in dem von Dir verlinkten Thread, Kalibrierungsdaten einfach übermitteln zu können?
Auf jeden Fall: Vielen Dank an Euch beide, für den klasse support !
-
- Ich musste leider feststellen das meine Anpassung am Adapter 1.6.16 nicht in der Version vorhanden ist die im latest und stable verfügbar ist. Daher ist der Datenpunkt selber erst ab 1.6.17 verfügbar, bzw. in der aktuellen 1.6.16 Github Version.
- Es ist nicht notwendig ein Gerät zu löschen und neu anzulegen um die States "aufzuräumen". Dazu gibt es den sogenannten "state cleanup" Button im Adapter:
Über diesen werden alle die Datenpunkte im Namespace des Zigbee Adapters gelöscht die nicht mit einer Zigbee-Funktion hinterlegt sind. Datenpunkte mit angehängten Konfigurationen (History, SQL, Lovelace, ...) werden nur dann gelöscht wenn der entsprechende Haken auch gesetzt wird.
A.
-
@asgothian Hi Asgothian, vielen Dank erneut.
Wie gesagt: Nachdem die jetzigen Punkte perfekt mit echten "features" korellieren und ich die JavaScript Lösung auch gut im Griff habe, bin ich bedient.
Ich habe, aus Neugier, natürlich mal den Adapter von GitHub installiert und dann war auch der Datenpunkt sofort da, ich bin dann aber wieder zurück zur letzten "stable" weil:host.iobroker-pi 2022-03-10 10:56:46.582 warn Do not restart adapter system.adapter.zigbee.0 because restart loop detected host.iobroker-pi 2022-03-10 10:56:46.576 error instance system.adapter.zigbee.0 terminated with code 6 (UNCAUGHT_EXCEPTION) host.iobroker-pi 2022-03-10 10:56:46.576 error Caught by controller[1]: at Zigbee.publishFromState (/opt/iobroker/node_modules/iobroker.zigbee/main.js:507:19) host.iobroker-pi 2022-03-10 10:56:46.575 error Caught by controller[1]: at Array.forEach (<anonymous>) host.iobroker-pi 2022-03-10 10:56:46.575 error Caught by controller[1]: at /opt/iobroker/node_modules/iobroker.zigbee/main.js:520:26 host.iobroker-pi 2022-03-10 10:56:46.574 error Caught by controller[1]: TypeError: this.warn is not a function host.iobroker-pi 2022-03-10 10:56:46.573 error Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: zigbee.0 23967 2022-03-10 10:56:45.931 warn Terminated (UNCAUGHT_EXCEPTION): Without reason zigbee.0 23967 2022-03-10 10:56:45.382 error this.warn is not a function zigbee.0 23967 2022-03-10 10:56:45.380 error TypeError: this.warn is not a function at /opt/iobroker/node_modules/iobroker.zigbee/main.js:520:26 at Array.forEach (<anonymous>) at Zigbee.publishFromState (/opt/iobroker/node_modules/iobroker.zigbee/main.js:507:19) zigbee.0 23967 2022-03-10 10:56:45.378 error unhandled promise rejection: this.warn is not a function zigbee.0 23967 2022-03-10 10:56:45.376 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). host.iobroker-pi 2022-03-10 10:55:52.766 error instance system.adapter.zigbee.0 terminated with code 6 (UNCAUGHT_EXCEPTION) host.iobroker-pi 2022-03-10 10:55:52.765 error Caught by controller[1]: at Zigbee.publishFromState (/opt/iobroker/node_modules/iobroker.zigbee/main.js:507:19) host.iobroker-pi 2022-03-10 10:55:52.764 error Caught by controller[1]: at Array.forEach (<anonymous>) host.iobroker-pi 2022-03-10 10:55:52.763 error Caught by controller[1]: at /opt/iobroker/node_modules/iobroker.zigbee/main.js:520:26 host.iobroker-pi 2022-03-10 10:55:52.763 error Caught by controller[1]: TypeError: this.warn is not a function host.iobroker-pi 2022-03-10 10:55:52.754 error Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: zigbee.0 20681 2022-03-10 10:55:52.117 warn Terminated (UNCAUGHT_EXCEPTION): Without reason
das kann natürlich durch einen falsch formatierten "Anführungszeichen" stammen, weil ich sowohl {'window_detection':'on'} als auch {"window_detection":"on"} versucht hatte aber am Ende bin ich wieder zurück auf die latest stable (also 1.6.16)
-
@schlaubstar Danke fuer den Hinweis - das schaue ich mir nochmal an.
A.