NEWS
IR-Lesekopf (Stromzähler, SML-Format) einbinden
-
So eine total unabhängige ESP-Lösung hätte was ...
hab gerade dein Thread hier gesehen und versucht ...
Hab ESP mit einem fertig Image von hier ( https://ottelo.jimdofree.com/stromzähler-auslesen-tasmota (v14.2.0)) geflasht,
Typ "Generic (0)" ausgewählt, Script eingefügt und enabled.
RX auf GPIO, TX auf GPIO1 angeschlossen, Baud 9600, ...Aber ein sensor53 d1 bringt nur:
19:58:29.487 CMD: sensor53 d1 19:58:29.493 MQT: energy/tasmota_AA0722/RESULT = {"Time":"2025-02-04T19:58:29","SML":{"CMD":"dump: 1"}}
Da müßten ja dann Daten durchlaufen, oder?
Hättest du ein anderes Image welches ich testen könnte?
Der Lesekopf funktioniert, an einem Raspi angeschlossen und Monitoring der Console zeigt durchlaufende Daten ...
Die Weboberfläche zeigt:
-
Hab ESP mit einem fertig Image von hier
Ich bau mir die Images selbst. Dazu läuft Tasmocompiler als Docker-Container.
Kommt darauf an, was genau Du da an CPU hast (ESP8266, ESP32).Versuch mal das hier:
tasmota_esp8266_sml.binIst für einen ESP8266 Generic.
-
@topsurfer Mein serieller Lesekopf hat mich durch die Beschriftung der Lötpads für die serielle Verbindung irritiert. Auf dem mit RX beschrifteten Pad sendet der Lesekopf. Auf dem TX Pad wird empfangen.
-
@topsurfer also wenn du auf den gängigen Handelsartikeln nach
ir lesekopf tasmota
wirst du diverse fertige finden ...
Wenn du die Teile schon hast, viel Erfolg und Spaß -
Danke Codierknecht,
hab dein Image installiert (hab Wemo D1 Mini, 8266), gleiches verhalten.RX/TX hab ich schon getauscht (mache beschriften halt was erwartet wird, andere was anliegt).
Nutze ja GPIO1 und 3, in Tasmota müssen die ja nicht als rx/tx definiert werden, nur "Generic" und Script (incl. enable)... Oder übersehe ich was?
Hab einen DWS7612.2 (ZweiWege), nutze das Scripzt "DZG DWS76 (SML) - (Succesfully tested with DWS7612.1T)"
Evtl. teste ich morgen mal einen aneren ESP, nicht dsa RX/TX defekt sind
-
@topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
in Tasmota müssen die ja nicht als rx/tx definiert werden
Aber in den Parametern des SML-Scripts:
https://tasmota.github.io/docs/Smart-Meter-Interface/#meter-definition
Du kannst prinzipiell beliebige GPIO's benutzen. Muss dann halt im Script konfiguriert werden. -
@codierknecht said in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
Aber in den Parametern des SML-Scripts:
Ja, prinzipiell kann man dort Anpassungen vornehmen.
Aber wenn ich "standard" lasse, GPI0 3, Baud 9600, SML, ... muss ja dort nichts angepasst werden.
+1,3,s,16,9600,DWS7612
-
muss ja dort nichts angepasst werden
Eigentlich nicht.
Ich nutze GPIO 1. Hinter dem
s
steht bei mir allerdings eine0
>D >B =>sensor53 r >M 1 +1,1,s,0,9600,eHZM
-
So, sehe Daten!
Hab "spaßeshalber" mal deinen GPIO-Wert "1" bei mir eingetragen, und schon ging es!
+1,1,s,0,9600,DWS7612Wobei der beschriftete RX vom Lesekopf bei mir klar an GPIO3/RX vom ESp geht (und immer noch) ! (TX analog auf GPIO1).
Evtl. ist tatsächlich am Lesekopf das RX und TX "getauscht", wobei ich ja vorher auch schon RX/TX getauscht hatte ...Was ich jetzt sehe, dass ich nur den Gesamtverbrauch sehe; Pin für Freischaltung des Zählers ist jetzt beantragt.
Verständnisfrage:
Man kann ja über den zweiten Wert im Script den RX-Pin (GPIO) mitgeben, aber wie und wo wird der genutzte TX mitgeteilt? Oder ist der letztlich gar nicht notwendig? -
@topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
Oder ist der letztlich gar nicht notwendig?
Ich brauche da nix. Hauptsache es funzt
-
@topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
Wobei der beschriftete RX vom Lesekopf bei mir klar an GPIO3/RX geht
was der Kopf empfängt muss der Gegenüber senden.
RX an Rx ist Blödsinnedit:
bitte nichts nachträglich ändern!
schon gar nicht ohne Kennzeichnung!Die nachfolgenden Posts ergeben sonst (teilweise) keinen Sinn mehr!
-
@homoran sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
was der Kopf empfängt muss der Gegenüber senden.
RX an Rx ist BlödsinnDer Meinung war ich auch, bis ich den TTL-Seriellen Lesekopf bekommen habe...
Dessen Sendeanschluss war mit "RX" beschriftet, musste also an den mit "RX" beschrifteten Pin des ESP-Moduls ...
Auch im dem Schaltplan für den "Volkszähler" ist das so.
https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-ttl-ausgang
Vielleicht ist das die Erklärung: Die obere Hälfte EMPFÄNGT das Signal vom Zähler, und RXD bedeutet "vom Zähler empfangene Daten"
-
So,
habe heute den Pin für den Stromzähler erhalten, sehe auch mehr Daten als zuvor in der Tasmota GUI, aber nicht im iob bzw. nicht über MQTT.
Warum ist das so? Wie kan ich diese 3 Werte über MQTT in iob "reinbekommen" ?Das Script sieht aktuell so aus, und liefert ja auch Daten an den ESP mit dem Stromzähöer
>D >B =>sensor53 r >M 1 +1,1,s,0,9600,DWS7612 1,77070100010800ff@1000,Energie,kWh,energy,4 1,77070100020800ff@1000,Energie geliefert,kWh,energy,0 1,77070100100700ff@1,Leistung,W,power,2 #
Tasmota Web-Gui zeigt auch korrekte Daten:
Aber im Object in iob (und über MQTT-Excplrer) sieht das so aus, es fehlt der oberer "Energie" Wert:
{ "Time": "2025-02-11T18:17:07", "DWS7612": { "energy": 5448, "power": -3.91 } }
-
@topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
Warum ist das so?
ich hab das mal hierhin verschoben, scheint ja um Tasmota zu gehen
-
OK,
hab es gelöst, im Script war zweimal das Keyword (?) "energy" genutzt,
in anderen Scripts hab eich das keyword "en_out" gsehen und damit ersetzt, jetzt komemn per MQTT alle drei Werte an.So sieht es nun bei mir aus, für einen DWS7612.2, evtl. kann es ja jemand gebrauchen:
>D >B =>sensor53 r =>sensor53 l2 >M 1 +1,1,s,0,9600,DWS7612 1,77070100010800ff@1000,Energie eingespeist,kWh,en_out,1 1,77070100020800ff@1000,Energie geliefert,kWh,energy,1 1,77070100100700ff@1,Leistung aktuell,W,power,0 #
-
@topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
Wie kan ich diese 3 Werte über MQTT in iob "reinbekommen" ?
Wie bei allem was mit Tasmota läuft: Über den Sonoff-Adapter.
Der dröselt das JSON für Dich auseinander. -
Dachte es würde laufen ...
in der Tasmota Web-Gui werden die Daten (speziell sichtbar am "Aktuellen Verbrauch: x W") im Sekunden Rhythmus aktualisiert, super.Aber im MQTT Explorer und in iob sehe ich nur selten aktuallisierungen, evtl. minütlich.
Gibt es noch einen Parameter, wie oft er MQTT rausschicken soll?
Oder ist dieses Intervall normal? -
@topsurfer
Kannst einstellen am Gerät. Glaub Standard steht da 300s mqtt Intervallconfiguration > configuration logging > telemetry period
-
@warp735 said in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
c
Oh danke, stimmt, da war was ...
Hab auch was verwechselt, ich hatte in meiner alten Installation (noch unter OpenHab) einen S0 Strom-Zähler genutzt.
(Zeit zwischen zwei Impuslen wurde bei höherem akt. Verbrauch geringer, diese Impulse über GPIO eines Raspberry überwacht, aus der Zeit zwischen 2 Impulsen den realen Momentan-Verbrauch ermittelt (in Echtzeit also).Jetzt geht es ja über MQTT ... kleinstes Intervall was in "Telemetry period" akzeptiert wird ist "10" (Sekunden), gibts da einen "Trick", den auf 2s zu setzen?
-
@topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:
Jetzt geht es ja über MQTT ... kleinstes Intervall was in "Telemetry period" akzeptiert wird ist "10" (Sekunden), gibts da einen "Trick", den auf 2s zu setzen?
Ja, wenn du direkt an einen MQTT-Broker sendest. Du musst das SML-Skript bearbeiten, hier als Beispiel anhand meines Skriptes.
Mein Skript:>D >B =>sensor53 r >M 1 +1,3,s,0,9600,SML 1,77070100010801ff@1000,Verbrauch_Tarif_1,kWh,Verbrauch_T1,7 1,77070100010802ff@1000,Verbrauch_Tarif_2,kWh,Verbrauch_T2,7 1,77070100010800ff@1000,Verbrauch_Summe,kWh,Verbrauch_Summe,7 1,77070100020800ff@1000,Einspeisung_Summe,kWh,Einspeisung_Summe,7 1,=h-- 1,77070100240700ff@1,Leistung_L1,W,Watt_L1,2 1,77070100380700ff@1,Leistung_L2,W,Watt_L2,2 1,770701004c0700ff@1,Leistung_L3,W,Watt_L3,2 1,77070100100700ff@1,Leistung_Summe,W,Watt_Summe,2 1,=h-- 1,77070100200700ff@1,Spannung_L1,V,Volt_L1,1 1,77070100340700ff@1,Spannung_L2,V,Volt_L2,1 1,77070100480700ff@1,Spannung_L3,V,Volt_L3,1 # >S =>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]%
Den Wert aus Zeile 14 möchte ich nun bei jeder Änderungen gesendet haben:
1,77070100100700ff@1,Leistung_Summe,W,Watt_Summe,2
Nun heißt es zählen. Zeile 14 ist der 8. Wert der ermittelt wurde, in den Zeilen 6 bis 9 und 11 bis 13 werden 7 Werte ermittelt, Zeile 14 ist der 8.
Unten unter das
>S
habe ich dafür die Zeile
=>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]%
diese sendet den 8. Wert bei jeder Änderung an das Topic
Soyosource/SOYO_1ce2fb/L1L2L3
Wie man das in Zusammenhang mit dem Sonoff-Adapter gehen würde weis ich nicht, ich lasse das an meinen MQTT-Adpater senden (mit Mosquitto dazwischen) und - um @Codierknecht zu referenzieren - drösel das JSON selbst auseinander (für den Rest)
Wie du siehst geht das sogar noch schneller als auf der Weboberfläche.
Nein, langsamer geht nicht, einen Tod musst du sterben. Entweder jede Änderungen oder alle 10 Sekunden und höher.