MQTT Werte über Config channel auslesen.

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
sosojaja
Beiträge: 1
Registriert: 19. Feb 2020 20:25
Answers: 0

MQTT Werte über Config channel auslesen.

Beitrag 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.

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: MQTT Werte über Config channel auslesen.

Beitrag 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

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

Re: MQTT Werte über Config channel auslesen.

Beitrag 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.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: MQTT Werte über Config channel auslesen.

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

aswitcom
Beiträge: 10
Registriert: 21. Nov 2018 17:42
Answers: 0

Re: MQTT Werte über Config channel auslesen.

Beitrag 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

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

Re: MQTT Werte über Config channel auslesen.

Beitrag 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...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

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

Re: MQTT Werte über Config channel auslesen.

Beitrag 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" ]
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

aswitcom
Beiträge: 10
Registriert: 21. Nov 2018 17:42
Answers: 0

Re: MQTT Werte über Config channel auslesen.

Beitrag 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

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

Re: MQTT Werte über Config channel auslesen.

Beitrag 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"<
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten