MQTT2 und Tasmota

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

MQTT2 und Tasmota

Beitrag von djuscha »

nach dem Update openHab auf 2.5.0 wollte ich auch auf MQTT2 Binding unsteigen .Davor hatte ich MQTT1
es funktioniert ja jetz alles , nur ich hab ne Verständniss Frage irgentwas verstehe ich nicht. Wenn ich Openhab neustarte bekommen meine Schalter mit Tasmota kein Status .Erst wenn ich einmal schalte dann ist alles ok, oder wenn ich Tasmota Gerät neustarte andere Werte sind gleich da.
Wenn Tasmotaschalter länger online ist steht in der Konsole nur tele/STATE und tele/SENSOR, der stat/POWER ,mein stateTopic= wird nur bei neustart oder beim einschalten gesendet.
was kann ich einstelle das nach dem openHab neustart die Schalter gleich den richtigen status bekommen?
Das war beim MQTT1 nicht so ,da hatte ich gleich den richtigen Status
mein Thing

Code: Alles auswählen

  Thing topic Sonoffth16  "Sonoffth16 Licht Terasse"(mqtt:broker:mosquitto)  @ "MQTT"  {

      Channels:
          
         Type switch : switch "Sonoffth16 Switch" 
          [stateTopic="Draussen/sonoffth16/stat/POWER",commandTopic="Draussen/sonoffth16/cmnd/POWER",ON="ON",OFF="OFF"]
         
          Type string : wifi-rssi "Sonoffth16 RSSI" 
          [stateTopic="Draussen/sonoffth16/tele/STATE",transformationPattern="JSONPATH:$.Wifi.RSSI"]
          
          Type string : devicestate"Sonoffth16 State" 
          [stateTopic="Draussen/sonoffth16/tele/LWT"]

          Type number : temperature "Temperature SI7021 "     
          [stateTopic="Draussen/sonoffth16/tele/SENSOR", transformationPattern="JSONPATH:$.SI7021.Temperature"] 

          Type number : humidity    "Humidity"   
          [stateTopic="Draussen/sonoffth16/tele/SENSOR", transformationPattern="JSONPATH:$.SI7021.Humidity"]
mein items

Code: Alles auswählen

  Switch Sonoffth16 "Licht Terasse"<lightbulb> (GR_Lichtdr,GR_Lichtdr1)  {channel="mqtt:topic:mosquitto:Sonoff3:switch"}

String Sonoffth16_WifiRssi "Licht Terasse RSSI [%d %%] "<network>  {channel="mqtt:topic:mosquitto:Sonoffth16:wifi-rssi"}

String Sonoffth16_DeviceState "Sonoffth16 State"<qualityofservice>   {channel="mqtt:topic:mosquitto:Sonoffth16:devicestate"}

Number Sonoffth16_Temperature "Temperature Terasse[%d °C]"  <temperature> { channel="mqtt:topic:mosquitto:Sonoffth16:temperature" }

Number Sonoffth16_Humidity    "Humidity Terasse [%d %%]"   <humidity> { channel="mqtt:topic:mosquitto:Sonoffth16:humidity" }
Sitemap

Code: Alles auswählen

 Switch  item=Sonoffth16 

Text  item=Sonoffth16_WifiRssi
Text  item=Sonoffth16_DeviceState valuecolor=[Offline="red",undefined="orange",Online="green"]  

Text item=Sonoffth16_Temperature valuecolor=[<=21="blue", >21="green"]

Text item=Sonoffth16_Humidity valuecolor=[<=60="green", >60="red"]

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

Re: MQTT2 und Tasmota

Beitrag von udo1toni »

beim mqtt1 Binding konntest Du für das stateTopic mehrere Topics angeben, das ist bei mqtt2 nicht möglich. es gibt verschiedene Möglichkeiten, damit umzugehen. Du kannst dafür sorgen, dass die Tasmota Geräte den Status mit retain=true absetzen, dann sollte der Broker den gespeicherten Status beim abonnieren des Topics melden, oder Du legst einen weiteren Channel mit dem tele-Topic an, welcher dann parallel auf dasselbe Item verlinkt wird. Je nach refresh Rate dauert es aber trotzdem, bis der korrekte Status angezeigt wird (das ist bei mqtt1 aber auch so).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: MQTT2 und Tasmota

Beitrag von djuscha »

udo1toni hat geschrieben: 28. Dez 2019 11:57 beim mqtt1 Binding konntest Du für das stateTopic mehrere Topics angeben, das ist bei mqtt2 nicht möglich. es gibt verschiedene Möglichkeiten, damit umzugehen. Du kannst dafür sorgen, dass die Tasmota Geräte den Status mit retain=true absetzen, dann sollte der Broker den gespeicherten Status beim abonnieren des Topics melden, oder Du legst einen weiteren Channel mit dem tele-Topic an, welcher dann parallel auf dasselbe Item verlinkt wird. Je nach refresh Rate dauert es aber trotzdem, bis der korrekte Status angezeigt wird (das ist bei mqtt1 aber auch so).
das das dauert ist klar
und zwei Fragen
Status mit retain=true absetzen
wie geht das?
und
parallel auf dasselbe Item verlinkt wird
wie kann man parallel velkinken. Tele-topic ist mir klar.

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

Re: MQTT2 und Tasmota

Beitrag von udo1toni »

djuscha hat geschrieben: 28. Dez 2019 12:18wie kann man parallel velkinken.
Na indem Du zwei Channel definierst und beide mit dem selben Item verlinkst.
Thing (Teil)

Code: Alles auswählen

  Thing topic Sonoffth16  "Sonoffth16 Licht Terasse"(mqtt:broker:mosquitto)  @ "MQTT"  {
      Channels:
          Type switch : ch1 "Sonoffth16 Switch" 
          [ stateTopic="Draussen/sonoffth16/stat/POWER",commandTopic="Draussen/sonoffth16/cmnd/POWER" ]
          Type switch : ch1a "Sonoffth16 Switch tele"
          [ stateTopic="Draussen/sonoffth16/tele/STATE",transformationPattern="JSONPATH:$.POWER" ]
  }
Item:

Code: Alles auswählen

Switch Sonoffth16 "Licht Terasse"<lightbulb> (GR_Lichtdr,GR_Lichtdr1)  { channel="mqtt:topic:mosquitto:Sonoffth16:ch1", channel="mqtt:topic:mosquitto:Sonoffth16:ch1a" }
Ist allerdings nur aus dem Kopf und nicht geprüft, aber ich denke, Du verstehst, wie es funktionieren soll.

djuscha hat geschrieben: 28. Dez 2019 12:18
udo1toni hat geschrieben: 28. Dez 2019 11:57Status mit retain=true absetzen

wie geht das?


Wenn ich es richtig in Erinnerung habe, über MQTT:

Code: Alles auswählen

Draussen/sonoffth16/cmnd/PowerRetain ON
Alternativ direkt über die Tasmota Konsole mit

Code: Alles auswählen

PowerRetain ON
Zu beachten ist, dass das Topic erst nach einem Schaltbefehl als retained message gesendet wird, anschließend sollte der Zustand aber immer direkt abrufbar sein.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: MQTT2 und Tasmota

Beitrag von djuscha »

irgendwo mache ich noch Fehler

Code: Alles auswählen

 Thing topic Sonoffth16  "Sonoffth16 Licht Terasse"(mqtt:broker:mosquitto)  @ "MQTT"  {

      Channels:
          
         Type switch : switch "Sonoffth16 Switch" 
          [stateTopic="Draussen/sonoffth16/stat/POWER",commandTopic="Draussen/sonoffth16/cmnd/POWER",ON="ON",OFF="OFF"]
          
           Type string : switchstatus "Sonoffth16 Switch Status" 
          [stateTopic="Draussen/sonoffth16/tele/STATE",transformationPattern="JSONPATH:$.POWER"]

         
          Type string : wifi-rssi "Sonoffth16 RSSI" 
          [stateTopic="Draussen/sonoffth16/tele/STATE",transformationPattern="JSONPATH:$.Wifi.RSSI"]
          
          Type string : devicestate"Sonoffth16 State" 
          [stateTopic="Draussen/sonoffth16/tele/LWT"]

          Type number : temperature "Temperature SI7021 "     
          [stateTopic="Draussen/sonoffth16/tele/SENSOR", transformationPattern="JSONPATH:$.SI7021.Temperature"] 

          Type number : humidity    "Humidity"   
          [stateTopic="Draussen/sonoffth16/tele/SENSOR", transformationPattern="JSONPATH:$.SI7021.Humidity"]

          
          
     }
items

Code: Alles auswählen

//Licht Terasse Sonoffth16 156

Switch Sonoffth16 "Licht Terasse"<lightbulb> (GR_Lichtdr,GR_Lichtdr1)  {channel="mqtt:topic:mosquitto:Sonoff3:switch",channel="mqtt:topic:mosquitto:Sonoff3:switchstatus"}

String Sonoffth16_WifiRssi "Licht Terasse RSSI [%d %%] "<network>  {channel="mqtt:topic:mosquitto:Sonoffth16:wifi-rssi"}

String Sonoffth16_DeviceState "Sonoffth16 State"<qualityofservice>   {channel="mqtt:topic:mosquitto:Sonoffth16:devicestate"}

Number Sonoffth16_Temperature "Temperature Terasse[%d °C]"  <temperature> { channel="mqtt:topic:mosquitto:Sonoffth16:temperature" }

Number Sonoffth16_Humidity    "Humidity Terasse [%d %%]"   <humidity> { channel="mqtt:topic:mosquitto:Sonoffth16:humidity" }

String Sonoffth16_DeviceState1 "Sonoffth16 State"<qualityofservice> (gLWM)   {channel="mqtt:topic:mosquitto:Sonoffth16:devicestate"}
cache und temp gelöscht ,reboot immer noch Status undefeniert:(

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: MQTT2 und Tasmota

Beitrag von peter-pan »

Hast du schon einmal versucht deinen Thing-Channel ohne ON="ON",OFF="OFF zu definieren, wie Udo das beschrieben hat? Also so:

Code: Alles auswählen

[stateTopic="Draussen/sonoffth16/stat/POWER",commandTopic="Draussen/sonoffth16/cmnd/POWER]
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: MQTT2 und Tasmota

Beitrag von djuscha »

nein hab ich nicht ,ich dachte man braucht commandTopic um zu schalten mit on und off ,muss ich mal testen.

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: MQTT2 und Tasmota

Beitrag von peter-pan »

.. das command topic schon, aber nicht das mapping (oder wie man das nennt). ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12

Re: MQTT2 und Tasmota

Beitrag von djuscha »

Code: Alles auswählen

[stateTopic="Draussen/sonoffth16/stat/POWER",commandTopic="Draussen/sonoffth16/cmnd/POWER"]
hab auch so ausprobiert ..keine Änderung :(

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

Re: MQTT2 und Tasmota

Beitrag von udo1toni »

Das Mapping wird nicht nur nicht gebraucht, es ist auch verkehrt, denn eigentlich wird es klein geschrieben. ;)
Der Schaltbefehl geht ja aber wohl, also scheint die Schreibweise nicht so wichtig zu sein (untypisch für openHAB...).
Der Switch Status wird aber auf jeden Fall als Switch zurückgeliefert, nicht als String (das hab ich bei mir falsch drin gehabt, hab's oben angepasst).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten