NEWS
Tasmota mqtt wird nicht komplett empfangen
-
Hab mir einen Lesekopf (Stromleser) für den Stromzähler gekauft. Drauf ist wie bei allen Tasmota geflasht. Funktioniert soweit auch wunderbar, nur bei ioBroker kommt nicht alles an.
das wird gesendet:
14:02:46.792 MQT: tele/tasmota_3BC784/SENSOR = {"Time":"2025-02-05T14:02:46","MT681":{"E_in":546.593,"E_out":2917.583,"Power":15}}
Und nur Power kommt an (allerdings ohne Wert)
Woran kanns liegen?
-
@warp735
Du suchst im falschen Topic ...cmnd
ist zum steuern, Daten kommen übertele
oderstat
-
@bananajoe sagte in Tasmota mqtt wird nicht komplett empfangen:
Daten kommen über tele oder stat
@warp735
Oder mit dem Sonoff-Adapter bereits fein säuberlich auseinandergedröselt -
Danke euch... jetzt sehe ich auch, das der mir da ja zig Ordner angelegt hat und man das selber aufdröseln muss
Bekommt man das mit n mqtt Adapter nicht aufgeschlüsselt hin? Den habe ich nämlich eh schon laufen und ich müsste nicht noch mal was installieren
-
@warp735 sagte in Tasmota mqtt wird nicht komplett empfangen:
Bekommt man das mit n mqtt Adapter nicht aufgeschlüsselt hin?
Nein. Da ist "selbermachen" angesagt.
Bei mir läuft alles was mit Tasmota geflasht ist über den Sonoff.
Der hat natürlich seinen eigenen Port! -
@codierknecht sagte in Tasmota mqtt wird nicht komplett empfangen:
Der hat natürlich seinen eigenen Port!
Hab Port auf 1884 geändert, aber bekomm keine Verbindung. Muss da was bei Tasmota anders konfiguriert werden? (ausser port)
-
@warp735 sagte in Tasmota mqtt wird nicht komplett empfangen:
Muss da was bei Tasmota anders konfiguriert werden? (ausser port)
Port, User und Password müssen passen.
Außerdem habe ich mal irgendwo (hier) gelesen, dass dazwischen immer 1 Port freibleiben sollte.
Wenn also MQTT auf 1883 läuft, den Sonoff auf 1885 laufen lassen. -
user und passwort habe ich nicht. Habs auf 1882 geändert und nun läufts. Zwar wieder 100MB RAM verbraten, aber was soll´s
Danke euch
-
@codierknecht sagte in Tasmota mqtt wird nicht komplett empfangen:
Außerdem habe ich mal irgendwo (hier) gelesen, dass dazwischen immer 1 Port freibleiben sollte.
weil der folgende Port für den Secure Zugriff verwendet wird....
....hab ich im Hinterkopf -
@warp735 sagte in Tasmota mqtt wird nicht komplett empfangen:
wieder 100MB RAM verbraten
Wenn Du noch mehr Tasmota Gerätes hast (oder mal haben wirst) wirst Du den sicher zu schätzen wissen.
Der ist halt genau dafür gemacht. Spart Scripte und Alias-Konvertierungen -
@warp735 sagte in Tasmota mqtt wird nicht komplett empfangen:
Zwar wieder 100MB RAM verbraten, aber was soll´s
der lag vorher ja auch nur dumm rum ...
-
@bananajoe sagte in Tasmota mqtt wird nicht komplett empfangen:
der lag vorher ja auch nur dumm rum ...
Stimmt auch wieder.. hab nicht mal 5 von 64GB vom ioBroker belegt.
-
@codierknecht
Hab gerade mal den Stecker gezogen, weil ich mir ne Push bei Verbindungsabbruch senden lassen will. Der Stromleser an sich läuft wieder, aber die Instanz bleibt gelb. Ist das "Standard" das sich da keine Verbindung mehr aufbaut?12:30:22.416 MQT: Connect failed to 10.10.10.20:1882, rc -2. Retry in 90 sec
edit: lag an meiner Firewall
-
@Codierknecht @paul53 Kann mir Jemand auf die Sprünge helfen?
Habe auch einen Tasmota Lesekopf. Möchte aber über den Alias gehen, um Den Leistungswert zu bekommen. Funktioniert leider nicht. IO Broker hängt sich auf, wenn ich diese Konvertierungsfunktion eintrage:
JSON.parse(val).Power_curr
JSON.parse(val)["].Power_curr funktioniert auch nicht, IOB hängt aber nicht.
Aus dem mqtt benutze ich die "sensor" Daten. Ergebnis. "NULL"
in der Tasmota- Console wird angezeigt:14:52:20.568 MQT: tasmota/tele/tasmota_zaehler/SENSOR = {"Time":"2025-02-17T14:52:20","MT175":{"Power_curr":-462,"Total_in":1843,"Total_out":326,"wirkenergie_total":326267}}
-
JSON.parse(val).MT175.Power_curr
-
@codierknecht sagte in Tasmota mqtt wird nicht komplett empfangen:
JSON.parse(val).MT175.power_curr
Danke. Auch das habe ich schon probiert. Ergebnis: "undef".
Kann ich irgendwo den String in seiner Rohfunktion im IOB auslesen?
Konvertierungs-Script in Tasmota:>D ;BOOT >B ;disable mqtt at boot prevents sending 0 smlj=0 ->sensor53 r ;SML >M 1 +1,3,s,16,9600,MT175 1,77070100100700ff@1,Leistung,W,Power_curr,0 1,77070100010800ff@1000,Verbrauch,KWh,Total_in,0 1,77070100020800ff@1000,Netzeinspeisung,KWh,Total_out,0 1,77070100020800FF@1,Netzeinspeisung,Wh,wirkenergie_total,0 #
-
@laser
Mein Fehler. Es wird Groß-/Kleinschreibung berücksichtigt. Hab's oben korrigiert.Zum Ausprobieren: https://jsonpathfinder.com/
-
@codierknecht Danke! So funktioniert es.
-
@laser
Ein bisschen Background dazu:
"JSON" heißt "javascript object notation". Das bedeutet, dass ein JSON prinzipiell (mit den umschließenden{}
) ein Objekt und dessen Eigenschaften beschreibt.
Dein Objekt hat z.B. die Eigenschaft "Time" mit dem Wert "2025-02-17T14:52:20".
Und dazu eine Eigenschaft "MT175". Dessen "Wert" ist ein weiteres Objekt ({}
).
Auf die Eigenschaften eines Objektes wird mit dem Punkt-Operator zugegriffen.
Darumx.MT175.Power_curr
, um auf die EigenschaftPower_curr
des ObjektesMT175
im übergeordneten Objekt "x" zuzugreifen.Das ganze ist hierarchisch organisiert und lässt sich x-fach verschachteln.
Beispiel:{"name": "master", "level_1": {"level2": {"level_3": {"name": "Blubb"}}}}
Um auf das "Blubb" zu kommen also:
x.level_1.level_2.level_3.name
Die eckigen Klammern
[]
brauchst Du nur, wenn es sich um ein Array handelt.
Also eine Aufzählung von (gleichartigen) Werten ... das können auch wieder Objekte sein.{"name":"master","array":[1,2,12,42]}
x.array[3]
=> 42