Willkommen im Loxone Community Forum. Um alle Funktionen nutzen und sehen zu können, registriere dich bitte zuerst. Dies gilt auch für das herunterladen von Dateien.
Bitte im Titel immer zuerst den Namen des Plugins hinschreiben
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...;-)
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
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)
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.
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.
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 dabei ihren 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.
Ich habe mir jetzt das Smartmeter Kundenschnittstellen Modul - MBus+P1+IR von SHRDZM geholt. Funktioniert einwandfrei mittels MQTT zu loxberry. WLAN oder LAN.
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?
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.)
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.
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?
Sagemcom T210-D (ohne -r)
Schnittstelle ist die P1
Der Unterschied ist zumindest eine komplett andere PIN Belegung und P1 ist eine serielle Schnittstelle (schau mal bei weigu.lu rein)
M-Bus ist, wie der Name schon vermuten lässt, ein BUS System.
Es ist ein Zweidraht Bus System für elektronische Zähler, mit dem man auch mehrere Zähler parallel verbinden kann.
Vom Protokoll und Handling her sollte das etwas ganz anderes sein. (denke ich zumindest)
Wir verarbeiten personenbezogene Daten über Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen, Werbung zu personalisieren und Websiteaktivitäten zu analysieren. Wir können bestimmte Informationen über unsere Nutzer mit unseren Werbe- und Analysepartnern teilen. Weitere Einzelheiten finden Sie in unserer Datenschutzrichtlinie.
Wenn Sie unten auf "Einverstanden" klicken, stimmen Sie unserer Datenschutzrichtlinie und unseren Datenverarbeitungs- und Cookie-Praktiken wie dort beschrieben zu. Sie erkennen außerdem an, dass dieses Forum möglicherweise außerhalb Ihres Landes gehostet wird und Sie der Erhebung, Speicherung und Verarbeitung Ihrer Daten in dem Land, in dem dieses Forum gehostet wird, zustimmen.
Kommentar