Seite 1 von 2

Fragen zu Tasmota und MQTT

Verfasst: 14. Mär 2021 19:05
von kaloschke
Hallo,

ich habe hier schon etliche Threads gelesen, aber ich bekomme es nicht hin.
System: OH3 auf RPi4 mit Mosquitto

Problem 1: Status WLAN-Schalter aktualisieren
Ich habe folgende mqtt.things:

Code: Alles auswählen

Bridge mqtt:broker:mosquitto [ host="x.x.x.x", secure=false, clientID="openhab" ]{
    Thing topic wlan_schalter {
      Channels:
         Type switch : Steckdose_1 "Steckdose 1" [ stateTopic="stat/Steckdose_1/POWER",transformationPattern="JSONPATH:$.POWER" , commandTopic="cmnd/Steckdose_1/POWER", on="1", off="0" ]
    }
den Switch dazu

Code: Alles auswählen

Switch Steckdose_1 "Steckdose 1" ["Switchable"] { channel="mqtt:topic:mosquitto:wlan_schalter:Steckdose_1" }
Die Steckdose_1 lässt sich einwandfrei schalten. Ich möchte jedoch in der Sitemap sehen, wenn der Status sich ändert, wenn er z.B direkt am Gerät geändert wird. Geht das überhaupt?
Ich hatte ursprünglich in der Channeldefinition jeweils "power" stehen. Udo1toni hat es in einem Beitrag in Großbuchstaben gesetzt (so erscheint es ja auch in der Tasmotakonsole). Nach dieser Änderung erhalte ich im openhab.log bei jedem Schaltvorgang

Code: Alles auswählen

Executing the JSONPATH-transformation failed: Invalid path '$.POWER' in 'ON'
bzw.

Code: Alles auswählen

Executing the JSONPATH-transformation failed: Invalid path '$.POWER' in 'OFF'
.
In der Sitemap wird der Switchstatus trotzdem nicht geändert :-(

Problem 2: SONOFF-Bridge auslesen
Ich habe eine RF-SONOFF-Bridge als Generic MQTT Thing angelegt.

Code: Alles auswählen

Thing topic rf_bridge {
    Channels:
       Type string : rf_data [stateTopic="tele/rf_bridge/RESULT",transformationPattern="JSONPATH:$.RfReceived.Data"]
Nun möchte ich die Meldung eines Wassersensors (wird als EWELINK bzw. SONOFF-Sensor verkauft) auslesen. In der Tasmotakonsole erscheint bei Wasserkontakt

Code: Alles auswählen

tele/rf_bridge/RESULT = {"Time":"2021-03-14T17:08:27","RfReceived":{"Sync":12400,"Low":340,"High":1140,"Data":"D79129","RfKey":"None"}}
Ich habe ein Stringitem definiert

Code: Alles auswählen

String RFBridge "RFBridge Daten [%s]" {channel="mqtt:topic:mosquitto:rf_bridge:rf_data"}
und aus dem Forum hier eine Rule dazu angelegt:

Code: Alles auswählen

rule "sonoffRF"                                     
when
    Item RFBridge received update                                   
then
    if (RFBridge.state == NULL) {
        logInfo("RfBridge.rules", "Item is null, cancelling...")
        return;
    }
    val sonoff_rfdata = RFBridge.state.toString
    logInfo("rfbridge.rules", "Received IT Codes: {}", sonoff_rfdata)
end
Leider scheint diese nicht aufgerufen zu werden :-(

Freue mich über jeden Hinweis

Re: Fragen zu Tasmota und MQTT

Verfasst: 14. Mär 2021 20:20
von kaloschke
Zu Problem 2:
Ich habe mal - wie hier anderenorts empfohlen wird - mqtt.fx installiert und festgestellt, dass die Bridge gar nichts sendet.
Ursache war eine falsche MQTT-Konfiguration. Dieses Problem ist also gelöst :-)

Re: Fragen zu Tasmota und MQTT

Verfasst: 14. Mär 2021 20:32
von peter-pan
Sieht etwas komisch aus dein Switch-Channel. Ich habe da noch nie mit einem Transformation-Pattern gearbeitet, da Tasmota ja hier direkt den Wert liefert und keinen JSON-String (soweit ich weiss). Als Beispiel mal ein Thing aus meinem SetUp:

Code: Alles auswählen

    Thing topic basic04 "Sonoff Basic 04 Kugellampe"       @ "MQTT2" {
    Channels:
        Type switch : power     "Power "                 [ stateTopic="stat/basic_04/POWER", commandTopic="cmnd/basic_04/POWER" ]
        Type number : rssi      "WiFi Signal Strength"   [ stateTopic="tele/basic_04/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
        Type string : version   "Firmware Version    "   [ stateTopic="stat/basic_04/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Version"]
        Type switch : reachable "Reachable"              [ stateTopic="tele/basic_04/LWT",transformationPattern="MAP:reachable.map" ]
        Type string : hardware  "Chip Set            "   [ stateTopic="stat/basic_04/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Hardware"]
        Type string : ipaddress "IP Address          "   [ stateTopic="stat/basic_04/STATUS5", transformationPattern="JSONPATH:$.StatusNET.IPAddress"]
    }
Bei der RF-Bridge kann ich leider nicht weiterhelfen.

Re: Fragen zu Tasmota und MQTT

Verfasst: 14. Mär 2021 21:40
von udo1toni
Ich gehe davon aus, dass die Steckdose mit Tasmota geflasht ist. Dann sollte da gar kein transformationPattern gesetzt sein. Das Thing sollte vielmehr so aussehen:

Code: Alles auswählen

Bridge mqtt:broker:mosquitto [ host="x.x.x.x", secure=false, clientID="openhab" ]{
    Thing topic wlan_schalter {
      Channels:
         Type switch : Steckdose_1 "Steckdose 1" [ stateTopic="stat/Steckdose_1/POWER", commandTopic="cmnd/Steckdose_1/POWER" ]
    }
denn Tasmota liefert ON und OFF im Klartext.

Was die RF Bridge betrifft, so sieht die Rule erst mal unverdächtig aus. Gibt es denn keine Fehlermeldungen im Log?

Re: Fragen zu Tasmota und MQTT

Verfasst: 14. Mär 2021 23:14
von kaloschke
RF_Bridge hat sich geklärt. Hatte ich oben ja geschrieben.

@udo1toni
Ja. Tasmota.
Ist halt blöd, wenn man/ich mit Halbwissen leben muss. Aber wieder was gelernt.
Mit Deiner Variante fällt die Fehlermeldung weg, aber das eigentliche Ziel, die Aktualisierung in der Sitemap bei manuellem Umschalten direkt an der Steckdose wird leider immer noch nicht erreicht.
Noch einmal: Sollte das überhaupt so funktionieren?
Jedenfalls schon mal vielen Dank

Re: Fragen zu Tasmota und MQTT

Verfasst: 15. Mär 2021 00:19
von peter-pan
Zunächst mal würde ich dem Item einen Formatter/Pattern zuordnen:

Code: Alles auswählen

Switch Steckdose_1 "Steckdose 1 [%s]" ["Switchable"] { channel="mqtt:topic:mosquitto:wlan_schalter:Steckdose_1" }
...oder als Metadata per "stateDescription".

Re: Fragen zu Tasmota und MQTT

Verfasst: 15. Mär 2021 19:17
von kaloschke
Danke. Hatte ich schon genau so ausprobiert, allerdings ohne die udo1toni Variante. Ohne Wirkung :-(
Nochmal probiert. Jetzt geht es :-) . Danke.
Allerdings habe ich jetzt ein störendes ON / OFF auf meiner Sitemap :-(

Re: Fragen zu Tasmota und MQTT

Verfasst: 15. Mär 2021 21:23
von peter-pan
Jetzt noch mal von Anfang. Sind wir In OH3 (Pages) oder OH2 (Sitemap/BasicUI) ?

Wenn du OH2 meinst, hast du ja sicherlich auch einen Eintrag/Widget (Text item / Default item) in deiner Sitemap. Wie sieht das denn aus ? Und was genau möchtest du in deiner Sitemap sehen (visuell) ?

Wenn du OH3 meinst, was für ein Widget setzt du da ein (YAML)

So wie ich das verstanden habe, willst du sehen, ob die Lampe/Schalter an oder aus ist ??!!


Ein kleine Anmerkung noch: Nach Änderungen in den Things kann es sein, das diese erst greifen wenn das Bundle/OH neu gestartet wird (nur OH). Es wird zwar immer wieder gesagt, dass das nicht mehr der Fall sein soll, aber ich bemerke das immer wieder bei mir, auch in OH3.

Re: Fragen zu Tasmota und MQTT

Verfasst: 15. Mär 2021 22:38
von kaloschke
Sorry.
OH3. Habe ich oben geschrieben. Aber ich habe meine Sitemap von OH2 einfach behalten. In der gibt es ja die Switchsymbole, also die Schiebeschalter.
Vor denen erscheint mit [%s] ein ON bzw. OFF. Das ist optisch subotimal ;-)

Re: Fragen zu Tasmota und MQTT

Verfasst: 15. Mär 2021 23:11
von peter-pan
OK, aber was soll denn da angezeigt werden, wenn nicht "on" oder "off" ? Wie möchtest du erkennen, ob ein Schalter geschaltet wurde ? Eine Option wäre noch ein Icon, das auf den Status reagiert, z.B. "light".