Tasmota Zigbee Bridge to MQTT

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Antworten
Holger_OH
Beiträge: 3
Registriert: 12. Okt 2020 17:24

Tasmota Zigbee Bridge to MQTT

Beitrag von Holger_OH »

Hallo zusammen,

ich bin neu hier im Forum und habe eine Frage zu MQTT mit Json.

Ich verwende OH2.4 mit MQTT Binding 1.13. Der Grund für das alte MQTT sind sehr viele
Komponenten, die selbstgebaut und programmiert sind und die Umstellung recht viel Zeit benötigen würde.

Aber nun zu meiner Frage:
Ich habe neu die Sonoff ZB Bridge mit Tasmota 9.0.0.1 (Zigbee2MQTT), mit der ich inzwischen auch prima die Dimmer (Schalter) von IKEA auswerten und damit diverse Aktionen steuern kann. Nun möchte ich auch irgendwann mein HUE System damit ablösen und möchte auch Lampen steuern. Dafür wird ein Payload in Json an die Bridge gesendet. Leider klemmt es genau da bei mir. Ich bekomme irgendwie dieses Json nicht erzeugt. Ich benötige z.B. zum einschalten eine Meldung an:

Code: Alles auswählen

Topic:    zuhause/cmnd/ZigbeeBridge/ZBSend
Payload:  { "Device":"0x008F", "send":{"Power":"On"} }
Sinnigerweise sollte das Alles im Item stehen, also sowas wie:

Code: Alles auswählen

Switch   Zb_Licht1          "Zigbee Lampe 1" 		 (LivingRoom) ["Switchable"]  {mqtt=">[broker:zuhause/cmnd/ZigbeeBridge/ZBSend:......
wie ist es möglich diese Meldung zu generieren? Mit Javascript habe ich etwas herum probiert, jedoch habe ich davon nicht wirklich Ahnung und über {"Device":"0x008F"} bin ich nicht hinaus gekommen, der Rest fehlt leider.

Gibt es hier jemanden der mir helfen kann?

Grüße
Holger

Holger_OH
Beiträge: 3
Registriert: 12. Okt 2020 17:24

Re: Tasmota Zigbee Bridge to MQTT

Beitrag von Holger_OH »

Soweit habe ich das nun doch hinbekommen.

Das Item sieht wie folgt aus:

Code: Alles auswählen

Switch   Zb_Licht1          "Zigbee Lampe 1" 		 (LivingRoom) ["Switchable"]  {mqtt=">[broker:zuhause/cmnd/ZigbeeBridge/ZBSend:command:*:JS(setZigbee008F.js)],<[broker:zuhause/tele/ZigbeeBridge/SENSOR:state:JSONPATH($.ZbReceived.0x008F.Power):.*\"0x008F\",.*]"}
das zugehörige Script setZigbee008F.js

Code: Alles auswählen

(function(x){

    var result = new Object();
    result.Power = x;
   
    return JSON.stringify({ Device: "0x008F", "send": result });
       
})(input)
Ich brauche nun für jede Lampe ein persönliches Script, da ich es nicht schaffe die ID zu übergeben.
Leider funktioniert die Rückmeldung nicht richtig, denn gesendet wird "ON" oder "OFF", zurück kommt aber "1" oder "0". Das wird aber nicht ausgewertet, erwartet wir halt ON/OFF. Hat hier jemand eine Idee? Man könnte auch 0/1 senden, das würde auch funktionieren.

Code: Alles auswählen

2020-10-13 17:00:09.256 [WARN ] [b.core.events.EventPublisherDelegate] - given new state is NULL, couldn't post update for 'Zb_Licht1'
Grüße
Holger

Antworten