Siemens IM350 mit dem Raspberry Pi auslesen

Leider habe ich versehentlich den ersten Blogeintrag zu diesem Thema gelöscht. Hier nochmals eine vereinfachte Version davon.

Mein Energieversorger Wels Strom (eww) hat vor einiger Zeit meinen Iskra MT-174 gegen einen Siemens IM350 getauscht. Dieser hat, im Unterschied zum Iskra, eine Kundenschnittstelle mit einem RJ12-Stecker und keine Infrarot-Schnittstelle. Mein Lesekopf war somit reif für willhaben.

Mein Wissen über das Auslesen habe ich zum Großteil von diesem Forum bezogen. Herzlichen Dank nochmals an dieser Stelle an alle, die sich mit diesem Thema, viel tiefer als ich, beschäftigt haben.

https://www.photovoltaikforum.com/thread/139837-siemens-im350/

Hardwaretechnisch braucht man vier Dinge:
– USB-TTL-Konverter
– RJ12-Kabel mit Stecker
– Invertierungsschaltung (ist selbst zu löten)
– Raspi (oder Arduino, aber damit habe ich keine Erfahrung)

Um die Daten zu beziehen, benötigt man eine Invertierungsschaltung. Diese kann entweder mit einem Transistor oder mit einem Inverter bestückt werden. Die Transistor-Schaltung hat bei mir nicht funktioniert und daher habe ich mir einen Inverter besorgt. Hier der Schaltplan, wobei die Kabelfarben vom verwendeten USB-TTL-Konverter und dem RJ12-Kabel abhängig sind:

Invertierungsschaltung
Foto der Schaltung

Hier der Link zum USB-TTL-Konverter*:
https://www.delock.de/produkt/83117/merkmale.html

Hier der Link zum RJ12-Kabel*:
https://www.amazon.de/gp/product/B000VMZHG4/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1

*Es gibt natürlich auch andere Anbieter und Produkte, aber das sind die, die ich verwendet habe.

Die Software-Basis für das Auslesen ist SZReader:
https://gitlab.com/astrnad/szreader

Man braucht dafür einen Entschlüssungsschlüssel (Neudeutsch: Smart Meter Interface Passwort) vom EWW-Portal, da die Kundenschnittstelle die Daten verschlüsselt liefert:

In der szreader.config trägt man den Schlüssel dann ein. Bei mir schreibt er die Werte einfach in eine Textdatei (datasink):

Da ich zwei Zähler bzw. folglich zwei Schaltungen habe, sind da bei mir auch zwei Einträge. Ich verwende selbstgeschriebenes Programm zur Weiterverarbeitung. Wie man es z.B. mit OpenHAB, HASS, etc. verwendet, weiß ich leider nicht.

Iskra MT-174 mit Raspberry Pi auslesen – Teil 2

Da es immer wieder Fragen zu diesem Thema gibt, hier noch ein paar Zusatzinformationen:

Wo das Skript hingelegt wird, sollte eigentlich egal sein. Bei mir heißt es readfrommt174.py und liegt im Home-Verzeichnis vom „pi“-Benutzer (/home/pi/). Nachdem die Skript-Datei erstellt wurde, muss man es noch ausführbar machen:
sudo chmod +x readfrommt174.py

Mit
./readfrommt174.py
kann man es dann starten. Danach sollte Folgendes angezeigt werden:

Sollten mehrere USB-Geräte an dem Raspi angeschlossen sein, kann es natürlich sein, dass noch der USB-Port im Skript geändert werden muss:
SERIALPORT = "/dev/ttyUSB0"
Ins /dev Verzeichnis wechseln und mit ls den Inhalt aufrufen. Bei mir gibt es nur das eine ttyUSB-Device:

Wenn das soweit läuft, dann funktioniert die Kommunikation mit dem Stromzähler.

Iskra MT-174 mit Raspberry Pi auslesen

Bereits beim Einzug ins Eigenheim 2013 wollte ich den Stromzähler auslesen können, um zu prüfen, ob gerade Strom ins Netz fließt oder von dort kommt. Durch die vorhandene Photovoltaik-Anlage war das natürlich eine interessante Information, damit der Eigenverbrauch optimiert werden kann.

Der digitale Iskra MT-174 Stromzähler, welcher mir von meinem Energieanbieter zur Verfügung gestellt wurde, bietet, neben einem LCD-Display, auch eine Infrarot-Schnittstelle, um an die entsprechenden Daten zu kommen. Um diese serielle Schnittstelle auslesen zu können benötigt man einen entsprechenden Lesekopf mit einer IR-LED und einem Fototransistor für die Sende- bzw. Leserichtung:

IMG_20170525_164505570

Der von mir gekaufte Kopf ist von der Firma Weidmann Elektronik (http://shop.weidmann-elektronik.de/index.php?page=product&info=24) und wurde problemlos auch nach Österreich geliefert. Das Gehäuse wurde offensichtlich mit einem 3D-Drucker erstellt und hat einen innenliegenden Magnetring und hält so sicher am Stromzähler:

image

Der Lesekopf hat auf der anderen Seite einen USB-Typ-A-Stecker und lässt sich somit ohne Probleme mit dem Raspberry Pi verbinden und bindet sich z.B. unter Raspbian auch sofort als /dev/ttyUSB0 ein.

Mit dem kleinen Python-Skript von hier https://stackoverflow.com/questions/38836848/read-serial-python

#!/usr/bin/env python

import serial
import time

SERIALPORT = „/dev/ttyUSB0“
BAUDRATE = 300

ser = serial.Serial(SERIALPORT, BAUDRATE, serial.SEVENBITS, serial.PARITY_EVEN)

ser.write(„\x2F\x3F\x21\x0D\x0A“)

time.sleep(0.5)
numberOfLine = 0

while True:
   response = ser.readline()
   print(response)

  numberOfLine = numberOfLine + 1
   if (numberOfLine >= 11):
     break

ser.close()

lassen sich dann die entsprechenden Informationen auslesen:

image

In der Folge habe ich dann diese Informationen über ein PHP-Skript auf einer Webseite bereitgestellt und von dort über eine Xamarin-Android-App gemeinsam mit den Daten aus dem Wechselrichter dargestellt:

image

Neben dem aktuellem Strombezug (links) sieht man auch den aktuellen Zählerstand. Die Lieferung (rechts) beträgt um 20:18 Uhr natürlich 0.000kW.

Ein möglicher weiterer Schritt wäre jetzt, dass man anhand der Daten automatisch bei Überschuss aus der Photovoltaik-Anlage eine Steckdose aktiviert, welche den Akku für den Rasenmäher lädt und bei Bezug aus dem Netz diese wieder deaktiviert wird. Oder die Pumpe vom Pool, etc. etc.

Übersiedelung

Und www.seventeenfour.com ist wieder mal übersiedelt 🙂 Vom treuen Raspberry Pi auf einen Turris Omnia Router. Dieser Open-Source-Router wurde von der tschechischen nic entwickelt.

Ein ARM-Prozessor mit zwei Kernen, welche mit 1,6 GHZ laufen, und bis zu 2 GB Arbeitsspeicher, sowie 8 GB Flashspeicher sprechen für sich.

Dass der Router viel mehr als ein Router ist, sieht man auch daran, dass der sogenannte Linux-Container (LXC) unterstützt. Damit lassen sich in sich „abgeschottete“ Linux-Installationen betreiben. Der Router selber läuft auf einem Derivat von openWRT, jedoch kann z.B. ein Linux-Container eine Debian-Installation beheimaten. Im Moment habe ich vier solcher Container laufen:

– Webserver (z.B. für www.seventeenfour.com)
– Fileserver (siehe mSATA im nächsten Absatz)
– VPN-Server (mit Softether-VPN)
– Test-Server (zum Rumspielen, damit nicht gleich der Webserver dran glauben muss :-))

Darüber hinaus bietet der Router, neben zwei PCI-Express-Ports für das 2,4GHZ bzw. 5GHZ-WiFi-Modul, noch einen internen mSATA-Anschluss für SSD-Platten. Somit dient er mir auch als stromsparender Massenspeicher. Ein Datenbackup wird wöchentlich auf den Linux-SAT-Receiver gemacht, der ja sowieso auch 24 Stunden läuft (zumindest im Standby).

Neben den fünf Stück Gbit-LAN-Ports und einem Gbit-WAN-Port gibt es sogar noch einen SFP-Port. Somit kann man sogar direkt, mit einem entsprechenden Modul, einen Glasfaseranschluss anschließen. Zwei externe USB-Ports runden die Anschlüsse ab, welche ich jedoch im Moment nicht im Einsatz habe. Leider habe ich noch Probleme einen Bluetooth-Dongle zu finden, welcher auch problemlos in einem LXC funktioniert. Wenn wer Tipps hat, bitte unten reinschreiben. Danke!

geoEarl – Einstellung der Weiterentwicklung

Die Ursachen, warum Windows Phone/Mobile leider gescheitert ist, sind man­nig­fal­tig. Darauf möchte ich gar nicht näher eingehen. Auch für mich ist die Zeit des Abschieds gekommen: Seit Mitte letzten Jahres habe auch ich auf Android „umgestellt“. Zuerst nannte ich ein OnePlus3 mein Eigen und vor Kurzem auf die Mittelklasse umgestiegen und habe jetzt ein Moto G4.

Leider läuft halt geoEarl nicht auf Android. Eine Portierung würde einer vollständigen Neuentwicklung gleich kommen, da geoEarl z.B. mit VB.net entwickelt wurde. Bei den beiden Migrationspfade auf entweder Xamarin/C# oder Java werden einem schon ein paar schöne Steine in den Weg gelegt. Ich hatte Anfang voriges Jahres sogar angefangen, eine C#-UWP-Version zu erstellen, aber es zeichnete damals ab, dass Windows 10 Mobile wohl auch nicht den Durchbruch schaffen wird.

Statt geoEarl verwende ich auf Android jetzt drei Apps:
1) GCDroid (Datenbank, Livedaten)
2) GCC (Umfangreiche Umwandlungen)
3) Go(x)° (Rechner für Multis)

P.S. geoEarl 6.0.0 ist natürlich weiterhin im Windows Store verfügbar. Ich werde es nicht löschen, solange es MS nicht löscht 😉