Stromzähler auf Tasmota MQTT

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Stromzähler auf Tasmota MQTT

Beitrag von djuscha »

bin gerade dabei daten von meinem neuen Tasmota StromZähler auf openhab zu übertragen dabei scheitere ich an JSON
Das sendet mein Stromzähler

Code: Alles auswählen

20:01:35 MQT: Keller/stromzahl/tele/STATE = {"Time":"2020-09-02T20:01:35","Uptime":"0T00:40:04","UptimeSec":2404,"Heap":23,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"FRITZ!Box Fon WLAN 7390","BSSId":"FC:EC:DA:A7:37:8C","Channel":11,"RSSI":50,"Signal":-75,"LinkCount":1,"Downtime":"0T00:00:03"}}
20:01:35 MQT: Keller/stromzahl/tele/SENSOR = {"Time":"2020-09-02T20:01:35","":{" Meter_number":"1EBZ0100558022","Total_in":1084.1563,"Power_curr":601,"LeistungL1":342.93,"LeistungL2":98.69,"LeistungL3":159.67}"Verbrauch Tag":1084.156 KWh,"Verbrauch Vortag":0.000 KWh}
Analog meinen anderen Tasmota Geräten hab ich Thing und Ithems angelegt
Things

Code: Alles auswählen

Thing topic Stromzaehler  "Stromzähler"(mqtt:broker:mosquitto)  @ "MQTT"  {

      Channels:
          
          Type string : wifi-rssi "Stromzähler RSSI" 
          [stateTopic="Keller/stromzahl/tele/STATE",transformationPattern="JSONPATH:$.Wifi.RSSI"]
          
          Type string : devicestate"Stromzähler State" 
          [stateTopic="Keller/stromzahl/tele/LWT"]

          Type string : devicestatet"Stromzähler Verbrauch Tag" 
          [stateTopic="Keller/stromzahl/tele/SENSOR",transformationPattern="JSONPATH:$..Verbrauch Tag"]

          Type string : devicestatevt"Stromzähler Verbrauch VorTag" 
          [stateTopic="Keller/stromzahl/tele/SENSOR",transformationPattern="JSONPATH:$..Verbrauch Vortag"]

          Type string : devicestateg"Stromzähler Anzeige" 
          [stateTopic="Keller/stromzahl/tele/SENSOR",transformationPattern="JSONPATH:$..Total_in"]
         
     }
Ithems

Code: Alles auswählen

String	Stromzaeler_WifiRssi		"Wemosklingel RSSI [%d %%] "			<network>									{channel="mqtt:topic:mosquitto:Stromzaehler:wifi-rssi"}
String	Stromzaeler_DeviceState 	"Verbrauch Tag"				<qualityofservice>										{channel="mqtt:topic:mosquitto:Stromzaehler:devicestatet"}
String	Stromzaeler_DeviceState1	"Verbrauch Vortag"			<qualityofservice>									    {channel="mqtt:topic:mosquitto:Stromzaehler:devicestatevt"}
String	Stromzaeler_DeviceStateA	"Anzeige"			<qualityofservice>									            {channel="mqtt:topic:mosquitto:Stromzaehler:devicestateg"}


RSsi Anzeige in der Sitemap funktioniert ..Ist bei allen anderen Geräten genauso.. Rest wird nicht angezeigt..Executing the JSONPATH-transformation failed Was mache ich den falsch?

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

Re: Stromzähler auf Tasmota MQTT

Beitrag von peter-pan »

Code: Alles auswählen

{"Time":"2020-09-02T20:01:35","":{" Meter_number":"1EBZ0100558022","Total_in":1084.1563,"Power_curr":601,"LeistungL1":342.93,"LeistungL2":98.69,"LeistungL3":159.67}"Verbrauch Tag":1084.156 KWh,"Verbrauch Vortag":0.000 KWh}
Da scheint etwas mit deinem JSON-String nicht in Ordnung zu sein.
1. Vor "Verbrauch Tag" scheint ein Komma zu fehlen.
2. Die Einheiten "KWh" werden auch bemängelt.
Ich bin mir zwar nicht ganz sicher, aber ich meine auch schon Probleme mit Labels gehabt zu haben, die aus mehreren Wörtern bestanden haben, wie "Verbrauch Tag", etc.
Sowohl VSC als auch ein Online-JSON-Evaluator haben den String als fehlerhaft erkannt.
Nachdem ich den String in VSC etwas "gehübscht" hatte, ging es dann.

Code: Alles auswählen

{
    "Time": "2020-09-02T20:01:35",
    "": {
        " Meter_number": "1EBZ0100558022",
        "Total_in": 1084.1563,
        "Power_curr": 601,
        "LeistungL1": 342.93,
        "LeistungL2": 98.69,
        "LeistungL3": 159.67
    },
    "Verbrauch Tag": 1084.156,
    "Verbrauch Vortag": 0
}
Allerdings war die Notation in VSC und Online-Evaluator unterschiedlich. z. B.:

Code: Alles auswählen

VSC:                   $.["Verbrauch Tag"]
Online-Evaluator:      $..Verbrauch Tag
Was ist das für ein Gerät ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH5.0.0 openhabian

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: Stromzähler auf Tasmota MQTT

Beitrag von djuscha »

Es ist ein Nodemcu mit Tasmota drauf. D0 Zähler SML auslesen mit Tasmota.

Code: Alles auswählen

"Verbrauch Tag":1084.156 KWh,"Verbrauch Vortag":0.000 KWh}
das kann ich belibig anpassen über Script.Bzw hab ich das selber im Script so eingegeben.

Code: Alles auswählen

{"Time":"2020-09-02T20:01:35","":{" Meter_number":"1EBZ0100558022","Total_in":1084.1563,"Power_curr":601,"LeistungL1":342.93,"LeistungL2":98.69,"LeistungL3":159.67}
das liefert mir Tasmota schon so
ich könnte ewentuell auch

Code: Alles auswählen

","":{" 
dort zwieschen Häckchen was einfügen
1 das mit Komma kann ich ändern muss ich testen
2 KWh kann ich auch entfernen
3 das mit mehrere Wörtern teste ich auch
Danke für die Tips!!

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

Re: Stromzähler auf Tasmota MQTT

Beitrag von udo1toni »

peter-pan hat das schon genau richtig erkannt.
Parameternamen sollten keine Leerzeichen enthalten. Also entweder Verbrauch_Tag oder VerbrauchTag, aber nicht Verbrauch Tag (gilt natürlich auch für Vortag)
Außerdem übergibst Du einen String, machst den aber nicht als String kenntlich. Zahlen sind grundsätzlich nicht einheitenbehaftet. Da Du das offensichtlich selbst im Code eingebaut hast, sollte es kein Problem sein, die Einheiten zu entfernen (mqtt kann ohnehin nicht mit UoM umgehen, das nützt Dir also nichts, mit einem String verlierst Du aber die Möglichkeit, den Wert direkt in einen Number Channel zu übernehmen.
Das fehlende Komma musst Du natürlich ebenso mit einbauen, wenn Du den JSON String von Hand manipulierst.
openHAB5.0.0 stable in einem Debian-Container (bookworm) (Proxmox 9.0.3, LXC)

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: Stromzähler auf Tasmota MQTT

Beitrag von djuscha »

Alles so geändert

Code: Alles auswählen

14:40:50 MQT: Keller/stromzahl/tele/SENSOR = {"Time":"2020-09-03T14:40:50","":{" Meter_number":"1EBZ0100558022","Total_in":1092.7714,"Power_curr":223,"LeistungL1":127.30,"LeistungL2":38.32,"LeistungL3":54.70},"Verbrauch_Tag":6.009,"Verbrauch_Vortag":1086.762}
things angepasst

Code: Alles auswählen

 Type string : devicestatet"Stromzähler Verbrauch Tag" 
          [stateTopic="Keller/stromzahl/tele/SENSOR",transformationPattern="JSONPATH:$.S.Verbrauch_Tag"]

          Type string : devicestatevt"Stromzähler Verbrauch VorTag" 
          [stateTopic="Keller/stromzahl/tele/SENSOR",transformationPattern="JSONPATH:$.S.Verbrauch_Vortag"]

          Type string : devicestateg"Stromzähler Anzeige" 
          [stateTopic="Keller/stromzahl/tele/SENSOR",transformationPattern="JSONPATH:$.S.Total_in"]
Fehlermeldung

Code: Alles auswählen

2020-09-03 14:38:40.852 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.S.Verbrauch_Tag' in '{"Time":"2020-09-03T14:38:40","":{" Meter_number":"1EBZ0100558022","Total_in":1092.7634,"Power_curr":283,"LeistungL1":126.38,"LeistungL2":100.00,"LeistungL3":55.28},"Verbrauch_Tag":6.000,"Verbrauch_Vortag":1086.762}'

2020-09-03 14:38:40.856 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.S.Total_in' in '{"Time":"2020-09-03T14:38:40","":{" Meter_number":"1EBZ0100558022","Total_in":1092.7634,"Power_curr":283,"LeistungL1":126.38,"LeistungL2":100.00,"LeistungL3":55.28},"Verbrauch_Tag":6.000,"Verbrauch_Vortag":1086.762}'

2020-09-03 14:38:40.859 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.S.Verbrauch_Vortag' in '{"Time":"2020-09-03T14:38:40","":{" Meter_number":"1EBZ0100558022","Total_in":1092.7634,"Power_curr":283,"LeistungL1":126.38,"LeistungL2":100.00,"LeistungL3":55.28},"Verbrauch_Tag":6.000,"Verbrauch_Vortag":1086.762}'
mit zwei Punkten hinter S imThing hab ich auch probiert. irgentwas mache ich noch falsch

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

Re: Stromzähler auf Tasmota MQTT

Beitrag von udo1toni »

Wo kommt denn plötzlich das S her?

Dein JSON Objekt sieht (durch Prettify aufgehübscht) so aus:

Code: Alles auswählen

{
	"Time": "2020-09-03T14:40:50",
	"": {
		" Meter_number": "1EBZ0100558022",
		"Total_in": 1092.7714,
		"Power_curr": 223,
		"LeistungL1": 127.3,
		"LeistungL2": 38.32,
		"LeistungL3": 54.7
	},
	"Verbrauch_Tag": 6.009,
	"Verbrauch_Vortag": 1086.762
}
Es ist also gut erkennbar, dass der JSONPATH Ausdruck für Verbrauch_Tag $.Verbrauch_Tag lauten muss.
Warum hat der Node unterhalb Time keinen Namen? Aus das ist zwar grundsätzlich erlaubt, aber schön ist das nicht. Wobei der Node natürlich weiterhin über Meter_number identifizierbar sein sollte.
openHAB5.0.0 stable in einem Debian-Container (bookworm) (Proxmox 9.0.3, LXC)

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: Stromzähler auf Tasmota MQTT

Beitrag von djuscha »

OOO Mist das S war zuviel ..Weiss ich gar nicht wo das auf einmal her kam.. Fehler sitztz ja meistens vor dem Bilschirm :)
Vielen Dank .nur S gelöscht und es geht :)
Danke an Euch beide für die Tips!
Warum hat der Node unterhalb Time keinen Namen? Aus das ist zwar grundsätzlich erlaubt, aber schön ist das nicht. Wobei der Node natürlich weiterhin über Meter_number identifizierbar sein sollte
das könnte ich auch im Script ändern aber dann sieht das im Tasmota Webseite nicht so schön...wenn ohne erlaubt ist lasse ich so :)

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

Re: Stromzähler auf Tasmota MQTT

Beitrag von udo1toni »

Ja, wird halt komplizierter, falls Du an die Werte dran willst.
openHAB5.0.0 stable in einem Debian-Container (bookworm) (Proxmox 9.0.3, LXC)

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

Re: Stromzähler auf Tasmota MQTT

Beitrag von peter-pan »

Ich hätte da nochmal eine Frage. Was meinst du eigentlich mit dem Script ? Läuft das auf deinem Tasmota-Device und wie sieht das aus bzw. was macht das ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH5.0.0 openhabian

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: Stromzähler auf Tasmota MQTT

Beitrag von djuscha »

peter-pan hat geschrieben: 4. Sep 2020 01:27 Ich hätte da nochmal eine Frage. Was meinst du eigentlich mit dem Script ? Läuft das auf deinem Tasmota-Device und wie sieht das aus bzw. was macht das ?
ja geile Sache :) Tasmota auf Nodemcu oder Memos Fototransistor und mann kann DO Stromzähler auslesen .Geht auch mit Gaszähler und Wasserzähler.Hab ich beides noch nicht ich hab nur Strom. Script kannst du direkt über Tasmotaweb eingeben und ändern nur muss man vorher Tasmota selber kompilieren und flashen
mehr Infos auf https://tasmota.github.io/docs/Smart-Meter-Interface/ und https://forum.creationx.de/forum/index. ... t-tasmota/

Antworten