SmartMeter mit Tasmota auslesen

Nachdem mein alter Ferraris Stromzähler ausgetauscht wurde habe ich mir vorgenommen, alle Werte der Stromzähler zu digitalisieren und kontiniuerlich zu protokollieren.
Ziel war, hier so wenig Aufwand wie möglich zu investieren. Daher habe ich nach einer möglichst vorgefertigten Lösung für Infrarotsensoren gesucht. Der für mich passende Sensor ist die Lösung die auch auf Volkszähler.org geschrieben ist.
Die folgende Lösung habe ich exemplarisch für folgende SmartMeter von ISKRA erstellt, eine Adaption an andere Hersteller ist eihnfach möglich.
- ISKRA MT681
- ISKRA MT175
Für eine Erfassung und Weiterverarbeitung der Werte möchte ich Tasmota auf einem Wemos D1-Mini benutzen.
Es gibt viele Seiten mit verschiedenen Erläuterungen zum Anschluss der SmartMeter. Mir hat u.a. auch folgender Link geholfen:
https://hessburg.de/tasmota-wifi-smartmeter-konfigurieren/
Sensorauswahl
Die Zähler von ISKRA geben erfasste Daten über eine Infrarot-Schnittstelle aus. Um diese auszulesen ist dementsprechend ein Infrarotempfänger, für eine Befehlsübetragung (diw wir aber nicht brauchen) ein Infrarotsender erforderlich.Wer so einen Sensor selber bauen möchte findet hierzu im folgenden Video die nötigen Informationen:
Da ich keine großen Lötarbeiten durchführen wollte, habe ich nich für eine (fast) fertige Lösung entschieden, den
ttl ir lesekopf lese-schreib-K
, der auf ebay für ca. 19 Euro zu erhalten ist. In einem 3D-gedruckten Gehäuse befindet sich die bereits fertiggestellte Platine, man muss nur eine 4-adrige Leistung anlöten. Hierzu empfehle ich, ein einfaches Telefonkabel mit 4 Adern zu verwenden. Da die Lötstellen auf der Platine sehr nah am Rand sind habe ich das Kabel umgekehrt angelötet, d.h. ich führe dieses über die Platine zur Lötstelle und kann somit eine bessere Zugentlastung realisieren.
Die 4 Adern benötigt man für
- die 3.3. Volt Spannungsversorgung
- GND (Nullleiter)
- RX (Empfangskanal)
- TX (Sendekanal)
Da ich nur Daten empfangen möchte würden auch 3 Adern ausreichen.
Den Sensor befestige ich nun auf der optischen Infrarotschnittstelle des ISKRA MT175. Dabei ist die Diode 1 der Empfänger und die Diode 2 der Sender). Dementsprechend muss der Hichi Sensor umgekehrt auf dem optischen Schnittstelle angebracht werden, d.h. Sender auf Empfänger und Empfänger auf Sender . Wer hier ganu hinschaut wird feststellen, dass es eine dunkle LED gibt. Dies ist der Empfänger und die helle Diode ist dementsprechen der Sender.
Der Anschluss der Adern an den D1 Mini habe ich schematisch in folgendem Schaubild dargestellt:
Freischaltung optische Schnittstelle
Die von den Energieversorgern bereitgestellten SmartMeter können häufig erst nach einer Freischaltung der optischen Schnittstelle Daten übertragen. Daher ist es notwendig, sich von seinem Energieversorger den Freischaltcode zu besorgen. Mit diesem kann man anschließend die Übertragung der Daten über die optischen Schnittstelle freischalten. Anleitungen hierzu kann man leicht im Internet finden. Der ISKRA MT175 besitzt zur Vereinfachung einen blauen Button, mit dem man den Code eingeben kann, ansonsten verwendet man einfach eine Taschenlampe, mit der man den Code über den optischen IR-Sensor eingibt.
Vorteil der Freischaltung ist, dass damit auch weitere Werte vom SmartMeter erfasst und ausgelesen werden können. Hierzu gehört beispielsweise die aktuelle Leistung sowohl beim Verbrauch als beim Ertrag (Photovoltaik).
Tasmota konfigurieren
Um die Sensordaten auszulesen muss der D1-Mini mit Tasmota geflasht werden. Hier ist insbesondere wichtig, dass die Scripting-Funktionalität für Tasmota freigeschaltet ist, sonst kann man die Daten nicht verarbeiten.
Wie man das macht habe ich bereits in meinem folgenden Beitrag beschrieben:
In Tasmota müssen keine GPIOs über das Menü "Configure Module" konfiguriert werden. Stattdessen kopert man sich von der Tasmota Seite einfach das Script für das gewünschte Smartmeter herunter. Diese sind auf folgender Seite zu finden:
https://tasmota.github.io/docs/Smart-Meter-Interface/
Dieses Script kopiert man unter dem Menüpunkt "Console/Edit Script" einfach in den Editor. Wichtig ist, dass oben das Häkchen neben "Script enabled" aktiviert wurde!
Wenn alles richtig gelaufen ist dann sollten auf der Tasmota Startseite, die im Script aktivierten Werte erscheinen. Dies könnte z.B. wie folgt aussehen (ich habe die Bezeichnungen hier schon geändert, siehe dazu das nächste Kapitel).
Wenn das nicht so aussieht dann habe ich im übernächsten Kapitel ein paar Tipps, wie man den Fehler finden kann.
TASMOTA Script verstehen
Um den Sensor in Tasmota nutzen zu können kann man von der Tasmota Seite für die gebräuchlisten SmartMeter ein Script herunterladen und einfach im Scirpteditor ausführen lassen.
Da es hier aber ein paar kleiner Fallstricke gibt macht es Sinn, dieses Script zumindest teilweise zu verstehen. Für den ISKRA MT175 sieht das Ganze so aus:
Die Scriptsprache ist in der Tasmota Doku in zwei Abschnitten beschrieben
- Für das Auslesen der Smart Meter findet man hier alle Infos
- Für die Verwendung der Scriptsprache sind hier die vielen Details zu finden. Wer bisher mit Rules gearbeitet hat, kann diese Befehle mit einem kleinen Präfix "=>" weiter verwenden.
Wichtig ist, dass man sich streng an die Syntax hält. So ist z.B. bei einer IF-Abfrage unbedingt notwendig, das "then" in eine neue Zeile zu schreiben, damit die folgenden Befehle auch ausgeführt werden.
Ebenso gibt es den Hinweise, dass in dem ">M" Block Kommentare zu Fehlern führen können und am Ende vor dem Hastag keine Leerzeichen stehen sollten.
Ausprobieren kann man alles, in dem man das Script speichert und sich die Ergebnisse dann in der Console anschaut. Ja, das ist ein wenig Hin- und Herklicken, funktioniert bei diesem Interpreter aber sehr einfach. Fehlermeldungen werden auch ausgegeben, allerdings manchmal etwas wenig aussagekräftig, so dass es sinnvoll ist, in der Doku nachzuschauen.
Der Inhalt des Scriptes lässt sich wie folgt erläutern:
">D" bedeutet, dass ab hier die Deklaration von Variabeln erfolgt. In den Smartmeter Scripten ist dies nicht notwendig. Wer aber später Variabeln für die weitere Verarbeitung braucht, kann diese unterhalb dieses Statemenst platzieren
">B" hier beginnt der Block, in dem der Code steht, der beim Booten ausgeführt werden soll. Diese bleibt ebenfalls immer stehen.
"Sensor53 r" ist ein fester Befehl, der das Einlesen der SmartMeter-Beschreibungen initiiert. Hier braucht nichts geändert zu werden.
">M 1" gibt an, dass hier der Block für die SmartMeter Beschreibungen kommt. Wer hier beispielsweise zwei oder drei SmartMeter auslesen will, der gibt hier anstelle der "1" eine "2" oder "3" an.
"+1,14,s,16,9600,MT175". Die Zeile ist recht einfach zu verstehen, alle Werte müssen durch Kommata getrennt werden.
"+1" bedeutet, dass hier die Deklaration des 1. SmartMeters kommen (wenn da +2 drin stehen würde, dann wäre es der zweite SmartMeter, usw.)
"14" gibt die GPIO Nummer an an der der RX-Kanal aufgesteckt wurde. In diesem Beispiel ist dies Port D5. Nehmt Euch hierzu ein Bild eines D1 Mini und schaut die Nummer einfach nach. Diese Nummer muss unbedingt an Eure Lösung angepasst werden, wenn Ihr einen anderen Port verwenden wollt. Hier liegt dann auch ein häufiger Fehler, wenn´s mal nicht funktioniert.
"s" das s gibt an, dass es sich um einen SML SmartMeter handelt. Hier würde ein "w" stehen, wenn es sich um einen OBIS SmartMeter handelt. Damit wird also das Protokoll angegeben, um die Nachrichten des SmartMeters decodieren zu können. Normalerweise sollte das Protokoll auf dem SmartMeter stehen, alternativ könnt Ihr Euren Energiversorger fragen.
"16" Dies ist ein Flag, welches angibt, das hier ein Medianwert aus den empfangenen Daten ermittelt werden soll. Das ist sinnvoll, wenn es beispielsweise mal Unterbrechungen gibt oder sich Werte sehr schnell umfangreich ändern. I.d.R. braucht man das nicht anzupassen.
"9600" ist die Baudrate, mit der die Daten über die Infrarot-LEDs übertragen werden. Dies hängt vom SmartMeter ab, dennoch braucht dies i.d.R. nicht angepasst zu werden.
"MT175" ist der Name den dieser SmartMeter erhält. Diese kann frei gewählt werden, sollte aber knackig kurz sein (wegen des begrenzt verfügbaren Speichers). Über diesen Namen kann man später die einzelnen Werte in einer Scriptsprache ansprechen.
Als nächstes fehlen nun noch die Definition der Werte, die empfangen werden sollen, wie diese formatiert und dargestellt werden und wo diese in Tasmota gespeichert werden sollen.
Hierzu die folgende Beispielzeile des MT175
1,77070100100700ff@1,Leistung,W,Power_curr,1
"1" gibt an, dass es sich im den 1. Smartmeter handelt.
"77070100010800ff@1000" gibt das Datenpaket an, welches ausgelesen werden soll
"@1000" in den Beispielscripten steht hier entweder @1000 oder @1. Ich habe bisher nicht herausfinden können ob es sich bei dem Parameter um die Auflösung des auszulesenden Wertes oder um eine andere Form der Formatierung handelt.
"Leistung" ist ein String, der die Bezeichnung des Datenwertes darstellt, und auch im MQTT verwendet wird (kann beliebig geändert werden)
"W" ist ebenfalls ein String, der die Einheit für die Konsolenausgabe darstellt (kann beliebig geändert werden)
"Power_Curr" ist ein String, der den Variablennamen angibt, in dem die Daten gespeichert werden. Wenn der Wert im Script weiter verarbeitet werden soll, dann wird der Wert über diesen Variablennamen angesprochen (kann beliebig geändert werden)
"1" gibt die Anzahl der Nachkommastellen an (kann beliebig geändert werden)
Die guten Beispielscripte auf der Tasmotaseite beinhalten häufig eine große Anzahl von möglichen zu empfangenden Werten. Da nicht immer alle Werte gebraucht oder auch teilweise vom Smartmeter gesendet werden, löscht man einfach die Zeilen mit diesen Werten.
Fehler suchen
Ja, auch mir ist es passiert, das erst einmal nichts funktioniert hat, daher anbei meine Tipps, wie man hier schnell zu einer Lösung kommt:
- Prüfen, ob die Lötstellen fest sind. Da es sich nur um 4 Adern handelt ist das relativ einfach möglich (ich habe alle Lötstellen ein zweites Mal mit dem Lötkolben erwärmt und die Kabel fixiert)
- Prüfen, ob der SmartMeter sendet. Da man so in den kleinen optischen Fenstern nichts sieht, nimmt man einfach ein Smartphone geht auf die Fotofunktion und hält die Kamera auf den Fotosensor. Da die Kameras auch UV-Licht sichtbar machen können, sollte hier ein zyklisches Blinken zu sehen sein. Wenn dem nicht so ist, dann muss der SmartMeter evtl. noch mit der PIN des Energieanbieters freigeschaltet werden.
- Prüfen, ob der Sensor richtig auf der Sendefenster sitzt. SmartMeter, wie der ISKRA MT175, besitzen 2 Dioden, die zum Senden und Empfangen gedacht sind. Der Sensor hat ebenfalls zwei Dioden, so dass Sender auf Empfänger und Empfänger auf Sender sitzen sollte. Die einfache Regel ist dunkle/schwarze Diode des SmartMeters auf helle Diode des Sensors und umgekehrt. Manchmal ist das runde Ding auch einfach nur zu weit gedreht worden, d.h. achtet darauf, dass das Kabel möglichst senkrecht oben oder unten aus dem Sensor herauskommt.
- Prüfen, ob das RX-Singal auch an einem RX-Kanal des D1 Mini angeschlossen ist. Da die Kabel alle unterschiedliche Farben haben kommt man hier schnell durcheinander. Deswegen empfehle ich, sich RX und TX Kabel entweder zu markieren oder die Farben für die Kanäle aufzuschreiben und diese dann bis zum PIN des D1 Mini korrekt zu führen.
- Prüfen, ob die Spannung und Erdung richtig geschaltet sind. Gerade, wenn man Breadboards verwendet kann schnell ein Kabel locker sein, so dass kein Strom fließen kann. Achtet bitte auch darauf, eine Versorgung nur über die 3.3 Volt Leitung vorzunehmen.
- Testen, ob die Kommunikation funktioniert. Hierzu kann in der Tasmota Console folgender Befehl verwendet werden: Sensor53 d1. Dies bewirkt einen Dump aller empfangenen Werte des SmartMeters und die Darstellung auf der Console. Es sollte als Ergebnis eine Masse von Hexadezimal- Zahlencodes erscheinen, dann ist alles richtig (die Decodierung erfolgt durch die o.a. Scripte und Erläuterungen).
- Prüfen, ob die richtige Portnummer für den Datenempfang im Script angegeben wurde. Man vergisst leicht, dass der GPIO an dem der RX-Kanal angeschlossen ist auch im Script eingetragen sein muss. Die Beispielscripte nutzen teils andere Portnummern. Ich hatte das erst nicht geändert und hab daher stundenlang nach dem Fehler gesucht, bevor ich diese einfache Lösung gefunden habe.
- Prüfen, ob man das richtige Script für sein SmartMeter gewählt hat. Es gibt mittlerweile eine Vielzahl von Scripten für unterschiedliche SmartMeter. Nur wenn, man das passende Script für sein SmartMeter verwendet, werden die Werte richtig ausgelesen. Eine Reihe von Scripten ist auf der Tasmota Seite unter SMartMeter Descriptors zu finden.
Weiterverarbeitung der Daten
Die Daten werden automatisch (wenn man den MQTT-Server eingestellt hat) per MQTT übermittelt, so dass man mit Drittsystemen auf die Werte zugreifen kann. Ich empfehle, diese z.B. über Openhab oder IOBroker in Verbindung mit eine Datenbank z.B. influxdb zu speichern und per Grafana darzustellen, so erhält man einen super Überblick über zeitabhängige Verbräuche oder die Stromerzeugung.
Wenn man mit der Scriptsprache die Werte weiter verarbeiten möchte, dann kann man z.B. wie folgt die Werte ansprechen
tmp1=MT175#Total_in
und mit diesen Variablen und der Scriptsprache weiter arbeiten.
Ich versende z.B. die Werte zusätzlich an eine CCU3 indem ich in den Scripten die folgende Zeile aufrufe:
=>WebSend [192.162.153.17:8181]/cuxd.exe?ret=dom.GetObject("SV_Stromzaehlerstand").State(%tmp1%)
Insgesamt lässt sich mit der hier beschriebenen Lösung recht einfach arbeiten und auch die Einrichtung hat nicht viel Zeit in Anspruch genommen.
Vielen Dank für die gute Anleitung, ich habe es hinbekommen. Bei uns wurde jetzt der Zähler gewechselt, alle Werte starten wieder bei 0. Gibt es die Möglichkeit die alten abgelesenen Werte (Bezug; Einspeisung) einzutragen damit die neuen Werte dazu addiert werden? Es stimmt jetzt nichts mehr per MQTT und InfluxDB. Danke
Du könntest in NodeRed in einem Function Node einfach den letzten Zählerstand des alten Zählers auf den neuen abgelesenen Zählerstand addieren und diesen dann in InfluxDB abzuspeichern. D.h. Du würdest einfach so tun als ob der alte Zähler weiterlaufen würde. (z.B. msg.payload=msg.payload.NeuerZaehlerstand + Letzteralterzaehlerstand).
Hallo Dieter,
ach ja, der Spaß mit dem Tasmota-Lesekopf. 🙂 Schön, dass Du auch dazu weiterführende Erläuterungen veröffentlicht hast. Mein Artikel ist aber schon so viiiiiel zu lang. Freut mich aber, dass er Dir geholfen hat und dass Du ihn auch verlinkst. Nur treibt der Link gerade meine 404-Error in ungeahnte Höhen. 🙂 Du hast den doppelt hintereinander eingegeben.
Dein Artikel über das Auslesen des Gaszählers muss doch aktuell richtig beliebt sein. Wir haben eine neue Wasseruhr bekommen und seitdem ist diese AI-Cam abgebaut. Vielleicht kann ich den neuen nach Deine Anleitung auslesen? Mal schauen. Wenn man nicht so vielen anderen Mist um die Ohren hätte. :-/
Viele Grüße!
Hessi
Hallo Hessi,
Danke für Deinen Hinweis, der falsche doppelte Seitenlink sollte jetzt weg sein und die 404 Meldungen (von mir) verschwinden. Der Sensor für den Wasserzähler funktioniert einwandfrei, leider muss ich ihn in 10 Jahren gegen einen neuen austauschen.
Viele Grüße
Dieter
Hallo Dieter,
wo hast Du die Zuweisung im Skript gemacht:
tmp1=MT175#Total_in
Ich habe dies unter >S nach dem >M-Block vorgenommen.
leider gibt er in der console immer aus:
var not found: SML111#Total_in
Mein Zähler heisst SML111
Woran kann dies liegen?
Viele Grüße
Andreas
Hallo Andreas,
ich habe die Zuweisung unterhalb des T-Sektion (T>) gemacht. Dementsprechend müsste das auch bei Dir hinter S> funktionieren.
Hast Du die Variable unter D> deklaiert (z.B. tmp1=0)?
Ansonsten würde ich überprüfen, ob in der M>-Sektion den Sensor sowie der Variabelnname richtig benannt sind. Das Tasmota Scripting ist z.B. sehr empfindlich bei Leerzeichen und Leerzeilen an der falschen Stelle.
Beste Grüße
Dieter
Variablen deklarieren war der entscheiende Tipp!
DANKE!
Hallo!
ich bin bei dem gescheiterten Versuch meinen eHZ an die CCU3 zu senden hier gelandet.
Gestehe, dass ich nur durch google halbwegs etwas verstehe, da es so garnicht meine Welt ist, also das mit Skripten und so.
Mein tasmota läuft mit folgendem Script gut und bringt mir Daten.>D
>B
=>sensor53 r
>M 1
+1,3,s,0,9600,eHZ
1,77070100010800ff@1000,Gesamtverbrauch,KWh,Total_in,2
1,77070100020800ff@1000,Gesamteinspeisung,KWh,Total_out,2
1,77070100100700ff@1,Verbrauch,W,Power_curr,2
#
Auf der CCU3 habe ich drei Systemvariablen angelegt:
EHZ_aktuell (aktueller Verbrauch in Watt)
EHZ_Einspeisung (noch in Planung)
EHZ_Verbrauch (Gesamtverbrauch)
Wenn ich die %var1% durch einen wert ersetze kommt dieser auch in der CCU an.
WebSend [192.168.17.210:8181] /cuxd.exe?Status=dom.GetObject(‚EHZ_aktuell‘).State(%var1%)
Ich schaffe es aber nicht, dass die Werte z.B. alle 10 Sekunden automatisch vom Sensor in die CCU kommen.
gesehen hatte ich so etwas in der Art und habe einiges mit google versucht, aber leider klappt das nicht:
Rule1 on sensor53#Power_curr!=%var1% do backlog var1 %value%; WebSend [192.168.17.210:8181] /cuxd.exe?Status=dom.GetObject(‚EHZ_aktuell‘).State(%var1%) endon
Könntet Ihr mir vielleicht bei meinem Problem helfen?
Es sollen also diese 3 Werte immer in der CCU landen 🙂
Danke Guido
Hallo Guido,
Du kannst keine Rules verwenden, wenn Du Scripte verwendest (deine Smartmeter Konfiguration ist ein Script). D.h Du musst den Code in das Script wie folgt schreiben:
>D
var1=0
>T
var1=eHZ#Total_in
=>WebSend [192.168.17.210:8181]/cuxd.exe?ret=dom.GetObject(„SV_Stromzaehlerstand“).State(%var1%)
Unter der D-Sektion wird die von Dir benutzte Variable deklariert
Die T-Sektion wird spätestens nach der Telemetry-Period ausgeführt und schickt Deinen Total_in Wert an die CCU.
Damit sollte es laufen. Achte bitte darauf, dass in dem Consoleneditor das Häkchen bei „Script enable“ aktiv gesetzt ist.
Beste Grüße
Dieter
Danke dir, nun läuft es.
Bekomme sogar 2 Werte zurück, ob es schöner gegangen wäre weiß ich nicht, aber es funktioniert.
Das nur alle 10 Sekunden gesendet wird kann ich wohl im Script nicht mitgeben, aber den Traffic werde ich wohl überleben.
>D
var1=0
var2=0
>T
var1=eHZ#Power_curr
=>WebSend [192.168.17.210:8181] /cuxd.exe?Status=dom.GetObject(„EHZ_aktuell“).State(%var1%)
var2=eHZ#Total_in
=>WebSend [192.168.17.210:8181] /cuxd.exe?Status=dom.GetObject(„EHZ_Verbrauch“).State(%var2%)
>B
=>sensor53 r
>M 1
+1,3,s,0,9600,eHZ
1,77070100010800ff@1000,Gesamtverbrauch,KWh,Total_in,2
1,77070100020800ff@1000,Gesamteinspeisung,KWh,Total_out,2
1,77070100100700ff@1,Verbrauch,W,Power_curr,2
#
Du kannst die Häufigkeit, mit der Daten per Befel gesendet werden über zwei Parameter beeinflussen:
1. Über die Telemetry Period, die Du unter Configuration / Logging einstellen kannst
2. Über die Sektionsangabe. Wenn Du anstelle „>T“ „>S“ schreibst, wird der Code dahinter z.B. jede Sekunde ausgeführt.
Nähere Infos und weitere Optionen findest Du in der Tasmota Beschreibung unter Scripte.
Dieter
Danke dir, nun klappt alles super, dank deiner Hilfe!
Hallo,
ich habe einen ISKRA MT175 und den Hichi IR Leser mit dem ESP-01 und lokalem WLAN.
Die Werte kommen soweit, bis auf L1, L2 und L3, die sind immer null. Muss ich das so akzeptieren? Oder kann ich am ISKRA Zähler noch etwas freigeben? Den PIN vom Netzbetreiber habe ich eingegeben.
Jürgen
Nach meinem Kenntnisstand werden die Phasen L1-L3 nicht separat gemessen sondern nur als Summe. Auch in der ISKRA MT175 Anleitung stehen keine Werte für L1-L3 als Zusatzinformationen drin (siehe https://lackmann.de/sites/default/files/2020-07/MT175%20-%20Kurzanleitung%20V2.00.pdf).
Dieter
Hallo zusammen,
Ich habe ein ähnliches Setup, bei mir kommen die Werte für P (saldiert) und für jede Phase einzeln. Benutzt habe ich dafür dieses Script:
>D
>B
->sensor53 r
>M 1
+1,3,s,16,9600,MT175
1,77070100010800ff@1000,E_in,kWh,E_in,1
1,77070100020800ff@1000,E_out,kWh,E_out,1
1,77070100100700ff@1,P,W,P,18
1,77070100240700ff@1,L1,W,L1,18
1,77070100380700ff@1,L2,W,L2,18
1,770701004C0700ff@1,L3,W,L3,18
#
Das habe ich von der Tasmota-Seite: https://tasmota.github.io/docs/Smart-Meter-Interface/
Was ich aber nicht hinbekomme, ist die Daten in Grafana aus der InfluxDB auszulesen und grfisch darzustellen.
Grafana sagt immer „no data“. Mit allen anderen Tasmota-Geräten habe ich das Problem nicht.
Anscheinend liegen die Daten in einem Format vor, mit den Grafana nichts anfangen kann. Wie habt ihr es gelöst bekommen?
Mein Setup:
MT175 -> selbstgebauter Optokopf -> ESP8266 mit Tasmota -> per MQTT an ioBroker auf Raspi -> MQTT-Adapter im ioBroker -> der ganze String wird in InfluxDB geschrieben.
Wie muß ich die Daten aufbereiten oder was muß ich unter Grafana tun, damit die Daten visualisiert werden?
Software ist nicht so meins, bin echt schon weit gekommen, am letzen Schritt scheitere ich.
Ich hoffe, ihr könnt mir helfen.
Danke und Grüße
Hallo,
ich habe das ganze gestern in Betrieb genommen. Inkl InfluxDB / Grafana usw. Nach der Inbetriebnahme des Lesekopfes wurden direkt im Objekte Ordner des Sonoff Adapters Werte angezeigt. Analog zu den Werten welche man sieht, wenn man sich direkt per Netzwerk auf den Lesekopf schaltet (192.168.xxx.xxx)
in den Objekten habe ich dann eingestellt (Zahnrad auf der rechten Seite der Zeile) das Influx DSG dieses Wert loggen soll. In Influx selbst dann den Query gebaut und in Grafana eingefügt. Geht schneller und einfacher als ich dachte.
Hallo ich muss mal ganz dumm nachfragen da ich echt am verzweifeln bin und mich mit scripten und datenpunkte in der tiefe nicht so gut auskenne.
Ich hab den Lesekopf mit tasmota wifi am zähler, funktioniert soweit alles.
Hab mqtt eingerichtet und bekomm auch daten, allerdings bekomm ich nur den Datenpunkt mqtt.0.tele.SENSOR wo dann alles aufgelistet ist im wert… zb
Total_day_kwh: 123.1234,
Usw…
Was muss ich tun damit ich die werte in einzelne datenpunkte bekomme.
In Tasmota stehen die Werte schon als einzelne Variabeln zur Verfügung (z.B. in Total_day_kwh usw.). Dann könntest Du diese mit der Scriptsprache weiterverarbeiten und z.B. an eine CCU übergeben.
Alternativ kannst Du die MQTT-Nachricht vom MQTT-Broker holen und verarbeitest diese weiter. Dies mache ich über Node-Red und Du findest die Anleitung dazu in meinem folgenden Artikel (nach der Installation von Node-Red): Mit Node-Red, InfluxDB und Grafana Daten auf einem Synology NAS sammeln und visualisieren (Teil 2/2)
Alternativ kann man das auch mit Openhab oder IOBroker machen, zu denen es auch eine Menge Anleitungen im Netz gibt.
Hallo,
ich versuche gerade das mit tasmota + TCRT5000 (an einem alten ferraris zähler) zum läufen zu bekommen.
der counter funktioniert zuverlässig.
aber das script zur auswertung in kwh und watt bekomme ich nicht gebacken. (schön wäre kwh gesamt , woche, vortag, heute)
kann mir da jemand helfen ?
Da fehlen noch ein paar Angaben. D.h. Du bekommst per MQTT den Zählimpuls geliefert. Summierst Du diesen schon auf und wenn ja in welchem System?
Moin!
Mein Logarex liefert leider nur die aktuelle Gesamtleistung in Watt, nicht aber die aktuelle Leistung je Phase. Die kann man sich zwar aus den anderen Werten, die er liefert, berechnen, und das klappt auch soweit, ich bekomme die Variablen aber nicht mit „>WM“ im Web UI angeszeigt. Hier das Script:
>D
power_l1_curr=0
power_l2_curr=0
power_l3_curr=0
>B
=>sensor53 r
>M 1
+1,3,o,0,9600,WR
1,1-0:1.8.0*255(@1,Power total in,KWh,total_in,4
1,1-0:2.8.0*255(@1,Power total out,KWh,total_out,4
1,1-0:16.7.0*255(@1,Power current,W,current,16
1,1-0:32.7.0*255(@1,Voltage L1,V,volt_l1_curr,1
1,1-0:52.7.0*255(@1,Voltage L2,V,volt_l2_curr,1
1,1-0:72.7.0*255(@1,Voltage L3,V,volt_l3_curr,1
1,1-0:31.7.0*255(@1,Amperage L1,A,amperage_l1_curr,2
1,1-0:51.7.0*255(@1,Amperage L2,A,amperage_l2_curr,2
1,1-0:71.7.0*255(@1,Amperage L3,A,amperage_l3_curr,2
1,1-0:14.7.0*255(@1,Frequency,Hz,HZ,2
1,1-0:81.7.4*255(@1,Phaseangle I-L1/U-L1,deg,phaseangle_i1_u1,1
1,1-0:81.7.15*255(@1,Phaseangle I-L2/U-L2,deg,phaseangle_i2_u2,1
1,1-0:81.7.26*255(@1,Phaseangle I-L3/U-L3,deg,phaseangle_i3_u3,1
1,1-0:81.7.1*255(@1,Phaseangle U-L2/U-L1,deg,phaseangle_u2_u1,1
1,1-0:81.7.2*255(@1,Phaseangle U-L3/U-L2,deg,phaseangle_u3_u2,1
1,1-0:1.8.0*96(@1,Power day,KWh,total_day,1
1,1-0:1.8.0*97(@1,Power week,KWh,total_week,1
1,1-0:1.8.0*98(@1,Power month,KWh,total_month,1
1,1-0:1.8.0*99(@1,Power year,KWh,total_year,1
>T
power_l1_curr=WR#volt_l1_curr*WR#amperage_l1_curr*cos(WR#phaseangle_i1_u1)
power_l2_curr=WR#volt_l2_curr*WR#amperage_l3_curr*cos(WR#phaseangle_i2_u2)
power_l3_curr=WR#volt_l3_curr*WR#amperage_l3_curr*cos(WR#phaseangle_i3_u3)
print P1 %power_l1_curr%W P2 %power_l2_curr%W P3 %power_l3_curr%W
>WM
WR Power L1 %power_l1_curr%
WR Power L2 %power_l2_curr%
WR Power L3 %power_l3_curr%
#
Nur die Messwerte aus „>M“ werden angezeigt, aber nicht meine Variablenwerte. Irgendeine Idee? Wurde ggf. die notwendige Option nicht ins Tasmota gelinkt?
In der Doku zu Tasmota steht, dass Du für die W>-Sections das Binary mit der folgenden Option compilieren musst, damit das funktioniert: „Requires compiling with #define USE_SCRIPT_WEB_DISPLAY“.
Gruß
Dieter
Danke dir für tolle Beschreibung hier. Ich habe es nachgebaut und sehe jetzt meinen Verbrauch auf der Tasmota Seite.
Mann kann die Daten weiterverwenden schreibst du. gibt es dazu auch so eine Schritt für Schritt Hilfe?
Ich scheitere schon am mQtt. Weiß nicht wie ich den Broker zu laufen bekommen.
als Hardware nutze ich ein Qnap Nas auf den Im Doker Home Assistant läuft.
mein Ziel ist es die Verbrauchsdaten im Home Assistent sehen.
Grüße
Im Beitrag MQTT-Broker Mosquitto als Docker Image auf einem NAS installierenhabe ich die Installation für Synology beschrieben. Für QNAP läuft das fast genauso ab. Damit solltest Du MQTT zum Laufen bringen. Wenn Du dann in Tasmota diesen neuen Broker als Adresse in den MQTT Settings angibst, wirst Du dort auch die Daten erhalten. In Home Assistant brauchst Du nur die MQTT Integration installieren, den richtigen Server eintragen und schon kannst DU die Topics abfragen. Dies funktioniert in allen Systemen ähnlich, egal ob Du Node-Red, IOBroker, Openhab oder Home Asisstant verwendest.
Gruß
Dieter
@Trooper
Meine Versuche sind nicht von Erfolg gekrönt mit dem Skript.
Wärst du wohl so nett und würdest das Skript hier pisten?
Gruß Ulli
Das Ganze klingt ja super, nur leider verschlüsselt mein Anbieter die Daten.
Der Code ist vorhanden, kann man da was machen?
Normalerweise werden die Daten vom Zähler unverschlüsselt bereitgestellt und nicht vom Anbieter. Welchen Zähler benutzt Du und wie kommst Du darauf, dass die Daten verschlüsselt sind?
Moin,
mache mal aus dem Energieversorger den Messstellenbetreiber, dass ist nicht immer ein und das identische Unternehmen.
Schöner Bericht.
Kann man wirklich 2 Zähler an einem ESP 32 anschließen? Was macht man dann mit dem Script?
Danke!
Messstellenbetreiber klingt sehr sperrig, häufig sind das dann die Netzbetreiber. Ich hoffe, dass jeder weiß, von wem er seinen Zähler erhält.
Du kannst ohne Probleme mehrere Zähler an D1 Mini über Tasmota anschließen. Hierfür hast Du ja die M>-Sektion, in der du diese alle festlegen kannst. Die Zahl ist aus meiner Sicht nur durch die Zahl der seriellen Schnittstellen (RX-Kanal ist der wichitge) begrenzt (Anzahl I/O-Pins), über die du die Werte empfängst. Im Script kannst du dann auf alle Werte der unterschiedlichen Zähler zugreifen, die Du defniert hast. Ich habe tatsächlich mehrere Zähler über einen D1 mini laufen.
Gruß
Dieter
Hi, wie sieht denn sone Config für mehrere Zähler aus? ich probiere mich hier grad durch, aber ich finde keine Lösung und auch sonst scheint der Wemos D1 immer mal wieder abzustürzen…
Ich habe einen Holley Zähler und möchte noch einen SDM72 (MODBUS) auslesen…
Bei M muss also ne 2 hin… aber kommt am Ende dann der Hashtag oder am Ende jeder Zählerkonfiguration?
Laut deiner Beschreibung muss vor jedem Wert, dann auch die Nr des Zählers, den man auslesen will oder?!
Hier ist das anders, evtl. falsch beschrieben: https://ottelo.jimdofree.com/stromz%C3%A4hler-auslesen-tasmota/ unter Beispiel für 3 Leseköpfe / 3 Zähler an einem ESP (max 5 möglich)
Ich würde das jetzt so konfigurieren:
>D
>B
->sensor53 r
>M 2
+1,14,s,16,9600,Haus
1,77070100600100ff@#,Zähler ID,,server_id,0
1,77070100020800ff@1000,Einspeisung (Total),kWh,export_total_kwh,4
1,77070100010800ff@1000,Verbrauch (Total),kWh,total_kwh,4
1,77070100100700ff@1,Verbrauch (Current),W,curr_w,0
1,77070100200700ff@1,Spannung L1,V,volt_p1,1
1,77070100340700ff@1,Spannung L2,V,volt_p2,1
1,77070100480700ff@1,Spannung L3,V,volt_p3,1
1,770701001f0700ff@1,Stromstärke L1,A,amp_p1,1
1,77070100330700ff@1,Stromstärke L2,A,amp_p2,1
1,77070100470700ff@1,Stromstärke L3,A,amp_p3,1
1,77070100510701ff@1,Phase angle U-L2/U-L1,deg,phase_angle_l2_l1,1
1,77070100510702ff@1,Phase angle U-L3/U-L1,deg,phase_angle_l3_l1,1
1,77070100510704ff@1,Phase angle I-L1/U-L1,deg,phase_angle_p1,1
1,7707010051070fff@1,Phase angle I-L2/U-L2,deg,phase_angle_p2,1
1,7707010051071aff@1,Phase angle I-L3/U-L3,deg,phase_angle_p3,1
1,770701000e0700ff@1,Frequenz,Hz,freq,0
+2,3,mN1,0,9600,WP,26,1,01040000,01040002,01040004,01040006,01040008,0104000a,0104000c,0104000e,01040010,01040012,01040014,01040016,01040018,0104001a,0104001c,0104001e,01040020,01040022,0104002a,0104002e,01040030,01040034,01040038,0104003c,0104003e,01040046,01040048,0104004A,01040156,01040158,0104018c,01040500,01040502
2,010404ffffffff@i0:1,Spannung P1,V,voltage_phase1,2
2,010404ffffffff@i1:1,Spannung P2,V,voltage_phase2,2
2,010404ffffffff@i2:1,Spannung P3,V,voltage_phase3,2
2,010404ffffffff@i3:1,Current P1,A,current_phase1,2
2,010404ffffffff@i4:1,Current P2,A,current_phase2,2
2,010404ffffffff@i5:1,Current P3,A,current_phase3,2
2,010404ffffffff@i6:1,Power P1,W,power_phase1,2
2,010404ffffffff@i7:1,Power P2,W,power_phase2,2
2,010404ffffffff@i8:1,Power P3,W,power_phase3,2
2,010404ffffffff@i9:1,Power Apparent P1,VA,power_apparent_phase1,2
2,010404ffffffff@i10:1,Power Apparent P2,VA,power_apparent_phase2,2
2,010404ffffffff@i11:1,Power Apparent P3,VA,power_apparent_phase3,2
2,010404ffffffff@i12:1,Power Reactive P1,VAr,power_reactive_phase1,2
2,010404ffffffff@i13:1,Power Reactive P2,VAr,power_reactive_phase2,2
2,010404ffffffff@i14:1,Power Reactive P3,VAr,power_reactive_phase3,2
2,010404ffffffff@i15:1,Power Factor P1,,power_factor_phase1,2
2,010404ffffffff@i16:1,Power Factor P2,,power_factor_phase2,2
2,010404ffffffff@i17:1,Power Factor P3,,power_factor_phase3,2
2,010404ffffffff@i18:1,Average Voltage,V,voltage_avg,2
2,010404ffffffff@i19:1,Average Current,A,current_avg,2
2,010404ffffffff@i20:1,Current Total,A,current_total,2
2,010404ffffffff@i21:1,Power Total,W,power_total,2
2,010404ffffffff@i22:1,Power Apparent Total,VA,power_a
#
Das sieht in der „+2,3 ,…“-Zeile etwas seltsam aus.
Ich habe mal ein Beispielscript für die Konfiguration zweier Smartmeter beigefügt.
Der ganze M-Block wird mit einem Hashtag abgeschlossen
Für jeden Smartmeter wird in der „Plus-Zeile“ definiert, wie er angebunden ist (hier liegt der häufigste Fehler, wenn der IO-Port nicht richtig angegeben wurde.
Ich empfehle grundsätzlich, erst einmal mit wenigen Abfragewerten zu starten, damit man sieht, ob das Ganze funktioniert.
Gruß
Dieter
=>sensor53 r
>M 2
+1,10,s,16,9600,MT175
1,77070100010800ff@1000,E_in,kWh,E_in,1
1,77070100020800ff@1000,E_out,kWh,E_out,1
+2,14,s,0,9600,MT681
2,77070100010800ff@1000,Total Consumed,KWh,Total_in,3
2,77070100100700ff@1,Current Consumption,W,Power_cur,0
2,77070100020800ff@1000,Total Delivered,KWh,Total_out,3
#
Lieber Dieter,
danke für Deine Erläuterungen hier.
Ich möchte die Daten gerne direkt an google Sheets senden. Also nicht MQTT oder lokal.
Mit Test-Aufruf einer URL im Brower sendet er Test-Daten schon korrekt und google sheets verarbeitet sie sauber.
Leider bekomme ich das mit Tasmota nicht hin (ein reiner ESP8266 kann es ja mit der richtigen Bibliothek.
Ich suche dies hier also modifiziert:
„WebSend [192.162.153.17:8181]/cuxd.exe?ret=dom.GetObject(„SV_Stromzaehlerstand“).State(%tmp1%)“
Ich kann nicht glaube, dass er nicht an https senden kann. Wäre doch ein riesiger Mehrwert für tasmota. auch z.B. direkt an telegram zu senden.
Hast du mein Problem verstanden? Gibt es eine Lösung?
Danke Dir
EDE
Hallo Ede,
Tasmota unterstützt kein TLS, so dass man https nicht nutzen kann. Begründet wird das mit dem hohen Speicherbedarf und ich vermute, dass dies auch am Abgleich von Zertifikaten, etc. liegt. Tasmota ist auf MQTT fixiert, ich glaube Telegram kann man auch nutzen.
Es gibt nur eine Ausnahme: Wenn Du einen ESP32 nutzt (i.d.R. nutzen die meisten einen ESP8266 wie z.B. für den D1 Mini), dann kannst Du über die „neue“ Scriptsprache Berry doch TLS nutzen. Näheres findest Du unter folgendem Link: https://tasmota.github.io/docs/Berry/
Da ich die Möglichkeiten Deiner Steckdose nicht kenne und Du schon angedeutet hast, dass da auf jeden Fall Tasmota aufspielbar wäre, würde ich mir einen simplen MQTT-Server (siehe auch meine Beiträge) irgendwo auf einem NAS oder einem Raspi installieren, ebenso ein Node-Red. Dann brauchst Du bzgl. MQTT so gut wie nichts zu konfigurieren, holst in Node-Red Deine Werte vom MQTT-Server einfach ab und überträgst diese dann z.B. in Google Sheets. Hier findest Du die Anleitung dazu https://flows.nodered.org/flow/a36ccbcfc43c264cda892383fe034fe3
Dieter
Hallo Dieter,
danke für die tolle Anleitung. Sogar das bauen der Tasmota-Firmware war damit total einfach :-).
Ich habe deinen Artikel auf thingiverse zu meinem Smartmeter Lesekopf verlinkt.
https://www.thingiverse.com/thing:5871917
Beste Grüße
Martin
Hey zusammen, ich habe einen ESP8266 Mini mit vorinstallierter TASMOTA Software gekauft.
Ziel war es, mit dieser Kombi an meinem Hager Stromzähler die Daten auszulesen – was funktionierte – aber auch die Anbindung zum HomeAssistant herstustellen und dort alle Daten im Energiedashboard erhalten zu können. Leider funktioniert dies aber nicht. gibt es hierfür ein spezielles Script, Stichpunkt SML?
Danke im Voraus.
Hallo,
wenn Du über Tasmota Daten an ein anderes System weitergeben willst, dann sollte das über einen MQTT Server erfolgen. Von dort liest Du dann diese in Deiner Zielanwendung z.B. Homassistant mit dem entsprechenden MQTT-Plugin ein. Das funktioniert i.d.R. sehr einfach. Wenn Du näher beschreibst, was bei diesem Weg nicht funktioniert, dann finden sich evtl. auch Lösungsvorschläge.
Gruß
Dieter
Hallo Leute,
hat jemand Erfahrung mit so einem IR-Lesekopf mit D1 Mini (per WLAN zum Router) in Verbindung mit Betrieb über einen Akku? Leider hab ich im allgemeinen Stromzählerkasten keine Möglichkeit an Strom zu kommen 🙁 Außerdem ist es im Zählerkasten schwierig mit dem WLAN Empfang da der als Stahlblech ist.
Hallo Martin,
die wesentluche Frage ist, wie häufig Du Daten übertragen möchtest. Danach richtet sich die Größe des Akkus bzw. das Ladeintervall. Bzgl WLAN kannst Du den D1 Mini außen in einer Kabelabzweigdose installieren und den Sensor nur innen im Zählerkasten.
Ich nutze diese Kombination mit einem 18650er Akku mit einer Kapazität von 3,4 mAh im Aussenbereich für verschiedene Sensoren. Ich übertrage ein Mal pro Stunde per WLAN für max. 20 Sekunden Daten. Der Akku hält dabei ca. 3 Monate (bei Kälte und Hitze), dann muss ich ihn wieder aufladen. Mit einem größeren Akku bzw. mehreren Akkus könnte ich natürlich die Laufzeit erheblich verlängern.
Gruß
Dieter
Guten Abend,
ich habe den Hichi IR usb Schreib und Lesekopf (HB0015), dieser verfügt aber über kein WLAN. Wie bekomme ich da nun die Tasmota Firmware drauf? Bin halt kkomplett neu in der Marterie.
Wollte damit dann über ioBroker die Daten auslesen lassen.
Vielleicht hat ja jemand eine Idee.
Vielen Dank dafür.
Es handelt sich beim dem Hichi nur im einen Schreib-/Lesekopf d.h. Infrarot-Sender und Empfänger. Du brauchst also noch einen Prozesser dazu, der die Signale empfängt, verarbeitet und weitersendet. Neben einem etwas überdimensionierten Raspi bietet sich hier eines Lösung auf Basis eines ESP 8266 an, wie z.B. den Wemos D1 Mini, der auch WLAN kann. Auf diesem wird die Firmware Tasmota aufgespielt und damit die Daten des Hichi verarbeitet und weitergesendet. Der Artikel beschreibt, wie das geht. Wenn du den Hichi direkt mit USB-Schnittstelle gekauft hast, brauchst Du noch einen Mikro-USB Adapter und muss dann in Tasmota die richtigen Ports für TX/RX wählen. Hierzu gibt es auch andere Webseiten, die das erläutern. Alternativ kann man die USB-Buche abschneiden und die Kabel wie im Beitrag beschrieben verbinden.
Gruß
Dieter
Hallo Profis, habe den SmartMeterReader von bitShake inkl. MQTT (https://www.amazon.de/dp/B0BN6CP2LV) und würde den Leistungswert des Stroms alle 5 Sekunden in die CCU3 in einer Variable erfassen. Kann man das aktuell nur über IO Broker machen, bzw. muss zwingend cuxd installiert sein, oder geht das auch irgendwie direkt?
Bin noch ziemlich neu in der Materie – muss ich in der CCU dann Ports freigeben? Gibts eine Schritt-für-Schritt Anleitung für Newbies?
vielen Dank im Voraus
Du wirst um ein paar Zeilen Code nicht herumkommen, zumal Du in Tasmota auch den Code für Deinen Zähler einrichten musst. Dies wird in einem Script gemacht. Dort kannst Du dann direkt die erkannten Werte an die CCU Werte per Websend schicken. Dies ist im letzten Absatz des Artikels beschrieben. Du fügts das Ganze dann in einer T> Sektion im Tasmota Script am Ende ein. Ich empfehle nur Werte zu schreiben, wenn sich diese geändert haben. Wie Du so etwas in einem Tasmota Script machst findest Du beispielsweise in dem Artikel Gas- und Wasserzähler mit Tasmota digitalisieren.
Wenn Du IOBroker, Openhab oder NodRed nutzen möchtest, dann brauchst Du vorher noch einen MQTT-Broker, an den Tasmota die Daten schickt. Ich empfehle Dir aber das direkte Schreiben in eine CCU Variable, das ist erst einmal der einfachere Weg.
Auf Youtube gibt es ein paar Videos von bitShake. Im dritten Video sendet er Daten an ein externes System ebenfalls mit einem WebSend Befehl. Ich empfehle Dir aber die Vorgehensweise, die im o.a. Artikel beschrieben ist.
BG
Dieter
Wie bekommt man denn die Werte aus den Untermenüs des Zählers? 1 Tag, 7 Tage, 365 Tage. Das klappt nicht, obwohl im Zähler die PIN hinterlegt ist. Diese Werte bekomme ich ja nur, wenn ich mit der Taschenlampe x-mal leuchte. So hier funktioniert es jedenfalls nicht. Die Codes sind aus der Bescheibung.
>D
>B
#ifndef ED300L
#define ED300L
#endif
=>sensor53 r
>M 1
+1,3,s,0,9600,
1,77070100010800ff@1000,Gesamtverbrauch,KWh,Total_in,2
1,77070100020800ff@1000,Gesamteinspeisung,KWh,Total_out,2
1,7707010001080060@1000,Verbrauch 1 Tag,KWh,Total_1d,2
1,7707010001080061@1000,Verbrauch 7 Tag,KWh,Total_7d,2
1,7707010001080062@1000,Verbrauch 30 Tag,KWh,Total_30d,2
1,7707010001080063@1000,Verbrauch 1 Jahr,KWh,Total_365d,2
1,77070100100700ff@1,Verbrauch,W,Power_curr,0
#
Die PIN schaltet alle internen Daten für das Display des Smartmeters frei. Welche Daten davon tatsächlich über die Infrarotschnittstelle übertragen werden ergibt sich aus der Beschreibung des Herstellers (wenn sie verfügbar ist). Daher befürchte ich, dass die Werte aus den Untermenüs (wie auch bei vielen anderen Zählern) für den ED300L nicht übertragen werden, sondern nur die Hauptwerte. Ein erster Anhaltspunkt hierfür ist meist die Tasmota Smartmeter Seite, auf der für viele Smartmeter die Beispielscripte angegeben sind https://tasmota.github.io/docs/Smart-Meter-Interface/.
Die bessere Lösung ist, dass Du die Hauptwerte wie Zählerstand oder Leistung in einer Datenbank protokollierst, dann kannst Du daraus z.B. mit Grafana beliebige Zeiträume auswerten und anzeigen lassen
Hallo,
ich habe einen Hichi Schreib-/Lesekopf an meinen MT175 nach dieser Anleitung eingesetzt. Vielen Dank für die Anleitung.
Ich habe nun das Problem, dass die Daten nur zu etwa 80%-90% in der Weboberfläche korrekt angezeigt werden. Zwischendurch werden für den Verbrauch, Gesamtverbrauch und auch für die Server-ID völlig falsche Werte angezeigt. Über die Console habe ich mir einen Datendump angeschaut (sensor53 d1 /…d0) und festgestellt, dass die erwarteten Datenpakete (z.B. 77070100010800ff, 77070100100700ff) hier nicht angezeigt werden.
Kennt jmd. dieses Problem? Sendet der MT175 hier wirklich nicht dauerhaft kontinuierlich die erwarteten Datenpakete und muss ich eher von einem Defekt des Hichi Schreib-/Lesekopfs ausgehen? Oder kann man an der Konfiguration noch irgendetwas justieren?
Gruß
Es könnte auch sein, dass der Lesekopf nicht sauber auf der Sendediode sitzt. Versuche diesen mal leicht zu drehen / zu verschieben und schau Dir an, ob es besser wird.
Gruß
Dieter
Vielen Dank für den Tipp – das war die Lösung.
Schon verrückt – nachdem ich mehr als 10 Stunden immer korrekte Daten erhalten habe, hätte ich nicht gedacht, das dies noch der Fehler sein könnte. Kopf leicht verschoben – jetzt habe ich seit 2 Tagen immer brachbare Werte.
Hallo zusammen,
ich habe das Problem das ich nur nach einem Neustart die Daten per MQTT gesendet bekomme.
Könnt Ihr mir helfen woran das liegen könnte?
Ich benutze folgendes Script,
>D
>B
->sensor53 r
>M 1
+1,3,s,0,9600,SML
1,77070100010801ff@1000,Verbrauch_Tarif_1,kWh,Total_Tarif1,3
1,77070100010802ff@1000,Verbrauch_Tarif_2,kWh,Total_Tarif2,3
1,77070100010800ff@1000,Verbrauch_Summe,kWh,Total_Summe,3
1,77070100100700ff@1,Current consumption,W,Power_curr,3
1,=h —-
1,770701001f0700ff@1,Current L1,A,Curr_p1,3
1,77070100330700ff@1,Current L2,A,Curr_p2,3
1,77070100470700ff@1,Current L3,A,Curr_p3,3
1,=h —-
1,77070100200700ff@1,Voltage L1,V,Volt_p1,3
1,77070100340700ff@1,Voltage L2,V,Volt_p2,3
1,77070100480700ff@1,Voltage L3,V,Volt_p3,3
#
für meinen Picus Apator
Vielen Dank für eure Hilfe 🙂
Das Script hat nichts mit MQTT zu tun, sondern decodiert nur die Infos vom Smartmeter. Damit Tasmota die Werte an einen MQTT-Broker sendet, muss unter „Configuration / Configure MQTT“ nur die IP-Adresse des MQTT-Brokers eingetragen werden. Fertig. Natürlich setzt das voraus, dass Du unter „Configuration / Configure WiFi“ dein WLAN ausgewählt und das Passwort dort angegeben hast, damit die Verbindung ins Netzt klappt. Das Ergebnis kannst du dir unter der Console anschauen. Hier sollte der Erfolg des Sendens sichtbar sein.
Gruß
Dieter
Trage nurdie MQTT-Broker Adresse unter „Configuration / Configure MQTT“ unter Host ein und ändere sonst gar nichts. Wenn du magst kannst Du den Topic-Namen noch selber vergeben, damit Du die Werte nachher besser unter diesem Namen findest, aber notwendig ist das nicht. Anschließend solltest Du die Ergebnisse im Broker sehen können. Der Erfolg des Sendens kannst du dir in der Console anschauen.
Hallo Dieter,
ich habe die Mqtt Config so eingetragen.
laut console kommt auch der gesamte String per Mqtt.
Leider kommt diese aber nur nach einem Neustart beim Broker an. und das genau nur einmal.
Du kannst mit über kontakt@homeitems.de gerne mal den Screenshot der Console zukommen lassen, vielleicht erkenne ich darauf mehr.
Hallo Dieter,
in Tasmota war und ist alles richtig…
Ich habe leider das falsche Topic genommen und somit die Daten nur nach einen Neustart bekommen.
Ich habe jetzt das richtige Topic ausgewählt und siehe da bekomme alle 10 Sek. neue Daten.
Vielen Dank für deine Unterstützung.
hallo Qmaxx-85,
ich habe auch einen Picus adaptor.
wie hast du es geschafft, das die Werte A W V für L1,L2,L3 angezeigt werden.
Ich habe die Schlüssel dafür auch in dem PDF zum Zähler gefunden,
aber der Picus sendet sie nicht, obwohl die Pin eingegeben, also „off“ ist , und InF auf „on“ steht
wofür dind die
1,=h —-
in deinem Script ?
Gruss ms1958
hallo Qmaxx, darf ich fragen , ob an deinem Picus die einzelnen strom un Spannungswerte kommen ? bei meinem Picus06.d kommen nur E_in E_out und P_curr über die IR Schnittstelle
Weiter oben steht: „Wenn man den MQTT Server konfiguriert hat…“
Bin leider ziemlich ahnungslos. Könnte mir jemand kurz schreiben, was man in die einzelnen Felder beim bitshake smartmeter eintragen muss (host, client usw)? Mein MQTT Server auf dem raspberry hat die Adresse 192.168.2.118. Ist das der host? Und als Abo-Namen hab ich „tasmota“ gewählt.
Für Hilde wär ich sehr dankbar!
… nicht nur für Hilde, auch für Hilfe.. 😉
Hallo,
möchte gerne zwei SML-Zähler über 2xHichi IR Kopf mit einem D1 Mini auslesen.
Dies bekomme ich auch zur Funktion.
Jeder der beiden Zähler gibt 19Werte aus (Zählernummer, Zählerstand Einspeisung und Bezug, Strom, Spannung, Wirkleistung, Phasenabweichung jeweils L1, L2, L3; Frequenz, etc.). Leider bekomme ich in Tasmota nicht alle 36 Werte angezeigt und über MQTT übertragen. Genau bei 19 Werten ist Schluß. Kann man diese Grenze aufheben oder muss ich meine Werte reduzieren.
Vielen Dank für Eure Unterstützung.
Frank
Lt. Doku kann Tasmota bis zu 50 Variabeln verarbeiten (45 numerische und 5 strings). Mit MQTT kannst Du theoretisch bis zu 260MB übertragen, da wirst Du nicht dran kommen.
Bist Du sicher, dass Du diese Werte alle über die Infrarotschnittstelle erhältst? I.d.R. werden über die IR-Schnittstelle nur ein Teil der Werte übermittelt, die Du auf dem SmartMeter auf dem Display anzeigen lassen kannst. Bitte prüfe das erst einmal.
Guten Tag,
Den lesekopf habe ic hsoweit instlliert und auch fertig konfiguriert.
Das Problem ist jetzt allerdings, dass der Kopf zwar unter Objekte bei IObroker angezeigt wird aber weder den gesammt verbrsuch noch den aktuellen verbrauch an den iobroker sendet. er wird nur als online angezeigt.
auf der Webpage vom Kopf werden die aktuellen werte korrekt angezeigt
wo liegt der fehler
Hallo,
ich habe entsprechend dieser perfekten Anleitung im Februar dieses Jahres den Lesekopf installiert. Es hat alles rund 4 Monate perfekt funktioniert. Dann wurden von heute auf morgen plötzlich keine Daten mehr über Tasmota empfangen. Ich habe dann alles mögliche probiert, da ich zunächst dachte, es liegt am Lesekopf, der Verkabelung oder Tasmota.. nichts von dem war es: der Zähler (ISKRA MT175) hat sich von sich aus wieder in den „Standardmodus“ zurückgesetzt und keine Daten mehr übertragen!? Nach Eingabe der PIN ging es wieder. Leider habe ich dieses Problem jetzt „regelmäßig in unregelmäßigen Abständen“. PIN-Eingabe – geht wieder – ein paar Tage später wieder dasselbe. Hat jemand auch schon diese Erfahrung gemacht? Hat jemand schon mal den Schreibkopf im praktischen Einsatz getestet? Geht dieser mit der Tasmota-Einstellung überhaupt irgendwie anzusteuern? Könnte mir nämlich vorstellen, (falls es funktionieren sollte) die PIN Eingabe über den Schreibkopf vorzunehmen, sobald der Zähler mal wieder nicht mehr sendet. Vielleicht hat jemand ne Idee. Danke LG Marc
Das ist eine interessante Idee, aber mit Aufwand verbunden. Du kannst in der smartmeter Konfiguration (M-Section) auch den send Kanal angeben ( ). Da ich das selber noch nicht getestet habe, würde ich die Details in dem Tasmota Artikel zu den smartmetern suchen https://tasmota.github.io/docs/Smart-Meter-Interface/#meter-definition. Wenn du Stromausfälle oder das unbeabsichtigte mechanische Betätigen der blauen Taste ausschließen kannst würde ich den Netzanbieter kurz informieren und um Austausch des Gerätes bitten.
Hallo Dieter,
vielen Dank zuerst mal für das Erstellen der Seite. Ich hab mich gestern auch durch die Hichi-Einrichtung gekämpft und suche jetzt nach der Möglichkeit, die Daten zu loggen…
Da ich in den Kommentaren noch nichts dazu gelesen habe, hier die Auflösung für die @1000 oder @1: Das gibt die Fließkommastelle des ausgelesenen Wertes an. D.h. Wenn Du als Einheit kWh haben willst, stellst Du vorne ein @1000 hin. Wenn Du aber Wh sehen willst, musst Du @1 setzen. Demensprechend könntest Du nach meinem Verständnis mit @10 auch Deziwattstunden anzeigen lassen 😉
Gruß
Karsten
Danke Karsten für die zusätzlichen Informationen, die mit Sicherheit einigen helfen, ihre Daten optimaler zu formatieren. Bzgl. Logging empfehle ich den Weg über Node-Red zu nehemn und das Ganze in der InfluxDB zu speichern.
Gruß
Dieter
Ich habe den Lese Kopf mit RX TX ESP8266 nodemcu
>D
>B
->sensor53 r
>M 1
+1,3,s,16,9600,MT175
1,77070100010800ff@1000,E_in,kWh,E_in,1
1,77070100020800ff@1000,E_out,kWh,E_out,1
1,77070100100700ff@1,P,W,P,18
1,77070100240700ff@1,L1,W,L1,18
1,77070100380700ff@1,L2,W,L2,18
1,770701004C0700ff@1,L3,W,L3,18
1,77070100000009ff@#,Server_ID,,Server_ID,0
#
Das Skript eingefügt kommt aber nur
08:34:29.406 MQT: tele/tasmota_5859B7/STATE = {„Time“:“2023-09-01T08:34:29″,“Uptime“:“0T00:08:38″,“UptimeSec“:518,“Heap“:19,“SleepMode“:“Dynamic“,“Sleep“:50,“LoadAvg“:19,“MqttCount“:5,“POWER“:“ON“,“Wifi“:{„AP“:1,“SSId“:“Pyka“,“BSSId“:“CC:CE:1E:F5:A4:53″,“Channel“:6,“Mode“:“11n“,“RSSI“:92,“Signal“:-54,“LinkCount“:1,“Downtime“:“0T00:00:03″}}
08:34:29.414 MQT: tele/tasmota_5859B7/SENSOR = {„Time“:“2023-09-01T08:34:29″,“MT175″:{„E_in“:0.0,“E_out“:0.0,“P“:0.00,“L1″:0.00,“L2″:0.00,“L3″:0.00,“Server_ID“:““}}
LED sehe ich auch nicht Arbeiten mit meinem Handy vebunden schein er mit IOBrocker zu sein…..
Aus dem Consolenoutput kann man nicht wirklich viel ableiten, außer dass keine Werte ausgelesen werden. Deine MQTT-Verbindung funktioniert zumindest. Wurde die PIN richtig eingegeben, so dass die Daten vom SmartMeter gesendet werden? Hast Du einen MT175 als SMartMeter? Prüfe mal alle Schritte, die ich aufgeführt habe, wenn es nicht funktioniert Aus der Erfahrung liegt es fast immer an einem der aufgezählten Punkte. Sofern Du eine DeepSleepTime eingestellt hast, würde ich die fürs Experimentieren erst einmal deaktivieren.
Ich hab ein paar Rechtschreibfehler gefunden:
> „Leistung“ ist ein String, der die Bezeichnung des _Datenbwertes_ darstellt
> dann wird der Wert _püber_ diesen Variablennamen angesprochen
> kann beliebig _geädert_ werden
> wie man hier schnell zu einer Lösung _kommt::_
> SmartMeter _wir_ der ISKRA MT175 besitzen 2 Dioden
> Die einfache Regel hier ist dunkle/_schware_ Diode
> _wen nman_ den MQTT-Server eingestellt hat
> dann kann man _z.B.wie_ folgt
> Ich versende _z.B. _die Werte
> 1,77070100100700ff@1,Leistung,W,Power_curr,1
Hier steht „W“.
> „kwH“ ist ebenfalls ein String, der die Einheit für die Konsolenausgabe darstellt (kann beliebig geändert werden)
Hier „kwH“.
Danke. Hab die Sache korrigiert.
Hallo zusammen,
bei mir ist das bitshake Modul mit Tasmota am laufen und funktioniert alles wunderbar mit dem Script für meinen Holley Stromzähler. Ich habe noch einen Raspberry mit dem Volkszähler am Laufen und würde nun gerne dorthin die ausgelesenen Daten übertragen. Geht das innerhalb des Tasmota Scripts für den Zähler ? Hat das schon mal jemand gemacht und kann mir einen Tipp geben ?
Viele herzliche Grüße
Hallo,
ich habe diese Anleitung verwendet und mich soweit es ging daran gehalten, jedoch ohne Erfolg.
Ich habe folgende Hardware / Software (Link zu den Fotos jeweils darunter):
– Wemos D1 mini pro
https://drive.google.com/file/d/1TVPP52Z5mvWDx3nA5Iy12a7g_t6YU8uP/view?usp=drive_link
https://drive.google.com/file/d/1nK_UxmDo_1izCY0cTGdfJKPW4rIdsMjs/view?usp=drive_link
Diesen habe ich mit der aktuellen Tasmota Version geflashed, wobei ich in der „user_config_override.h“ noch folgende Zeilen vor dem letzten „endif“ eingefügt habe:
#ifndef USE_SCRIPT
#define USE_SCRIPT
#endif
#ifndef USE_SML_M
#define USE_SML_M
#endif
#ifdef USE_RULES
#undef USE_RULES
#endif
– IR TTL Lesekopf
https://drive.google.com/file/d/1R5588g1dcFtu698u2TKYok4kmWf0YAzS/view?usp=sharing
https://drive.google.com/file/d/1nj-nCIzm5S4J39uq5ZpqEoozbK7Iwz5b/view?usp=drive_link
– Smartmeter: Landis+Gyr E450
Via Handykamera habe ich geprüft, der Smartmeter sollte alle 5 Sekunden Daten liefern, die LED leuchtet zumindest auf.
– Gehäuse: eigener 3D Druck (aus weißem PLA) – ich hoffe, dass es nicht das Problem ist
Ich habe es wie folgt verdrahtet:
IR Lesekopf – Wemos
GND – GND
Vcc – 3,3V
RX – D6
TX – D8
https://drive.google.com/file/d/1G8Dy6A-13vJgGzb7rwy6G0ffsk8gKqdA/view?usp=drive_link
Was ich bis jetzt nicht gefunden haben ist, welchen Wert ich im Tasmota Script für den GPIO eingeben muss.
Den Wert für Arduino, NodeMCU, PhysicalPIN,…
Mein Script sieht aktuell wie folgt aus:
—————————————————
>D
>B
smlj=0
=>sensor53 r
>R
smlj=0
>S
if upsecs>22
then
smlj|=1
endif
>M 1
+1,12,r,0,9600,Licht
1,=so3,512
1,pm(r1.0.0)@1,Time,,Time,
1,pm(32.7.0)@1,V L1,V,V_L1,1
1,pm(52.7.0)@1,V L2,V,V_L2,1
1,pm(72.7.0)@1,V L3,V,V_L3,1
1,pm(31.7.0)@1,A L1,A,A_L1,1
1,pm(51.7.0)@1,A L2,A,A_L2,1
1,pm(71.7.0)@1,A L3,A,A_L3,1
#
—————————————————
Mir ist klar, dass mein Smartmeter die Daten verschlüsselt sendet.
Ich habe im Moment die Zeile für das Entschlüsseln herausgenommen um zu sehen, ob überhaupt Daten ankommen.
–> leider erhalte ich aktuell KEINE Daten in der Console.
Ich hoffe, es kann mir jemand einen Tipp geben, der mir weiterhilft.
Du brauchst zum Empfangen nur den RX Kanal auf D6, dieser hat den GPIO Wert 12, den Du in der M-Sektion auch richtig eingetragen hast.
Mir ist aufgefallen, dass das Script für dein Smartmeter auf der Tasmota Seite etwas anders aussieht. Auch ist dort nur eine Baudrate von 2400 eingetragen.
Ansonsten hilft häufig, den Sensor leicht zu drehen, damit die LEDs wirklich übereinander sind. Hier verweise ich nochmal auf meine Checkliste mit beliebten Fehlern. Auch sollte das Scripting im Consolenfenster aktiviert sein.
Gruß
Dieter
Ich habe ein EMH metering – eHZM (SML)
Script (https://tasmota.github.io/docs/Smart-Meter-Interface/#emh-metering-ehzm-sml, tariflos habe ich mal rausgenommen, weil ich da in der Tasmota übersicht lustige Sonderzeichen bekomme):
>D
>B
->sensor53 r
>M 1
+1,14,s,0,9600,
1,77070100600100FF@#,Zaehlernummer,,serialnr,16
1,77070100010801FF@1000,Pos Wirkenergie Tarif 1,kWh,pos_wirk_tarif_1,1
1,77070100010802FF@1000,Pos Wirkenergie Tarif 2,kWh,pos_wirk_tarif_2,1
1,77070100020801FF@1000,Neg Wirkenergie Tarif 1,kWh,neg_wirk_tarif_1,1
1,77070100020802FF@1000,Neg Wirkenergie Tarif 2,kWh,neg_wirk_tarif_2,1
1,77070100100700FF@1,Momentanwirkleistung,W,momentanwirkleistung,0
#
Dump sagt u.a.
00:01:32.785 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 ff 55 00 00 01 10 01
-> sieht also gut aus. (Datenblock alle 5 Sekunden)
Auf der Übersichtsseite bekomme ich aber nur 0-Werte – bzw. jetzt nach 15 Minuten das erste Mal nen Satz. Woran kann das liegen?
Hehe, nach 30 Minuten rumprobieren funktioniert es zuverlässig, wenn ich nach ner Scriptänderung das Teil neustarte. Fragt mich nicht wieso
Danke 🙂