Pre-Release -- Neues Plugin: P1 Decrypter

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • elextricmax
    Dumb Home'r
    • 02.08.2023
    • 16

    #31
    Ich möchte mal ein großes Lob und danke in die engagierte Runde schicken. Leider kann ich entwicklungstechnisch mangels ausreichender Programmierkenntnis wenig beitragen. Ich würde mich aber auch gerne als potentieller Tester einreihen.
    Bin ebenfalls Kunde der Netz NÖ und habe Smartmeter von Kaifa​ im Haus.
    Die Schlüssel für die Dekodierung der P1 Schnittstelle habe ich schon mal erhalten. Raspi mit Loxberry-Image ist auch schon für div. andere Dings im Einsatz.
    Sobald ich ein M-Bus Modul habe und dieses funktional (installiert) ist, kann auch ich die ersten Schritte mit euren viel versprechenden Entwicklungen gehen...;-)

    Kommentar


    • Metrophos
      Metrophos kommentierte
      Kommentar bearbeiten
      Danke für deine Unterstützung. Das Netz NÖ wird, so wie es aktuell aussieht, im nächsten Update enthalten sein. Falls weitere Tests vor dem Release sinn machen melde ich mich per PM bei dir. lg
  • theflamez
    Azubi
    • 24.11.2019
    • 3

    #32
    Hallo! Vielen dank für das Plugin.
    Nach Eingabe der Daten funktioniert soweit auch alles. Das Plugin startet und sendet die entsprechenden Daten über UDP. Status "P1 Decrypter up (PID: 13467)"

    Doch leider nach einigen ordnungsgemäß empfangenen Daten steht im Log-File: "UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbb in position 182: invalid start byte"
    und der Pugin-Status geht auf "P1 Decrypter down"

    Wie kann dieses Problem behoben werden?
    Zähler: Sagemcom T210-D-r (Steiermark)

    Danke!
    Angehängte Dateien

    Kommentar


    • Metrophos
      Metrophos kommentierte
      Kommentar bearbeiten
      Es scheint in der Encodierung oder beim entschlüssen zu einem Fehler zu kommen. Den Grund kann ich leider auf den ersten Blick nicht erkennen. Welche Hardware nutzt du aktuell? Ich werde versuchen mir das näher anzusehen. Würde mich dann per PM für Rückfragen melden.

    • theflamez
      theflamez kommentierte
      Kommentar bearbeiten
      LoxBerry V2.2.2.2
      und dieses Kabel: https://amzn.eu/d/hdI2ezw
      (Domotica on Raspberry DSMR Dutch P1 Poort Kabel für Smart Slimme Meter mit FTDI Chip 5 V TTL UART Logic Level Signale USB zu RJ11 RJ12 6P6C Port (für ISKRA AM550/Sagemcom XS210 T210-D))

      Techn. Spezifikationen vom Netzbetreiber:
      Physikalisch: RJ12
      Protokoll: Drahtgebundene DSMR 5.0.2 Schnittstelle - P1 Companion Standard - Dutch Smart Meter Requirements
      Datenübertragung: Datenpush (Unidirektionale Verbindung)
      Anwendungsmodell: dlms/COSEM-Security 0
      Ausgabeintervall: 10 Sekunden

      Interessant ist, dass die Werte ja teils richtig gesendet werden.

      Vielen Dank!
  • oma-frieda
    Smart Home'r
    • 05.08.2021
    • 45

    #33
    Hallo an alle,

    ich suche insgesamt drei Leute, je einen mit einem Drehstrom-Smartmeter von Salzburg Netz, Tiroler Netze (TINETZ) bzw. Energie-Netzen Steiermark, die bereit sind, mein Python-Programm zur Entschlüsselung von P1/MBUS-Daten zu testen. Es geht darum herauszufinden, ob mein Programm auch Daten von Smartmetern dieser Netzbetreiber tatsächlich interpretieren kann (Netz NÖ / EVN und Vorarlberger Energie-Netze sind bereits abgedeckt, die anderen Netzbetreiber derzeit nicht im Fokus). Diesen Code würde ich am Ende auch dem Entwickler des Loxberry-Plugins P1Decrypter zur Verfügung stellen (deshalb poste ich meine Suche nach Testern hier). Ich werde aber vermutlich erst in den nächsten Tagen so weit sein, dass ich den Code bereitstellen kann.

    Es sollte aber jemand sein, der die erforderliche Hardware (wie für das Plugin P1Dectrypter) bereits installiert hat und über Kenntnisse verfügt, wie er ein Python-Programm ohne Unterstützung zum Laufen bringen kann.

    Die Anzahl der Tester würde ich gerne so gering wie möglich halten, damit nicht zu viel Kommunikations-Aufwand für mich entsteht entsteht. Mein Vorschlag wäre, dass sich Interessenten direkt in einem Kommentar zu diesem Beitrag melden und dabeiihren Netz-Betreiber angeben. Ich würde mich dann im Bedarfsfall per persönlicher Nachricht melden. Seid bitte nicht böse, wenn ich mich nicht melde, ich möchte meine Zeit möglichst in die Entwicklung investieren.

    Danke und liebe Grüße -
    oma-frieda
    Zuletzt geändert von oma-frieda; 02.02.2024, 19:18.

    Kommentar


    • oma-frieda
      oma-frieda kommentierte
      Kommentar bearbeiten
      Mein Programm stünde nun bereit zum Testen für Smartmeter von Salzburg Netz, Tiroler Netze (TINETZ) bzw. Energie-Netzen Steiermark.
  • longtom
    Azubi
    • 17.09.2023
    • 8

    #34
    Ich habe mir jetzt das Smartmeter Kundenschnittstellen Modul - MBus+P1+IR von SHRDZM geholt. Funktioniert einwandfrei mittels MQTT zu loxberry. WLAN oder LAN.

    Kommentar


    • maxw
      maxw kommentierte
      Kommentar bearbeiten
      Danke für den Tipp! Werd ich mir auch bestellen!
  • Jacques
    Dumb Home'r
    • 28.08.2015
    • 12

    #35
    Hallo Leute,

    Ich habe das P1 Decrypter PlugIn an einem Luxemburger Smarty-Zähler, ein Sagecom T210-D hängen und es empfängt und entschlüsselt die Daten einwandfrei.
    Die Daten werden auch ohne Probleme via UDP an den Miniserver übermittelt.
    Ich würde die Daten aber lieber an den MQTT Broker des Loxberry senden, doch hier erhalte ich folgende Fehlermeldungen und das Plugin läuft nicht mehr.

    Code:
    2024-11-24 13:35:47 root         INFO     Try to connect to MQTT Broker: localhost
    Exception ignored in: <function Client.__del__ at 0xb5f013d0>
    Traceback (most recent call last):
      File "/usr/local/lib/python3.9/dist-packages/paho/mqtt/client.py", line 874, in __del__
        self._reset_sockets()
      File "/usr/local/lib/python3.9/dist-packages/paho/mqtt/client.py", line 1133, in _reset_sockets
        self._sock_close()
      File "/usr/local/lib/python3.9/dist-packages/paho/mqtt/client.py", line 1119, in _sock_close
        if not self._sock:
    AttributeError: 'Client' object has no attribute '_sock'
    Traceback (most recent call last):
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 460, in <module>
        smarty_proxy.main()
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 58, in main
        self.args()
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 116, in args
        self.config()
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 192, in config
        self.loxberry()
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 247, in loxberry
        self.process()
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 347, in process
        self.decrypt()
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 360, in decrypt
        self.mapping(cipher.decrypt(binascii.unhexlify(self._payload)))
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 392, in mapping
        self.send_mqtt(mapped_values_array)
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 445, in send_mqtt
        mqtt_client = get_mqtt_client()
      File "/opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py", line 431, in get_mqtt_client
        self.mqtt_client = mqtt.Client()
    TypeError: __init__() missing 1 required positional argument: 'callback_api_version'
    Ich habe es auch mit verschiedenen MQTT Einstellungen versucht, ohne Erfolg.

    Am MQTT Broker liegt es kaum, denn ich habe divers andere Clients die ohne Probleme am Broker Daten Senden und Empfangen können.

    Vor dem P1 Decrypter Plugin hatte ich folgende Lösung am laufen https://www.weigu.lu/microcontroller..._P1/index.html
    Diese Lösung funktionierte auch einwandfrei, allerdings "nur" über WLAN und das setzt halt voraus, dass das WLAN immer Online sein muss.
    Daher gefiele mir die Lösung über das Plugin mit einem seriellem Kabel deutlich besser.

    Könnte der Entwickler eventuell einen Blick und etwas Zeit hierauf werfen?

    Grüße an die LoxBerry Gemeinschaft

    Jacques
    KNX - Loxone Miniserver - LoxBerry incl. Razberry z-wave.me.

    Kommentar


    • oma-frieda
      oma-frieda kommentierte
      Kommentar bearbeiten
      Hallo, Jacques, du hast einen interessanten Beirag geliefert.

      Die Ursache liegt vermutlich außerhalb des Plugins und ist wohl hier beschrieben:https://github.com/eclipse-paho/paho...hon/issues/814

      Lösung scheint zu sein: Install Paho-MQTT < 2.0 oder Install Paho-MQTT > 2.1.0.

      Jacques, könntest du bitte berichten, ob das klappt. - Danke!

      Außerdem: Ich habe geschrieben, dass dein Beitrag interessant ist, weil du für mich unerwartet eine Anwendbarkeit außerhalb Österreichs belegst. Darf ich dich ersuchen, deinen Stromnetzbetreiber, deine Baudrate, Parität, Stopbits und dein Value Mapping anzugeben sowie die Tatsache, ob du GAK (Global authentification key) bzw. AAD (Additional Authenticated Data) benutzt? - Danke auch dafür!

      (Ich versuche den P1-Decrypter gerade so zu erweitern, dass er für weitere Smartmeter/Anbieter einsetzbar wird.)

    • Jacques
      Jacques kommentierte
      Kommentar bearbeiten
      Danke für den Hinweis, damit hast du mich auf dem richtige Weg gebracht

      Da mein Loxberry aber noch auf Bullseye läuft, war mir das Risiko zu hoch eine andere Version des paho-mqtt als die 1.5.1 zu installieren.
      Nach kurzem Suchen im Netz fand ich dann diese Seite https://eclipse.dev/paho/files/paho....igrations.html und habe kurzerhand etwas in deinem Code gepuscht.


      In der Datei /opt/loxberry/bin/plugins/p1decrypter/p1decrypter.py habe ich folgendes in der Zeile 431 geändert:

      von "self.mqtt_client = mqtt.Client()" auf "self.mqtt_client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1)"

      und schon läuft MQTT mit dem alten paho-mqtt 1.5.1

      Die Einstellung des MQTT Topic QOS muss mindestens 1 sein, mit 0 geht es nicht und das Plugin stürzt ab.

      Im Log taucht jetzt allerdings folgende Meldung auf:

      Callback API version 1 is deprecated, update to latest version
      self.mqtt_client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1)

      ich denke aber, dass das für den internen Hausgebrauch kein Problem darstellen sollte.
      Zuletzt geändert von Jacques; 24.11.2024, 18:51.

    • Jacques
      Jacques kommentierte
      Kommentar bearbeiten
      und hier die gewünschten Daten

      Stromnetzbetreiber : CREOS
      Baudrate : 115200
      Parität : N
      Stopbits : 1
      GAK : Ja
      AAD : Default

      Value Mapping :

      '1-0:1.8.0','(?<=1-0:1.8.0\().*?(?=\*kWh)'
      '1-0:2.8.0','(?<=1-0:2.8.0\().*?(?=\*kWh)'
      '1-0:3.8.0','(?<=1-0:3.8.0\().*?(?=\*kvar)'
      '1-0:4.8.0','(?<=1-0:4.8.0\().*?(?=\*kvar)'
      '1-0:1.7.0','(?<=1-0:1.7.0\().*?(?=\*kW)'
      '1-0:2.7.0','(?<=1-0:2.7.0\().*?(?=\*kW)'
      '1-0:3.7.0','(?<=1-0:3.7.0\().*?(?=\*kvar)'
      '1-0:4.7.0','(?<=1-0:4.7.0\().*?(?=\*kvar)'
      '0-0:96.3.10','(?<=0-0:96.3.10\()(\d)'
      '0-1:96.3.10','(?<=0-1:96.3.10\()(\d)'
      '0-2:96.3.10','(?<=0-2:96.3.10\()(\d)'

      Hier mehr zu unserem Smarty https://www.luxmetering.lu/pdf/SPEC%...n_20210308.pdf
      Und hier noch der Link zur Schaltung des Kabels https://www.weigu.lu/microcontroller...usb/index.html

      Falls du sonst noch Infos benötigst, kann ich gerne versuchen dir diese zu beschaffen.
  • oma-frieda
    Smart Home'r
    • 05.08.2021
    • 45

    #36
    Schön, dass das geklappt hat, und danke für alle Infos!

    Wie gesagt versuche ich eine erweiterte Version zu erstellen und würde darin dann auch gleich ein Profil mit deinen Angaben anlegen, dazu hätte ich aber bitte gerne möglichst exakte Angaben:

    Netzbetreiber ist Creos Luxembourg S.A.?
    Smartmeter ist Sagemcom T210-D-r?
    Schnittstelle ist P1 oder doch M-BUS? (Was der Unterschied ist, weiß ich selbst nicht.)
    zu AAD: Kannst mal den Wert herauslöschen und schauen, ob die Ausgabe dennoch funktioniert?

    Danke im Voraus!

    Kommentar

Lädt...