Smartmeter D0, SML Technik
Diese Seite beschreibt meine Erfahrungen beim Selbstbau eines Lesekopfes und erste Versucht die Daten in mein Netz zu senden.
Aktuell nutze ich einen ESP8266 (Wemos) mit Tasmota 13.1 (SML) und zwei Hichi TTL-Leseköpfe. Springen Sie einfach zu Smartmeter D0, SML Tasmota und danach zu Smartmeter D0, SML und PRTG
Ein "Stromzähler" der per "Blinkimpulse" anzeigt wie viel Energie gerade verbraucht wird, ist relativ einfach auszulesen. Eine passende Seite dazu habe ich auf Arduino und S0 schon veröffentlicht. Interessant wird es nun natürlich in Verbindung mit den "neuen" Zählern, die neben einer "blinkenden" LED auch noch einen Datenausgang haben.
Übersicht
Durch den Einzug in ein neues Haus mit Zweirichtungszähler (Solarzellen) und zudem einem Zweitarifzähler (Wärmepumpenstrom) habe ich nun zwei Zähler, die nicht mehr "sichtbar" Blinken (IR-LEDs) sondern auch noch die erweiterte "D0-Schnittstelle" haben. Diese Seite beschreibt meine Schritte diese Schnittstelle per Ethernet erreichbar zu machen bzw. zur Weiterverarbeitung zu geben. Ich würde einfach gerne nicht nur einmal am Jahresende den Gesamtverbrauch ablesen sondern genauer über Verbrauch und Einspeisung Buch führen zu können. Und letztlich macht Basteln auch Spaß. So könnte die Umgebung aussehen.
Ein IR-Lesekopf nimmt die periodisch gesendeten SML-Daten auf dem Zähle ab und sendet diese nach einer Verarbeitung weiter. Zuerst denke ich an einen PRTG-Push-Sensor, da ich den Server schon betreibe. Denkbar wäre auch ein MQTT-Backend um die Daten anderweitig abzugreifen. Sie können gerne meine Ideen, Informationen und Codeteile für eigene Projekte verwenden. Ich würde mich freuen, wenn Sie ihrerseits dann die Informationen ebenfalls veröffentlichen und mit den Link dahin mitteilen.
Moderne Zähler und D0
Die modernen Zähler sind mittlerweile kleine Computer, wie ein Blick in die Beschreibungen der Hersteller zeigen. Mein Zähler ist wohl von ein "EHZ-K" oder EHZ-P von EMH (http://www.emh-metering.com/de/produkte/ehz-i/)
Quelle: Produkthandbuch
http://www.nzr.de/download.php?id=612
Da ich nicht genau weiß, wie die Zähler noch kommunizieren können oder vielleicht aus der Ferne beeinflussbar sind, habe ich die Seriennummern, Server-ID, Public-Key etc. Unkenntlich gemacht. Interessant sind auf dem Zähler oben die grüne Öffnung, hinter der sich wohl eine IR-LED verbirgt, die bei diesem Zähler 10.000 Impulse pro kWh liefert, zumindest steht dies so auf dem Zähler. Auf dem LCD kann man sehr einfach unterschiedliche Werte ablesen. Links oben steht dazu ein Zahlencode, der die Bedeutung festlegt. Ich habe in meinem Haus allerdings zwei diese Zähler. Einer für den normalen "Gebrauchsstrom" für Licht, über den aber auch die Solaranlage (Siehe PRTG Kostal) angeschlossen ist und Strom einspeist (abzüglich dem Eigenverbrauch). Der zweite Zähler bedient die Wärmepumpe mit aktuell noch "günstigerem" Wärmepumpenstrom.
Code | Zwei Richtungszähler | Zweittarifzähler |
---|---|---|
1.8.0 |
Strombezug Haupttarif |
nicht vorhanden |
1.8.1 |
nicht vorhanden |
Strombezug Tarif 1 (Haupttarif) |
1.8.2 |
nicht vorhanden |
Strombezug Tarif 2 (Niedertarif) |
2.8.0 |
Eingespeister Strom |
0 |
Beim Zweirichtungszähler gibt es noch eine "A+"-Anzeige, wenn man Strom bezieht und "A-", wenn man Strom einspeist.
Interessanter sind rechts die beiden Öffnungen mit der Metallplatte. So können über einen Magnet als Halter sehr einfach eine IR-LED und ein IR-Fototransistor montiert werden, die mit dem Zähler kommunizieren. Ich will dabei gar nichts an den Zähler senden. Aber der Zähler soll laut Beschreibung alle 1-4 Sekunden eigenständig ein Datenprotokoll ausgeben. Das ist durchaus interessanter als nur "Impulse zählen.
- D0 Spezifikation
http://www.mikrocontroller.net/attachment/89888/Q3Dx_D0_Spezifikation_v11.pdf - Protokoll der D0
Schnittstelle
http://propertools.org/index.php/de/hardware/kommunikation/item/spezifikation-d0-schnittstelle-q3dx - Volkszähler: Channels
(Messgeräte)
http://wiki.volkszaehler.org/hardware/channels
Man kann aber auch mit einer einfachen Taschenlampe den Zähler "anblinken" und so folgende Funktionen abrufen:
Realer Irrsinn: Neue digitale Stromzähler | extra 3 | NDR
https://www.youtube.com/watch?v=aqHauk3bNFA
Anzahl der Blinken | Ausgabe im Display | Beschreibung |
---|---|---|
1 |
|
Displaytest für beide Zeilen |
2 |
PIN |
Eingabe der PIN |
3 |
P |
Aktuelle Leistung |
4 |
E |
Stromverbrauch seit der letzten Null-Stellung |
5 |
1d |
Stromverbrauch des letzten Tages |
6 |
7d |
Stromverbrauch der letzten 7 Tages |
7 |
30d |
Stromverbrauch der letzten 30 Tage |
8 |
365d |
Stromverbrauch der letzten 365 Tage |
9 |
0.2.2 |
Aktivierung der PIN-Eingabe |
Einige der Werte können Sie durch ein langes Anleuchten (>5 Sek) auf 0 setzen.
- EDL21 eHZ
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/edl21-ehz - Volkszaehler with ACE3000
http://www.rudiswiki.de/wiki9/VolkszaehlerACE3000
Ein Zähler mit 300 Baud, 7,n,1 - Volkszaehler EMH eHZ
http://www.rudiswiki.de/wiki9/VolkszaehlerEMHeHZ
RaspPi mit USB Lesekopf
Köpfe für D0
Und so ist es auch kein Wunder, wenn es verschiedene fertige Zählerköpfe und Selbstbaulösungen gibt. Die Zähler senden ihre Datentelegramme nämlich relativ überschaubar mit 9600,8,n.1 als Bytes. Die fertigen Köpfe kosten aber meist deutlich mehr, als der geübte Elektronikbastler ausgeben will. 100-300€ sind einfach zu viel für eine IR-LED mit eventuell einen Schnittstellenwandler, insbesondere wenn man nur lesen will.
Achtung bei Leseköpfen, die auch Schreiben können. Wenn der Eingang zum Senden an den zähler offen ist, dann kann die Sende-LED leuchten und der Zähler denke er wird angeleuchtet, geht in den Eingabemode und nutzt die weiteren Blinksignale als Pin. Abhilfe: Eingang auf Masse lesen oder einfach dunkles Isolierban über die LED kleben.
Hier ein paar Links zu Leseköpfen.
- Infrarot-Lesekopf für
Stromzähler
https://haus-automatisierung.com/hardware/2021/09/25/infrarot-lesekopf-stromzaehler.html - USB-IR-Schreib-Lesekopf
http://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf
http://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-usb-ausgang
Beschreibung der SML (Smart Message Language) mit Links zu weiteren Köpfen.
https://wiki.volkszaehler.org/software/sml - Hichi Lesekopf
https://www.amazon.de/Hichi/dp/B0BPMVX4VW?th=1
oder über Ebay für ca. 20€ (TTL) - ESP-Lesekopf
https://github.com/esplesekopf
Alles in einem Kopf: IR-Diode, ESP8285, USB-Anschluss
Auto https://twitter.com/th3_s4int - Das SML-Interface
http://www.stefan-weigert.de/php_loader/sml.php - Ein ganz simpler IR-Leser
https://wiki.volkszaehler.org/howto/simpler_ir_leser - Smart Meter-Datenkabel
selbst gemacht: libehz
http://gonium.net/blog/2010/10/24/smart-meter-datenkabel-selbst-gemacht--libehz/ - ELV Homematic Energiesensor
für Smart Meter ES-IEC,
Komplettbausatz (35€)
https://de.elv.com/ELV-Homematic-Energiesensor-fuer-Smart-Meter-ES-IEC-Komplettbausatz-142148 - Optischer Sensor für
elektronische Zähler USB
ca. 95€
http://www.eco-data.de/produkte/zaehler-sensorik/optischer-sensor-fuer-elektronische-zaehler-optokoppler-USB-detail.html - 30 EUR Schnittstelle für S0 und eHZ für Photovoltaik, mit
AVR-NET-IO
http://www.mikrocontroller.net/topic/189200 - Ausprobiert: Günstiger
IR-Lesekopf für Smart Meter mit
Tasmota-Firmware
https://www.heise.de/tests/Ausprobiert-Guenstiger-IR-Lesekopf-fuer-Smart-Meter-mit-Tastmota-Firmware-7065559.html - Optischer Kommunikationskopf
OKK
http://www.emh-metering.com/de/produkte/okk-rs232-USB/ - VOLTCRAFT® RS-232
Schnittstellenadapter für VOLTCRAFT® Multimeter, Passend für VC820, VC (unter 10€)
http://www.conrad.de/ce/de/product/125640/VOLTCRAFT-RS-232-SCHNITTSTELLENADAPTER
Angeblich soll dieser IR-Kopf auch die Zähler auslesen können. - ALL3688: ALLNET Optischer D0-Lesekopf
(ALL3688) (ca. 20-30€)
http://www.allnet-shop.de/ALLNET/Gebaeudeautomation/Zubehoer/ALLNET-Optischer-D0-Lesekopf-ALL3688.html
In der Datei ftp://212.18.29.48/ftp/pub/allnet/verschiedene/all3690/D0-Lesek%F6pfe%20von%20ALLNET.pdf ist sogar die Pin-Belegung beschrieben: 1+5= GND, 7+8=+12V, 3=seriell RX
Den Lesekopf gibt es für ca. 20-30€ bei Elektronikversendern, Amazon nud Co. Leider sind 12V für viele kleinen Projekte schon wieder ein Problem.
Im Amazon Forum wird dies auch thematisiert: http://www.amazon.de/forum/-/TxZ3LH3UCY6H0V/a6/ref=ask_dp_dpmw_al_hza?asin=B00CI642OO#6 - Smart Meter-Datenkabel
selbst gemacht: libehz
http://gonium.net/blog/2010/10/24/smart-meter-datenkabel-selbst-gemacht--libehz/ - Optoreader
http://developer.mysmartgrid.de/doku.php?id=optoreader
Nutzt eine BPW40 oder alternativ eine SFH309FA (<10ys), die schneller ist. - Smart Meter auslesen
http://www.avr-praxis.de/forum/showthread.php?3072-Smart-Meter-auslesen - Datenlogger zum Auslesen von
EHZ Zählern ohne SO (wie Hager)
http://www.photovoltaikforum.com/datenlogger-f5/datenlogger-zum-auslesen-von-ehz-zaehlern-ohne-so--t44585-s20.html
Sehr einfache Schaltung mit einem TEKT5400S, 9V Netzteil und 390Ohm widerstand und direkt an eine RS232-Schnitstelle und selbst das hat wohl funktioniert. - SFH309FA (IR Sensor für D0
Stromzähler)
http://wiki.volkszaehler.org/_media/hardware/controllers/rs232-ir-schreib-lesekopf_stromlaufplan.png - EDL21 eHZ
http://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/edl21-ehz - D0 Lesekopf: Smart-Meter
visualisieren
http://www.solarautonomie.de/d0-lesekopf/ - Eltako IR-Abtaster
https://www.eltako.com/fileadmin/downloads/de/datenblatt/Datenblatt_AIR.pdf - Loxone IR Kopf mit
868MHz für Loxone System
http://shop.loxone.com/dede/zaehlerinterface-ir-air.html
http://www.loxone.com/dede/service/dokumentation/extensions/air-base/zaehlerinterface-ir-air.html - Easymeter mit Raspberry Pi
auslesen
http://www.s-jordan.de/index.php?page=easymeter_raspberrypi
Einfache Schaltung zum Anschluss an einen RasPi - Stromzähler/Smartmeter mit
dem PULSECOUNTER 2 auslesen (19€)
https://www.stall.biz/produkt/ir-lesekopf-fuer-stromzaehler
https://www.stall.biz/wp/wp-content/uploads/2022/04/IR_kopf_bauanleitung_3.pdf
"Dummer" Lesekopf, der einfach IR-Empfang auf TTL umsetzt - KLAX - Smartmeter Zähler
(149€)
https://iot-shop.de/produkt/klax
Per Magnet liest es das SML 1.04 Protokoll und sendet per LoRa die Daten - Lesekopf für SML und
RS485/MODBUS Ausgabe
https://www.niklas-menke.de/projekte/smartmeter-auslesen/modbus/
RS485 / ModBus / DMX - DvIR-USB Easymeter
https://www.easymeter.com/products/zubehoer/tastkopf-DvIR-USB - SMLReader - An ESP8266 based
smart meter (SML) to MQTT
gateway
https://github.com/mruettgers/SMLReader - poweropti ($)
https://shop.powerfox.energy/collections/frontpage/products/poweropti-strom
Kommerzielle Lösung mit Bindung an deren Portal - IR-Schreib-Lesekopf, TTL-Interface
https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-ttl-ausgang - TTL over RJ10 to FTDI/ESP12 PCB
https://GitHub.com/klein0r/pcb-ttl-ftdi-esp-adapter
D0 am meinem Stromzähler?
Mechanisch wird so ein Fototransistor am besten per Ring-Magnet befestigt. Das Verfahren nutzen kommerzielle Zählerköpfe und die Metallplatte am Zähler legt auch genau das Verfahren nahe. Die Fläche ist bei meinem Energiezähler ca. 28mm breit und die beiden LEDs haben einen Abstand von etwas über 6mm.
Da ich allerdings gar nicht schreiben oder steuern möchte, sondern einfach nur "passiv" lesen, recht mir eine LED, die halbwegs passend über die Sende-LED gesetzt wird. Relevant für das Datenprotokoll ist die rechte LED. Die mittlere LED ist zum Steuern und die ganz Links mit "IR" bezeichnete LED sendet 10.000 Impulse/kWh. Insofern bin ich sehr flexibel was die Anordnung betrifft. Es dürfte ein einfacher Ringmagnet reichen, in den der Empfänger eingebaut wird. Um sichtbares Licht auszusperren, würde ich eine kleine schwarze Filzschicht dazwischen setzen. Zwei Magnete habe ich dazu verwendet.
- R-27-16-05-N Ringmagnet Ø 26,75/16 mm,
Höhe 5 mm
z.B. https://www.supermagnete.de/ringmagnete-neodym/ringmagnet-26.75mm-x-16mm-x-5mm-neodym-n42-vernickelt_R-27-16-05-N
Der ist groß genug, um über beide LEDs zu passen, so dass Sende und Empfangs-LED drin gehalten werden können. - R-10-05-05-DNRingmagnet Ø 10/5 mm,
Höhe 5 mm
z.B. https://www.supermagnete.de/ringmagnete-neodym/ringmagnet-10mm-x-5mm-x-5mm-diametral-magnetisiert-neodym-n45-vernickelt_R-10-05-05-DN
Damit kann ich z.B. die eine Empfangs-LED einfach befestigen. Der Magnet hat einen Innendurchmesser von 5mm und da passt genau ein 5mm Fototransistor rein und mit etwas "Füllmaterial" auch eine 3mm Version
Alle 1-4 Sek sendet der Zähler hier mit 9600 Baud ein Telegramm nach SML-Standard. Ein Telegramm ist maximal 400ms lang. Allerdings steht im Produkthandbuch auch, dass diese Schnittstelle per Konfiguration freigegeben werden kann. Eventuell hat ihr Netzbetreiber die Schnittstelle deaktiviert. Einen ersten Test können Sie mit einer normalen Digitalkamera machen. Die meisten nehmen auch IR-Licht auf, welches vom Auge nicht gesehen wird.
So können Sie aber gut kontrollieren, ob die LED sendet. Interessanterweise sehe ich aber an der linken LED keine Impulse. Damit sind aber die Grundlagen vorhanden die Daten abzufragen.
- Produkthandbuch EHZ Zähler
http://www.nzr.de/download.php?id=612
Signalaufbereitung
Die Nutzung allein mit einem Fototransistor und Vorwiederstand funktioniert mit Arduinos an bestimmten Eingängen recht passabel, da einige Eingänge einen eingebauten Schmitt-Trigger haben. Am ESP8266/ESP32 sind die Ergebnisse durchwachsen, weswegen ich mittlerweile kommerzielle Leseköpfe mit Schmitt-Trigger nutze. (Hichi TTL), und für ca. 20€ mit Gehäuse, Magnet sieht es auch besser aus, als eine fliegende Verkabelung.
Ich lasse dennoch den Text hier stehen, auch wenn er aus einer Zeit ist, als es noch kaum günstige SML-Leseköpfe gab.
Zuerst habe ich einen BPW40 aus dem Regal genommen, den ich schon häufiger verwendet habe. Damit kann ich bei Lichteinfall einen analogen Eingang auf "Masse" ziehen und dann die Daten eingelesen. Aber mit 9600Bit/Sek, also ca. 10000/Sek ist ein Bit ca. 100μs lang. Der Aufnehmer sollte also deutlich flotter sein. Ich bin aber noch nicht sicher, ob ich die Daten dann wirklich über einen Schmitt-Trigger auf den RxD-Anschluss des Arduino leite oder die Daten am Analogport einfach direkt selbst einlese. Wenn ein ESP8266 unter 5€ kostet, dann möchte ich nicht wirklich noch mal 50+€ allein für einen Lesekopf ausgeben. Das muss einfacher gehen. Also habe ich etwas rumgestöbert und diverse Schaltungen gefunden, bei denen ein Fototransistor direkt einen Pin eines Mikroprozessors auf Masse zieht. Vielleicht reicht das ja schon aus:
Wenn der Mikroprozessor sogar über einen internen Pullup-Widerstand verfügt, könnte es noch einfacher gehen. Allerdings muss man sich immer bewusst sein, dass man sich hier ein Stück weit in der Analogtechnik bewegt und man nicht mit TTL-Pegeln zwischen 1 und 0 unterscheiden kann. Lange Leitungen mit Kapazitäten, Fremdlicht etc. sind nicht zu unterschätzen.
Wichtiger Hinweis:
Um analoge Signale zuverlässig auf Digitalsignale umzusetzen, sollten sie einen Schmitt-Trigger verwenden, der mit einer Hysterese arbeitet.
Einige Digitaleingänge, z.B. bei AVR-Chips haben diese Funktion eingebaut und können direkt beschaltet werden. Die ESP8266/ESP32-Serie hat leider keinen Eingang mit Schmitt-Trigger.
- Not all Arduino inputs are equal – hunt
the Schmidt trigger
https://www.electronicsweekly.com/blogs/engineer-in-wonderland/not-arduino-inputs-equal-hunt-schmidt-trigger-2021-11/
Nach etwas Recherche in diversen Foren und um das Wissen der Wellenlänge habe ich einfach mal ein paar Foto-Transistoren vom Typ SP201 bestellt. Fototransistoren sollten es schon sein, da sie in der Regel schnell der Fotodioden und viel schneller als LDRs sind. Die SP201 haben folgende relevante Daten:
Parameter | Daten | Bemerkung |
---|---|---|
Bauform |
NPN-Fototransistor in LED-Bauform |
LED-Form mit 3mm Durchmesser passen gut in Rundmagnete und Gehäuse und sind einfacher zu Handhaben als SMD-Bauteile. |
Wellenlänge für max. Empfindlichkeit |
780nm |
Ideal für IR-Signale und hoffentlich gut genug unempfindlich gegen normales Licht. |
Kollektor-Emitter-Spannung |
max. 32 V |
Das ist unkritisch, da wir uns im 3,3 Volt oder 5Volt-Bereich bewegen |
Gesamtverlustleistung |
max. 50 mW |
Das hilft für die Ermittlung des minimalen Vorwiderstandes. Bei 5V ergibt sich nach (U*I=P oder U/P=I) mit 0.05W/5V = 0,01A. Der strombegrenzende Widerstand bei 5V muss nach U/I=R mindestens 500Ohm betragen. |
Anstiegszeit / Abfallzeit |
je 5 Mikrosekunden |
Die Daten kommen mit 9600 Baud, aufgerundet also 10.000Hz oder 0,1ms/Bit. 100Microsekunden ist ein Bit lang. Da sollten 5 Mikrosekunden an den Flanken genug Reserven bieten. |
Preis |
0,25 Euro |
(z.B. Pollin
https://www.pollin.de/shop/dt/Mjk5ODc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Optoelektronik/Fototransistor_SP201.html |
Den ersten Test habe ich mit der SP201 und einem RS232/USB-Adapter erfolgreich gemacht. Allerdings hat, warum auch immer, dieser Fototransistor nicht mit einem Wemos-Modul funktioniert. Dort habe ich eine BPW40 erfolgreich verwendet.
Herr Rüttgers hat eine eigene Firmware "SMLReader" auf https://github.com/mruettgers/SMLReader veröffentlicht, die zum Anschluss die gleiche Diode und Beschaltung verwendet.
Im Datenblatt ist sichtbar, dass die Anschlussleitung des Emitter etwas kürzer ist also des Kollektors. Das was bei mir nicht der Fall. Eine Abflachung einer Seite des Gehäuse konnte ich auch nicht erkennen. Aber anhand der einen und zwei Nasen am Anschlussdraht konnte ich Kollektor und Emitter ermitteln:
Für einen ersten Test habe ich einfach mal einen USB/RS232-Adapter mit TTL-Pegel genutzt. Diese "billigst"-Adapter haben vier Anschlusskabel für Vcc, GND, RxD und RxD und gibt es bei E-Bay für unter 2€. Senden möchte ich nichts, also könnte es sogar reichen, wenn ein passender Fototransistor oder eine Fotodiode wie oben im Bild die RxD-Leitung bei Licht auf Masse zieht. Der "Ruhezustand" von RxD ist -12V (RS232) oder +5V (TTL). Das ist so gewählt, dass im Ruhezustand schon erkannt werden kann, ob die Leitung "passt" und sehr sparsame Gerät können sich so sogar parasitär mit Strom versorgen.
Als Vorwiderstand habe ich einen 10kOhm Potentiometer genutzt. So ausgestattet bin ich mit einem Terminal-Programm und dem Kabel zum Stromzähler gelaufen und habe die LED einfach mal "drangehalten". Ich war selbst verwundert, das es auf Abhieb geklappt hat.
Anscheinend hat der 10kOhm Vorwiederstand mit dem Serial/USB-Chip und dem Fototransistor genau ausgereicht, Daten zu bekommen. Aus den ersten Blick mögen die Daten "komisch" aussehen, aber das mehrfache Auftauchen des String "EMH", welches der Hersteller des Smartmeter ist, deute ich als gutes Zeichen. Er sendet 396 Zeichen. Das ist problemlos in einem UDP-Paket intern versendbar.
- RS-232 vs. TTL Serial Communication
https://www.sparkfun.com/tutorials/215
Ebenfalls geeignet sein sollte:
- Fototransistor - BPW40
http://www.mikrocontroller.net/topic/275765
Mit Bild zweier BPW40 über einen 1kOhm Pullup auf Vcc und am Eingang eines ATMega, der vom BPW auf Masse gezogen wird.
http://www.reichelt.de/index.html?ARTICLE=5806
Kollektor ist das kurze Bein an der abgeflachten Seite.
Datenblatt http://cdn-reichelt.de/documents/datenblatt/A500/BPW40%23IMP.pdf - Fototransistor SFH 309 FA
Wellenlänge: 730-1100nm, FA ist bei 880nm, 5-9 Micro-Sekunden Anstiegs/Abfallzeit
https://www.reichelt.de/?ARTICLE=60553 0,31Euro
Wer doch auch in die Gegenrichtung arbeiten will, muss sich entsprechende IR-Sendedioden beschaffen, die auf der fraglichen Wellenlänge schnell genug senden können. Denkbar sind hier
- Infrarot-Sendediode OSRAM SFH484 (8
Grad Abstrahlwinkel) (ca.
0,25€)
Infrarot-Sendediode OSRAM SFH486 (11 Grad Abstrahlwinkel) (ca. 0,25€)
880nm+/- 80nm bei 1,5V und 100 mA, 0,5µS Schaltzeit
http://www.pollin.de/shop/dt/MjM5ODc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Optoelektronik/Infrarot_Sendediode_OSRAM_SFH486.html - LD 271 (Abstrahlwinkel 50%) oder LD 274
(Abstrahlwinkel 20%)
1,35V, 100mA, 950nm - Infrarot-LED
https://de.wikipedia.org/wiki/Infrarot-LED -
SMLReader - An ESP8266 based
smart meter (SML) to MQTT
gateway
https://github.com/mruettgers/SMLReader
Mit ganz einfachem Schaltplan
Hier ist dann natürlich etwas "experimentieren" angesagt, wenn der Empfänger nicht genau bekannt ist. Sowohl die Wellenlänge als auch die Intensität sind hier variabel. Mittlerweile habe ich schon Angebote auf Amazon und Co gesehen, die noch billiger sind. Aber verwechseln Sie bitte nicht IR-LEDs zum senden von Daten mit IR-LEDs als Beleuchtung für Nachtaufnahmen mit Kameras. Diese sind wohl heller aber sowohl Wellenlänge als auch die Schaltzeit dürften hier nicht ausreichend sein.
SML Protokoll
Die Analyse und Interpretation des SML-Protokolls habe ich auf die Seite SML-Protokoll ausgelagert, da es doch etwas "länger" geworden ist. Für diese reicht es zu wissen, dass das SML-Protokoll sehr viele Fälle und Konstellationen abbilden kann. Allerdings ist es auch nicht einfach zu parsen. Das ist aber auch gar nicht notwendig, wenn Sie einmal den gewünschten Wert gefunden haben. Die meisten Werte haben eine immer gleiche HEX-Werte als Vorlauf und können mit ziemlicher Sicherheit einfach so versucht und gefunden werden. Hier ein Beispiel:
Dies ist nur ein Ausschnitt aber die rot umrandeten Felder kennzeichnen meine beiden Zähler 1.8.1 und 2.8.1. Die HEX-Folge ist ziemlich lang und so sollte es sehr sehr unwahrscheinlich sein, dass diese Zeichenfolge noch mal kommt. Gelb unterlegt ist dann der Zählerstand. Die "56" kennzeichnet dabei die Variabel als Integer mit 6 Stellen (inklusive der Definition). Also sind es nur 5 Bytes, die von High nach Low aufaddiert werden müssen. Da mein Zähler dann auch noch eine Auflösung von 10.000 Impulsen pro kWh hat, muss ich die Zahl entsprechend teilen. Sie müssen mit ihrem eigenen Zähler als "Einfachversion" nur diese Nummern finden. So spare ich mir einen kompletten SML-Parser auf Basis des WeMOS.
Eine etwas umfangreichere Betrachtung zum Protokoll finden Sie auf SML - Protokoll
Auf Smartmeter D0 - Code finden Sie einen kleine nCode, der seriell die SML-Daten ausliest und per UDP ins Netzwerk sendet.
PIN für Zähler
Die moderneren SML-Zähler können mehr als nur die Zählerstände liefern. z.B. dien Verbrauch der letzten Stunde, des letzten Tages, Monats oder Jahr oder auch den Momentanverbrauch, was insbesondere für Solaranlagen mit Batterien/Speicher interessant ist. Wenn ihre Solaranlage mehr Energie gerade erzeugt als sie selbst verbrauchen, dann könnten Sie ihrem E-Auto das Laden befehlen oder die Wärmepumpe den Warmwasserspeicher aufheizen lassen oder eine Batterie laden. Wenn dann Energie vom Versorger bezogen wird, könnte die Batterie Energie liefern, um den Bezug zu reduzieren.
Viele solcher Lösungen setzen hier aber nicht auf den Smartmeter des Netzbetreibers, sondern installieren eigene Energiezähler.
Diese erweiterten Funktionen sind normalerweise nicht aktiviert und durch einen PIN gesichert. Ihr Netzbetreiber sollte ihnen den Pin zu ihrem Zähler liefern können, die sie dann per Taste oder Lichtimpulse am Zähler eingeben müssen.
Achtung: Beim ISKRA MT681 liefert bei aktivierter Info-Anzeige auch erweiterte Daten per SML, die Tasmota nicht versteht.
Das erkennen Sie daran, dass Sie z.B. mit dem SML-Parser nur Datenmüll sehen:
Auszug der Daten mit aktiven Info-Mode
22:49:39.806 : 77 07 01 00 01 08 02 ff 01 00 00 00 00 05 61 01 22:49:41.756 : 77 07 01 00 01 08 00 ff 65 00 00 00 00 00 00 00 0f 94 01
Der gleiche Zähler ohne Info-Mode liefert den kompletten Datensatz.
22:42:02.973 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 03 69 00 00 00 00 00 00 05 61 01 22:42:02.924 : 77 07 01 00 01 08 00 ff 65 00 00 02 82 01 62 1e 52 03 69 00 00 00 00 00 00 0f 94 01
Ohne Infomode kommen die regulären Werte. Mit aktiviertem Info-Mode sind die Werte verkürzt und durch Tasmota (Version 13.1) nicht zu parsen.
Achten Sie genau auf die Werte und Einheiten. Der SML-Decoder schreibt zwar Wh dahinter, aber der Zähler liefert nur ganze kWh
- SML Parser
https://tasmota-sml-parser.dicp.net - Freischaltung der D0 Info-Schnittstelle
https://shop.weidmann-elektronik.de/media/files_public/ef65a5f91f3dabc8252faaababd91b30/Freischaltung_D0_Schnittstelle.pdf - ESPHome
https://esphome.io/components/sml.html
IR-Lesekopf für Stromzähler am ESP8266
mit Tasmota (Wemos D1 Mini / NodeMcu)
https://www.youtube.com/watch?v=s6qQs4FN9B0
- Tasmota: Smart Meter Interface
https://tasmota.GitHub.io/docs/Smart-Meter-Interface/ - D0 Zähler SML auslesen mit Tasmota
https://forum.creationx.de/forum/index.php?thread/1095-d0-z%C3%A4hler-sml-auslesen-mit-tasmota/ -
Tasmota Firmware Compiler
https://GitHub.com/benzino77/tasmocompiler
Weitere Links
- SML-Protokollpan
- WeMOS IoT-Device
- Arduino und S0
- Arduino Ethernet
- Arduino
- InInternet of Things
-
FAST EnergyCam
http://www.fastforward.ag/
Eine kleine Box "fotografiert" den Zählerstand und melden ihn weiter. Nette Lösung -
Stromzählerdaten günstig und
einfach abgreifen (CC2tv Folge
355)
https://www.youtube.com/watch?v=dyZANt2bvi4 -
Viessmann Vitodens 200-W
http://www.intranet-der-dinge.de/smarthome/haus/heizunga> -
Zweirichtungszähler
http://www.photovoltaik.org/wissen/zweirichtungszaehler -
Ratgeber: Stromkosten senken mit
smarten Steckdosen
https://www.techstage.de/ratgeber/Ratgeber-Stromkosten-senken-mit-smarten-Steckdosen-4325720.html -
Smarthome - Aktoren/Sensoren -
Stromzähler
https://mwinkler.jimdo.com/smarthome/aktoren-sensoren/stromz%C3%A4hler/ -
PeterJensen/power-meter
https://GitHub.com/PeterJensen/power-meter
PowerMeter selbst gebaut -
Open Energy Monitor mit dem
ESP32
http://technik-fan.de/index.php/Open_Energy_Monitor_mit_dem_ESP32 -
Ausprobiert: Günstiger
IR-Lesekopf für Smart Meter mit
Tasmota-Firmware
https://www.heise.de/tests/Ausprobiert-Guenstiger-IR-Lesekopf-fuer-Smart-Meter-mit-Tastmota-Firmware-7065559.html -
Bauvorschlag: Solarstrom für die
E-Auto-Wallbox nutzen – die
Sparversion
https://www.heise.de/ratgeber/Bauvorschlag-Solarstrom-fuer-die-E-Auto-Wallbox-nutzen-die-Sparversion-7066413.html -
SMLReader - An ESP8266 based
smart meter (SML) to MQTT
gateway
https://github.com/mruettgers/SMLReader <
Mit ganz einfachem Schaltplan -
BSI: Das Smart Meter Gatewa
https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/Broschueren/Smart-Meter-Gateway.pdf?__blob=publicationFile&v=2a>