Elektronik_Header_3Lüftersteuerung mit ESP-01

 

Iskra-Zähler auslesen

Mit dem Einbau unserer PV-Anlage hat auch einer der modernen, digitalen Stromzähler Einzug in unser Heim gehalten und wartet seitdem darauf, dass die Daten, die er über eine IR-LED dem interessierten Anwender zu morst, auch entgegengenommen werden.

Im Netz bekommt man fertig aufgebaute Adapter angeboten, die per Magnet auf die Schnittstelle am Zähler geheftet werden und den seriellen Datenstrom als Digitalsignal zur Verfügung stellen. Alle diese Angebote haben Eins gemeinsam, sie sind allesamt ziemlich hochpreisig angesiedelt. Schaut man sich die Innereien solch eines Adapters an oder hat man alternativ bereits eine Vorstellung davon, was sich darin befindet, kommt man ins Grübeln... und entscheidet sich spontan, den Adapter lieber selbst zu bauen.

Es existieren Mengen von Bauvorschlägen für den Eigenbau eines Adapters, an vorderster Front zu nennen ist hier Volkszaehler.org. Im Wiki Teil wird unter Hardware ein universeller IR-Adapter vorgestellt, aber auch viele andere beherzte Bastler haben ihre Bauanleitungen online gestellt.

Außerdem haben sich bereits ganze Heerscharen von Neugierigen über die Dechiffrierung der gesendeten Daten Gedanken gemacht - erfolgreich.
Die ausführlich dokumentierte Analyse des SML-Telegramms (Smart Message Language) von Stefan Weigert hat mir bei meiner Umsetzung auf die Sprünge geholfen.


Solchermaßen vorgebildet bin ich an das Thema herangegangen und habe eine IR-Reflexlichtschranke halbiert und den Infrarotempfänger vereinzelt. Mit einem PullUp, im einfachsten Fall dem im Microcontroller Enthaltenen, wird das positive Ende des IR-Empfängers HIGH vorgespannt. Bei Lichteinfall zieht er den Pegel auf LOW. Dieses Signal wird auf den RX-Eingang, den Empfangskanal der seriellen Schnittstelle, des Microcontrollers gegeben und mit der passenden Software lassen sich die gelieferten Daten auswerten.

Ich verwende zur Programmentwicklung zuerst einmal einen Arduino, später wird ein ESP-01 die Daten auswerten und per WLAN weitergeben.

Um den IR-Empfänger am Zähler zu fixieren habe ich eine einfache Halterung für vier Magnete aus der Krabbelkiste entworfen. Gemeinhin verwenden Selbstbauer einen Ringmagneten, geschuldet wohl der Form der großen “Beilagscheibe”, die am Zähler für die Befestigung des Adapters vorgesehen ist, aber vielleicht auch, weil die Konstruktion von Volkszähler so ausgerüstet ist... wer weiß? Ich wollte keinen Ringmagneten kaufen, also habe ich vorhandenes Material verwendet. Zur Sicherheit habe ich vier der kleinen Rechteckmagnete vorgesehen, der Adapter hält aber prima mit nur zwei Magneten.

Iskra IR-Adapter Unterseite

Die Ausschnitte passen für Magnete 10 x 5 x 2 mm und fixieren die Magnete rastend, es ist kein Kleber notwendig.

Iskra IR-Adapter mit Deckel

Die beiden Vorsprünge neben dem Loch für das Datenkabel sollen den Kabelbinder gegen Verdrehen fixieren, der als Zugentlastung dient. Der Gedanke war hier ein mindestens vieradriges, rundes Kabel für Sender und Empfänger. Bei meiner einfachen Lösung mit nur dem Empfänger habe ich das dünne, zweiadrige Kabel nicht weiter am Loch fixiert, sondern nur den eigentlichen IR-Empfänger mit Pattex immobilisiert.

Iskra-Adapter

Iskra-Adapter mit IR-Fotodiode


Der Auswerteteil erhält ein eigenes Gehäuse mit OLED Display zur lokalen Anzeige der vom Zähler empfangenen Werte. Damit das OLED Display nicht frühzeitig den Heldentod durch gealterte Pixel stirbt, kommt an den letzten freien Eingang des ESP-01 ein Taster zum temporären aktivieren des Display.

Das neue Zuhause des ESP-01 wird, wie der Adapter für den Zähler, 3D gedruckt.

Um die passenden Maße zu erhalten wird zuerst die Platine entworfen, die den ESP-01, das Display, den Taster und eine passende Spannungsversorgung trägt.

Das Schaltbild des Auslesegerätes.

Iskra MT175 Sender         (Click auf das Bild für größere Darstellung)

Die Spannungsversorgung kann wahlweise mit einem monolithischen 230 V – 3,3 V Netzteil oder mit einem StepDown Wandler, gespeist über ein handelsübliches USB-Steckernetzteil, erfolgen. Die Netzteillösung habe ich schon früher bei der Zeitschaltuhr realisiert, der Stepdownwandler wurde bei verschiedenen Wortuhren eingesetzt (die Version mit Festwiderständen). Beide Varianten sind auf der Platine realisiert, für die Speisung über USB ist eine Mini-USB Buchse vorgesehen. Diese USB-Buchse ist das einzige SMD -Bauteil und sitzt folgerichtig auf der Unterseite der Platine, alle anderen Bauteile sind TH-Elemente. Der ESP-01 und das Display sind steckbar, der Rest ist fest eingelötet.

Iskra MT175 Sender

Der Schraubanschluss X6 für die Netzleitung entfällt wie gesagt, wenn die Schaltung mittels USB Netzteil über die Mini-USB Buchse versorgt wird. In diesem Fall wird der Spannungswandler auf den dreifach Stecker in der Mitte der Platine aufgelötet und sitzt dann unterhalb des OLED Display. Mir ist diese Version sympathischer, man muss beim Hantieren mit der Schaltung nicht so aufpassen :)


Die fertig bestückte Platine in unterschiedlichen Ansichten.

Iskra MT175 Sender PLatine

Unter dem Display sitzt der StepDown Wandler von 5 V auf 3,3 V.

Iskra MT175 Sender

Auf der Kupferseite der Platine befindet sich nur die Mini-USB-Buchse.

Iskra MT175 Sender


Hier das fertige Gehäuse, gedruckt mit 0,2 mm Auflösung und 20% Infill. Der ebenfalls gedruckte Taststift passt in die Führung im Deckel und bedient den Microschalter auf der Platine. Der Stift sollte liegend gedruckt werden, damit sich die Riefen von Stift und Führung im Deckel nicht verhaken. So flutscht der Stift ohne Probleme.

Anzeigegehäuse

Momentan liegt das Gehäuse nur lose im Schaltschrank.

Iskra MT175 Sender eingebaut

Die Anzeige in Aktion. Rechts oben rotiert ein ASCII Propeller als Aktivitätsanzeige. Nach 25 Sekunden wird die Anzeige ausgeschaltet, damit die Zeichen nicht einbrennen.

Iskra MT175 Sender Anzeige

Die WEB-Oberfläche ist relativ unspektakulär, zeigt nur drei Werte aus dem SML-Telegramm des Zählers. Die Werte werden nach jeweils 5 Sekunden aktualisiert.

WEB-Oberfläche

Das kleine Dreieck zeigt nach unten, wenn Energie aus dem öffentlichen Netz entnommen wird. Wird eingespeist, zeigt das Dreieck nach oben.

Die Design Files für den IR-Adapter und das Gehäuse für den Sender im Designspark mechanical Format biete ich zum Download an, ebenso die Unterlagen im EAGLE V7 Format zur Erstellung der Platine sowie das Programm für den ESP-01.

Update
Um Unsicherheiten bei der Zuordnung der Werte zu Einspeisung bzw. Bezug auszuschließen, habe ich die Ausgaben auf dem Display sowie in der WEB Oberfläche um die Kennzahleln 180 bzw. 280 erweitert. Das geänderte Programm in der Version V2 für den ESP-01 hier zum Download.


Wie oben bereits angedeutet, habe ich das Programm zuerst auf einem Arduino zum Laufen gebracht, bevor ich den Umstieg auf einen ESP8266 in Angriff nahm. Als Startpunkt habe ich den Entwurf von slaven1337 aus dem Arduino Forum verwendet.

Nachdem ich meine drei Werte aus dem Telegramm herausgefieselt hatte, stand deren Darstellung auf dem OLED auf der ToDo Liste. Hier zeigte sich dann, dass die von slaven1337 angewandten Shift-Operationen auf 64-Bit Variablen auf einem Arduino Nano nicht funktionieren. Ich habe deshalb für die Umwandlung der einzelnen Byte in die gewünschten long- bzw. int32-Werte Unions eingesetzt, was den Code zusätzlich deutlich verschlankt.

Erwähnung finden soll noch, dass bei meinem Zweirichtungszähler das elfte Byte in den Vergleichsstrings unterschiedliche Werte annimmt, je nach Richtung des Stromflusses, Bezug oder Einspeisung. Das 11. Byte muss also bei den Vergleichen ausmaskiert bzw. übersprungen werden.

Ebenfalls bemerkenswert ist, dass im Arduino Umfeld zwar eine erkleckliche Anzahl von Libraries für die Ansteuerung von OLED Displays existiert, dass ich aber nur eine einzige Lib gefunden habe, die zwei wesentliche Anforderungen aus diesem Projekt erfüllt:
Ansteuerung des Display über den I²C Bus auf zwei beliebigen Portpins und Lauffähigkeit auf einem ESP8266. Die gesuchte Lib ist U8g2 von Oliver Kraus, hier die Variante ohne Screenbuffer im RAM des Microcontrollers.

Um das Programm im eigenen WLAN anzuwenden müssen die beiden Defines

// Credentials für das eigene WLAN
#define OwnSSID "OwnSSID"          // -->> hier die eigenen Credentials eintragen <<--
#define OwnPassword "OwnPassword"  // -->> hier die eigenen Credentials eintragen <<--

vor der Compilierung passend gesetzt werden.

Bei der Auswertung der SML Telegramme habe ich mir die Auswertung der CRC Bytes erspart. Sollte tatsächlich ein Übertragungsfehler auftreten, ist das nicht so schlimm, die Werte werden ja alle paar Sekunden erneut übertragen.

 


Beim Aufruf dieser Funktion werden Daten an Google in USA übermittelt. Neben Ihrer IP-Adresse wird auch die URL der besuchten Seite übertragen.
Besucherzaehler

Besucher seit
25.11.2000