Sagemcom T210-D Monitoring Smart Meter (EVN)

Update am 02.05.2023

Die EVN hat ein Update ausgerollt (Start war der 02.05.2023)Die Firmware Version kann man am Display des Smart Meters ablesen. Die Version V0450 ist die ist die Neue.

Ich habe eine neue Version auf Github veröffentlicht. Anleitung gibt es derzeit nur als Video.

Smart Meter Auslesen Österreich (Beta)

Bitte der Video Anleitung folgen die Text Anleitung ist nicht aktuell!!!!

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-get install libxslt-dev      # 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/MichaelReitbauer

Die Lieferzeit der MBus Adapter ist leider relativ lange mit 3 Wochen. Daher habe ich selber eine Platine entwickelt. Wenn Interesse besteht einfach per Mail melden habe noch einige über. Versand Dauer in Österreich ca. 1-3 Werktage. support@michaelreitbauer.at

Eigener M-Bus Adapter
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/47MbgaChttps://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

293 comments

  • Hallo,
    ich hab mal alles so nach der video anleitung gemacht. bekomme auch die werte auf die Konsole.
    Aber beim schreiben in die influx db habe ich in der datenbank SmartMeter die measurements Leistungsfaktor, Momentanleistung, Spannung, Strom und Wirkenergie und nicht wie bei dir SmartMeter.
    Was dann auch im Grafana Dashboard nicht funktioniert.
    Mache ich da was falsch oder woran kann das liegen?
    Danke vorab.
    lg Martin

  • Auf einem Raspberry hab ich das mit Grafana zum laufen bekommen, hat sich aber gestern aufgehängt. Schreibt nur mehr „no Data“
    Ich hab jetzt mal zum Ausprobieren Home Assistant auf dem Raspberry installiert um auch andere Sachen auszuprobieren. Kann man das Skript irgendwie integrieren? ich glaub das wär dann eine ganz coole Lösung.

    • Hallo,

      ich habe einen zweiten Raspberry Pi W Zero zum auslesen der Daten und sende die Mittels MQTT an den Home Assistant. Das ist für mich die beste Lösung.

      LG Michael

  • Hallo!

    Danke für das Projekt! Bin absoluter Anfänger was diese Materie angeht, abner ich halte das für machbar.
    Eine Frage drängt sich mir jedoch auf:
    Ich habe in meinem Haus 2 Smartmeter verbaut. Ist es möglich, beide über einen Raspberry Pi auszulesen – also 2 MBus Adapter an einem Pi?
    Alternativ würden sonst 2 Geräte parallell laufen.

    lg
    Johannes

  • Hallo Michael,
    funktioniert deine neue Version auch mit der Smartmeter Firmware V0150? Das EVN-Gerät meines Freundes wurde nämlich offenbar noch nicht upgedatet.

  • wird zwar hier nicht verwendet
    aber würd die P1 Schnittstelle beim T210-D von EVN genug Strom liefern um zb Esp32 direkt zu versorgen?
    finde leider nur Beschreibung zur Datenschnittstelle

    danke

    • Nein – das ist ein reines Datensignal ~36V für high, 24V für low – und reicht gerade um die LEDs in einem Optokoppler zu versorgen.

      • Doch, das geht, ist aber nicht ganz einfach, ich bastel grade dran. Keine ahnung was die EVN einbaut aber die Wandler für die schnittstelle kann man fast mit 2W belasten. da die Schnittstelle ja eh meiste zeit inaktiv ist kann man damit einen Elko laden und dann damit einen stepdown versorgen. strombegrenzung braucht ma noch sicherheitshalber für den ladeelko. das kaifa hat einen Rin von ca 55 ohm und spuckt ca 28V im leerlauf aus, das sagecom hat sogar nur ca 12 ohm und spuckt im leerlauf ca 36V aus. bei einer last von ca 1,7W bricht die spannung am sagecom komplett ein und pulsiert. es ist also theoretisch möglich 😉

    • ist tricky aber geht, zumindest beim sagecom . mit dem datensignal einen dicken elko langsam laden; bei mir 2200uF und dann auf den 5V stepdown läuft schon ein paar wochen

  • Hallo, hat die EVN etwas an den Daten geändert oder funktioniert mein Setting nicht mehr? Mein Aufbau hat über mehrere Monate super funktioniert doch seit 2 Tagen erhalte ich keine Daten mehr. Wenn ich das AusleseScript starte kommt keine Meldung (trotz printValue”: true). Weder “Daten ok” noch “wrong M-Bus Start, restarting”. Woran kann das liegen?

    lg
    Wolfgang

    • Hallo, ich konnte mein Problem lösen. Hatte zu Schluss immer einen Speicherzugrifffehler. Bedeutete das das Script nicht mehr gestartet werden konnte. Nachdem ich keine Linux-Kenntnisse habe hab ich die Speicherkarte formatiert und alles neu aufgesetzt. Jetzt läuft wieder problemlos.
      Lg
      Wolfgang

  • Hallo, hat wer das gleiche Problem? wenn ich die install.sh ausführe bekomme ich bei python3 immer folgende Meldung:
    error: externally-managed-environment

    × This environment is externally managed
    ╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.11/README.venv for more information.

    note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing –break-system-packages.
    hint: See PEP 668 for the detailed specification.

      • Ich habe genau das selbe Problem leider bringt der Befehl den selben Fehler.

        sudo pip3 install gurux-dlms –break-system-packages
        error: externally-managed-environment

        × This environment is externally managed
        ╰─> To install Python packages system-wide, try apt install
        python3-xyz, where xyz is the package you are trying to
        install.

        If you wish to install a non-Debian-packaged Python package,
        create a virtual environment using python3 -m venv path/to/venv.
        Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
        sure you have python3-full installed.

        For more information visit http://rptl.io/venv

        note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing –break-system-packages.
        hint: See PEP 668 for the detailed specification.

  • Hallo Michael,

    gegen Ende der Installation bekomme ich mehrmals die Meldung

    Error: externally-managed-environment
    This environment is externally managed. To install Python packages system-wide, try apt install python3-xyz, where xyzzy is the package you are trying to install.

    Beim Aufrufen deines Ausleseskripts die Fehlermeldung “ModuleNotFoundError – No module found “serial””.

    Hast du eine Idee, welchen Fehler ich mache??

    Danke

  • Hallo an alle,

    meine Konfiguration funktioniert seit einem Jahr, auch nach Update im Mai. Aber leider hängt sich der Script nach 8 bis 16 Stunden auf und ich muss in neu starten. Fehler ist:
    Es ist ein Fehler aufgetreten.
    Fehler: {“error”:”timeout”}
    Der Pi hengt am SmartMeter, den Script starte ich in einer Screen Instanz die ich nach dem Start abkopple. Zum neu starten des scripts geh ich in die Screen Instanz und starten den script neu. Das muss ich mindestens einmal am Tag machen.
    Bin dankbar für jede Hilfe.
    lg

      • Hallo,

        ihr könnt mal einen Service anlegen und das hier probieren

        Komandozeile:
        sudo nano /etc/systemd/systemd/smartmeter.service

        dann alles von [Unit] bis WantedBy=multi-user.target in das File kopieren und speichern. Das Verzeichniss muss auf deines angepasst werden WorkingDirectory je nach dem wo das Skript liegt.

        [Unit]
        Description=SmartMeterData Script
        After=multi-user.target

        [Service]
        Type=simple
        User=root
        WorkingDirectory=/home/pi/SmartMeterEVNSagemcom-T210-D/
        ExecStart=/usr/bin/python3 AusleseSkript.py
        Restart=always
        RuntimeMaxSec=1h

        [Install]
        WantedBy=multi-user.target

        Komandozeile
        sudo systemctl daemon-reload
        sudo systemctl enable smartmeter.service //Autostart wird aktiviert
        sudo systemctl start smartmeter.service // Startet den Service einmalig

        sudo systemctl stauts smartmeter.service // Hier kann der Status überprüft werden ob der Status läuft oder es Fehler gibt

  • Hallo,

    Ich würde das auch gerne Auslesen, traue mich aber hier nicht das zu bauen geschweige zu programmieren. Hat jemand die Möglichkeit gegen Bezahlung mir so etwas zu bauen? Raum Mistelbach. Danke

  • Hallo,

    laut Netz NÖ soll die Kundenschnittstelle aktiviert sein. Ich messe jedoch sowohl mit dem Mulitmeter als auch mit dem Oszilloskop keine Spannung. Kennt jemand das Problem?

    LG Josef Schreiber

  • Hallo Michael,

    ein super Projekt hast du auf die Beine gestellt. Großes Lob.
    Ich habe mich damals bei meinem Zähler für die OPT-OUT (Sagemcom T210-D, EVN) Variante entschieden. weißt du vielleicht ob dein Projekt auch bei der OPT-Out Variante funktioniert?
    Bei meinem Zähler ist das Pfeil am Display unter P1 Ausgang, so wie bei deinen Bildern, nicht sichtbar. muss man den P1 Ausgang extra freischalten lassen? Bezüglich Freischaltecode habe ich schon angesucht.

    vielen Dank im Voraus
    goli

    • Hallo,

      Grundsätzlich ist die Kundenschnittstelle trotzdem aktiv. Die OPT-OUT Variante besagt nur wie oft die Daten dem Netzbetreiber übermittelt werden.
      Bei welchem Netzanbieter bist du ? In der Steiermark wird ein P1 Zähler Verbaut und kein Mbus.

      LG Michael

      • vielen Dank für die Rückmeldung. Mein Netzbetrieber ist EVN.
        Wieviel Spannung [Volt] sollte man bei den M-Bus Pins (die zwei mittleren) messen können? ich habe irgendwo 24V gelesen und dann alle 5 Sekunden steigt die Spannung noch an. ich messe nur im mV Bereich eine Spannung. und weil am Display beim P1 kein Pfeil ist, dachte ich, dass vielleicht eine extra Freischaltung notwendig ist.

        BG
        goli

  • Super! Funktioniert nach kleineren Tweaks in der config.json. Genial! 😀

    Vielleicht hilft das wem: Bei mir gab es einen Error, weil ich den MQTT Port als String eingegeben hatte. Sollte aber ein Integer sein
    Beispiel config.json für auf Raspberry PI 2 laufender Mosquitto Broker und USB to MBUS stick.

    {
    “port”: “/dev/ttyUSB0”,
    “baudrate”: 2400,
    “key”: “XXXXXXXXXXXXXXXXXXXXXXX”,
    “printValue”: true,
    “useMQTT”: true,
    “mqttbrokerip”: “127.0.0.1”,
    “mqttbrokerport”: 1883,
    “mqttbrokeruser”: “”,
    “mqttbrokerpasswort”: “”,
    “useInfluxdb”: false,
    “influxdbip”: “”,
    “influxdbport”:””
    }

    Danke an den Entwickler!

  • Hallo Michael,

    Ich bekomme leider folgenede Fehlermeldung in der Konsole:

    pi@raspi:~/Desktop/SmartMeterEVNSagemcom-T210-D-EvnSmartmeterV2.1 $ sudo python3 AusleseSkript.py
    Traceback (most recent call last):
    File “/home/pi/Desktop/SmartMeterEVNSagemcom-T210-D-EvnSmartmeterV2.1/AusleseSkript.py”, line 30, in
    config = json.load(open(configFile))
    File “/usr/lib/python3.9/json/__init__.py”, line 293, in load
    return loads(fp.read(),
    File “/usr/lib/python3.9/json/__init__.py”, line 346, in loads
    return _default_decoder.decode(s)
    File “/usr/lib/python3.9/json/decoder.py”, line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File “/usr/lib/python3.9/json/decoder.py”, line 355, in raw_decode
    raise JSONDecodeError(“Expecting value”, s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 3 column 17 (char 46)

    Was kann ich da tun?
    Danke!
    LG
    Kevin

    • Hallo,
      da ist ein Fehler in der Config.json
      nochmal die einrichtung.sh starten oder per Hand ausfüllen.
      es müssen auch die Default angaben eingegeben werden wie der Port (/dev/ttyUSB0) und die Baudrate von 2400

  • Hallo, super Projekt. Vielen Dank für die Umsetzung.
    Ich habe folgendes spannendes Problem: wenn ich das AusleseSkript starte bekomm ich alle 10 Sekunden in der Konsole “Daten OK”, es werden aber keine Daten angezeigt. Die Verbindung scheint ja zu funktionieren
    Wo könnte das Problem liegen?

    • Hallo Wolfgang

      verwendest du die aktuelle Version? Schaut fuer mich so aus als wäre “printValue”: in der config.json auf “false” gesetzt. – Wenn du’s auf “true” änderst sollts klappen.

      • Hallo Leute,

        danke für die Anregungen. Ich hab gestern wieder ein wenig Zeit in mein Projekt investiert und habe bemerkt das mein Zähler noch die alte Firmware hat (wohne nahe Gänserndorf, Nö). Bedeutet das die V1 bei mir funktioniert.
        Ich hätte jetzt noch ne Frage an die Python Experten: das Auslesescript wird nach ca. einem Tag abgebrochen weil die Daten fürs Script anscheinen unsynchron werden. Gibts ne Möglichkeit das Script dahingehend zu ändern das es nicht abbricht bzw sich selbst wieder startet?

        Danke!
        lg
        Wolfgang

        • Ich bin auch Gänserndorf & Co und bei mir wurde heute morgen um 7h35 ca der Update raufgespielt und alles war im A.

          Zum Dauerbetrieb:
          ich habe mir selber einen “watchdog” geschrieben – primitiv aber effezient.

          In der Crontab wird jede minute ein Programm augerufen
          * * * * * /home/pi/running/ps_check.pl

          (steht für process-stats_check) das überwacht nicht nur das laufende Smartmeterprogramm, sondern auch anderes in meiner “smarthome Umgebung” das immer laufen soll.

          Das ps_check.pl (ich kann nur perl) schaut wie folgt aus:
          #!/usr/bin/perl -w
          # prüfen ob Prozess läuft, die [] verhindern, daß der Suchprozess selber gefunden wird!
          $realtime= `date +”%d.%m.%Y %H:%M:%S”`;
          chomp $realtime;

          # Prüfung ob Smartmeterausleseprogramm läuft
          $check_ps = `ps -ef | grep [Sm]artmeter.py`;
          # wird nichts gefunden, dann Neustart
          if ( $check_ps eq “”) {
          system “echo \”$realtime: Absturz Smartmeter.py\” >> /home/pi/logs/ps_check.log”;
          system “python3 /home/pi/running/Smartmeter.py”;
          }

          Die beiden “time” Zeilen sind optional und nur für den logfileeintrag – der ebenfalls optional ist.

          Der einzige wichtige Teil sind die Zeile mit dem “ps -ef” und die 4 Zeilen mit dem if (und die erste mit #!/usr/bin/perl -w).

          damit wird jede Minute geprüft, ob das Programm noch läuft oder abgestürzt ist. Gibts den Prozess (bei mir nennt sich das Smartmeter.py -ggf anpassen) nicht mehr, dann wird er eben neu gestartet….

          Damit habe ich monatelange stabile Zeiten hinter mir, wobei da Programm nur sehr selten abstürzt – 1x im Monat ist viel…
          (auf einem Pi- Zero ohne Rechenpower)

  • Hallo!

    Erstmal ein großes Danke an Mike für dieses Projekt – ich verfolge den Blog seit ich den Sagemcom-Smartmeter letztes Jahr installiert bekommen habe und lese die Daten mittels M-Bus/USB Adapter ein.
    Obwohl ich das aktualisierte Script benutze, kommen am Adapter seit dem Softwareupdate immer wieder Stundenlang keine Daten an (RX-LED bleibt dunkel). Ich wollte fragen, ob andere vielleicht das gleiche Problem haben?
    Beispielsweise stoppte der Datentransfer gestern (11.05.) um 16:30 um dann heute ab 09:40 wieder zu funktionieren.
    Ich versuche herauszufinden, ob das Problem an meinem Setup liegt, bzw. wenn andere das gleiche Problem haben, dann liegt es eher an einem Problem mit/nach dem Update.

    Danke!

  • Hallo, mich interessiert dein Projekt sehr, hab aber nur einen Raspberry Pi 3 daheim.
    Macht es Sinn das Projekt auch darauf zu probieren? Denn dann versuch ich einen MBus Adapter zu bekommen.

    Vielen Dank!

    • Ein Pi-3 reicht locker. Ich habe es auf einem Pi-Zero laufen, aber ohne MQTT und influx, dafür mit einem Webserver, der mir die vom Zähler ausgelesenen Daten (und andere aus dem Netz gesammelte) visualisiert und auch meine ganzen Shellys steuert.

      Wenn Du den Sagecom Zähler hast (und den Schlüssel von der EVN) dann kannst Du den von mir erdachten “1 Euro” Adapter nachbauen (Meine Schaltpläne hat Mike oben veröffentlicht) – oder evtl. hat er noch von der Kleinserie, die er hat fertigen lassen was übrig ….

  • Hallo Leute

    FischC hat das Projekt geforkt (https://github.com/FischC/SmartMeterEVNSagemcom-T210-D) und vor 2 Tagen
    ein neues Skript geschrieben,
    für mich hat es das Problem mit den “Invalid Start Bytes… waiting” behoben
    Da ich nicht Python programmieren kann, kann ich auch die Änderungen nicht nachvollziehen, aber bei mir
    hat hat Skript nach Eingabe meines EVN Schlüssel und den MQTT daten wieder funktioniert.

  • Hallo!

    Fur Info, wird wahrscheinlich andere auch betreffen: Gestern wurde von der Netz-NÖ neue Firmware auf meinem Sagemcom-T210-D eingespielt. Seitdem können die Skripte keine Synchronisation mehr herstellen:

    Antwort von smartmeter@netz-noe.at (immerhin haben die prompt geantwortet):

    “Gestern Nachmittag / Abend wurde eine neue Firmware auf die Sagemcom Drehstromzähler T210-D aufgespielt.

    Seitens des Herstellers, wurde ein Fehler in der Ausführung der Kundenschnittstelle bei Sagemcom Geräten bestätigt.
    Die Schnittstelle hat falsche Informationen zur Längenangabe des Datensatzes beinhaltet, weshalb es bei diversen Entwicklung, bei welcher diese Information verwendet wurde, zu Problemen kam.
    Alle restlichen Daten und die Funktion der Schnittstelle selbst sind nach Prüfungen korrekt implementiert und können genutzt werden.

    Sollten Sie in Ihrer Entwicklung die Längenabgabe der Kundenschnittstelle verwendet haben, so kann es sein, dass seitdem Update die Funktion nicht mehr gegeben ist.
    Bitte passen Sie entsprechend der Änderungen ihr Programm an, dann sollte wieder alles funktionieren. (NEU: 68FAFA68)

    Das Update hat keinen Einfluss auf die Funktion der Kundenschnittstelle oder dem Schlüssel, den Sie zur Entschlüsselung bekommen haben.”

  • @Robert Kranzl: 1zu1 das selbe bei mir. Seit gestern Nachmittag plötzlich “Invalid Start Bytes… waiting”.
    Benutze das aktuellste Script von Github.

    Kann es sein, dass die EVN ein Update gemacht hat am Zähler?

  • Habe seit Mai 2022 einen Sagemcom T210-D Smartmeter von der EVN.
    Habe einen RaspberryPi 3 und den MBUS-Adapter wie oben beschrieben.
    Das Auslesen der Smartmeter-Werte hat bis heute 02.05.2023 ca. 15:42 tadellos funkioniert.
    Seitdem immer der Fehler “Invalid Start Bytes… waiting”.
    Finde keinen Fehler meinerseits, keine Ahnung wieso es nicht mehr funtkioniert.

    • Bei mir zeigt sich genau das gleiche Bild. Seit heute 02.05.2023 um 15:43 Uhr bekomme ich keine Werte mehr.
      Ich habe die Checksumme vom Frame vorher nie überprüft. Aktuell stimmt sie jedenfalls nicht.

    • Habe auch seit diesem Zeitpunkt keine Werte mehr

      mein Jpurnal gibt folgendes aus

      Mai 02 23:59:11 raspberrypi python3[925]: Fehler beim Synchronisieren. Programm bitte ein weiteres mal Starten.
      Mai 02 23:59:11 raspberrypi python3[925]: Fehler: Invalid data type.

      • Same here – ich bekomme keine wirkliche Fehlermeldung, eher sowas wie Serial Read Error -> bei mir hat es auch am 02.05.2023 um 15:43 aufgehört zu funktionieren

      • Bei mir ist das tatsächlich ebenfalls der Fall. Wurde hier seitens der EVN irgendetwas verändert? Es kann ja nicht sein, dass alle ab diesem Zeitpunkt keine Daten mehr bekommen.

    • Hab dasselbe Problem. Habe heute an Netz NÖ eine Anfrage gestellt ob hier was an den Smartmetern geändert wurde und falls ja dazu technische Details angefragt. Mal schauen ob da was zurück kommt.

      • Die Antwort von Netz NÖ war sehr flott da:

        Gestern Nachmittag / Abend wurde eine neue Firmware auf die Sagemcom Drehstromzähler T210-D aufgespielt.
        Seitens des Herstellers, wurde ein Fehler in der Ausführung der Kundenschnittstelle bei Sagemcom Geräten bestätigt.
        Die Schnittstelle hat falsche Informationen zur Längenangabe des Datensatzes beinhaltet, weshalb es bei diversen Entwicklung, bei welcher diese Information verwendet wurde, zu Problemen kam.
        Alle restlichen Daten und die Funktion der Schnittstelle selbst sind nach Prüfungen korrekt implementiert und können genutzt werden.
        Sollten Sie in Ihrer Entwicklung die Längenabgabe der Kundenschnittstelle verwendet haben, so kann es sein, dass seitdem Update die Funktion nicht mehr gegeben ist.
        Bitte passen Sie entsprechend der Änderungen ihr Programm an, dann sollte wieder alles funktionieren. (NEU: 68FAFA68)
        Das Update hat keinen Einfluss auf die Funktion der Kundenschnittstelle oder dem Schlüssel, den Sie zur Entschlüsselung bekommen haben.

        Wer kann jetzt mitteilen wo und was im Skript geändert werden muss, dass das wieder funktioniert?

    • Hallo,

      Wenn man im Script in Zeile 90 “68010168” mit “68fafa68” ersetzt kommt zumindest nicht mehr der Fehler “Invalid Start Bytes… waiting”. Jedoch dürfte es ein weiteres Problem danach geben. In der Zeile 116 “xml = tr.pduToXml(apdu,)” funktioniert die scheinbar die Umwandlung nach der Entschlüsselung nicht mehr. Es kommt der Fehler “Invalid data type.”.

      Die gleiche Meldung kommt auch wenn man versucht den pdu-String mit einem Online-Tool umzuwandeln.
      (https://www.gurux.fi/gurux_dlms_translator/Gurux_dlms_translator.html)

      Mfg Stefan

  • Super spannendes Projekt!
    Da ich es gerne “so einfach wie möglich” halten will, hätte mich das shrdzm Modul interessiert, das ist aber anscheinend nicht lieferbar, leider auch keine Antwort vom Hersteller, wann und ob wieder möglich.
    Kennt jemand eine ähnlich komfortable lieferbare Lösung?
    Wenns nicht so einfach geht, dann hätte ich https://www.mikroe.com/m-bus-slave-click + ESP8266 im Kopf um damit die Daten an MQTT zu senden.
    Nicht ganz sicher bin ich, welcher Code der Passende ist, um die Daten korrekt zu entschlüsseln und an MQTT zu senden, vielleicht kann mich wer auf den richtigen Weg lenken?

    • Hast du da schon Fortschritte gemacht? Ich frage mich nämlich gerade das Gleiche, möchte keinen Pi dafür verwenden. Ich kann ESPHome als Firmware wärmstens empfehlen (vor allem, wenn du Home Assistant verwendest). Da kann man einfach per YAML den ESP konfigurieren (auch custom code möglich) und dann sogar über den Browser flashen.

  • Falls jemand Interesse an einem “lowest cost” MBus Adapter Marke Eigenbau hat:

    Ich habe einen mal gemacht vor längerem, aber mangels “Decodierungthematik” nie eine Software dazu (bis ich hier gesolpert bin DANKE!) und heute nach vielen Probleme endlich zum Laufen bekommen, was aber am RPi lag (das Installieren der Module auf meinem aktuellen “Zähler-RPI” mit Kamera vor dem Display und LED-Auswertung… seit 4 Jahren – klappte nicht war/ist noch Jessie). Ersatz-Pi frisch aufgesetzt und nach einigen Probleme der Sorte “illegal instruction” verursacht durch die Zeile:
    from cryptography.hazmat.primitives.ciphers.aead import AESGCM
    hats geklappt und somit weiß ich, daß das Interface funktioniert!

    Aufwand: 2 Widerstände, eine Zenerdiode, ein Optokoppler….. fertig!

    Betrieb über 3,3V vom Rpi (GPIO1) und direkt an RX (GPIO 10) – nichts anderes ist erlaubt (GPIO vertragen ja nur 3,3V Pegel)

      • Ja 🙂
        Ich hab mich mit Mike zusammenge plaudert und wir haben einen fertigen “Pegelwandler” konstruiert, der aktuell in China zur “Prototypen-Fertigung” ist – es könnte also auch mal zu einem Fertigmodul kommen, je nachdem, ob Nachfrage herrscht.

        Aber du kannst mir eine email schreiben – füge hinter meinem Namen die domain dazu, die die telekom für ihr Internet benutzte, bevor sie a1.net war 😉 – dann schick ich ihn dir zu!

  • Hallo.
    Ich habe heute von den feistritzwerken (energie steiermark) den selben zähler bekommen.
    Ich habe eine synology nas, wo auch python drauf läuft, im 24/7 einsatz. Meine idee wäre, hier vielleicht etwas zu basteln. Hat dies schon jemand ungesetzt? Bzw könnte mir hier jemand helfen? Danke vorab 🙂

  • Hallo!
    Erst einmal ein fettes Lob für das Projekt! 👍
    Ich habe das Ganze grundsätzlich bei mir auch am Laufen – nur: bei mir scheint sich die “Zählernummer” ständig zu ändern!?
    Hat noch jemand dieses Phänomen beobachten können? 🤔❔
    (Ich möchte die Zuordnung in der Datenbank nach Zählernummer haben, dann kann ich problemlos später auch meine anderen Unterzähler etc. einbinden. Die ersten 4 Ziffern stimmen auch, dann steht nur mehr Schrott drinnen …)
    Danke und lG

    • Also die Implementation von M-Bus seitens des Zählers ist echt *#$_%”!!
      Allein das 2. Byte ist falsch! (Sollte die Länge der Daten darstellen. Angeblich wegen Überlauf(?!?) falsch.) Egal – die Checksum konnte ich ebenfalls noch nicht korrekt überprüfen!
      Hattet ihr mehr Erfolg?
      Ich verstehe echt nicht, was so schwer ist, diese Rahmenbedingungen eines Protokolls richtig umzusetzen!?
      In meinem konkreten Fall (Zählernummer) kann ich also nicht einmal feststellen, ob das Problem ein Übertragungsfehler (Adapter z.B. mies) oder Sendefehler (Zähler schlecht programmiert/fehlerhaft) ist …

      • Hallo,

        ich habe von offizieller Seite (Netz Niederösterreich) folgendes mitgeteilt bekommen.

        Zitat vom 30. April 2022
        EVN:
        Wir hatten gestern einen Call mit dem Hersteller, bei welchem uns der Fehler bei Sagemcom Geräten bestätigt wurde. Ich habe vorhin die Information per Mail versandt.

        Ich:
        Um welchen Fehler handelt es sich da genau. Ich habe zwei gemeldet.

        EVN:
        Die Längeninformation des Datensatzes bei Sagemcomzählern.

        Der Hersteller arbeitet an einem Update.

        Zitat Ende
        Ich habe mal nachgefragt wie es mit dem Update aussieht und habe deinen Fehler auch gemeldet am besten meldest du dich noch bei mir unter support@michaelreitbauer.at.

        LG Michael

  • Hallo zusammen, ich konnte das Problem lösen, es lag nur an der Formatierung, in Python muss diese offensichtlich ganz genau eingehalten werden, jetzt sendet der Raspi die relevanten Zählerdaten direkt über UDP zu meinem Homeserver, wo ich die Zählerstände weiter verarbeite, ohne dass ich eine Datenbank oder sonst eine Webabfrage benötige, sehr cool – vielen Dank für dieses tolle Projekt…

  • Hier die Fehlermeldung

    line 152
    WERTE = f”Wirkenergie+:{WirkenergieP}\ Wirkenergie:{WirkenergieN}\ MomentanleistungP+:{MomentanleistungP}\ MomentanleistungP-:{MomentanleistungN}\ SpannungL1:{SpannungL1}\ SpannungL2:{SpannungL2}\ SpannungL3:{SpannungL3}\ StromL1:{StromL1}\ StromL2:{StromL2}\ StromL3:{StromL3}\ Leistungsfaktor:{Leistungsfaktor}\ Momentanleistung:{Momentanleistung}”
    IndentationError: unexpected unindent

  • Hallo zusammen!
    ich kann das EVN Script erfolgreich in der console ausführen, ich würde den output gerne mittels udp Pakete zu meinem Homeserver weiterleiten. Alternativ pipe ich den terminal output in eine Datei, leider wird die Datei “output.txt” erst geschrieben wenn ich das Script abbreche… daher würde mir die udp Version gefallen.

    ich habe das script mit folgendem Aufruf erweitert, leider bekomme ich einen Fehler, weiß jemand vielleicht wie das funktionieren könne?
    Wäre MEGA cool, bin über jede Hilfe sehr dankbar -> DANKE

    LG
    Markus

    UDP_IP = “xxx.xxx.xxx.xxx”
    UDP_PORT = xxxx
    #UPD senden
    WERTE = f”Wirkenergie+:{WirkenergieP}\ Wirkenergie:{WirkenergieN}\ MomentanleistungP+:{MomentanleistungP}\ MomentanleistungP-:{MomentanleistungN}\ SpannungL1:{SpannungL1}\ SpannungL2:{SpannungL2}\ SpannungL3:{SpannungL3}\ StromL1:{StromL1}\ StromL2:{StromL2}\ StromL3:{StromL3}\ Leistungsfaktor:{Leistungsfaktor}\ Momentanleistung:{Momentanleistung}”

    • Hallo Bernd,
      ich habe Anfang Jänner ein 2023 ein Sagemcom T210-D Smartmeter eingebaut bekommen (e-netze Steiermark).
      Im Kundenportal kann ich aber (stand heute) immer noch nichts konfigurieren (also auch keine Schlüssel für die Kundenschnittstelle vorhanden).
      Ich habe die Schnittstelle heute gemessen (Pin1-Pin6 sollten +5V und GND sein). Da liegt aber anscheinen nix an.
      Kannst Du dein Smart Meter schon im Kundenportal konfigurieren und kannst Du Deine Schlüssel dort sehen ?
      Wenn ja, wie lange hat es bei Dir gedauert, bis die “Einmessphase” abgeschlossen war ?
      LG,
      Martin.

  • Hallo!

    Ich habe eine Email mit den gewünschten Infos an Netz NÖ geschickt, um den Sagecom “freischalten” zu können. Zurückbekommen habe ich eine Email die in der Subject -Zeile einen 13(!) stellige Hex-String beinhaltete, sonst nichts. Kein Attachment, kein PDF, nix.
    Wie kann denn das sein? Ist sowas jemanden von euch auch passiert?

    Beste Grüße
    Ernst

  • Hallo wollte mal fragen ob jemand schon Erfahrung mit dem USB zu MBUS Adapter mit FC722 Chip hat?
    Bekomme leider keine daten und wenn ich das Script beende folge Meldung:
    sysadmin@evn:~ $ sudo python3 /home/sysadmin/EvnSmartmeterMQTT.py
    ^CTraceback (most recent call last):
    File “/home/sysadmin/EvnSmartmeterMQTT.py”, line 53, in
    daten = ser.read(size=282).hex()
    File “/usr/local/lib/python3.9/dist-packages/serial/serialposix.py”, line 565, in read
    ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeo ut.time_left())
    KeyboardInterrupt

  • Hallo,

    erstmal vielen Dank für die Anleitung!

    Ich habe nur ein Problem .. ich habe auf meinem Raspberry für andere Anwendungen eine Festplatte sowie einen EnOcean USB Stick via USB Hub angeschlossen. Sobald ich diese entferne und “comport = “/dev/ttyUSB0” in der Conifg erfasse funktioniert alles wie es soll. Sind die anderen Geräte aber angeschlossen funktioniert es weder mit “comport = “/dev/ttyUSB0” noch mit “comport = “/dev/ttyUSB1”, bei anderen Zahlen 2/3/4 usw. kommt immer eine Fehlermeldung.
    (“FileNotFoundError: [Errno 2] No such file or directory: ‘/dev/ttyUSB1)

    Für jemanden der sich mit der Materie auskennt wahrscheinlich leicht zu lösen – ich komme ohne Hilfe aber leider nicht weiter, hat jemand einen Tipp für mich?

    Vielen Dank im Voraus.

    LG Robert

  • Hallo,

    ich arbeite auch an einem Projekt zum Auslesen des T210/Kaifa (ESP32, C++) in NÖ und habe von dieser und anderen Web-Ressourcen viel profitiert, daher hier zusammengefasst ein paar Infos, die mir geholfen haben.

    – Der M-Bus arbeitet mit einer Busspannung von ca. 30 – 40V. Die am Internet üblichen chinesischen M-Bus-Adapter basieren auf Maxim-Chips und können nur ca 13V. Das hier empfohlene Click-Board (habe ich inzwischen auch, konnte es aber noch nicht testen) verwendet den TSS721A (funktional kastriert, aber ausreichend), der speziell zum Auslesen der Smart Meter konzipiert wurde (erhältlich u.a. mit UID bei RS Components).

    – Wie hier schon erwähnt: *** gerade *** Parität an der seriellen Schnittstelle

    – Die Doku der Netz NÖ ist nett, aber unvollständig und fehlerhaft (einen Fehler habe ich schon korrigieren können, da dürfte aber noch mehr sein). Die offiziellen Standards sind nur in Auszügen erhältlich (sonst kostenpflichtig) und schwer lesbar. Hier wird man fündig (natürlich immer mit Echtdaten vergleichen!):

    https://m-bus.com/documentation
    https://stadtwerkeschwaz.at/pdfs/Technische%20Beschreibung%20Kundenschnittstelle%20SWS%20Smart%20Meter.pdf
    https://www.salzburgnetz.at/content/dam/salzburgnetz/dokumente/stromnetz/Technische-Beschreibung-Kundenschnittstelle.pdf
    https://www.netz-noe.at/Download-(1)/Smart-Meter/218_9_SmartMeter_Kundenschnittstelle_lektoriert_14.aspx (neue Version!)
    https://www.dlms.com/ (-> Resources; Green Book und Blue Book)

    – Entschlüsselung in C/C++: z.B. in nur 7 trivialen Zeilen mit Crypto- oder mbedtls-Bibliothek unter Arduino; siehe https://www.weigu.lu/tutorials/sensors2bus/04_encryption

    – DLMS/OBIS: siehe DLMS Blue Book; Code z.B. https://github.com/DomiStyle/esphome-dlms-meter

    Hoffe, das erspart jemandem das Suchen.
    LG, Wolfgang

    • Sagemcom T210 mit Click Board und hterm getestet, klappt (TX vom Click Board an RX beachten!).

      Folgendes ist mir aufgefallen:

      – Das M-Bus Datenpaket hat Überlänge (282 Bytes statt maximal 261) und müsste auf zwei Datenpakete aufgeteilt werden.
      – Die Längen-Felder (Bytes 2 und 3, 0x0101) sind falsch.
      – Das CI Feld (Byte 7) ist falsch (0x00 ist das erste Paket einer Serie, es folgt aber kein zweites).
      – Das Längen-Feld in der Applikationsschicht (Bytes 20 ff. ) ist falsch (0x81F8 = 248 Bytes; es sind aber 254 verschlüsselte Daten + 5 Steuerung = 259; somit wäre 0x820103 richtig).
      – Die Prüfsumme (vorletztes Byte) entspricht nicht dem M-Bus Standard und ist mangels Beschreibung nicht überprüfbar.

      Netz NÖ habe ich informiert, mal sehen.

      LG, Wolfgang

      • Korrektur zu obigem Posting.

        – Das M-Bus Datenpaket hat Überlänge (263 Bytes statt maximal 261).
        – Die Längen-Felder (Bytes 2 und 3, 0x0101) sind falsch (vermutlich Overflow wegen der Überlänge).

        Die anderen Punkte haben sich erledigt, ich hatte aufgrund des falschen Längenangabe das zweite Datenpaket übersehen.

        LG, Wolfgang

  • Hallo an alle und ein echt tolles Projekt gefällt mir. Hast du super gemacht!!

    Ich wurde heute mit einem neuen Zähler beglückt und hab gesehen das es hier eine Schnittstelle gibt Google suche gestartet und hier bin ich nun !

    Da ich auch gerade auf den Energiespar Modus bin und vieles mit Smart Home Steuerung nutze will ich das neue Teil auch anzapfen. Ich bin aus der Südsteiermark und würde gerne wissen ob der Netzbetreiber verpflichtet ist das Passwort her zu geben oder nicht. Bevor ich ihn frage. Weil mein Netzanbieter ist etwas eigen !

    Ich hab bekommen einen
    Sagemcom CS50001 T201-D-r

    Oder kann ich das Passwort auch auf anderen Wege bekommen seitens Hersteller vom Sagemcom? Oder Alternativ Tools …

    Würd mich freuen auf Antwort

    Danke LG Stoneii

    • Hallo,

      der Netzbetreiber ist dazu verpflichtet dir das Passwort zu geben.
      In Österreich gibt es ein paar unterschiedliche Versionen der Verschlüsselung, daher weiß ich nicht ob meine Version bei dir funktuniert. Getestet ist die Version nur in Niederösterreich.
      LG Michael

  • Vielen Dank für die ausführlichen Infos! Die Doku der EVN ist ja wirklich eher dürftig für den praktischen Einsatz.

    Was mich leider gute zwei Stunden gekostet hat, war ein Anfängerfehler gepaart mit der wie immer ziemlich miesen Fehlerbeschreibung von Python.
    (Ich war da tatsächlich schon in den Quelltexten der gurux libs.)

    Wer also den Fehler “TypeError: decoding str is not supported” bekommt, sollte versuchen, das Passwort entweder abzutippen oder zu bereinigen.

    Die EVN versendet PDFs, die scheinbar in den Passwörtern unsichtbare/nicht-druckbare Zeichen enthalten. Das Passwort hatte ich aus meinem PDF mit copy/paste dann natürlich auch im Code falsch.

  • guten morgen!
    hatte jemand von euch schonmal probleme mit dem sagemcom (evn)?
    ich habe bereits eines austauschen lassen, da es mit dem shdzm-modul immer nir einige minuten funktioniert hat.
    auch jetzt habe ich mit dieser anleitung das gleiche problem, anfangs bekomme ich die daten (5-15x), und dann ist schluss. ich bin kurz vorm aufgeben 🙁

    danke,
    tomba

    setup:
    rp4 mit oh3.4.0 M2

    • ich hab das SHRDZM-Modul am T210-D (EVN) mit einem 5V 1A Steckernetzteil und läuft stabil seit 1 Woche. MQTT, Node-Red u. Grafana hab ich auf einem radxa-zero.

        • hallo,
          danke für deine antworten. ich habe am 3.11. dbzgl ein mail an die evn geschrieben, zwar keine antwort bis dato erhalten, aber nun scheint es – unregelmäßig – zu funktionieren (habe immer wieder mal “invalid bytes….”. ist es möglich, dass die evn hier etwas per fernzugriff “freischalten” kann? jedenfalls ist dies schon sehr eigenartig, da die kommunikation mit dem smartmeter ja tlw. funktionierte.
          hat jemand bereits ähnliche erfahrungen gemacht?

          ps: das shrdzm-modul habe ich mit allen möglichen kabeln (von 50 bis 500cm) und netzteilen versucht und es hat leider nicht dauerhaft funktioniert. wäre interessant, ob es jetzt funktioniert, aber der entwickler war so nett und hat das modul retour genommen.

  • Hallo Michael,
    Zuerst vielen Dank für die Veröffentlichung dieses tollen Projekts, hat mir sehr geholfen!
    Eine kleine Anmerkung, beim den zum Download zur Verfügung gestellten Config-Files (Node-Red u. Grafana) ist Feldnamen ‘WirkerngieP’ ist ein Typo drin. Da ich das SHRDZM-Modul zum Auslesen verwende mußte ich im Node-Red die MQTT-Connectoren anpassen. Bei diesen Anpassungen ist mir dann der Typo aufgefallen.
    Nochmals Danke u. LG, Andreas

  • Hallo

    erstmals großen Dank für das Script!
    Leider funktionieren bei mir weder das original (EvnSmartmeterMQTT.py von greenMike) noch die Version von Georg stabil.
    beides hört nach weniger als einem Tag auf zu funktionieren (liefert keine Werte mehr).
    Wie gehts euch damit?

    lg Andi

    • hallo, dein genannter adapter ist leider nicht mehr lieferbar. Hättest du evtl einen vorschlag für eine alternative? will keinen falschen kaufen.
      danke im voraus.
      lg

  • zufällig drüber gestolpert – habe den t210 gerade erst freigeschaltet! ich werden den code in einer ruhigen minute mal ausprobieren!!!

    schon mal home-assistant angeschaut? das ist node-red und mqtt als plugin installierbar + visualisierung für haussteuerung usw auch alles dabei (falls so was für dich auch interessant ist) … (zwave, zigbee, …)

    https://www.home-assistant.io/

  • 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.

  • 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

  • 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

  • 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

  • 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…

  • 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.

  • 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

    • 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,
        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

  • 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 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

  • 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’)

  • 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 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

  • 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

  • @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

  • 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.

      • Ich habe auch die Beobachtung gemacht, dass eingespeiste Leistung und bezogene Leistung gleichzeitig positive Werte haben. Verstehe nicht recht warum das so sein soll. Habe öfters gelesen, dass man, wenn man auf einer Phase bezieht und auf anderen Phasen einspeist solche Werte zustandekommen können, aber ich kann das nicht recht glauben. Wenn ich zu einem Zeitpunkt insgesamt (über alle Phasen gerechnet) mehr ins Netz einspeise als ich bezeihe, warum soll ich dann für diesen Zeitraum für bezogene Energie zahlen?

        Ich finde das seltsam. Hat da jemand eine Erklärung?

        PS: Ich könnte es mir noch vorstellen, dass wenn innerhalb der 5s Messzeit z.B. 2s eingespeist und 3s bezogen wird, beide Leistungen positiv sind, aber in meinem Fall kann das nicht sein. Ich habe das anhand eines Datensatzes mit einem Wasserboiler getestet, und der ist eine ohmsche Last an einer Phase, und schaltet sich nicht im Sekundentakt ein und aus. Seine Leistung ist höher als was meine Solaranlage zu der Zeit produziert hat. Es müsste demnach die eingespeiste Leistung auf null gehen. Tut sie aber nicht. In der Minute innerhalb der ich beobachte sinkt die eingespeiste Leistung zwar deutlich ab – aber nur um einen Bruchteil der Leistung des Boilers. Sie wird aber nicht null. Gleichzeitig steigt die bezogene Leistung an, aber nicht auf die Nennleistung des Boilers, sondern etwas darunter. Summiert man den Einbruch in der eingespeisten Leistung und den Messwert für die bezogene Leistung, so kommt ca. die Nennleistung des Boilers heraus, was ja Sinn macht.

        Mich stört diese Eigenheit, weil die Preise für eingespeiste und bezogene Energie ja ganz unterschiedlich sein können. Eine Konsequenz daraus könnte sein, dass ich obwohl ich insgesamt einspeise, trotzdem für diese Zeit Kosten für bezogene Energie zahlen muss, und wenn der Preis für eingespeiste Energie geringer ist als für bezogene, dann ist das zu meinem Nachteil.

        Wenn das irgendwer erklären kann wäre ich sehr froh!

        Grüße
        Lukas

  • 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 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

  • 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.

  • 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

        • 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,
    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).

      • Hallo @beta-L-user:

        bin neu in diesem Thema und würde gerne den t210-d-r von der energie steiermark auslesen. Kannst du evtl. bereits berichten ob dieser Adapater dafür kompatibel ist?
        lg

    • Hallo Robert,
      Hast du schon eine Lösung zur Abfrage bzw. hättest du eine Adresse für die beiden Schlüssel an die ich mich wenden könnte?
      Lg Stefan

  • 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 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

  • 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 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.
      support@michaelretibauer.at
      LG Michael

  • 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 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

  • 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,

    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

  • 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 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

  • 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

  • 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,
    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

  • 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,
    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!

  • 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 🙂

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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?

  • 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 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

  • 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 – 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

  • 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,

    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

  • 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.

    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, 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 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

  • 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???

  • 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

      • Hallo Armin,
        Würde ebenfalls gerne meinen Smart meter von Energie Stmk auslesen. Hattest du schon Erfolg für den Entschlüsselungkey?
        Beste Grüße Stefan

    • 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

  • 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 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 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 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,

    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.

Schreibe einen Kommentar

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