Seite 1 von 1

MQTT Werte über Config channel auslesen.

Verfasst: 22. Feb 2020 22:54
von sosojaja
Hallo Zusammen,

leider finde ich über die Nutzung des MQTT 2.5 Binding und das Auslesen der Werte über den Configure Channel irgend wie nirgends eine Anleitung oder Beschreibung. Alles endet immer in der Config Datei und dem Editor.
Ich habe aber im OpenHab2 mit dem MQTT Binding 2.5 irgendwie keine Items mehr sonder nur noch Things und Channels.
Aber alle Beschreibungen enden immer in den Items!
Im Visual Studio Code gibt es aber die ganzen Einträge welche ich in der "Paper UI" machte nicht.

Habe nun zum Üben einen "SonOff Basic" mit "Tasmota" angelegt welcher auch über den MQTT Broker und meine Einstellungen ein und ausschaltet.
Aber wie könnte ich denn nun die "stat.." Werte wo anzeigen.

Muss leider auch zugestehen dass ich noch nicht viel mit dem OpenHAB2 gemacht habe also neu in der Materie bin.

Habe in der "Paper UI" in "Configuration" bei "Things" über "+" ein "MQTT Binding" angelegt, dann "Add manuel" ein "Generic MQTT Thing", hier die Werte vergeben und , über Doppelklick (Status: online) einen Channels angelegt. Hier "Text Value" ausgewählt meinen Standard "Sonoff" "MQTT State Topic" aus MQTT.fx kopiert "stat/sonoff02/POWER" eingetragen aber wie bekomme ich nun irgendwo einen Wert der POWER Payload?
Hatte gehofft dass unter "Incoming Value Transformation" ich nun einen JSONPATH eintragen aber wie? (JSONPATH:$.POWER.Wert)

Bei "Add-ons" habe ich unter "TRANSFORMATIONS" den "JSONPath Transformation" 2.5.1 installiert.

Falls es schon irgend wo einen Artverwandten Artikel schon gäbe wäre ich über einen Verweis sehr verbunden und müsste mich entschuldigen für meine Unfähigkeit hier was zu finden.

Vorab schon mal vielen Dank für eure Hilfe.

Re: MQTT Werte über Config channel auslesen.

Verfasst: 22. Feb 2020 23:15
von Darkwin101
Ich verstehe nicht so ganz was du möchtest der Sonoff liefert doch keine Werte die du auslesen könntest oder täusche ich mich der kann doch nur ein und ausgeschaltet werden.

Über die Paper UI als allgemeines Vorgehen du legst ein Generic MQTT Thing an.
In dem Thing legst du deine Channels an in denen du Topics angibst.
Wenn du nun nachdem der Channel gespeichert ist auf den blauen Kreis neben dem Channel klickst kannst du ein entsprechendes Item Anlegen oder auch ein entsprechendes Item auswählen das du vorher mit VSCODE erstellt hast.

Edit.
Ich habe jetzt den genauen Topic bei Tasmota nicht im Kopf also entsprechend Anpassen
du legst weitere Channel unterhalb deines Generic Thing an und liest als erstes mit MQTT.fx oder vergleichbaren Tools den State Topic aus der gibt z.B.
so etwas aus { "temperature" : " 19.1" , "voltage" : "233", "battery" : "88" }
jetzt möchtest du voltage auslesen jetzt legst du einen Channel vom Typ Number an gibst bei state Topic entsprechenden Topic an z.B. stat/XXXX/Status
dann gehst du in der Paper UI auf show more und gibst bei Incoming Transformation : JSONPATH$.voltage ein das sagt das du aus dem Beispiel oben den wert voltage auslesen möchtest.
Diesen Channel verknüpfst du mit einem Item und kannst ihn dir dann anzeigen lassen. Willst du alle 3 aus dem Bespiel auslesen muss du 3 Channels anlegen und 3 Items

Re: MQTT Werte über Config channel auslesen.

Verfasst: 23. Feb 2020 19:21
von peter-pan
sosojaja hat geschrieben: 22. Feb 2020 22:54 Habe nun zum Üben einen "SonOff Basic" mit "Tasmota" angelegt welcher auch über den MQTT Broker und meine Einstellungen ein und ausschaltet.
Aber wie könnte ich denn nun die "stat.." Werte wo anzeigen.
Ich weiss zwar nicht, wie das in der PaperUI funktioniert, aber hier mal ein Beispiel aus meinem SetUp für einen Sonoff-Basic:

.things

Code: Alles auswählen

    Thing topic basic03 "Sonoff Basic 03 Schreibtischlampe" @ "MQTT2" {
    Channels:
        Type switch : power     "Power "                 [ stateTopic="stat/basic_03/POWER", commandTopic="cmnd/basic_03/POWER" ]
        Type number : rssi      "WiFi Signal Strength"   [ stateTopic="tele/basic_03/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
        Type string : version   "Firmware Version    "   [ stateTopic="stat/basic_03/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Version"]
        Type switch : reachable "Reachable"              [ stateTopic="tele/basic_03/LWT",transformationPattern="MAP:reachable.map" ]
        Type string : hardware  "Chip Set            "   [ stateTopic="stat/basic_03/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Hardware"]
        Type string : ipaddress "IP Address          "   [ stateTopic="stat/basic_03/STATUS5", transformationPattern="JSONPATH:$.StatusNET.IPAddress"]
und die entsprechenden Items dazu:
.items

Code: Alles auswählen

/**********************************************************************************************************************************************************************************************************************
//Basic Switches
//**********************************************************************************************************************************************************************************************************************
//192.168.x.y                         basic-03                                           
Switch    Sonoff_Basic_03                "Schreibtischlampe Büro [MAP(de.map):%s]"          <tablelamp>             (EG_Buro,gSonoff,gLight)     { channel="mqtt:topic:hans:basic03:power" }
Number    Sonoff_Basic_03_RSSI           "Schreibtischlampe Büro RSSI [%s]"                 <qualityofservice>      (EG_Buro,gRSSI)              { channel="mqtt:topic:hans:basic03:rssi" } 
String    Sonoff_Basic_03_Version        "Schreibtischlampe Version 31[%s]"                 <sonoff_basic>          (gSonoffs,gVer)              { channel="mqtt:topic:hans:basic03:version" } 
Switch    Sonoff_Basic_03_Unreach        "Schreibtischlampe Ereichbarkeit [%s]"             <siren1>                (EG_Buro,gLWT)               { channel="mqtt:topic:hans:basic03:reachable" }
String    Sonoff_Basic_03_Hardware       "Schreibtischlampe ChipSet 31[%s]"                 <sonoff_basic>          (gSonoffs,gHard)             { channel="mqtt:topic:hans:basic03:hardware" } 
String    Sonoff_Basic_03_IPAddress      "Schreibtischlampe IP-Address [%s]"                <sonoff_basic>          (gSonoffs,gHard)             { channel="mqtt:topic:hans:basic03:ipaddress" } 
Vielleicht kannst du da ja was davon gebrauchen.

Re: MQTT Werte über Config channel auslesen.

Verfasst: 24. Feb 2020 15:41
von udo1toni
Also Tasmota betreffend (eigentlich gilt das generell für alle mqtt Varianten):

Wenn Du nicht gerade die Homie Emulation anschmeißt, musst Du alles "von Hand" verbinden. Ob Du dazu den Weg über eine Textdatei oder über Paper UI gehst, bleibt sich gleich.
Es ist aber viel einfacher, die Konfiguration als Text wiederzugeben (siehe peter-pans Thing).

Grundsätzlich brauchst Du die Verbindung zum Broker, das erledigt die mqtt Bridge (ein spezielles Thing...). Der Bridge musst Du (mindestens) ein Thing zuordnen, da Du das alles manuell konigurieren musst, handelt es sich um ein generic mqtt Thing.
Im generic mqtt Thing schließlich musst Du für jedes Topic, was Dich interessiert, einen Channel anlegen.
Manche Channel sind nur lesbar, manche nur schreibbar, oft aber geht die Kommunikation in beide Richtungen (z.B. Schaltbefehl zum Senden und Schaltstatus in der anderen Richtung), dann musst Du einem Channel zwei Topics zuordnen, eben ein stateTopic und ein commandTopic.
Die beiden Topics sind grundsätzlich verschieden (bei Tasmota cmnd/ und stat/ als prefix des Topics)

Wenn Du schließlich diese Channel in openHAB verwenden möchtest, muss der Inhalt in Items abgebildet werden, dazu musst Du die Channel mit Items verlinken. Channel Type und Itemtype sollten zueinander passen :) und üblicherweise braucht man auch nur ein Item pro Channel.

Re: MQTT Werte über Config channel auslesen.

Verfasst: 27. Jul 2020 10:47
von aswitcom
Hallo Udo,

ich habe letzte Woche alle meine Tasmota Geräte von V6.0.6 auf die aktuelle V8.3.1 upgegradet und seither ein Problem mit den Switches, die haben vorher über diese Things perfekt funktioniert.

Code: Alles auswählen

Type switch : socket_01 "Nachtlicht "	[ stateTopic="tele/SONOFF-01/STATE" , transformationPattern="JSONPATH:$.POWER" , commandTopic="cmnd/SONOFF-01/POWER", on="ON", off="OFF", autoupdate="true" ]
In der sitemap wurde der Status nach einem Neustart von OH nach wenigen Minuten von allen Geräten von unbekannt auf ON oder OFF aktualisiert.

Seit dieser Änderung ändert er nur den Status wenn ich das Gerät einmal ein oder ausschalte.
Im MQTT Explorer und in der Console sehe ich das Tasmota die Werte sendet, mein OH diese scheinbar aber nicht liest oder auswertet.

OH V2.5.7-1 läuft auf RASPI

Hast du eine Idee wie ich dem Problem auf den Grund komme?

vielen herzlichen Dank im Voraus!

Liebe Grüße,
Karl-Heinz

Re: MQTT Werte über Config channel auslesen.

Verfasst: 27. Jul 2020 20:17
von udo1toni
Bist Du sicher, dass es POWER ist, und nicht POWER1? Tasmota wird aus Kompatibilitätsgründen weiterhin auf POWER reagieren, soweit ich mich erinnere, ist das aber geändert worden, damit es weniger Unterschiede zwischen Einkanalgeräten und Mehrkanalgeräten gibt.

Ich habe allerdings gerade kein Testobjekt zur Hand...

EDIT: Hab doch ein Testobjekt... Nö, stimmt nicht, der Punkt heißt nach wie vor POWER...

Re: MQTT Werte über Config channel auslesen.

Verfasst: 27. Jul 2020 23:13
von peter-pan
...könnte es sein, dass der Channel vielleicht so funktionieren könnte ?

Code: Alles auswählen

Type switch : socket_01 "Nachtlicht "	[ stateTopic="stat/SONOFF-01/POWER" , commandTopic="cmnd/SONOFF-01/POWER" ]

Re: MQTT Werte über Config channel auslesen.

Verfasst: 28. Jul 2020 11:13
von aswitcom
Danke, das mit Power1 hatte ich auch schon vermutet und getestet.

die Kurzform ohne transformation hatte ich ebenfalls schon probiert.

ich habe nun mal die gesamte konfiguration geändert und bin wieder am testen.

werde erneut berichten was jetzt stand ist.

Liebe Grüße,
Karl-Heinz

Re: MQTT Werte über Config channel auslesen.

Verfasst: 28. Jul 2020 13:36
von peter-pan
aswitcom hat geschrieben: 28. Jul 2020 11:13 die Kurzform ohne transformation hatte ich ebenfalls schon probiert.
Hast du auch das "stateTopic" geändert ? Ich meine "tele" gibt nur zu bestimmten Zeiten Daten über den Kanal (Telemetrieperiode in Tasmota). Du möchtest doch aber den Status von Power nach dem Schalten, oder liege ich da falsch, also >stateTopic="stat/SONOFF-01/POWER"<