Sagemcom T210-D Monitoring Smart Meter (EVN)

Einleitung

Im Zuge meiner Diplomarbeit brauchte ich die Stromverbrauchswerte von meinem Haus. Daher beschäftigte ich mich einige Zeit mit verschiedenen Zählern. Ich wollte die Daten selbst abspeichern und in keiner Cloud liegen haben. Und die Kosten sollten so gering wie Möglich sein. Daher kaufte ich mir kein extra Gerät sondern nutzte die Vorhandenen Gegebenheiten.

Voraussetzungen Hardware (Bauteileliste unten)

  • Sagemcom Drehstromzähler T210-D von der Netz Niederösterreich
  • Passwort für die Kundenschnittstelle (siehe unten)
  • Raspberry Pi 4
  • USB zu MBus Adappter

Voraussetzungen Software

  • Raspbian
  • Python3
  • Libraries
    • gurux_dlms
    • beautifulsoup4
    • paho-mqtt

Verkabelung des M-Bus Adapter

Der Sagemcom Drehstromzähler T210-D hat unter seinen grünen Abdeckung eine Buchse für ein RJ-12 Kabel. Mithilfe des RJ-12 Kabels kann der M-Bus Adapter verkabelt werden. Die zwei mittleren Pins werden benötigt. Die beiden Drähte werden an den M-Bus Adapter angeklemmt.

Verkabelung M-Bus Adapter

Einbau im Schaltschrank

Das RJ-12 Kabel wird einfach unter der grünen Abdeckung des Smart Meters angesteckt und der Raspberry mit seinem Hutschienen Gehäuse montiert. Der Raspberry benötigt noch Strom welchen er über das Original Netzteil bezieht. Der MBus-USB Adapter wird in der USB Port eingesteckt und ein Netzwerkkabel angeschlossen.

Passwort für die Kundenschnittstelle

Das individuelle Passwort muss man bei der Netz Niederösterreich anfragen. Am besten schreibt man eine Email an smartmeter@netz-noe.at. Die Email muss die Zählernummer, Handynummer und Kundennummer oder Vertragskontonummer enthalten.
Als Antwort erhält man eine verschlüsselte .zip das Passwort für die Datei erhält man als SMS und kann die Datei entpacken. Darin befindet sich ein PDF mit dem Zugangscode.

Installation

Es müssen folgende Pakete Installiert werden.

sudo apt install python3 idle3        # installiert Python3
sudo pip3 install gurux-dlms          # library für die Übersetzung in eine XML
sudo pip3 install beautifulsoup4      # library beautifulsoup4 
sudo pip3 install paho-mqtt           # library für die MQTT Verbindung
sudo pip3 install lxml                # library für XML Parser
sudo apt install python3-pycryptodome # library für die Entschlüsselung
sudo pip3 install pyserial            # library für die Seriele Schnittstelle
sudo pip3 install cryptography        # library für die Entschlüsselung

Programm herunterladen und anpassen

Der Code ist auf der Plattform Github veröffentlicht und ist Open Source und somit kann ihn jeder herunterladen oder auf seine Bedürfnisse anpassen!

Es müssen nur noch einige Anpassungen vorgenommen werden.

Hier muss der Code von der PDF von der EVN eingegeben werden.

# EVN Schlüssel eingeben zB. "36C66639E48A8CA4D6BC8B282A793BBB"
evn_schluessel = "EVN Schlüssel"

Dann kann man entscheiden ob man MQTT nutzen will, wenn man TRUE auswählt muss man einen gültigen MQTT Broker IP Adresse eingegeben werden ein Beispiel ist angeführt. Wenn der MQTT Server mit Username und Passwort versehen ist muss Programmiert werden ich habe zum Testen eine offene Verbindung angestrebt um mögliche Fehlerquellen auszuschließen.

#MQTT Verwenden (True | False)
useMQTT = True

#MQTT Broker IP adresse Eingeben ohne Port!
mqttBroker = "192.168.8.99"

Es sollte der richtige Comport eingestellt werden wenn es Probleme gibt muss dieser eventuell verändert werden.

#Comport Config/Init
comport = "/dev/ttyUSB0"

Erste Inbetriebnahme

Als erstes sollten alle MQTT Funktionen auf FALSE gestellt werden um mögliche Fehler zu beseitigen. Nur die Variable printValue = True muss so bleiben.
Die Variable evn_schluessel muss mit dem Schlüssel aus der PDF ersetz werden.

evn_schluessel = "36C66639E48A8CA4D6BC8B282A793BBB"

Wenn man das Programm in einer Programmierumgebung hat dann kann man es mit Run testen ob alles läuft. Sonst muss man es über den folgenden Befehl starten. Gegebenenfalls muss man den Pfad wo die Datei liegt ändern.

sudo python3 /home/pi/Desktop/EvnSmartmeterMQTT.py

Sollte eine Fehlermeldung mit dem Text “Fehler beim Synchronisieren. Programm bitte ein weiteres Mal Starten” muss man das Programm nach kurzer Wartezeit neu starten.

MQTT Topics

Diese können ab der Zeile 144 bis 155 verändert werden. Standardmäßig sind folgende eingestellt.

TopicKommentarEinheit
Smartmeter/WirkenergiePbezogene EnergieWh
Smartmeter/WirkenergieNgelieferte EnergieWh
Smartmeter/MomentanleistungPMomentanleistung BezugW
Smartmeter/MomentanleistungNMomentanleistung LieferungW
Smartmeter/MomentanleistungMomentanleistung Summe aus Bezug und LieferungW
Smartmeter/SpannungL1Spannung an L1V
Smartmeter/SpannungL2Spannung an L2V
Smartmeter/SpannungL3Spannung an L3V
Smartmeter/StromL1Strom an L1A
Smartmeter/StromL2Strom an L2A
Smartmeter/StromL3Strom an L3A
Smartmeter/LeistungsfaktorLeistungsfaktor
MQTT Standard Topic´s

Versionsunterschiede

Es sind 2 Python Programme beide machen grundsätzlich dasselbe nur die Synchronisierung ist unterschiedlich. Es funktionieren beide aber sie wurden noch nicht im Dauereinsatz getestet. Jenes Programm, welches sich als stabiler herausstellt wird auf Dauer bleiben und das andere entfernt.

EvnSmartmeterMQTT.py
Wenn es startet sollte es alle 5 Sekunden ohne Unterbrechung Werte senden.

Der längste Dauertest war 14 Tage und dann ist es abgestürzt. (Fehler muss nicht im Skript sein kann ein Absturz vom Broker oder Pi selber gewesen sein)


EVNSmartmeterMQTT_V01.py
Bei diesem Programm ist mir selber schon aufgefallen dass nicht alle 5 Sekunden Werte kommen aber dafür Synchronisiert es sich selber und stürzt nicht ab.
Testzeitraum war ca. 48 Stunden.

Bauteilliste und Unterstützung

Alle Links sind Affiliate Links. Somit unterstützt ihr diese und weitere Projekte von mir.
Spendenlink: https://www.paypal.me/greenMikeEU

Produkt
wird
benötigt
AmazonAliexpress
Raspberry Pi 4Jahttps://amzn.to/3pPliDB
Raspberry Pi 4 Starter SetJahttps://amzn.to/3Jz589v
Raspberry Pi 4 Hutschienen GehäuseNeinhttps://amzn.to/3HwsUkn
USB-zu-MBUS-Slave-Modul Ja https://amzn.to/3zk9KeShttps://s.click.aliexpress.com/e/_DDzNUPp
RJ-12 Kabel Ja https://amzn.to/3EPZvQs
Schaltschrank SteckdoseNeinhttps://amzn.to/32Mb3HB
Bauteilliste

MQTT Nachrichten in Datenbank speichern

Ich habe zu diesem Thema einen eigenen Beitrag geschrieben.

Auswertung der Daten

Dazu habe ich einen eigenen Beitrag geschrieben.

Grafana Auswertung

157 comments

  • Hallo,

    weißt du, ob es mit Kaifa Zähler auch funktioniert – laut Bedienungsanleitung von der EVN, sollte der Output ja gleich sein.
    Danke

    Ciao
    Michael

    • Hallo, ja ich weiß es das es leider nicht funktioniert aber ich bin schon dran an einer Lösung.
      Laut EVN ist es das selbe aber in Realität funktioniert es leider nicht.
      wenn alles gut geht sollte der Code für den Kaifer MA309M dieses Wochenende online sein.

  • Hallo zusammen,
    ich habe einen Sagemcom und einen Kaifa in meinen Häusern verbaut.
    In 2 Wochen ca. bekomme ich die MBus Konverter, dann werde ich beide Zähler in Angriff nehmen und Feedback geben…
    Beste Grüße
    Reini

    • hallo manfi, verwendet man für den T210-D die M-Bus oder P1 Variante? die dokumentation der Netz Nö ist da nicht ganz klar ob das M-Bus oder Netz Nö ist
      hast du vielleicht ein paar details wie du das ganze für netz nö programmiert hast?
      Lg

      • Hallo Michael,
        funktioniert!
        Zur Info: ich hab das auf einem Raspi 2b mit einem serial to MBus Adapter laufen. Musste in deinem Skript nur die Schnittstelle ändern.
        Danke und LG Andreas

      • Hab das ganze jetzt einige Zeit im Einsatz und funktioniert super. Ein kleines Problem gibt es noch: wenn ich den MQTT Broker neu starte verliert dein Skript die Verbindung und schafft leider keinen Reconnect.

  • Hallo!

    Danke für die Anleitung!
    Frage: Habt ihr irgendwo einen Shop gefunden, wo es nicht 6+-Wochen dauert, um den MBUS-USB-Adapter zu erhalten (wie über Ali). Amazon gibt’s derzeit gar nichts.

    Danke!

    LG,

    Dieter

    • Hallo,

      An eine Modbus TCP Anbindung habe ich noch nicht gedacht da ich kein Gerät bei mir im Einsatz habe, daher kann ich es nicht testen. Der Code ist Open Source und auf Github kann man diesen einfach forken und weiter Programmieren damit sieht jeder den Code und kann ihn verwenden wenn er eine Modbus Schnittstelle hat.
      Danke für deine Unterstützung

  • Muss leider auch aus China bestellen, die Frage ist nur wie geht das mit dem Zoll – hat sich doch Mitte letzten Jahres geändert. Kann dazu jemand was sagen?

    Ansonsten super Projekt, danke!
    … übrigens mein Smart Meter ist von der Energie Stmk.
    Lg

    • Ich habe mir die letzten Monate was auf AliExpress bestellt und hatte keine Problem mit dem Zoll nicht einmal eine Nachzahlung.
      Falls jemand eine andere Erfahrung gemacht hat bitte dazuschreiben.

      Lg Michael

    • Hallo

      Seit Mitte 2021 müssen die Importe über IOSS (https://ec.europa.eu/taxation_customs/ioss_en) abgewickelt werden. Dadurch hat sich die Verantwortung der Verzollung vom Händler auf die Plattform (also Ali Express) verlagert.
      Zuvor mussten Waren <21€ (glaub ich) nicht verzollt werden. Was dazu führte das Händler diese falsch deklarierten, um diese nicht verzollen zu müssen.

      Mit dem neuen System muss Ali Express nun die Steuern ( 150 MWST + Zoll) abliefern und die Händler müssen eine IOSS-Nummer haben damit die waren beim Import den Steuerzahlungen von Ali Express zugeordnet werden können. Haben sie diese Nummer nicht wird beim Import der Wert geschätzt und von der Post vorgestreckt. Bei Zustellung wird der Betrag plus Bearbeitungsgebühr vom Postmitarbeiter an der Haustüre eingehoben.

      Bit mit hat es bis auf einmal während der Umstellungszeit ohne Probleme funktioniert.

      Mfg

    • Hallo HP!
      Würde meinen Smartmeter (Sagemcom T210-D-r) von der Energie Stmk auch gerne auslesen. Hab bis jetzt nur gehört, dass die IR Schnittstelle hier für die Kunden nicht freigeschaltet ist – somit bleibt nur der Mbus.
      Wie bist du an die Zugangsdaten (passwort) gekommen? An wen muss man sich da wenden?
      Danke vorab für deine Info.

      Grüße, Armin

  • Hi, hab dein Programm auch schon eine Zeit lang mit einem RPI4 und dem m-bus-Teil von Mikroe für einen Kaifa MA309 bei EVN im Einsatz; funktioniert sehr gut, allerdings stürzt immer um 03:00 das Systemctl.Service ab; hab zwar eine Watch-Dog-Logik für Restart in NodeRed eingebaut, allerdings kommt das systemctl.Service nicht wieder zum Laufen ;-(
    Ich habe es auch mal mit https://github.com/tirolerstefan/kaifa probiert; funktioniert auch; allerdings mit dem gleichen Effekt – um 03:00 kommt es zu einer Unterbrechung des Systemctl.Service; der Restart über den NodeRed-Watchdog funktioniert hier allerdings 😉
    Hat jemand von euch auch so einen Effekt um 3:00???

      • Hallo ich habe es mit dem oben beschrieben UART Konverter geschaft!
        In Verwendung:
        1x M-Bus UART Converter https://at.rs-online.com/web/p/entwicklungstools-kommunikation-und-drahtlos/2167484/
        1x UART USB Converter https://amzn.to/3xbX0YM
        1x Raspberry Pi Zero
        10m CAT5 Kabel

        Ich hatte allerdings das Problem das immer fehlerhafte Daten gekommen sind diese nicht entschlüsselt werden konnten. Nach Anschluss an PC und Hterm versuchen und manuelle Entschlüsselung bin ich dann auf das Problem gestoßen. Der Fehler lag dann daran, dass die Parity aktiviert gehört, also von “parity=serial.PARITY_NONE,” auf “parity=serial.PARITY_ODD,” oder auch EVEN.

        Dann war allerdings noch immer das Problem, dass er den lxml Parser nicht finden konnte obwohl er installiert war, ich habe jetzt nun: “html.parser” in verwendung: “soup = BeautifulSoup(xml, ‘html.parser’)”

        Dann noch in openhab alles von mqtt eingelesen und autostart und autotest auf dem PI mit screen eingerichtet und jetzt läuft alles 1A.

        Vielen Dank an das Skript und die Erklärung!!

        • Hi Daniel,

          wie hast du den M-Bus UART Converter mit dem UART USB Converter verbunden?

          (M-Bus UART Converter)TX auf (UART USB)RX UND (M-Bus UART Converter)RX auf (UART USB)TX ODER RX auf RX und TX auf TXT?

          Weiters (M-Bus UART Converter)GND auf (UART USB)GND , sonst noch etwas?

          Vielen Dank schonmal

          • Ich habe soeben dasselbe Setup ausprobiert und geschafft. Ich habe Tx auf Rx und Rx auf Tx verbunden. Das M-Bus Board braucht auch noch 3.3V Der kommt bei mir auch aus dem USB-UART adapter raus, und den musste ich auch noch verbinden – und natürlich auch noch die beiden Ground (GND) Pins.

            Hatte keinen 6-Poligen Stecker, da habe ich ein normales Ethernet RJ45 kabel geopfert und seitlich abgeschliffen. Habe es auf beiden Seiten soweit abgeschliffen dass der 1. und 8. Pin gerade noch nicht angeschliffen waren. Funktioniert super. Auch die Arretierung geht. Habe ein RJ45 Kabel gefunden das kein Metallblech hat, meines war nur aus Plastik.

            Die Drähte von den mittleren beiden Pins habe ich dann in den kleinen Schaubklemmen fixiert. Wenn man mit dem Multimeter Gleichspannung (DC) misst, dann kamen bei mir 35V raus. Das sollte so passen. Wenn ihr das falsche Adernpaar erwischt habt, dann bekommt ihr keine Spannung.

            Viel Erfolg! elektroluki

  • Hallo, ich habe den https://www.amazon.de/gp/product/B08GWZTNM3 im Einsatz, bekomme jedoch keinerlei Telegramme rein. P1 sollte (seit heute – eMail) freigeschaltet sein. Das _V01.py printed nur “Invalid Start Bytes… waiting”, daten ist tatsächlich leer. Weiß nicht obs am o.g. Kabel oder an einer tatsächlich noch nicht wirklich aktivierten P1 liegt.

    • Hallo,
      ja das Kabel funktioniert nicht wurde schon öfters bemängelt.
      Ich habe mir gerade eine alternative Bestellt die in großer Stückzahl verfügbar ist aber das dauert noch ca. 2 Wochen bis ich alles testen kann daher bitte ich noch etwas um Geduld.
      LG Michael

  • Hallo.

    Dumme Frage: Enden bei euch die Diagramme aus der Kundenschnittstelle neben 0x16 auch manchmal mit 0x8b, 0xf1, 0xfc, 0xfe oder 0xff.

    Mir kommt das bei mir etwas spanisch vor, da nur ein Telegramm mit 0x16 am Ende in der EVN-Anleitung steht und auch die M-Bus Dokumentationen, die man im Internet findet, 0x16 als End-Byte definieren.

    Bitfehler schließe ich aus, da Start-Bytes u.ä. richtig übertragen werden

  • Hallo Michael!

    Sag, Du hast vor ein paar Tagen laut GitHub einige Adaptionen in den beiden Scripts getätigt. Soll man nun die aktualisierte Version verwenden bzw. was waren die Änderungen? Bzw. welches von den beiden Scripts “empfiehlst” Du?
    LG David

  • Hallo,

    Ich würd die Version01 empfehlen. Die Änderungen sind nicht zwingend notwendig war eher kosmetischer Natur. Aber bald kommt ein größeres Update.

    Da wir es ein Config File geben und eine wo der Code ausgeführt wird dann muss man nur einmal die Config ausfüllen und kann den Code immer wider verändern ohne das man den Key ändern muss. Es kommt auch eine REST-API Schnittstelle dazu. Eventuell auch noch eine Option das man sofort in die InfluxDB schreiben kann.

    Aber für das große Update muss ich noch einiges Testen bzw die Anleitung noch umschreiben das da keine Verwirrung aufkommt das dauert noch etwas länger da ich gerade noch alle Test´s und vorallem meine Diplomarbeit fertig stellen muss.

    LG Michael

  • Hi
    ich kämpfe etwas…
    beim Installieren sudo apt install python3-pycryptodome # library für die Entschlüsselung
    bekomme ich die Meldung:
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    ERROR: Could not find a version that satisfies the requirement python3-pycryptodome
    ERROR: No matching distribution found for python3-pycryptodome

    und nun ?
    Und DANACH ?
    bin echt der volle compiler/python noob
    sorry

  • Hallo – jetz hab ich ebenfalls
    Invalid Start Bytes…waiting

    woher weiss man dass das Kabel funktioniert?
    oder die Schnittstelle vom SMartmeter
    :/
    die mittleren 2 Litzen hab ich jedenfalls verwendet

  • Danke für das Telefonat und die Unterstützung.
    Guter Hinweis dass ich bei der Energie Steiermark eventuell das Problem habe. damit konnte ich nicht rechnen.
    Darum mache ich noch kurz einen Aufruf in eigener Sache quasi:
    .

    ->HAT JEMAND hier ERFOLGREICH den Sagem T210-D von der Energie Stiermark einbinden können?<—
    .
    Ich würde mich sehr über Antwort freuen.
    ertlweber@gmx.at

  • Hallo Michael,
    Kaffeespende sollte schon auf deinem Konto sein.
    Danke für die tolle Anleitung
    Wie lange hast du auf das Kundenpasswort der EVN gewartet?
    Habe vor einer Woche die Anfrage gestellt und es wurde mir mitgeteilt das mein Ansuchen an die entsprechende Abteilung weitergeleitet wurde

    lg
    Helmut

    • Hallo,
      danke für die Spende!!!
      Bei mir war das noch gesondert da ich schon früher einen Zugang erhalten habe bevor es für jeden geöffnet wurde bezüglich meiner Diplomarbeit.
      Aber was ich von Bekannten mitbeckommen haben kann es bis zu zwei Wochen dauern.
      LG Michael

  • Gerne
    dann warte ich halt noch.
    Noch 2 Fragen: tust ein 3er Rai auch (4er sind alle Haussteuerung FHEM)
    und kann der MQTT Server am selben Pi installiert sein, der auch die Abfrage vom Zähler macht?
    Gruß
    Helmut

  • Hallo!
    Ich habe aktuell den T210-D der EnergieSteiermark in Betrieb und lese den Verbrauch bisher mit Home Assistant Glow über die 1000 imp/kwh LED aus. Das funktioniert an sich auch gut, allerdings habe ich gestern mein Balkon PV in Betrieb genommen und bemerkt, dass die LED auch bei Einspeisung gleich blinkt wie bei Verbrauch.
    Dadurch stimmt die Verbrauchsberechnung über die LED natürlich nicht mehr.

    Weiß jemand, ob der Verbrauch bei Einspeisung mit dieser Variante richtig berechnet wird?

  • Servus
    sag kann es sein das ich hier
    https://www.reichelt.at/at/de/raspberry-pi-usb-rs485-schnittstelle-ch340c-rpi-usb-rs485-p242783.html?PROVID=2807&gclid=CjwKCAjwrfCRBhAXEiwAnkmKmZ2CWZRZ9Lkr28sH57mvHg36Je3-LVp8HLoS13BJssQLVOQVhOBAMhoCojMQAvD_BwE
    den falschen Stick gekauft habe?
    Dein Programm liegt unter home/pi/Desktop
    Wenn ich sudo python3 /home/pi/Desktop/EvnSmartmeterMQTT.py aufrufe
    bekomme ich die Meldung line1, in Import serial
    No Module named ‘serial’

    danke für deine Unterstützung
    Helmut

    • Hallo,
      ja es wird der falsche USB Konverter sein ich habe den was man benötigt verlinkt in der Bauteilliste.

      Aber der Fehler liegt an einem fehlenden Packet für Python.

      sudo pip3 install pyserial

      Das einfach in die Kommandozeile eingeben dann sollte der Fehler weck sein 👍

      LG Michael

  • Danke für die prompte Rückmeldung. Super support
    Ich glaub jetzt hab ich was grob versemmelt.
    Nach der Installation von pyserial hat mir das System mitgeteilt
    das pycryptography und paramiko fehlen
    Habe ich beide auch nachinstalliert, obwohl die sollten doch eigentlich in pycryptodome enthalten sein?
    Wenn ich jetzt dein Programm starten will tut sich nix mehr….
    Glaube das Beste wird sein die SD platt machen und am WE nochmals in aller Ruhe neu installieren oder?
    Gruß
    Helmut

    • Hallo,
      ja wird besser sein. Von Vorteil ist noch wenn sie die Version mit den empfohlen Packeten aufsetzen dann sind schon einige Pakete vorinstalliert die Sie benötigen.
      Wenn sie für Testzwecke einien MBus adappter benötigen melden Sie sich nocheinmal.

      LG Michael

  • Hallo Michael
    ja werde alles neu aufsetzen.
    Habe jetzt am großen Fluß deinen Adapter bestellt. Der kommt aber erst Mitte Mai.
    Gerne nehme ich das Angebot mit dem Test Adapter an.
    Sollen wir das besser per e-mail klären?
    LG
    Helmut

  • Hallo,
    Wollte meinen Stromzähler auch an den Raspberry hängen, scheitere aber leider schon bei der Installation mit
    “E: Paket python3-pycryptodome kann nicht gefunden werden.”

    Wird dafür eine bestimmte Raspian Version benötigt ?

    Danke, Werner

  • Servus und Danke ist angekommen.
    Programm “dürfte” funktionieren aber es dürfte auch der falsche Stick sein (Grrrrr…)
    Wenn ich die Originale. Version deines Progis aufrufe, bekomme ich am RPi keine Rückmeldung mehr
    Ich sehe aber in FHEM im MQTT Broker bei cid SmartMeter und state is Connected
    In der V01 bekomme ich in der Konsole diese Meldung “Invalid Start Bytes… waiting
    Invalid Start Bytes… waiting”
    Ich lese das so aus deinem Progi das er keine Daten bekommt?

    Ist dies so – wenn ja bekommst du eine e-mail wie besprochen

    Nice Weekend
    Helmut

    • Hallo,

      super das es läuft. Ja es wird daran liegen das er keine bzw falsche Daten beckommt er fragt nach dem StartingHeader ab wenn wer falsche kommt dann wird die Fehlermeldung Invalid Start Bytes… waiting” ausgegeben.

      Sie können mir auch auf WhatsApp schreiben.

      LG Michael

  • benötigt jemand den MBUS Stecker/Wandler?
    Also den im https://amzn.to/3BitdNP beschriebenen BAuteil
    hatte Fehlkauf(da EnergieStmk Zähler anders funktioniert)
    + 3m Kabel würde ich 30€ verlangen.
    Vorteil: Lieferzeit innerhalb von Österreich – geht schneller als über Amazon und china 🙂

  • Hallo,
    kurze Frage: am Foto ist die Farbe schlecht ersichtlich: beim RJ12 Kabel: welche Drähte muss ich mit dem MBUS Adapter verbinden?
    Ich habe rot, grau, gelb, grün, braun und weiß.
    Das rote erkenne ich, aber beim anderen bin ich mir nicht sicher: grau oder grün?
    Danke!

  • Anmerkung zur Installation:
    hatte es gerade auf einem RPi mit Raspian Lite installiert. Dort muss python3-pip noch installiert werden, d.h. die erste Zeile ergänzen auf:
    apt install python3 idle3 python3-pip

    LG

  • Hallo Michael,
    nochmals herzlichen dank für das Programm und den tollen Support.
    Am Besten ist es, wenn man dafür das aktuelle “Raspberry Pi OS with desktop and recommended software”
    verwendet. Hier braucht man NICHTS nachinstallieren.
    Ich verwende zur Zeit deine V_01
    Hier ist mir lediglich aufgefallen das man bei “Wirkenergie” noch durch 1000 teilen muss.
    Jetzt muss ich das ganze noch in den Autostart bekommen

    LG
    Helmut

  • Guten Morgen
    folgende Meldungen sind mir aufgefallen (Konsole am iMac)
    Invalid Start Bytes… waiting
    Fehler: list index out of range
    Invalid Start Bytes… waiting
    Invalid Start Bytes… waiting
    Invalid Start Bytes… waiting
    Invalid Start Bytes… waiting
    Wirkenergie+: 416125Wh
    Wirkenergie-: 46224Wh
    Momentanleistung+: 2359W
    Momentanleistung-: 3W
    Spannung L1: 231.9V
    Spannung L2: 228.0V
    Spannung L3: 227.60000000000002V
    Strom L1: 0.07A
    Strom L2: 8.98A
    Strom L3: 1.83A
    Leistungsfaktor: 0.996
    Momentanleistung: 2356W

    Der MQTT2 Server befindet ich auf einem anderen Pi im selben Netzwerk

    Gruß Helmut

  • Hallo Michael,
    ich brauche bitte nochmals deine Hilfe:
    Folgende Fehlermeldung bringt das Programm zum Stillstand
    Invalid Start Bytes… waiting
    Wirkenergie+: 439699Wh
    Wirkenergie-: 46224Wh
    Momentanleistung+: 2326W
    Momentanleistung-: 0W
    Spannung L1: 229.0V
    Spannung L2: 233.60000000000002V
    Spannung L3: 228.60000000000002V
    Strom L1: 9.46A
    Strom L2: 0.71A
    Strom L3: 2.04A
    Leistungsfaktor: 0.999
    Momentanleistung: 2326W

    Invalid Start Bytes… waiting
    Fehler: list index out of range
    Invalid Start Bytes… waiting
    Invalid Start Bytes… waiting
    Invalid Start Bytes… waiting
    Traceback (most recent call last):
    File “/home/pi/Desktop/EVNSmartmeterMQTT_V01.py”, line 101, in
    cipher = AES.new(encryption_key, AES.MODE_GCM, nonce=init_vector)
    File “/usr/lib/python3/dist-packages/Cryptodome/Cipher/AES.py”, line 232, in new
    return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
    File “/usr/lib/python3/dist-packages/Cryptodome/Cipher/__init__.py”, line 79, in _create_cipher
    return modes[mode](factory, **kwargs)
    File “/usr/lib/python3/dist-packages/Cryptodome/Cipher/_mode_gcm.py”, line 620, in _create_gcm_cipher
    return GcmMode(factory, key, nonce, mac_len, kwargs, ghash_c)
    File “/usr/lib/python3/dist-packages/Cryptodome/Cipher/_mode_gcm.py”, line 188, in __init__
    raise ValueError(“Nonce cannot be empty”)
    ValueError: Nonce cannot be empty

    Kannst du da bitte weiterhelfen?

    @ Harald
    ich hab es damit versucht
    http://blog.wenzlaff.de/?p=15477

    ABER das .py wird gestartet, aber trotzdem muss ich es mit oben beschriebenen Befehl erneut ausführen
    Da bin ich selbst noch auf Suche

    Gruß
    Helmut

  • Hallo Michael,
    sorry muß nochmals lästig sein:
    Bekomme sehr oft diese Fehlermeldungen
    Fehler: list index out of range
    Invalid Start Bytes… waiting
    Invalid Start Bytes… waiting
    sofort nach dem Start.
    Gruß
    Helmut

  • Servus und Danke
    Anscheinend war das Startskript im falschen Verzeichnis und ausserdem
    lasse ich die Daten auf dem selben Pi auf den MQTT Server schreiben und hole sie von dort mit einem MQTT Client die Daten in mein Haussystem
    Ist anscheinend besser als den entfernten MQTT server in dein Programm einzutragen.
    Schönen Tag
    Helmut

  • Hallo,

    DANKE für das Script, nach ein paar Start Schwierigkeiten mit fehlenden Paketen
    pip3 install cryptography
    pip3 install paramiko
    pip3 install pyserial

    und das “soup = BeautifulSoup(xml, ‘lxml’)” musst ich wie auch andere User auf “soup = BeautifulSoup(xml, ‘html.parser’)” ändern, läuft das Script seit 12h ohne Probleme 🙂

    vl sollte auch die Doku bezüglich Einheiten angepasst werden
    Smartmeter/WirkenergieP bezogene Energie kWh -> Wh
    Smartmeter/WirkenergieN gelieferte Energie kWh -> Wh

    LG.
    Erwin

  • Du verwendest hier einen M-Bus Slave Adapter um den Zähler auszulesen, das bedeutet für mich, dass der Zähler M-Bus Master am Bus ist und auch die M-Bus Spannung bereitstellt.
    Ist dies so korrekt? Schickt der Zähler die M-Bus Spannung (36V/24V) an seinen Anschlüssen heraus?

    Ich kenne das bisher eher umgekehrt, sodass die Zähler alle Slave sind und ein Master dann die Spannung bereitstellt und mehrere Zähler ausliest.

  • Hallo zusammen!

    Auf der Suche nach “Smartmeter auslesen” bin ich hier gelandet, mit spannenden Inputs. Allerdings steh ich vor dem Start noch vor einem ganz banalen Problem. Unser Zähler ist in einem Zählerkasten an der Straße, dort hab ich ironischerweise aber keinen Strom, mit dem ich den Raspberry betreiben kann… Hat jemand zufällig ein ähnliches Problem und dafür eine Lösung gefunden? Kabel einziehen, dürfte auch nicht klappen.

    Danke!

    lg, Stefan

  • Hallo Michael,
    kurzes Update: läuft super und stabil.
    Habe noch eine Frage zum Intervall. Der Zähler ist ja sehr gesprächig
    Kann man vielleicht in deinem Programm das Intervall von 5 Sek auf eine Minute für die Übertragung auf den MQTT Server ändern?
    Gruß
    Helmut

    • Hallo,
      diese Funktion ist derzeit nicht vorgesehen sollte aber relativ einfach sein diese Funktion selber dazu zu programieren. Einfach mit einer IF Abfrage und einer Zählvariable. Jedes mal wenn Daten ankommen die Zählvariable erhöhen und wenn das 12 mal passiert ist die Daten senden. Dann ist ungefähr eine Minute vergangen da alle 5 Sekunden Daten gesendet werden und das 12 mal ergibt eine Minute. Das ist meine Idee wie man das Lösen könnte.
      LG Michael

  • Hallo bin Anfänger in dieser Stromsache und möchte mich vergewissern ob ich alles richtig verstanden habe. Die beschriebene Hardware habe ich vorrätig und möchte sie mit Fhem zum Einsatz bringen. Ich verwende zwei getrennte Raspi4, einen für Fhem und MQTT2_CLIENT und einen zweiten für dieses Projekt inklusive MQTT_Server. Ist dies so möglich?
    Meine zweite Frage betrifft den Raspi4 mit “USB zu MBus Adappter” und “MQTT_Server”, funktioniert da auch eine WLAN Anbindung UNIFI_AP ist 7 Meter entfernt oder muss ich doch den Zählerkasten für ein LAN Kabel anbohren?

    DANKE für die Hilfestellung !!
    P.S. Zähler ist ein Sagemcom T210-D von der EVN

    • Hallo,
      WLan sollte auch funktionieren. Natürlich nur so gut wie der Empfang ist. Ich weiß zwar nicht genau was FHEM ist bzw hab ich es selber noch nicht verwendet. Aber ich habe mit jemanden Kontakt gehabt der es mit FHEM realisiert hat.
      Im grunde schickt das Python Skript auf eine MQTT Topic die aktuellen Werte des Smart Meters. Die Daten können dann ganz normal wie MQTT Nachrichten behandelt werden.
      Bei weiteren Fragen können sie mir gerne eine Mail schreiben.
      mreitbauer@gmx.net
      LG Michael

  • Hallo Oehring
    WLAN vom RPi mit FHEM funktioniert.
    Ich habe im Zählerkasten einen RPI mit FHEM und MQTT2Server laufen und hole mir die Daten
    im Haus mit MQTT2 Client ab.
    Einzig wo du aufpassen musst, das Programm oder der Zähler senden alle 5 Sekunden Daten
    Da kommen dann rasch Logs mit 50-100MB zusammen und dann hast du beim Aufbau der Grafik Probleme
    Aber das lässt sich ja in FHEM zum Glück einstellen
    Gruß
    Helmut

  • Hallo Michael
    ich hab noch eine Frage zur Zählerabfrage – ob ich das richtig verstanden haben:
    MomentanleistungP sind 979 Watt (die Verbrauche ich im Haus?)
    Mein Balkonkraftwerk liefert 453 Watt
    Wieso gehen dann MomentanleistungN ca. 300 Watt in Netz
    irgendwo mach ich da glaube ich einen groben Denkfehler oder?
    Gruß
    Helmut – schönen Sonntag

  • Vielen Dank für die Informationen und investierte Arbeit und diese für uns zu dokumentieren – großartig!

    Ich habe das Script etwas anders realisiert (weder wie in der Original- noch in der V01-Version), um sich an den Datenstrom entsprechend anzupassen (d.h. weder genau 282 Bytes zu erwarten noch bestimmte Zeiten zu warten). Das läuft jetzt seit Freitag großartig und stabil und ich habe ein interessantes Phänomen festgestellt:

    2022-04-28 20:47:41,143 INFO:OK – Iteration: 1
    2022-05-02 13:50:00,862 INFO:OK – Iteration: 64109

    root@rpgen4n03:~# let FIVESECINTERVALS=($(date +%s -d “2022-05-02 13:50:00,862”)-$(date +%s -d “2022-04-28 20:47:41,143”))/5 && echo $FIVESECINTERVALS
    64107

    Es sind also in meinem Fall 64.109 Pakete zu 282 Byte verarbeitet worden – diese hätten aber bei exaktem 5-Sekunden Intervall erst um 13:50:06 (und nicht bereits 6 Sekunden davor) anliegen sollen.

    LG Martin Werner

  • hallo,
    ich habe den sagemcom T201-D-r von den Stadtwerken Köflach (Steiermark), es gibt 2 schlüssel (GUEK und GAK).
    ich habe das beschriebene mbus-slave-modul und das ganze an einen raspberry pi 3+ angeschlossen.
    leider bekomme ich als ausgabe nur “invalid start byte …waiting” zurück.
    gibt es eine lösung oder funktioniert es nicht.
    danke
    lg robert

    • Habe den gleichen Fehler begangen.

      Die Sagemcom S bzw T 210 haben in der Steiermark kein M-Bus sondern DLMR (Dutch Smart meter Requirements). Bei mir ist es E-Werk Gösting (V. Franz). Damit hat man im Grunde genommen Vorteile. Ich nehme an, dass auch bei Deinem Schreiben mit GUEK und GAK DLMR 5.0.2 steht, oder?
      Der Anschluss ist kein RJ11 (mit den mittleren zwei Pins) sondern der gleich aussehende RJ12, der aber 5 der 6 Kontakte wirklich nutzt.

      Großer Vorteil: die beiden äußersten Pin haben eine 5V-Stromversorgung.

      Nachteil: Der M-Bus-Adapter, der oben angeführt ist, ist falsch.

      Einen herzlichen Dank dabei an die Diplomarbeit von David Feichter (FH Eisenstadt) der das Thema aufgearbeitet hat.
      Aufpassen muss man dabei, dass es offenbar von den RJ12 zu USB-Adaptern (für Raspberry Pi) unterschiedliche Versionen gibt und man die Fassung für Sagemcom bestellt (Amazon “Domotica on Raspberry DSMR Dutch P1 Poort Cable for Smart Slimmemeter with FTDI Chip 5V TTL UART Logic Level Signals USB to RJ11 RJ12 6P6C Port (for ISKRA AM550/Sagemcom XS210 T210-D)”. Dabei ist RJ11 sicher falsch, aber RJ12 6P6C ist korrekt.

      Erhalten habe ich die Adapter noch nicht, programmiert habe ich auch noch nichts. Vor allem wie ich GAK (tw. auch AAD genannt) verwende und damit entschlüssele, muss ich erst nachforschen. Vielleicht weiß das aber auch jemand. Den Teil des GUEK kenne ich soweit vom Iskra AM 550 (Wiener Netze).

        • Ah, cool!
          Ich habs Kit mittlerweile bekommen – ging ganz unkompliziert und schaut soweit gut aus.
          Nun wart ich noch auf den Key der Energie Steiermark. Hat das lange gedauert in deinem Fall?

          • Mittlerweile hab ich auch die Rückmeldung der Energie Steiermark bekommen, dass ich den Key im Serviceportal auslesen kann.
            Bei mir im Portal steht jedoch noch immer, dass die Verbindung zum Smart Meter nicht stabil sei und ich deswegen weder Statistiken auslesen noch den Key anfordern kann. Installiert haben sie das Teil bei mir ende Jänner.
            Auf erneute Rückfrage wann das denn wohl funktionieren wird meinten sie am Telefon, dass es 6 bis 9 Monate (!) dauert bis die Verbindung zum Smart Meter stabil ist. Ich arbeite seit 10 Jahren in der IT, aber sowas hab ich auch noch nicht gehört 😀

          • Ich habe den Key innerhalb einer Woche als Einschreiben bekommen von Stromnetz Graz bekommen. IME opt-in ist seit ca 8 Monaten aktiv. Das Kit von Weigu habe ich auch erhalten, muss es aber erst in Betrieb nehmen.

  • Hallo miteinander,
    und zuerst mal einen grossen Dank an greenMike!

    Ich habe jetzt mal alles soweit beisammen, dass ich Daten lesen kann und auch eine Ausgabe via print(str(data.hex())) im recv() auf die Konsole gemacht wird. Leider kommt es ziemlich oft vor (ich verwende das zweite …_V01.py Script), dass die Daten nicht geparsed werden koennen. Ich habe mal eine Ausgabe der gelesenen Daten auf die Konsole gemacht, dabei ist mir aufgefallen, dass ich in diesen Faellen immer falsch positioniert bin, d.h. die Start-Bytes sind irgendwo mitten in dem Block zu finden*, bis sich das ganze wieder von alleine synchronisiert. Ich hab schon versucht mit verschiedenen sleep Werten eine Besserung zu bekommen, leider ohne Erfolg.

    Ich gehe jetzt mal davon aus, dass das Smart Meter nicht das Problem ist, sondern der Zeitpunkt des Einlesens der Daten, daher vermutlich dieser Offset. Wobei, wirklich wissen tu ich es nicht. 😉 Jetzt meine Frage, kann man das Einlesen nicht so machen, dass erst ab den richtigen StartBytes die 282 Bytes gelesen werden bzw. der gelesene Block halt irgendwie die richtigen 282 Bytes verarbeitet?

    lg
    Martin

    *das sieht dann z.B. so aus (die Startbytes 6801016853 finden sich dann irgendwo mitten drin):
    2d588603bb49d640462f16680d0d6853ff110167310cd9ba350e99ea61166801016853ff000167db085341475905e9ea0881f8200008834bb559a9ccad5c332c00e13d5b729341c60e7e53887185bb0b29693c92979c4403a034860e0c42b3bbf31360e1c75eb1c45d119745eed7afeb585f9399e3ecd3c35d31bf05eeb05f0d884fa5effb3291d0a70f14bccaff3f3724ce1b3ba00fcfab4f27f5d219ccbf8ba9a05d15af782fe2a0824f7c6c0c13b3f6882d4cd4f3dc21ac90b942b130149510170cc0899db362a3806edb1790bfc3eaa51ae8371163a43445ab38bb695900226df8a7345eb757
    Invalid Start Bytes… waiting
    4d5e36cf3fc6effa09d4c14821bba348804de6ff93cce057127bf7c0ba4fd9404fa4d3dcee7294f355e7342f12edd1a37a33e41af3b659b70400fe5816680d0d6853ff110167e2e893dc7908e194fa166801016853ff000167db085341475905e9ea0881f8200008834ccadf9fb3d920cfc649a45c8d4f8a529eb0eecd40208211190ff5c0139bad70e0bdb48ab5b3e0657886466f08b0ba03f67da16b53cd474a0b38ec66c79ac92bc761b588365512963d85f1a08df3b3576c4fc556bfe7548f76af0606c1c463958cc4cab25e4dc5b50b9c57819ae6843dda
    Invalid Start Bytes… waiting
    9ea0409ef798e0f11614cc24a0a12def65f47bb2fe13a09a76b0cc027142a2bbc8533bacc6d3b43c0aaa215ba8c7d67246ef7bbef6aec6aa568f4c05e83327b607dff931c7f6ba82b03ce8b0e0b20bdba7f913993212218dbfc161f7aef4f4c3b9a30a4d575fdd40411d946f202af9cdc2022350bfd41b27dd18b12d16680d0d6853ff11016790932791de19276f33166801016853ff000167db085341475905e9ea0881f8200008834d31fb7e3e47056bd1eb8753f7782ae325654c77cdf7db5b2213503795eface1ef2919434591a0575e669fd16b8671cd2d
    Invalid Start Bytes… waiting
    b1f90364e36b5f938ff14a88af3b68b66074e3f648d1f44b092cfdf8dadb631478b783db221d5fffb77c917bf9d4937b2998493e8357788f9ef8c953b078e0d2598b413f23bb943c62a9a8b1f10f01f9199abcda7f9b8f63539216d2e9d5d4154c5b7413de7265ac7248cb0518365e36d5f8c8ddb4d81f9ba92f6a4586f46e28475f178d06153d75ef38d78a710e78354848051de080ff1ae23b77f55d40b4d61073fe509f8a4251bc0ebcef3e3838fd54c7cb300c741808c24eba0d16680d0d6853ff110167d65f45cc0cbcffdeb6166801016853ff0001
    Invalid Start Bytes… waiting

    • Ich antworte mal frech selbst auf mein Posting. Die gelieferten Daten scheinen grundsaetzlich korrekt zu sein. Das hab ich mit folgendem Kommando ueberprueft (ohne laufendem EVN Script natuerlich):
      python -m serial.tools.miniterm /dev/ttyUSB0 2400 –encoding hexlify

      Da der Datenstrom immer mit 16 ended, schaut das fuer mich korrekt aus. Leider tritt aber hin und wieder ein Fehler auf, den ich noch nicht nachstellen bzw. eliminieren konnte. Hier die Fehlermeldung:
      [..] 0E 62 A1 96 58 DE 00 16 Exception in thread rx:
      Traceback (most recent call last):
      File “/usr/lib/python3.9/threading.py”, line 954, in _bootstrap_inner

      — exit —
      self.run()
      File “/usr/lib/python3.9/threading.py”, line 892, in run
      self._target(*self._args, **self._kwargs)
      File “/usr/lib/python3/dist-packages/serial/tools/miniterm.py”, line 499, in reader
      data = self.serial.read(self.serial.in_waiting or 1)
      File “/usr/lib/python3/dist-packages/serial/serialposix.py”, line 577, in read
      raise SerialException(
      serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)

      Eigentlich laueft meines Wissens nach nichts anderes zu dem Zeitpunkt als das obige Kommando… Natuerlich hat sich die ganze Einleserei mit diesem Fehler erledigt. Somit werden, wenn das beim EVN Script passiert, keine Daten mehr in die DB geschrieben. 🙁 Das kommt also zu den Einlesefehlern/-ungenauigkeiten noch hinzu.

      • So wie es aussieht (Langzeittests fehlen noch!) scheine ich das Problem mit den bei mir auftretenden verschobenen Offsets behoben zu haben. Mit folgenden Codeaenderungen passts ersten Tests zufolge bei mir:

        def recv(serIn):
        read_buffer = b”
        length = int(0)
        while True:
        try:
        data = serIn.read()
        if data == ”:
        read_buffer = b”
        length = 0
        continue
        read_buffer += data
        length += len(data)
        if length < 282:
        continue
        #else:
        #uncomment for debug info
        #print(str(length) + " + " + str(read_buffer.hex()))
        break
        except:
        pass
        return read_buffer

        Ich bin kein Python Programmierer, also kann einer, der die Sprache besser kennt, das vermutlich eleganter loesen.

          • Hi Michael,

            ich habe vorhin mit ziemlicher Sicherheit herausgefunden, warum mein USB Port immer weg war. Scheinbar lag es an den undervoltage Fehlern, die immer wieder angezeigt wurden, und das trotz original Netzteil. Ich habe nach einigem Gruebeln gerade vorhin das Gehaeuse entfernt (es ist eins das aussieht wie eine alte Nintendo Konsole) und siehe da, die undervoltage Fehler sind weg! (link zum Gehaeuse auf Amazon kann ich bei Bedarf posten) Jedenfalls laeuft das Script zwar erst seit kurzem, aber es laeuft ohne undervoltage Fehler und auch ohne verschobene Offsets!

            Ich habe dein EVNSmartmeterMQTT_V01.py etwas angepasst (primaer die recv Methode) und jetzt hab ich keine abgeschnittenen Daten und auch keine daraus resultierenden Fehler mehr. Ich poste die Aenderungen nochmal, aber scheinbar gehen hier dabei die Einrueckungen verloren, sorry. 🙁

            Hier mal meine Anpassungen:

            serIn = serial.Serial( port=comport,
            baudrate=2400,
            bytesize=serial.EIGHTBITS,
            parity=serial.PARITY_NONE,
            stopbits=serial.STOPBITS_ONE,
            timeout=1.5
            )

            def recv(serIn):
            read_buffer = b”
            length = int(0)
            while True:
            try:
            data = serIn.read()
            if data == ”:
            read_buffer = b”
            length = 0
            continue
            read_buffer += data
            length += len(data)
            if length < 282:
            continue
            else:
            if printValue:
            print(str(length) + ":" + str(len(read_buffer)) + " + " + str(read_buffer.hex()))
            break
            except:
            pass
            return read_buffer

            Und weiters habe ich alle sleep() in dem Script auskommentiert, weil es mit denen nicht so rund lief. Aktuell passts bei mir perfekt…

            Jetzt hoff ich nur mehr, dass auch wirklich alles dauerhaft funktioniert. Das weiss ich aber erst in den naechsten Stunden/Tagen. Weil bisher war nach spaetestens wenigen Stunden schon der USB Port weg (sicher wegen den undervoltage Fehlern). Zu dem Thema hab ich uebrigens noch ein Script im Netz entdeckt, das mich darauf gebracht hat. Einfach mal nach get_throttled.sh suchen.

            Was ich auch noch gemacht habe, ist das alles in einer autoloop zu re-starten – primaer wegen den Problemen die ich hatte. Vielleicht ist das nicht mehr notwendig, wenn das Script stabil laueft. Der Link ist: https://unix.stackexchange.com/questions/473546/automatically-restarting-a-process-when-it-dies

            lg
            Martin

  • Falls es jemand interessiert, hier die aktualisierte Version, die seit Tagen fehlerfrei laeuft (sorry, aber keine Ahnung wie ich die Einrueckungen im Code in diesem Forum behalten kann):

    def recv(serIn):
    readBuffer = b”
    while True:
    try:
    start = serIn.read_until(b’\x68\x01\x01\x68′)
    #we don’t use start, to ignore a possibly shiftet offset
    readBuffer = b’\x68\x01\x01\x68′
    length = int(4)
    while length < 282:
    data = serIn.read()
    readBuffer += data
    length += 1
    #print(str(readBuffer.hex()))
    break
    except:
    pass
    print("serial read error")
    return readBuffer

    Den timeout in serial.Serial hab ich wieder entfernt, sleeps werden auch nicht durchgefuehrt.

  • Servus Michael
    sag kannst du mit dieser Fehlermeldung was anfangen – lief bis jetzt ohne Probleme

    pi@ZaehlerEVN:~ $ sudo python3 /home/pi/Desktop/EVNSmartmeterMQTT_V01.py
    Fehler: list index out of range
    Traceback (most recent call last):
    File “/home/pi/Desktop/EVNSmartmeterMQTT_V01.py”, line 101, in
    cipher = AES.new(encryption_key, AES.MODE_GCM, nonce=init_vector)
    File “/usr/lib/python3/dist-packages/Cryptodome/Cipher/AES.py”, line 232, in new
    return _create_cipher(sys.modules[__name__], key, mode, *args, **kwargs)
    File “/usr/lib/python3/dist-packages/Cryptodome/Cipher/__init__.py”, line 79, in _create_cipher
    return modes[mode](factory, **kwargs)
    File “/usr/lib/python3/dist-packages/Cryptodome/Cipher/_mode_gcm.py”, line 620, in _create_gcm_cipher
    return GcmMode(factory, key, nonce, mac_len, kwargs, ghash_c)
    File “/usr/lib/python3/dist-packages/Cryptodome/Cipher/_mode_gcm.py”, line 188, in __init__
    raise ValueError(“Nonce cannot be empty”)
    ValueError: Nonce cannot be empty
    pi@ZaehlerEVN:~ $

    Danke
    Gruß
    helmut

    • Hallo,
      Ja ich kenne die Fehlermeldung und habe auch eine Vermutung von wo die kommt. Es sind leider Unterschiedliche Version von der SmartMeter Software von der EVN verbaut worden und eine dürfte Probleme machen.
      Wenn du das Programm neu startest müsste es wider laufen oder ?

      LG Michael

  • Servus
    ja das stimmt. nach einem Neustart funktioniert es wieder.
    In letzter zeit sind auch die Werte komisch! ich kann hier leider kein Bild anhängen aber:
    Verbrauch 2374 W, Produktion 667 W ergibt eine Verrechnung von 1707 laut Zähler
    ich habe zwei kleine PV Anlagen und die Produzieren 918 W und 907 W zur selben Zeit gemessen???

    Schon komisch oder?
    LG Helmut

    • Hallo,
      ich versteh die Frage nicht ganz weil ein Bezug und Produktion im selben Augenblick da ist, oder wie ?
      wenn sie mir eine Mail mit ihrer Telefonnummer senden dann kann ich Sie anrufen.
      LG Michael

  • Servus
    na ich meine Momentanleistung P – Momentanleistung N sollte ja die Momentanleistung ergeben (was tatsächlich verrechnet wird = zu bezahlen ist oder?)
    Und hier hatte ich Differenzen festgestellt mMn Produziere ich mehr (918+907 W) statt der Angezeigten 667 W

    Aber ich habe gestern festgestellt das am WEB Portal Wartungsarbeiten stattfinden vielleicht funktioniert ja am Montag wieder?

    Gruß
    Helmut

    • Das tool Zeigt nur die tatsächliche Eingespeisete Leistung an. Wenn du auf L1 mit beiden Wechselrichter mit 1000 Watt einspeist aber zum Beispiel auch auf L1 500 Watt verbrauchts dann zeigt der Samrt Meter nur noch 500 Watt an.

  • @Martin Seibert
    Da meine Installation sich mehrmals am Tag aufhängt, würdest du so nett sein und deine komplette .py posten oder zu senden?

    Danke Gruß
    Helmut

  • Danke für die Bereitstellung.
    Für den Hoster bin ich zu dooooof. Nur nackte Mädels und Meldungen das mein System unbedingt gereinigt werden muss!!!!!
    Hab mir eine e-mail eingerichtet. Die Datei ist ja winzig
    Würdest du bitte so nett sein und sie mir per e-mail schicken. Danke
    EVNZaehler@gmx.at

    Danke nice Eve
    Helmut

  • Hallo Martin,
    Danke für deine Bereitstellung. Ich habe meine Zählernummer eingetragen und statt localhost die IP von meinem MQTT Server (1:1 wie im vorhandenen System
    Beim Aufruf der .py Datei bekomme ich aber in der Konsole serial read error???

    Gruß
    Helmut

    • @Helmut: Ich nehme mal an, du hast das ganze Script mit deinem alten verglichen? Also auch Sachen wie comport = “/dev/ttyUSB0”? Offenbar funktioniert das Einlesen von der Schnittstelle nicht.

      Ich muss aber auch sagen, ich bin kein Python Programmierer. 🙂

      lg
      Martin

    • @Helmut:

      Hab dir noch ein Script per Mail geschickt, zum checken der seriellen Schnittstelle oder konkreter, zum Ausgeben der eingelesenen Daten.

      lg
      Martin

  • Hall,o
    Wenn ich sudo python3 /home/pi/Desktop/EvnSmartmeterMQTT.py aufrufe
    bekomme ich die Meldung

    Traceback (most recent call last):
    File “/evn/EvnSmartmeterMQTT.py”, line 3, in
    from cryptography.hazmat.primitives.ciphers.aead import AESGCM
    ModuleNotFoundError: No module named ‘cryptography’

    was habe ich falsch gemacht.

    danke für deine Unterstützung
    Martin

  • Hallo Mike,

    ja auch schon mit pip3. Ich muss aber dazu sagen dass ich am Raspi ein Image von “solaranzeige” drauf habe. Ziel wäre meine Wlan-Wetterstation (funktioniert schon) EVN Smartmeter und PV-Anlage gemeinsam übersichtlich in Grafana darzustellen.

    LG

      • Konntet ihr das Problem lösen?
        ich habe gerade selbiges Problem (No module named ‘cryptography’).

        habe sowohl
        apt install python3-pycryptodome
        als auch pip3 install pycryptodome
        gemacht.
        danke!
        lg Andi

          • Hallo

            mit sudo pip3 install cryptography startet das Programm.
            leider wechseln sich danach die fehlermeldungen leider ab:
            /home/pi/SmartMeterEVN# python3 /home/pi/SmartMeterEVN/EvnSmartmeterMQTT.py
            Fehler beim Synchronisieren. Programm bitte ein weiteres mal Starten.

            Fehler: Couldn’t find a tree builder with the features you requested: lxml. Do you need to install a parser library?

            und wenig später nach neuerlichem versuch:
            Fehler beim Synchronisieren. Programm bitte ein weiteres mal Starten.

            Fehler: Invalid DLMS version number.

            :/

            root@raspberrypi:/home/pi/SmartMeterEVN# pip3 show gurux-dlms
            Name: gurux-dlms
            Version: 1.0.115
            Summary: Gurux DLMS library for Python.
            Home-page: https://github.com/gurux/gurux.dlms.python
            Author: Gurux Ltd
            Author-email: gurux@gurux.fi
            License: GPLv2
            Location: /usr/local/lib/python3.9/dist-packages
            Requires:
            Required-by:

            root@raspberrypi:/home/pi/SmartMeterEVN# pip3 show lxml
            Name: lxml
            Version: 4.7.1
            Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
            Home-page: https://lxml.de/
            Author: lxml dev team
            Author-email: lxml-dev@lxml.de
            License: BSD
            Location: /usr/local/lib/python3.9/dist-packages
            Requires:
            Required-by:

            lg Andi

          • Versuche einen anderen parser ‘html.parser’

            wenn noch fragen sind einfach mit einer Mail an mich wenden wo deine Telefonnummer drinnen steht dann melde ich mich so geht schneller.

            soup = BeautifulSoup(xml, ‘html.parser’)

  • Hallo Michael
    ich habe nun seit fast 48 Stunden das adaptierte Script von Martin Seibert laufen.
    Kann bestätigen – keine Ausfälle und Hänger

    LG
    Helmut

  • der Tausch auf den html.parser hat bei mir funktioniert vielen dank!
    (leider kann ich auf deine nachricht von heute 20:13 nicht antworten)

      • Hallo,
        Ja, ich hab alles mögliche geändert.
        Den Fix eingetragen für “soup = BeautifulSoup(xml, ‘html.parser’)”
        Den Schlüssel ausgelagert in ein config file, das im gitignore liegt.
        Den Zweig von Siegfried übernommen (File Schreiben, Tasmota ansteueren).
        Einen Zweig erweitert um die Werte an Thingspeak zu schicken…
        lg
        Georg

    • Hallo,

      ich werde es selber noch Testen aber wenn es gut läuft dann werde ich mein Skript um die Funktionen erweitern.
      Kann ich mich dann bei dir mal melden die nächsten Tage falls ich noch Fragen habe?

      LG Michael

      • Hi Michael,

        die Aenderungen habe ich gemacht. Da wirst du nichts wirklich erweitern koennen, weil ich die Einleseroutine logisch anders angegangen bin. Zwar nicht so, wie ich es eigentlich wollte, aber die ‘richtige’ Art hab ich nicht hinbekommen. Die aktuelle Version ist ein Kompromiss, aber er funktioniert (neben mir auch bei Helmut). Wenn wird es wohl am Besten sein, das auch als weiteres Script anzubieten. Dann kann jeder das nehmen, das am stabilsten laeuft (deine Version bekam ich z.B. nie stabil zum Laufen, daher die Aenderungen). Nur mal so als Anregung.

        lg
        Martin

  • Hallo Jungs
    hab mich zu früh gefreut!
    hatte einen kurzen Stromausfall und musste den RPi im Zählerkasten neu starten und seit dem
    nur mehr die Meldung “serial read error”
    Es ist wie verhext

    Gruß
    Helmut

  • Hat jemand von Euch zwei Sagem-Zähler mit M-Bus (mit einem Raspberry Zero) laufen?
    Brauche ich dafür zwei M-Bus Slave-Module oder kann man die beide über ein Modul laufen lassen? M-Bus hat ja eigentlich auch Adressen.

    Bislang zeichne ich “nur” ein Smart-Meter auf – und das mit IR-Schnittstelle (Iskra AM550) und zeichne ganz simpel als täglich csv-Datei auf (mit php und/oder bash-shell-script), was ich mit einer html-Seite darstelle.

  • Wollte nur fragen, ob es für Nicht-Techniker eine “Plug and Play” Lösung gibt? Habe den SM v. EVN and würde auch gerne Daten in Echtzeit nutzen…

  • Kurzes update:
    Läuft jetzt seit 15.8. stabil.
    Ich darf nur nicht einen der beiden RPi’s Neustarten. Dann dauert es wieder eine Zeit
    bis das Script die Daten aus dem SmartMeter bekommt.
    Wie heisst es so schön: never change a running system

    Gruß
    Helmut

  • Hi

    Ich habe auch ein SAGEMCOM D210-D-r vom E-Werk Gösting in der Steiermark bekommen und auch beide Schlüssel zugeschickt bekommen.
    Ich stehe vor dem Problem, dass ich die Daten zwar auslesen kann, aber ich bekomme sie nicht entschlüsselt. Könntest du eventuell
    versuchen mit deinem Code die Daten zu entschlüsseln. Für mich sehen die Daten plausibel aus, also fixer Startstring, framecounter länge etc.
    Hier ein Beispiel von einem Datenpaket: Schlüssel würde ich dann noch zusenden:
    ——— Rawdata length=475 ———-
    DB0853414735000382428201F2300000026BE9E7F19906C18A3F0AE0E12293AB
    8BFED9D1433F508220AB0FA3056EDA8DF59F3D2C15A8892A55325E1B381EF43F
    C08B919E9788E73F6E4B06386F5B0E6CED9B2574DEF04950120F8937661D20CD
    95108508E9D307BD65F3342AAA849C8D7ADDE28FC88A7C6BEB923A12D75D2091
    35D00198D0CCB41FA2146C82337EE77A1C0113B939E54AF427D26BE217D21A4F
    83E001D864C67E0943158F712828986925B0207572D147A92C1C68A3FBA63E1D
    CBD69EDB9A64B2799C3D17E4CC736C3CA389A48C9271A651C8FA25F7672F48C7
    EA9AE06771AFFFDB1C8B83DA6F9B0193A3D4F982697B4D25213464C620F54D21
    7567AF5A6DEF78495E5A86F366C1D64272D26DA19C68353BF72321AC7B1BCD51
    90548E3E1DC706DEBCFBAE121FDFBD2C57AF8B41822677CA6EE68508C7F29F13
    DF8DAE5AB594C7A96A46F9DCDC0AD4E93D147446504C33D0281AFBEC72AF2C2E
    1BFBC90E61693477783BFC2FD8EA6ABE4565401D2CCF63335640AB72930E921C
    DBE5446204271F950A4548CFC31878FABAEF4CAE7A4D38D7CA5899E71E83E27C
    FB6C3DB7BCA021CAB1F47637E554A8214FC821639AD3DA44039D41FDA46FC1F0
    AFABE52D8177A7248BCD582B861285CA4DEDCCB92A601D5C6E0C78

    ——- Start decoding: IV=53414735000382420000026B, length=498 ———-

    danke schon mal
    mfg
    Erich Jarz

  • Hier hätte ich noch einige Beispiele, wie schon geschrieben, bekomme die Daten nicht entschlüsselt.

    DB0853414735000382428201F23000070D1F2260B302D6262D808081910E90FA1E9D5DED323DF96F83E9DA61FB84AB6F190462AE9A0D28223E9DB9E405924FA117CFC24A3F511925B0B8EE8748E6E25950FC2AF6C1F9EB29190B4D5FDC8F47F33C80EC335F4681ABDC92BF6B6498B00E7EE6D23A2875ACB65782F11752A932003577714F0806A50B8D7FB8367D65691BA74CC8980DD94614EFA567DE2EF0F22B5EEA9373FC4AE2C2DD62A4A98627C795A1E39346ED07CD2F5AD343AE59D250E9E5652FC557CEE7F345BCF16B810D47742454D34C5D3466D12A368FA7E7771E76D88F3DD7C04B3330DEECB1DE88404FCE73B876EC1139070055406EA37FF1BF9F4DF8F80566EE87CA0E9A43905F2A727C3305D6974FAEC94FBC589F3DA40821C81A27CE5AAC93AF02BF4DF4885B4981294466EC517EB1119D274AF90D175953C27F96D12E2A3A69D321990F71C2D2AA68D24B1687AF81ABB45AAFD9E16635A35E8BCD29AC833AA6225908978BB4F0B2AA502BADDF65A5F16C151DE74D0BB03A32F5BADB0D464D6CD3FBAA1C4C2C7B30F7C1CB705732873BC08C583C29CF62967A04184E18F29507BD124DE9ED4F18EAA0C599D8CB564F184C1944E0DABE1D534EC703CF287502A1E941B12D77D079F6FEB798FE7C53309E355D030CBDF6DD6118EFDB2E8F838F0DDE172B582182C85471E7D93E9613C048F7F6F3DEF844492100

    DB0853414735000382428201F23000070D203D0AD1692F2BB36F9436219B95A54AAAFE43F877128E4A4495AC81F71ECB9D3A9D75C619AF2C003B0477806ECBB52CCD918CF9E1647999E32E308C42FCB4E48A020515A96AF2DF91B4C1BFEA0A956CE57A9F49E1EFEDF0145B6A295BBB4A3DC673974D5E24506838040940A576041C51F77B26670FD9887D0D3675ABA58568D5A13B6018A2A39BCEB2E4C2FD66EC02303E471207D5F3C099A141F18613C149BC7DCCF5EA415CEAEF0BF5C29A5C4A4CB97102899EAE7ECD5DD57A30A0839005AD715FF3AA0DD1AF4F2C88DFCC7AA803103CFE2A81431EC34146CFE8B33012DEDCDF37717FEAF032EF48E589D55D4E2568AFA9641952639F95CDF3556061CA43DB2B7317B0862B6572756541A43BE0E8A64B363749CD0500E0A583E5B9057339197295257E86C709CBF628449C101B344C6066A22B6A4A64D21EA839ED7D17F4CF0ED4FE16917549F0D9A799185748A18C0812CC7BB5F4B374FEA9CCBBFFF3E68549FF917F5DDF56293888BFE9EA2E69F3C3F3FF5CD4B73C925DBC4E75ECE8B4B35D752B5BDA3BB0CE731AE05B80B711051BC42E34A2C58453E0B7FBE37BDBC6B0B7D5F959D46AEF2D75075499F7624E58B28EBF96F2578D8162DF2708F573C1BA60887B6AC069634BAC748B31DD52771A4303ADEA533D1B6B14B6B419F4C5103B6C5D0B102EBA130AFF69F18DBF00

    DB0853414735000382428201F23000070D2138A25989BA749662950778903B51A79FEABE6D9F529F7EFA412F098C2973B79BFD13A5AA9DF4625D3DD4F7534708A3B54ECFBDA925D074F753246C5F683A05923294516FC81B8BD12B81C74D3FDA5A3323608AA8E70ED670BD56D55F83BFA6FE373D32EE5538C6B2F4DD1ABAF932552D8E5FE41D2BD05551626B7F297CCFDF8BFADAF3B3CC2672CB058B782E2E9A94F215225570E0CAC93F73035647EF8542F4EEF8852FDD6A20D91414677C941E7EF63E0E63DBA905703BD60B6FB89A3B07C238758DF92C854AC316C5A14239A163C805138CFC39830FF11F8787A7D027B324121FAA31F593E3ECD2173100CCA7F33B8D774D0D6176CB1B66E594351ABDB13FA69C148B7B4080FA5FAE38A8345F99044DCE9482106F06020237B5731921DB38F356F6DB729386C0E7715E3AEC43A713580E7580D19BFFA47BE8C49C4698F91BCE35015B6838F961D9A360D5389420E8AE6F0E95840FE0578E6608379E1ED37448459AF8258AD5009C274E64825CEC1A029C88D2F7EECA2067FBAF88FCE7E057BE8B23EC8B7F5E050B1B58F4BA6714CBBDD0A6CFFAB192445575183986F0C4A4EE5CDC726DE27F97E240B6983CF9B836E9DA6BCE5AD29D431AF629D88D5A182990B9B594E9199B257A33EA4D94FFF9E4EB89682A320562F66D299EA4D65903CB99FD4EFE817FC303D5417DC95500

    DB0853414735000382428201F23000070D22BF609D5C74FA6AB1EFA156DE8D74DED38CFD2FB6E6B2DE4FA2E0A519B02A0839FFF870867D10CD2A834752E54D1381FF33E20E71DA352D82EE9905C7C0CA86B7B48E8FBAFC73A6516491BD888BE2B7FE3573238CBE10587573C536FDC9A73F2132E628DD60AD7EBCDE75DCAEA1B3166EA4D430DF6C234249DBEF6E25B5F4F916E82F68824E9036EDA5C1904316768A4F7D7DA305F75602FB5F7BB78504B4A8A607A246C34E61D3AAAE960C2B30510D107AC0B290118508CA3FF12397F60D14837EBD2648D0F7F14E7344CDB0D25EC0BD8F4BC96DB67EB7362328230A9C6620A65894CDA25FFB75F1C4ACF36C8BF2BE7B58C0D4604622534C31E6CD4CFC5619321F0B305D0B72FD113A6709D2A798C31D476ECFD1EB38ABBD60DDD44ED958315649C1C666BA8F922408BCBE228F3339F020FD15A95E10EF6CD3A680FCB28C5B141DDD6DBA3F0A99F7C5A5C36A928F09E975783CC4DB3B87E8459EA031B119E22613D705A37DD5CA0375E734ADC0021A99268787ED08432ABCF379B7407A41881512C7AB0DFE2A5A1A437A4FB749B7AACBFA1CFD4B0781EBB3EF388255CA184EE00A91F75307EF24FEE43915F6F26634D508581E83A982C01E92196AD56F8A91F26B84E150F0A98F72A6A9D67427F8946D30D604A5C110DF2C1CD9DB6EABAD8567BC982DA4F4ACBE94BA916E908000

    vielen Dank schon mal
    mfg
    Erich Jarz

  • Hallo Michael,

    Ich möchte mich für deine Arbeit bedanken. Ich hatte noch nie mit Python, Raspberry Pi, MQTT, NodeRed, InfluxDB gearbeitet, und trotzdem habe ich es geschafft jetzt eine wunderschöne und praktische Aufzeichnung und Datenanalyse meines Bezugs und Einspeisung zu haben. Es war nicht leicht, die Anleitung ist nicht vollständig da man einiges voraussetzen kann (und muss), aber mit ein wenig Suche und Studium, schafft man das in ein paar Tage.
    Toll gemacht.

    An alle die überlegen es zu wagen, ihr schafft das sicher.

Schreibe einen Kommentar zu Fritz Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.