MQTT Problem beim Tasmota Sonoff Zigbee

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Mordi
Beiträge: 32
Registriert: 24. Jan 2021 14:54

MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von Mordi »

Guten Abend,

wieso geht mein Befehl nicht?
Er soll doch nur das Licht an und aus schalten.
Im Command habe ich das: ZbSend {"Device":"0x1BAC", "Send":{"Power":true}}


UID: mqtt:topic:9f9f871918:ae39436dcd
label: tasmota_zigbee_controller
thingTypeUID: mqtt:topic
configuration:
payloadNotAvailable: OFF
payloadAvailable: ON
bridgeUID: mqtt:broker:4595f8b14b
location: System
channels:
- id: Schlafzimmerdeckenleuchte
channelTypeUID: mqtt:switch
label: Schlafzimmerdeckenleuchte
description: ""
configuration:
commandTopic: cmnd/tasmota_E32AEB/ZbSend{"Device":"0x1BAC",
"Send":{"Power":ON:true OFF:false}}

Ich steh total auf dem Schlauch -.-

Bitte, helft mir :(

Mit freundlichen Grüßen,

Mordi

Mordi
Beiträge: 32
Registriert: 24. Jan 2021 14:54

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von Mordi »

Guten Morgen.

Problem halb gelöst.
Hab einfach den Commandstring geändert in:
OFF = cmnd/tasmotaxyz/ZbSend {"Device":"0x1BAC", "Send":{"Power"false}}
ON = cmnd/tasmotaxyz/ZbSend {"Device":"0x1BAC", "Send":{"Power":true}}

Das Licht kann hierdurch aus und eingeschaltet werden.
Nun, wie integriere ich dann den Stat/tasmota/ wenn ich den Lichtschalter Manuell schließe?
Denn wenn ich das tu, dann wird dies im OpenHAB3 nicht wahrgenommen.

Es kommt ein command mit ZbReceived an, diesen muss ich doch weitergeben können im MQTT.
Ich kann den Command in der Konsole selbst nicht abfragen.

Vielen herzlichen Dank!
Lucas

Benutzeravatar
udo1toni
Beiträge: 13867
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von udo1toni »

Also, erstmal kommt kein Command an, sondern ein State ;)

Und dann ist die RF Bridge halt schon ein bisschen spezieller. Ich habe selbst keine RF Bridge, kann da also auch nur raten. Grundsätzlich ist es aber so, dass Du das commandTopic eintragen musst und das stateTopic ebenso eintragen musst. Für beide Richtungen kannst Du (bzw. musst Du) jeweils eine passende Transformation einriuchten. Wie erwähnt habe ich selbst kein entsprechendes Objekt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Mordi
Beiträge: 32
Registriert: 24. Jan 2021 14:54

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von Mordi »

Hallo Udo.

Ja meinte ich doch.
Ich muss doch bestimmt den state mit gerätezuordnung an openHAB weitergeben.
Oder einfach nur stat/tasmotaxyz/ ?
Woher weiß dann OpenHAB welcher Stat zu welchem Item gehört?
Hast du mir den genauen state Befehl? 😅

Lucas

Benutzeravatar
udo1toni
Beiträge: 13867
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von udo1toni »

udo1toni hat geschrieben: 12. Feb 2021 20:48 Wie erwähnt habe ich selbst kein entsprechendes Objekt.
;)

Mein Rat: Nimm einen mqtt Sniffer (z.B. mqtt.fx oder - mein bevorzugter - mqtt spy), sende den korrekten Befehl zum Schalten und schau, was als Antwort zurück kommt.
Aus der Antwort kannst Du sowohl das Topic als auch die nötige Transformation ableiten.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Mordi
Beiträge: 32
Registriert: 24. Jan 2021 14:54

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von Mordi »

Hallo Udo,

nun habe ich die Wichtigsten Geräte mit MQTT.FX ausgelesen.

Dies ist ein Lichtschalter der einen Zigbee schaltet.

tele/tasmota:E32AEB/Sensor

mit

{"ZbReceived":{"0x1BAC":{"Device":"0x1BAC","Power":0,"Endpoint":1,"LinkQuality":65}}}

Hier möchte ich lediglich nur die Power auslesen.

Bzw. bei

tele/tasmota_Schlafzimmer_Lucas_Bett/STATE

Power1; Power2; Power 3; Power 4

{"Time":"2021-02-15T23:01:32","Uptime":"4T00:03:53","UptimeSec":345833,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":21,"MqttCount":45,"POWER1":"ON","POWER2":"OFF","POWER3":"OFF","POWER4":"OFF","Wifi":{"AP":1,"SSId":"-","BSSId":"2C:91:AB:57:0E:45","Channel":11,"RSSI":30,"Signal":-85,"LinkCount":8,"Downtime":"0T00:01:16"}}

zu guter letzt

tele/Trockner/Sensor
Die Momentanen Wattverbräuche bei

{"Time":"2021-02-15T23:04:57","ENERGY":{"TotalStartTime":"2021-02-13T13:41:52","Total":0.000,"Yesterday":0.000,"Today":0.000,"Period":0,"Power":0,"ApparentPower":0,"ReactivePower":0,"Factor":0.00,"Voltage":0,"Current":0.000}}

Ich habe irgendwo etwas gelesen mit
also von mir angepasst auf:
JSONPATH:$.ZbReceived.0x1BAC."

bzw. der Komplette Code auf:

UID: mqtt:topic:9f9f871918:ae39436dcd
label: tasmota_zigbee_controller
thingTypeUID: mqtt:topic
configuration:
payloadNotAvailable: OFF
payloadAvailable: ON
bridgeUID: mqtt:broker:4595f8b14b
location: System
channels:
- id: Deckenleuchte
channelTypeUID: mqtt:switch
label: Deckenleuchte
description: ""
configuration:
commandTopic: cmnd/tasmota_E32AEB/ZbSend
stateTopic: tele/tasmota_E32AEB/Sensor
transformationPattern="JSONPATH:$.ZbReceived.0x1BAC."
off: '{"Device":"0x1BAC", "Send":{"Power":0}}'
on: '{"Device":"0x1BAC", "Send":{"Power":1}}'

Was mache ich falsch? Es kommt im openHAB nichts an bei dem Schalter.

Vielleicht kannst Du mir erklären wo ich den Jsonpath richtig einsetze, ich steh da total auf dem Schlauch.

Viele Grüße,

Lucas

Benutzeravatar
udo1toni
Beiträge: 13867
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von udo1toni »

Mordi hat geschrieben: 16. Feb 2021 00:29 Hallo Udo,

nun habe ich die Wichtigsten Geräte mit MQTT.FX ausgelesen.

Dies ist ein Lichtschalter der einen Zigbee schaltet.

tele/tasmota:E32AEB/Sensor
Wie kommt denn da der Doppelpunkt rein? Falls der mit im Topic ist, bitte aus dem Topic entfernen, Buchstaben, Zahlen, Unterstrich ist in Ordnung, mit weiteren Zeichen wäre ich vorsichtig.
Mordi hat geschrieben: 16. Feb 2021 00:29 mit

{"ZbReceived":{"0x1BAC":{"Device":"0x1BAC","Power":0,"Endpoint":1,"LinkQuality":65}}}

Hier möchte ich lediglich nur die Power auslesen.

Code: Alles auswählen

{
  "ZbReceived": {
    "0x1BAC": {
      "Device": "0x1BAC",
      "Power": 0,
      "Endpoint": 1,
      "LinkQuality": 65
    }
  }
}
Der korrekte Pfad lautet hier $.ZbReceived['0x1BAC'].Power
Mordi hat geschrieben: 16. Feb 2021 00:29 Bzw. bei

tele/tasmota_Schlafzimmer_Lucas_Bett/STATE

Power1; Power2; Power 3; Power 4

{"Time":"2021-02-15T23:01:32","Uptime":"4T00:03:53","UptimeSec":345833,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":21,"MqttCount":45,"POWER1":"ON","POWER2":"OFF","POWER3":"OFF","POWER4":"OFF","Wifi":{"AP":1,"SSId":"-","BSSId":"2C:91:AB:57:0E:45","Channel":11,"RSSI":30,"Signal":-85,"LinkCount":8,"Downtime":"0T00:01:16"}}

Code: Alles auswählen

{
  "Time": "2021-02-15T23:01:32",
  "Uptime": "4T00:03:53",
  "UptimeSec": 345833,
  "Heap": 26,
  "SleepMode": "Dynamic",
  "Sleep": 50,
  "LoadAvg": 21,
  "MqttCount": 45,
  "POWER1": "ON",
  "POWER2": "OFF",
  "POWER3": "OFF",
  "POWER4": "OFF",
  "Wifi": {
    "AP": 1,
    "SSId": "-",
    "BSSId": "2C:91:AB:57:0E:45",
    "Channel": 11,
    "RSSI": 30,
    "Signal": -85,
    "LinkCount": 8,
    "Downtime": "0T00:01:16"
  }
}
Die korrekten Pfade: $.POWER1, $.POWER2, $.POWER3 und $.POWER4
Mordi hat geschrieben: 16. Feb 2021 00:29 zu guter letzt

tele/Trockner/Sensor
Die Momentanen Wattverbräuche bei

{"Time":"2021-02-15T23:04:57","ENERGY":{"TotalStartTime":"2021-02-13T13:41:52","Total":0.000,"Yesterday":0.000,"Today":0.000,"Period":0,"Power":0,"ApparentPower":0,"ReactivePower":0,"Factor":0.00,"Voltage":0,"Current":0.000}}

Code: Alles auswählen

{
  "Time": "2021-02-15T23:04:57",
  "ENERGY": {
    "TotalStartTime": "2021-02-13T13:41:52",
    "Total": 0.0,
    "Yesterday": 0.0,
    "Today": 0.0,
    "Period": 0,
    "Power": 0,
    "ApparentPower": 0,
    "ReactivePower": 0,
    "Factor": 0.0,
    "Voltage": 0,
    "Current": 0.0
  }
}
$.ENERGY.Power dürfte der Momentanverbrauch sein.

Wenn Du nun fragst, warum im ersten Fall die eckigen Klammern und noch Anführungszeichen gebraucht werden, muss ich leider etwas ausweichen. Die Anführungszeichen werden mutmaßlich gebraucht, damit der HEX-Code als String verwendet wird. Die eckigen Klammern hingegen werden gebraucht, weil es sich bei der Ebene um einen Knoten handelt, das heißt, es gibt keine anderen Punkte in dieser Ebene, die keine Unterpunkte haben. Ich bin mir aber nicht zu hundert Prozent sicher, ob diese Begründungen korrekt sind.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Mordi
Beiträge: 32
Registriert: 24. Jan 2021 14:54

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von Mordi »

Hallo Udo1Toni

Sorry wenn ich dich deshalb noch einmal um Hilfe bitten muss, für eine Frage die du bestimmt schon Millionen mal beantwortet hast.
Ich habe mal bei 2 Stück das ganze eingefügt, aber ich glaube, es ist nicht richtig.
Ich bin echt ein Noob bei dem Thema, aber ich hoffe ich schnall es bald!

Gerade sieht meine Trocknerkonfiguration so aus, aber er liest nichts aus.
Wo muss der String hin? Fehlt da noch was?

Code: Alles auswählen

UID: mqtt:topic:4595f8b14b:2ef03353a1
label: Trockner
thingTypeUID: mqtt:topic
configuration:
  off: 0
  on: 1
bridgeUID: mqtt:broker:4595f8b14b
location: Keller
channels:
  - id: Trockner_switch
    channelTypeUID: mqtt:switch
    label: Trockner Schalter
    description: ""
    configuration:
      commandTopic: CMND/Trockner/Power
      stateTopic: tele/Trockner/STATE $.Power
  - id: Trockner_Wattleistung
    channelTypeUID: mqtt:number
    label: Momentane Leistung des Trockners
    description: ""
    configuration:
      stateTopic: tele/Trockner/SENSOR $.ENERGY.Power

Deckenleuchte:

Code: Alles auswählen

UID: mqtt:topic:9f9f871918:ae39436dcd
label: tasmota_zigbee_controller
thingTypeUID: mqtt:topic
configuration:
  payloadNotAvailable: OFF
  payloadAvailable: ON
bridgeUID: mqtt:broker:4595f8b14b
location: System
channels:
  - id: Deckenleuchte
    channelTypeUID: mqtt:switch
    label: Deckenleuchte
    description: ""
    configuration:
      commandTopic: cmnd/tasmota_E32AEB/ZbSend
      stateTopic: tele/tasmota:E32AEB/Sensor '{$.ZbReceived['0x1BAC'].Power}'
      off: '{"Device":"0x1BAC", "Send":{"Power":0}}'
      on: '{"Device":"0x1BAC", "Send":{"Power":1}}'
Ich denke da ist irgendwas grober Unfug bei beiden, nur wo?

Viele Grüße,

Lucas

Benutzeravatar
udo1toni
Beiträge: 13867
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von udo1toni »

Mordi hat geschrieben: 22. Feb 2021 20:01 Ich denke da ist irgendwas grober Unfug bei beiden, nur wo?
Vermutlich ist fast alles grober Unfug...
Das eine sind die Topics. Auch wenn Tasmota selbst nicht pingelig bei der Groß-/ Kleinschreibung ist, openHAB ist extrem pingelig, jeder einzelne Buchstabe zählt.

Für die Standard Tasmota Geräte lautet das commandTopic cmnd/Trockner/POWER (gegeben, dass topic auf Trockner und full topic auf %prefix%/%topic%/ gesetzt sind)
Das stateTopic lautet dann stat/Trockner/POWER (NICHT tele/...)

Für den Kanal, der die Leistung annimmt, passt das Topic so halb... Das Topic ist aber exakt das Topic, Du kannst da nicht einfach noch andere Sachen rein schreiben, wie z.B. das jsonpath Statement. Vermutlich hast Du das dazu notwendige Feld nicht gesehen, denn es ist normalerweise ausgeblendet. Du musst den Haken bei "show advanced" setzen. Dann sieht die Konfiguration so aus:

Code: Alles auswählen

channels:
  - id: power
    channelTypeUID: mqtt:number
    label: Leistung
    description: ""
    configuration:
      stateTopic: tele/Trockner/SENSOR
      transformationPattern: JSONPATH:$.ENERGY.Power
      unit: W
Wenn Du die Unit hinzufügst, wie im Beispiel gezeigt, kannst Du ein UoM Item konfigurieren (Number:Power) und hast dann automatisch die Einheit mit dabei. Man muss das dann natürlich in Rules berücksichtigen, ist also ein Stück weit Geschmacksache.

Bei der Wahl der IDs solltest Du nach Möglichkeit keine ellenlangen Namen nehmen, wenn es auch kurze tun.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Mordi
Beiträge: 32
Registriert: 24. Jan 2021 14:54

Re: MQTT Problem beim Tasmota Sonoff Zigbee

Beitrag von Mordi »

Hallo Udo1toni,

vielen Dank!
Der Trockner wird Wattmäßig angezeigt, bzw. auch den Schaltzustand der Steckdose habe ich dort hinbekommen.
Den gleichen Erfolg konnte ich auch bei der Steckdosenleiste verzeichnen!

Beim Deckenlicht hänge ich noch...

meine MQTT Einstellung sind:

UID: mqtt:topic:9f9f871918:ae39436dcd
label: tasmota_zigbee_controller
thingTypeUID: mqtt:topic
configuration:
payloadAvailable: ON
bridgeUID: mqtt:broker:4595f8b14b
location: System
channels:
- id: Deckenleuchte
channelTypeUID: mqtt:switch
label: Deckenleuchte
description: ""
configuration:
commandTopic: cmnd/tasmota_E32AEB/ZbSend
stateTopic: tele/tasmota_E32AEB/RESULT
transformationPattern: JSONPATH:$.ZbReceived['0x1BAC'].Power
off: '{"Device":"0x1BAC", "Send":{"Power":0}}'
on: '{"Device":"0x1BAC", "Send":{"Power":1}}'

liegt es eventuell an dem ZbSend Befehl, oder ist dieser eigenständig mit dem Schaltzustand?
Ich habe den Sendebefehl nicht anders realisieren können, falls dies mein Problem wäre.

Vielleicht haben Sie noch eine Idee wieso es nicht geht.

Viele liebe Grüße,

Lucas

Antworten