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.

19 Gedanken zu „Iskra MT-174 mit Raspberry Pi auslesen“

  1. Klasse Tip.
    Nachdem ich jetzt auch einen Optokopf bekommen habe, kurz das python-Skript abgetippt und schon konnte ich den Stromzähler auslesen.
    Allerdings liefert mein Zähler noch deutlich mehr Zeilen. Offensichtlich auch historische Verbrauchswerte…

  2. wir sind von unserem anbieter im regen stehengelassen. wir haben einen MT174-D1A52-V22-M3K03Z. keine bedienungsanleitung. wie lesen wir das grät ab? mit den zeilen, die du vorgegeben hast können wir nichts anfangen. wir sind beide mitte 70 und können kein englisch. kannst du uns helfen????
    gruß annemarie israel

  3. Hi
    nachdem ich mir den Lesekopf zugelegt habe und alles auf Anhieb läuft (danke) – woher hast du den „Strombezug“ ? der MT174 verschweigt mir den!
    Ich wäre ja auch schon zufrieden, wenn ich sehen würde, ob gerade eingespeist wird, oder Strom bezgen wird. Am Display gibt es dafür ein Symbol, aber auslesen?
    Das mit der Steckdose wird so nichts, zumindest nicht auf diesem Weg – oder gibt es eine Lösung?

    1. Hallo Fridolin!

      Du solltest ungefähr diese Ausgabe von dem Python-Skript erhalten:

      /ISk5MT174-0001
      1-0:0.0.0*255(63117225)
      1-0:0.0.1*255(63117225)
      1-0:0.2.0*255(1.03)
      0-0:C.1.0*255(63117225)
      0-0:C.1.6*255(FDF5)
      1-0:1.7.0*255(0.656*kW)
      1-0:1.8.0*255(0013117.264*kWh)
      1-0:2.7.0*255(0.000*kW)
      1-0:2.8.0*255(0008989.597*kWh)
      0-0:F.F.0*255(0000000)

      Bei mir ist 1-0:1.7.0*255(0.656*kW) der aktuelle Bezug, 1-0:2.7.0*255(0.000*kW) ist die aktuelle Einspeisung. Es kann aber sein, dass du gleichzeitig beziehst und einspeist. Ich habe ja drei Phasen, über welche Strom bezogen wird, jedoch habe ich einen einphasigen Wechselrichter. D.h. über eine Phase speise ich ein, aber über die beiden anderen Phasen wird möglicherweise bezogen. Die Differenz aus den beiden Werten gibt dir also die Info, ob du gerade mehr einspeist als beziehst.

  4. Hallo Andreas! Danke für deine Beschreibung. Ich haben ebenfalls einen ISKRA174, den ich auslesen möchte. Raspi habe ich gekauft und mit Raspian aufgesetzt, den Lesekopf der Firma Weidmann habe ich gekauft, angesteckt und erfolgreich mit der Beschreibung der Firma getestet.

    Weiter komme ich leider nicht, denn als (beinahe) vollständiger Programmier-Neuling bin ich auf Unterstützung angewiesen: Wo und wie platziere ich das Script?

    Und eine weitere wichtige Frage: In weiterer Folge möchte ich das Ausgegebene in Openhab einbinden, wie kann ich die Information „Pushen“ (oder wie du es gemacht hast auf einer Webseite angeben – irgendwie lässt sich das dann hoffentlich abgreifen)

  5. Hallo!
    Ich habe auch den Stromzähler ISKRA 174 und Weidmann IR Kopf. Aber bei mir wirft das Script gleich einen Fehler:

    write data
    Traceback (most recent call last):
    File „auslesen.py“, line 18, in
    response = ser.readline()
    File „/usr/lib/python2.7/dist-packages/serial/serialposix.py“, line 501, in read
    ‚device reports readiness to read but returned no data ‚
    serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)

    Woran kann das liegen?

    1. Hallo Jens!

      Ich kann mir vorstellen, dass es genau an dem liegt, was der Fehler besagt. Hast du vielleicht noch etwas, was /dev/ttyUSB0 auslesen will? Ich hatte vorher ein USB-Modem installiert hatte und dort im Minuten-Takt auf neue SMS geprüft. Danach hatte ich aber das USB-Modem nicht mehr ansteckt, sondern den Lesekopf. Da jetzt zwei verschiedene Skripte auf /dev/ttyUSB zugreifen wollten, habe ich eine ähnliche (wenn nicht sogar die gleiche) Fehlermeldung erhalten. Es hat eine ganze Zeit gedauert, bis ich das raus fand. Kurzum: Ist dein Raspi neu installiert oder hast du ihn vorher schon für was anderes verwendet?

      Ich hoffe, das hilft dir ein bisschen weiter….

      mfg
      Andreas

  6. Nach einigem Herumprobieren habe ich eine alternative Lösung gefunden :

    1. Node Red am Raspi installieren. Node Red ist auf Raspian Images vorinstalliert. Wer es nicht findet – hier ist eine Anleitung: https://nodered.org/docs/getting-started/raspberrypi

    2. In Node Red (Link: deine-raspi-ip:1880) aufs Menüzeichen gehen und dort „Palette verwalten“ auswählen.

    3. Installieren anklicken, Smartmeter suchen und hinzufügen.

    4. In Data Source folgende Parameter setzen: /dev/ttyUSB0:300-7E1 (oder via Stift manuell ausfüllen: Source Type Serial; Serial Port /dev/ttyUSB0; Baud 300, Bits 7, Parity Even, Stop Bits 1)

    5. Protokoll DO auswählen, als Transport SerialRequestResponseTransport verwenden, Request Interval 0. Dann Deploy – nun sollte der Serial Port senden.

    6. eine Funktion hinzufügen, um die Daten zu formatieren und den Smartmeter mit dieser Funktion verbinden. Bei mir war es
    return [
    {payload: parseFloat(msg.payload[„6-0:1.8.1″].rawValue.replace(/[^\d.-]/,“))},
    ];

    7. Nach der Funktion kann man unterschiedliche Nodes als Ausgabemodule anhängen. Ich habe es an Openhab gehängt, es geht aber auch als Email usw.

    Am Schluss Deploy nicht vergessen

    1. Hallo,
      mich würde interessieren, ob das ganze auch wirklich mit dem ISKRA MT174 Stromzähler funktioniert hat.

      Ich habe mit Node_Red was zusammengebastelt, was mir einen anderen Zähler einwandfrei ausliest.

      Beim Iskra Zähler kann ich das offensichtlich nicht 1 zu 1 übernehmen, da der Iskra Zähler wohl zum Daten senden aufgefordert werden will.

      Hast du da was einstellen müßen?

      Gruß
      Patrick

  7. Bei meinem ISKRA (/ISk5MT174-0001) fehlt in dessen Ausgabe die Wirkleistung 1.7.0 und 2.7.0. Ansonsten funktioniert alles. Auch in der Displayanzeige des Zählers fehlt die Wirkleistung.

    Weiß jemand wie man den Zähler dazu bringt, diese Werte anzuzeigen? In der Beschreibung des MT174 finde ich nichts.

    1. Ich habe das gleiche Problem wie Werner. Mein ISk5MT174-0001 liefert keine Momentanwerte. Eine ganze Liste von bezogener und gelieferter Energie (aktueller Stand und Stand zu jedem Monatsersten 0 Uhr der letzten 15 Monate), aber keine Momentanwerte. Wäre schön wenn jemand weiß, wie man das umstellen kann. Prinzipiell dürften die Register (1.7.0, 2.7.0) ja vorhanden sein. Zumindest laut Beschreibung. Aber kann man irgendwie z.B. durch reinschreiben eines Strings den Zähler veranlassen diese beiden Register zurückzuschicken?

      1. Habe das gleiche Problem: 1.7.0 und 2.7.0 sind nicht in den Daten vorhanden (Jedoch ist 1.7.0 auf dem Display des Zählers).
        Habe jedoch einen Workaround gefunden. Man kann durch die Erhöhung der Zahl unten im Skript noch mehr Daten abrufen: „if (numberOfLine >= 16):“ hier hab ichs auf 16 gesetzt, sind theoretisch über 100. In den zusätzlichen Daten befinden sich dann:

        „1-0:1.8.0*255“ //Positive Wirkenergie (Verbrauch) insgesamt [kWh]

        „1-0:2.8.0*255“ //Negative Wirkenergie (Einspeisung) insgesamt [kWh]

        Über die Zeit zwischen jedem Lesevorgang kann dann die aktuelle Leistung errechnet werden. Da man (durch die langsame Übertragung) eh nur alle ~2min neue Werte erhält, ist ein Schnitt darüber ggf sogar besser als nur der Wert zum Zeitpunkt X alle 2min.
        Hoffe das hilft.

        1. Ich lese mit meinem eigenen ZOC-Script aus und es liegt bei mir leider nicht an fehlenden Zeilen. Siehe hier – https://wiki.volkszaehler.org/hardware/channels/meters/power/edl-ehz/iskraemeco_mt174

          Ich hab aber mittlerweile eine erfreulich detailierte Antwort von meinem Netzbetreiber bekommen. Die Zähler sind für den jeweiligen Netzbetreiber programmiert und nur die von ihm geforderten Funktionen sind zum Auslesen implementiert. Auch wenn der Zähler viel mehr könnte, was er ausgibt ist das was vom Netzbetreiber bestellt wurde und wofür er auch geeicht sein muß. Zumindest ist das hier in Ö so. Und da ist bei uns die Momentanleistung halt nicht dabei. Klar könnte man über mehrfaches auslesen der Gesamtenergie (1.8.1 und 2.8.1) den aktuellen Energiefluss ausrechnen. Aber der wäre eben zeitverzögert weil im Nachhinein berechnet. Auf kurzfristige Verbraucher (Heizspirale E-Herd, Kochfeld, …) kann man da kaum reagieren.

  8. Hi,
    und vielen Dank für die Anleitung. Mein Anbieter hat kürzlich den Stromzähler ausgetauscht und seitdem kann ich die Daten nicht mehr auslesen. Vorher hat alles mit VZLogger so schön geklappt..

    Dein Script läuft aber er spuckt mir nur hieroglyphen aus:

    /?!

    fOgwrFGc?E fFFp@~VGFK@

    Fs7~BHdcNaK@JF8 ~BHeC J\^sw~ F@~>b~BV8vrvh tB#fBq,r9J~ 0Bqlvr9J~HF@JFN>bBVGFK@F|VG8 x2GRHv

    Hast du eine Ahnung, was da los ist oder wie ich das beheben kann?

    Danke

    LG
    Oliver

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert