Fragen zu Tasmota und MQTT

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Fragen zu Tasmota und MQTT

Beitrag 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

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Fragen zu Tasmota und MQTT

Beitrag 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 :-)

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

Re: Fragen zu Tasmota und MQTT

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

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

Re: Fragen zu Tasmota und MQTT

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

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Fragen zu Tasmota und MQTT

Beitrag 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

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

Re: Fragen zu Tasmota und MQTT

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

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Fragen zu Tasmota und MQTT

Beitrag 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 :-(

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

Re: Fragen zu Tasmota und MQTT

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

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Fragen zu Tasmota und MQTT

Beitrag 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 ;-)

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

Re: Fragen zu Tasmota und MQTT

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

Antworten