NEWS
Tasmota mqtt wird nicht komplett empfangen
-
@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