NEWS
Stromzähler per Sonoff ESP8266 auslesen
-
@armilar said in Stromzähler per Sonoff ESP8266 auslesen:
@oberfragger sagte in Stromzähler per Sonoff ESP8266 auslesen:
Oh. Da muss ich eine harte Entscheidung treffen ob ich die 35 Euro ausgeben möchte.
Ja, war nicht einfach... Hab's aber trotzdem gemacht und noch nicht bereut
Liefert sauber und kontinuierlich ohne Ausfälle Daten im 10 Sek. Takt an ioBroker...
Muss mal überlegen, eigentlich tuts ja auch ein TTL-Lesekopf, dann habe ich ja genau das erreicht was ich möchte- mittels NodeMCU (da vorhanden und bereits im Schaltkasten befindlich) zusätzlich das Smartmeter auslesen. Der hier sollte es ja tun, oder?
Das sind dann nur 20 Euro und und mit ein wenig Glück werde ich den IR -> USB für nen 20er los.
Naja. Sind alles keine Reichtümer, möchte nur nicht so viel ungenutzes Zeugs rumliegen haben.
-
@oberfragger sagte in Stromzähler per Sonoff ESP8266 auslesen:
Der hier sollte es ja tun, oder?
Ja, den ESP kannst du auch selbst verlöten. Gibt ja genügend Anleitungen und bestenfalls wird auch dafür noch eine mitgesendet.
-
@oberfragger sagte in Stromzähler per Sonoff ESP8266 auslesen:
Das sind dann nur 20 Euro und und mit ein wenig Glück werde ich den IR -> USB für nen 20er los.
Naja. Sind alles keine Reichtümer, möchte nur nicht so viel ungenutzes Zeugs rumliegen haben.
Prüfe mal mit deiner Handy Kamera, ob dein Zähler in regelmäßigen Abständen Info-Daten per SML sendet. Die meisten Zähler machen das, meist nach Eingabe einer PIN.
Falls das der Fall ist, nimmst du einfach einen ESP8266 und einen IR-Phototransistor. Die Software dafür gibt es auf Github: https://github.com/mruettgers/SMLReaderDer ESP sendet dann jedes Mal, wenn der Zähler die Info-Daten ausgibt die Daten per MQTT an iobroker.
Gruß LarsP.S.: Falls du die Elektronik brauchst, ich habe hier noch 8 Magnetringe, ESP´s und Fotodioden rumliegen. Die 3D Druckteile könnte ich dir auch für Selbstkosten drucken. Falls Interesse PN!
-
@armilar Hat funktioniert. Der Hichi 1.1 wurde echt schnell verschickt. Da ich sowieso einen NodeMCU da im Einsatz habe, wollte ich das ja damit auslesen.
Jetzt das Script noch "schick" machen.
-
Das sieht doch sehr gut aus. L1-L3 müssten eigentlich auch möglich sein. Sind ja aktuell 0
-
@armilar Keine Ahnung.
Ich bekomme recht wenig Werte. Auch Netzfrequenz bekomme ich nicht rein.
Aber wenigstens TotalIn und actual und die ZählerID. -
Hallo Zusammen!
Ich versuche (erfolglos) meinen Iskra AM550 mit dem Tasmoat WiFi-ESP und dem IR-Lesekopf von bitShake auszulesen.
Zur Situation: das Lese-/WiFi-Modul funktioniert einwandfrei an einem EMH eBZD-W23E8 Stromzähler. Ich bekomme die Hex-Werte über "sensor53 d1" angezeigt und kann sie über das Tasmota-Scricpt parsen. So weit, so gut, Modul richtig verlötet und korrekte GPIO-Parameter bekannt.
Wenn ich jetzt den Sensor an meinem (leider von meinem Stromanbieter eingebauten Exoten) Iskra AM550 anbringe, kommt mal so gar nichts an Daten mit "sensor53 d1". Ich habe mit allen möglichen Einstellungen zu Sensor-auf den-Kopf-und andersherum, Baudrate, Parität, Stop-Bits, Init-Befehl/Ack-Befehl usw probiert - nichts.
Ich weiß zuverlässig, daß der Iskra AM550 Daten auf der IR-Schnittstelle unverschlüsselt sendet, denn mit einem anderen Sensor (Device GmbH WMBus IR-Lesekopf) bekomme ich alle 12 Sekunden einen gültigen Auslesedatensatz zugesendet. Allerdings ist mir nicht bekannt, ob diese Daten im SML- oder IEC-Format vom Zähler gesendet werden, denn laut Hersteller Device GmbH unterstützt ihr Sensor beides automatisch.
Auf Empfehlung in GitHub habe ich sogar die neueste Software-Version auf den ESP geflasht, weil es wohl ein Problem beim SML Dump gab, welches erst vor ein paar Tagen gefixt wurde. Keine Verbesserung.
Was ich bei der Tasmota-Lösung nicht verstehe: wenn ich das Datenformat im Tasmoat-Script auf raw setze
+1,5,r,0,9600,Strom
sollten doch zumindest irgendwelche Daten im Dump sichtbar sein?
Daher meine Fragen:
- Hat jemand bereits Erfolge mit dem Iskra AM550 und Tasmota?
- Was kann ich tun, um wenigstens irgendwelche Daten im Tasmota zu erhalten? Das weitere Parsing ist eher kein Problem für mich.
Ich bin etwas ratlos. Danke für Tips.
-
Ich bin zufällig auf eine kleine Webseite gestoßen die die SML Daten, also die Rohdaten aus dem Zähler vernünftig entschlüsselt damit man sich das Script selbst zusammenklempnern kann.
https://tasmota-sml-parser.dicp.net/
Hat der Entwickler dort richtig fein gemacht.
@higginsd
Hast du den Wemos mal auf Rohdaten umgestellt?sensor53 d1
Kommt da was was du dann in der gerade angegebenen Webseite umsetzen kannst?
-
Ja, habe ich. Auch nach "sensor53 d1" kommt nullkommagarnichts an Output.
-
@higginsd ist es auch d1 ? ich hab mehrere dran und da gibts auch d2 usw..
-
Moin,
ich bekomme leider die Scripte nicht hin bzw. dass die Zählerstände automatisch angezeigt werden.
Außerdem noch paar andere Sachen. Ich verwende einen ISKRA 681.Wie bekomme ich mindestens eine Leerzeile zwischen dem Sensor und dem Zählerstand hin?
Warum liest er die Zählernummer nicht aus?
Warum bekomme ich keine Netzfrequenz rein?
Warum wird weder Spannung L1...L3 noch Strim L1...L3 angezeigt? Oder ist das nur für die Einspeisung gedacht?
Dann muss das natürlich raus.
>D rssi=0 s1="Tagesverbrauch: {m}<b><span style=>" v2=0 hr=0 md=0 yr=0 ;Strom p:sm=0 sd=0 p:sma=0 smn=0 p:sya=0 syn=0 sspr=0.4779 yspr=0 ysgp=152.18 y€=0 >T v2=SML#Total_in rssi=Wifi#RSSI >B ->sensor53 r >S ;Tagesverbrauch hr=hours if chg[hr]>0 and hr==0 and v2>0 then sm=v2 svars endif if upsecs%tper==0 then sd=v2-sm ;Monatsverbrauch md=day if chg[md]>0 and hr==0 and md==1 and v2>0 then sma=v2 svars endif if upsecs%tper==0 then smn=v2-sma endif ;Jahresverbrauch yr=year if chg[yr]>0 and hr==0 and md==1 and v2>0 then sya=v2 svars endif if upsecs%tper==0 then syn=v2-sya ;Kosten yspr=syn*sspr+ysgp endif >J ,"Verbrauch Tag":"%sd%" ,"Verbrauch Monat":"%smn%" ,"Verbrauch Jahr":"%syn%" ,"Zählerstand 0:00Uhr":"%2sm%" ,"Zählerstand Monatsanfang":"%2sma%" ,"Zählerstand Jahrenanfang":"%2sya%" ,"Kosten dieses Jahr":"%2yspr%" >W WLAN Empfang: {m}%rssi% dBµV =============== Tagesverbrauch: {m} %2sd% kWh Monatsverbrauch: {m} %2smn% kWh Jahresverbrauch: {m} %2syn% kWh =============== Strom Preis/kWh: {m} %4sspr% € Strom Grundpreis: {m} %2ysgp% € --------------- Strom kosten lfd. Jahr:{m} %2yspr% € =============== Strom Zählerstände: aktuell: {m} %2v2% kWh 0:00 Uhr: {m} %2sm% kWh Monatsanfang: {m} %2sma% kWh Jahresanfang: {m} %2sya% kWh =============== >M 1 +1,3,s,0,9600,,1 1,77070100010800ff@1000,Zählerstand,kWh,Total_in,2 1,77070100100700ff@1,Stromverbrauch,W,Power_curr,0 1,77070100100700ff@1000,Aktuell,kW,Actual_pow,3 1,=h===============| 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,=h===============| 1,770701001f0700ff@1,Strom L1,A,Ampere_p1,1 1,77070100330700ff@1,Strom L2,A,Ampere_p2,1 1,77070100470700ff@1,Strom L3,A,Ampere_p3,1 1,=h===============| 1,770701000e0700ff@1,Netzfrequenz,Hz,Freq,1 1,=h===============| 1,77070100000009ff@#,Zählernummer,,Meter_id,0 1,=h===============| #
Und hier natürlich die Teile der USER_CONFIG_OVERRIDE:
#ifndef USE_SCRIPT #define USE_SCRIPT #endif #ifndef USE_SML_M #define USE_SML_M #endif #ifdef USE_RULES #undef USE_RULES #endif // -- Drivers --------------- #define USE_SCRIPT_WEB_DISPLAY #define USE_SCRIPT_JSON_EXPORT #undef USE_EXPRESSION #define USE_EXPRESSION #define SUPPORT_IF_STATEMENT #define USE_SML_SCRIPT_CMD #define SML_MAX_VARS 30 #define USE_I2C
Huch. Irgendwas hat er da gerade berechnet...!?!
-
Ich verstehe es nicht,
wenn ich zusätzlichen Code einfüge...bekomme ich plötzlich auch Werte angezeigt...aber nicht dort wo cih was eingefügt habe.
Hier wird plötzlich Strom L1..L3 angezeigt:
Das Script sieht nun so aus:
>D rssi=0 s1="Tagesverbrauch: {m}<b><span style=>" v2=0 hr=0 md=0 yr=0 ;Strom p:sm=0 sd=0 p:sma=0 smn=0 p:sya=0 syn=0 sspr=0.4779 yspr=0 ysgp=152.18 y€=0 >T v2=SML#Total_in rssi=Wifi#RSSI >B ->sensor53 r >S ;Tagesverbrauch hr=hours if chg[hr]>0 and hr==0 and v2>0 then sm=v2 svars endif if upsecs%tper==0 then sd=v2-sm ;Monatsverbrauch md=day if chg[md]>0 and hr==0 and md==1 and v2>0 then sma=v2 svars endif if upsecs%tper==0 then smn=v2-sma endif ;Jahresverbrauch yr=year if chg[yr]>0 and hr==0 and md==1 and v2>0 then sya=v2 svars endif if upsecs%tper==0 then syn=v2-sya ;Kosten yspr=syn*sspr+ysgp endif >J ,"Verbrauch Tag":"%sd%" ,"Verbrauch Monat":"%smn%" ,"Verbrauch Jahr":"%syn%" ,"Zählerstand 0:00Uhr":"%2sm%" ,"Zählerstand Monatsanfang":"%2sma%" ,"Zählerstand Jahrenanfang":"%2sya%" ,"Kosten dieses Jahr":"%2yspr%" >W WLAN Empfang: {m}%rssi% dBµV =============== Tagesverbrauch: {m} %2sd% kWh Monatsverbrauch: {m} %2smn% kWh Jahresverbrauch: {m} %2syn% kWh =============== Strom Preis/kWh: {m} %4sspr% € Strom Grundpreis: {m} %2ysgp% € --------------- Strom kosten lfd. Jahr:{m} %2yspr% € =============== Strom Zählerstände: aktuell: {m} %2v2% kWh 0:00 Uhr: {m} %2sm% kWh Monatsanfang: {m} %2sma% kWh Jahresanfang: {m} %2sya% kWh =============== >M 1 +1,3,s,0,9600,,1 1,77070100010800ff@1000,Zählerstand,kWh,Total_in,2 1,77070100100700ff@1,Stromverbrauch,W,Power_curr,0 1,77070100100700ff@1000,Aktuell,kW,Actual_pow,3 1,=h===============| 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,=h===============| 1,770701001f0700ff@1,Strom L1,A,Ampere_p1,1 1,77070100330700ff@1,Strom L2,A,Ampere_p2,1 1,77070100470700ff@1,Strom L3,A,Ampere_p3,1 1,=h===============| 1,77070100010800ff@1000,Gesamtverbrauch,kWh,Bezug_Gesamt,3 1,77070100010801ff@1000,Verbrauch 1.8.1 NT,kWh,Bezug_NT,3 1,77070100010802ff@1000,Verbrauch 1.8.2 HT,kWh,Bezug_HT,3 1,77070100100700ff@1,Leistung,W,Power_cur,0 1,77070100240700ff@1,Leistung P1,W,Power_p1,0 1,77070100380700ff@1,Leistung P2,W,Power_p2,0 1,770701004c0700ff@1,Leistung P3,W,Power_p3,0 1,=h===============| 1,770701000e0700ff@1,Netzfrequenz,Hz,Freq,1 1,=h===============| 1,77070100000009ff@#,Zählernummer,,Meter_id,0 1,=h===============| #
Ich habe nur diesen Code eingefgt:
1,77070100010800ff@1000,Gesamtverbrauch,kWh,Bezug_Gesamt,3 1,77070100010801ff@1000,Verbrauch 1.8.1 NT,kWh,Bezug_NT,3 1,77070100010802ff@1000,Verbrauch 1.8.2 HT,kWh,Bezug_HT,3 1,77070100100700ff@1,Leistung,W,Power_cur,0 1,77070100240700ff@1,Leistung P1,W,Power_p1,0 1,77070100380700ff@1,Leistung P2,W,Power_p2,0 1,770701004c0700ff@1,Leistung P3,W,Power_p3,0 1,=h===============|
-
@oberfragger Sieht so aus als würden deine SML Codes nicht stimmen.
Strom L1 ist offensichtlich der Zählerstand und L3 scheint der aktuelle Verbrauch zu sein. -
@chaot Ich habe da gestern so eine SML-Übersetzungsseite gefunden.
Und beim Zusammenstellen von neuem Code erstmal den NodeMCU geschrottetIst nicht mehr flashbar, erreichbar etc. So ein Mist.
Muss dann ein anderes Mal weitermachen.
-
Ja.
Ich habs mittlerweile drangegeben. Der Iskra AM550 funktioniert nicht mit dem Tasmota. Trotzdem danke für die Tips.
-
@oberfragger Wenn das script abschmiert dann kann man oft nach ein paar Sekunden stromlos wieder auf das Teil draufkommen. Hat zumindest bei meinen ESPs oft so funktioniert.
Eine Übersetzungsseite habe ich erst vor ein paar Tagen hier im Tread gepostet. -
@chaot bei mir leider nicht.
Hab auch den reset via 6 mal off und beim 7. Mal probiert, alle möglichen Knöpfe auf dem NodeMCU bei flashen gedrückt etc.
Faile dto read packet header... doof. -
Hallo zusammen,
man gut das ich diesen Faden gefunden habe.
Ich würde gerne meine beiden Apator Norax 3D Zweirichtungszähler auslesen - das funktioniert auch fast.
Leider erhalte ich nur kWh Werte und keine aktuellen Verbrauchswerte, Frequenzen etc.Aber der Reihe nach:
ESP8266 geflasht mit Tasmota gemäß "Anleitung" von @jaschkopf weiter oben und Youtube, dann im Script-Bereich für meinen Zähler gemäß Tasmota Vorgabe des Script eingetragen.
Ergebnis von dem was nun kommt ist folgendes:
Wenn ich nun unter der Console mal sensor53 d1 eingebe, dann bekomme ich dies hier:
17:57:47.367 : 77 07 01 00 02 08 00 ff 01 01 62 1e 52 03 69 00 00 00 00 00 00 03 6b 01 01 01 63 c6 4e 00 76 05 01 51 0e e6 62 00 62 00 17:57:47.397 : 77 01 0b 0a 01 41 50 41 01 04 ec 03 73 07 01 00 62 0a ff ff 72 62 01 65 00 70 5a 4f 74 17:57:47.414 : 77 07 01 00 60 32 01 01 01 01 01 01 04 41 50 41 01 17:57:47.439 : 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 41 50 41 01 04 ec 03 73 01 17:57:47.469 : 77 07 01 00 01 08 00 ff 65 00 1c 81 04 01 62 1e 52 03 69 00 00 00 00 00 00 00 07 01
Wenn ich das ganze mal durch den SML Dekoder schiebe, dann bekomme ich folgendes Ergebnis:
Nun bin ich ein wenig "überfragt".
Kann es sein, dass ich den Stromzähler irgendwie noch dazu bringen muss, dass er "mehr" liefert oder was ist hier genau Phase? Oder habe ich trotz PIN nur einen eingeschränkten Zugriff auf den die aktuellen Werte wie z.B. Watt, Frequenz, etc.?Mir kommt das auch sehr "wenig" an Daten vor. Die oben abgebildeten Daten sind eine Abfrage, es kommen dann zyklisch weitere Zeilen, aber mit dem gleichen OBIS-Hexwert.
Danke,
Moritz -
@dasmoritz Bei manchen Zählern muss man noch sowas wie eine erweiterte Datenausgabe freischalten. Schau mal in die Anleitung. Da müsste das stehen.
-
@chaot Hallo und danke dir. Es gibt wohl einen normalen Betriebsmodus und einen erweiterten Betriebsmodus.
Die Ausgabe von W, A, V, Hz. usw. gibt es anscheinend nur im erweiterten Modus. Anscheinend legt aber der VNB fest, welcher Modus eingestellt wird, bei mir anscheinend nur der normale Modus und nicht der erweiterte.
Mist!