Seite 1 von 2

MQTT2 und Tasmota

Verfasst: 28. Dez 2019 11:11
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"]

Re: MQTT2 und Tasmota

Verfasst: 28. Dez 2019 11:57
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).

Re: MQTT2 und Tasmota

Verfasst: 28. Dez 2019 12:18
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.

Re: MQTT2 und Tasmota

Verfasst: 28. Dez 2019 22:42
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.

Re: MQTT2 und Tasmota

Verfasst: 29. Dez 2019 16:14
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:(

Re: MQTT2 und Tasmota

Verfasst: 29. Dez 2019 18:29
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]

Re: MQTT2 und Tasmota

Verfasst: 29. Dez 2019 18:48
von djuscha
nein hab ich nicht ,ich dachte man braucht commandTopic um zu schalten mit on und off ,muss ich mal testen.

Re: MQTT2 und Tasmota

Verfasst: 29. Dez 2019 18:54
von peter-pan
.. das command topic schon, aber nicht das mapping (oder wie man das nennt). ;)

Re: MQTT2 und Tasmota

Verfasst: 29. Dez 2019 21:23
von djuscha

Code: Alles auswählen

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

Re: MQTT2 und Tasmota

Verfasst: 29. Dez 2019 22:20
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).