Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ich habe noch einen Fix für die leere Zeile eingebaut die dazu geführt hatte das das Parsing abbricht bei nur Lese Zählern.
Bitte noch mal aus demdevelop vom dlms Plugin die __init__.py und die plugin.yaml austauschen.
Aktuell funktioniert bei mir mit Deinen Daten von oben
Code:
# tiffy.yaml
Stromzaehler:
version:
type: str
dlms_obis_code:
- 1-0:0.2.0*255
- 0
- Value
- str
details:
type: str
dlms_obis_code:
- 1-0:96.1.0*255
- 0
- Value
- str
zaehlerstand1:
type: foo
dlms_obis_code:
- '1-0:1.8.0*255'
- '0'
- Value
- float
zaehlerstand2:
type: num
dlms_obis_code:
- '1-0:1.8.0*255'
- '0'
- Value
- float
zaehlerstand3:
# kann nicht funktionieren, der obis code ist unvollständig
type: str
dlms_obis_code:
- '1.8.0*255'
- '0'
- Value
- str
zaehlerstand4:
# kann nicht funktionieren, der obis code ist unvollständig
type: num
dlms_obis_code:
- '1.8.0*255'
- '0'
- Value
- float
zaehlerstand5:
type: num
dlms_obis_code:
- '1-0:1.8.0*255'
- '0'
- Value
- str
die Auslesung. 3+4 ausgenommen, weil da der code falsch angegeben ist.
vielen Dank, es funktioniert. Ich hatte die Vermutung das es an der leeren Zeile liegt (steht ja auch so im Log) hab zur Sicherheit einfach ein paar Varianten ausprobiert nicht das es heißt ich habe nicht richtig probiert.
Bleiben die fixe jetzt drin und kommen in die nächste Hauptversion? Ich kann mir gar nicht vorstellen das ich der einzige mit den Problemen war. Gut man kann auch in der Logik nen script schreiben welches einem den Zähler ausliest aber wenn es ein Plugin gibt welches das unterstützt nutze ich lieber das Plugin.
Grüße und vielen Dank für deine Arbeit.
Wenn ich explizit was testen soll kann ich das gern tun.
Die Unterstützung für nur-lese-Smartmeter ist erst um die Weihnachtszeit eingebaut worden. Und ich kenne aktuell nur zwei User die einen solchen Smartmeter haben. Da ich selbst so ein Gerät nicht im Einsatz habe und meine Zeit sehr begrenzt ist, kann ich viel auch nur raten. Da es keine Tests gibt muß ich mit Änderungen extrem vorsichtig sein sonst läuft es woanders nicht mehr.
Dann ist die Funktion ja quasi beta .
Wenn ich was testen soll was das Plugin angeht einfach bescheid geben. Werd ja beim nächsten Update spätestens dann merken was nicht geklappt hat.
Hab auf jeden Fall Dank für die schnelle Hilfe und Anpassung.
Gegeben ist bei mir:
SHNG 1.9.2 / dlms 1.9.4 / USB-Lesekopf: bayha electronics SA 00013 / smartmeter EMH ED300L -> also ein „nur-lese“ Smartmeter.
Ich kann den Smartreader über das dlms-Plugin leider nicht einlesen. Über ein eigenes Python-Skript kann ich „etwas“ einlesen, ich vermute auch, dass es sinnvolle Daten sind und die Kette an sich funktioniert (s.u.).
Beim debuggen bin ich in ein paar edge cases gelaufen – möglicherweise läuft es deswegen nicht durch?
Code:
pi@raspberryknx:/usr/local/smarthome/plugins/dlms $ python3 dlms.py /dev/ttyUSB0 -l -b 9600
This is DLMS Plugin running in standalone mode
==============================================
Config='{'serialport': '/dev/ttyUSB0', 'device': '', 'querycode': '?', 'baudrate': 9600, 'baudrate_fix': True, 'timeout': 3.0, 'onlylisten': True, 'use_checksum': True}'
Time to open serial port /dev/ttyUSB0: 3.90 ms
start to read data from serial device
finished reading data from serial device after 339 bytes
The manufacturer for is unknown (out of 0 given manufacturers)
Time for reading OBIS data: 26.67 s
Whole communication with smartmeter took 26.68 s
trying now to calculate a checksum
STX not found in response='0x2f 0x1b 0x1b 0x1b 0x1b 0x1 0x1 0x1 0x1 0x76...'
Traceback (most recent call last):
File "dlms.py", line 498, in <module>
result = query(config)
File "dlms.py", line 410, in query
logger.warning(f"ETX not found in response='...{' '.join(hex(i) for i in response[-11])}'")
TypeError: 'int' object is not iterable
pi@raspberryknx:/usr/local/smarthome/plugins/dlms $ python3 dlms.py /dev/ttyUSB0 -l -c -v -b 9600
2023-11-26 11:08:05,186 - __main__ - INFO - This is DLMS Plugin running in standalone mode @ 495
2023-11-26 11:08:05,186 - __main__ - INFO - ============================================== @ 496
2023-11-26 11:08:05,186 - __main__ - DEBUG - Config='{'serialport': '/dev/ttyUSB0', 'device': '', 'querycode': '?', 'baudrate': 9600, 'baudrate_fix': True, 'timeout': 3.0, 'onlylisten': True, 'use_checksum': False}' @ 177
2023-11-26 11:08:05,190 - __main__ - DEBUG - Time to open serial port /dev/ttyUSB0: 3.11 ms @ 227
2023-11-26 11:08:05,190 - __main__ - DEBUG - start to read data from serial device @ 115
2023-11-26 11:08:08,194 - __main__ - DEBUG - finished reading data from serial device after 0 bytes @ 145
Traceback (most recent call last):
File "dlms.py", line 498, in <module>
result = query(config)
File "dlms.py", line 376, in query
Identification_Message = str(response,'utf-8').splitlines()[0]
IndexError: list index out of range
Mit dlms.py lässt sich auch etwas auslesen, nur das dekodieren funktioniert leider nicht:
Code:
pi@raspberryknx:/usr/local/smarthome/plugins/dlms $ python3 dlms.py /dev/ttyUSB0 -l -c -v -b 9600
2023-11-26 11:08:59,554 - __main__ - INFO - This is DLMS Plugin running in standalone mode @ 495
2023-11-26 11:08:59,554 - __main__ - INFO - ============================================== @ 496
2023-11-26 11:08:59,555 - __main__ - DEBUG - Config='{'serialport': '/dev/ttyUSB0', 'device': '', 'querycode': '?', 'baudrate': 9600, 'baudrate_fix': True, 'timeout': 3.0, 'onlylisten': True, 'use_checksum': False}' @ 177
2023-11-26 11:08:59,558 - __main__ - DEBUG - Time to open serial port /dev/ttyUSB0: 3.05 ms @ 227
2023-11-26 11:08:59,558 - __main__ - DEBUG - start to read data from serial device @ 115
2023-11-26 11:09:20,916 - __main__ - DEBUG - finished reading data from serial device after 280 bytes @ 145
2023-11-26 11:09:20,917 - __main__ - DEBUG - The manufacturer for bb is unknown (out of 0 given manufacturers) @ 380
2023-11-26 11:09:20,918 - __main__ - DEBUG - Time for reading OBIS data: 21.36 s @ 384
2023-11-26 11:09:20,919 - __main__ - DEBUG - Whole communication with smartmeter took 21.36 s @ 388
2023-11-26 11:09:20,919 - __main__ - DEBUG - checksum calculation skipped @ 428
2023-11-26 11:09:20,920 - __main__ - DEBUG - the whole query took 21.36 s, suggested cycle thus is at least 31.36 s @ 441
2023-11-26 11:09:20,920 - __main__ - INFO - These are the results of the query @ 504
2023-11-26 11:09:20,920 - __main__ - INFO - ============================================== @ 505
2023-11-26 11:09:20,921 - __main__ - INFO - /bbrcw
EMHiWb
rbe
i:`zwGEMHw
bRVwbUwwGrbeVbRV0wpbRV"bRV
i:`"g+-0rm*12X'''R[-L@fQ! @ 506
2023-11-26 11:09:20,921 - __main__ - INFO - ============================================== @ 507
Ich habe mit der python-Bibliothek "serial" einige Daten /dev/ttyUSB0/ ausgelesen und in eine .txt Datei umgeleitet. Vielleicht helfen die Rohdaten beim dekodieren (siehe angehängte Text Datei).
Danke für den Hinweis - da war ich in der falschen Spurrille unterwegs. Mit dem plugin "smlx" bekomme ich sinnvolle Werte! Der Zähler "EMH ED300L" steht beim SML Plugin auch ganz oben in der Liste.
Eine Klippe hatte ich noch zu überwinden, das SHNG Log zeigte folgende Fehler (für beide Plugins DLMS und SLMX):
Code:
2023-11-29 00:11:15 ERROR plugins.dlms.dlms Serial port '/dev/ttyUSB0' does not exist, please check the spelling
2023-11-29 00:11:15 ERROR plugins.dlms no results from smartmeter query received
(...)
2023-11-29 20:03:50 ERROR plugins.smlx SML: Could not connect to serial:///dev/ttyUSB0: [Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Keine Berechtigung: '/dev/ttyUSB0'
2023-11-29 20:03:50 ERROR plugins.smlx Not connected, no query possible
Lösung: den user "smarthome" der Gruppe "dialout" hinzufügen, dann klappt es auch mit dem USB-Zugriff...
schön das es bei Dir funktioniert. Vielleicht sollte man den Abschnitt
Notwendige Software
[...] Benutzer berichten davon, das es unter Linux notwendig ist den User smarthome den Gruppen dialout und tty hinzuzufügen. Weiterhin kann es notwendig sein eine Regel zur automatischen Zuordnung der Schnittstelle zu einem festen Port einzurichten. Die Vorgehensweise ist beim DLMS Plugin beschrieben
Hallo zusammen, ich hatte vor einiger Zeit ja schon mal Probleme wegen meines Zählers (der sendet stumpf). Da ich meine Umgebung neu machen musste habe ich jetzt die aktuelle Version des Plugins und bekomme seit dem regelmäßig keine Werte sondern:
Code:
2024-11-15 17:54:25 WARNING plugins.dlms update is alrady running, maybe it really takes very long or you should use longer query interval time
Hat jemand eine Idee? Ich habe Update_Cycle mit verschiedensten Werten getestet.
Moin, neu machen hieß das mir meine alte SD Karte abgeraucht ist. nun mit nvme SSD etc. Settings seitig ist aber alles wie vorher. Du hattest mir mal eine develop Version geschickt das hat auch prima funktioniert (Seite 7 des Threads). ein mauelles starten aus dem Plugin Ordner gibt mir auch ergebnisse mit entsprechenden Befehlen aus der Dokumentation aber im smarthomeNG bekomme ich oben genannten Fehler. Timeout lesen steht auf 3sekunden die Frequenz mit der gesendet wird ist aber deutlich höher.
Hallo, ich glaube ich habe den Fehler gefunden. Sowie im Schaltschrank die Abdeckung drauf ist, schickt der Lesekopf kauderwelsch. Das ist mir beim testen so nicht aufgefallen, dummerweise habe ich immer wenn es funktioniert habe wieder auf smarthomeNG gestellt und die Abdeckung angebracht. es ist also ein Problem mit dem Kabel oder der Chint der neu verbaut ist stört die USB Signale.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar