NEWS
Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex
-
Moin zusammen,
ich mache seit ein paar Tagen meine ersten Schritte mit dem ioBroker. Mein Wissen darüber ist also noch nicht all zu tief. ioBroker bietet aber schon eine ganze Menge interessante Adapter, so dass ich eine ganze Menge von meiner Technik zuhause darin einbinden kann.
Nun zu meinem Problem, ich versuche seit einigen Tagen den Smartmeter-Adapter im ioBroker über einen Weidmann IR Adapter zum Laufen zu bekommen. Ausgelesen werden soll ein Logarex Stromzähler LK13BE
https://www.rng.de/bedienungsanleitung-logarex-lk13be904619.pdfx
Laufen soll das Ganze auf einem Qnap NAS in der Container Station, da die direkt neben dem Stromzähler steht. Zum Erstellen des Containers habe ich ein Docker-compose file verwendet:
(an das compose file muss ich noch mal ran, da ich das Volume noch lieber auf auf eine Festplatte legen möchte, um dann von dort im QNAP NAS auch noch ein Backup machen zu können)version: '2' volumes: iobrokerdata: driver: local services: iobroker: restart: always image: buanet/iobroker:v9.0.1 container_name: iobroker hostname: iobroker ports: - "8082:8082" #vis - "1880:1880" #node-red - "1883:1883" #mqtt - "2001:2001" #homematic - "8083:8081" #iobroker admin, port 8081 is in use by QNAP web service using 8083 instead - "8282:8282" #flot - "8098:8088" #terminal - "8284:8284" #socketIO environment: - TZ=Europe/Berlin - USBDEVICES=/dev/ttyUSB0 volumes: - iobrokerdata:/opt/iobroker devices: - /dev/ttyUSB0:/dev/ttyUSB0:ro --privileged
nach einigen Kämpfen mit dem QNAP nas habe ich es dann hin bekommen, dass der Weidmann IR USB Lesekopf auch im Container unter /dev/ttyUSB aufschlägt. Das QNAP unterstützt leider nicht direkt den Adapter ohne Änderungen an einem script /etc/init.d/usb_device_check.sh. Es kannte die product-ID 6015 nicht. Nachdem ich diese Änderung dann noch irgendwie mit der Autostart.sh des QNAP NAS persistieren konnte, schlagen nun im Container mit
cat /dev/ttyUSB0 folgende Daten auf:/LOG5LK13BExxxxxx 1-0:96.1.0*255(001LOG0067059477) 1-0:1.8.0*255(021915.9796*kWh) 1-0:2.8.0*255(000000.0000*kWh) 1-0:16.7.0*255(000696*W) 1-0:32.7.0*255(224.7*V) 1-0:52.7.0*255(223.7*V) 1-0:72.7.0*255(224.6*V) 1-0:31.7.0*255(001.35*A) 1-0:51.7.0*255(000.84*A) 1-0:71.7.0*255(002.01*A) 1-0:81.7.1*255(125*deg) 1-0:81.7.2*255(242*deg) 1-0:81.7.4*255(034*deg) 1-0:81.7.15*255(069*deg) 1-0:81.7.26*255(033*deg) 1-0:14.7.0*255(49.9*Hz) 1-0:1.8.0*96(00016.7*kWh) 1-0:1.8.0*97(00194.4*kWh) 1-0:1.8.0*98(00596.3*kWh) 1-0:1.8.0*99(05927.4*kWh) 1-0:1.8.0*100(21915.9*kWh) 1-0:0.2.0*255(ver.03,432F,20170504) 1-0:96.90.2*255(F04E) 1-0:97.97.0*255(00000000) !
Ich habe fast alle möglichen Einstellungsvarianten des Adapters durch. Nichts hat davon wirklich hin gehauen.
Mit einem Testprogramm von Weidmann wurde ermittelt, dass der Zähler nur unidirektional 9600 7E1 kommunizieren kann. Laut Beschreibung des Logarex Zählers stellt dieser SML Daten zur Verfügung2024-01-14 18:23:14.474 - info: smartmeter.0 (2840) starting. Version 3.4.0 in /opt/iobroker/node_modules/iobroker.smartmeter, node: v18.19.0, js-controller: 5.0.17 2024-01-14 18:23:14.500 - debug: smartmeter.0 (2840) SmartmeterObis options: {"debug":2,"protocol":"SmlProtocol","transport":"SerialResponseTransport","requestInterval":"10","anotherQueryDelay":"2000","transportSerialPort":"/dev/ttyUSB0","transportSerialBaudrate":9600,"transportSerialDataBits":7,"transportSerialStopBits":1,"transportSerialParity":"even","transportSerialMessageTimeout":5000,"protocolSmlIgnoreInvalidCRC":true,"protocolSmlInputEncoding":"ascii","obisFallbackMedium":1} 2024-01-14 18:23:14.510 - debug: smartmeter.0 (2840) CREATE SERIALPORT: 9600 7 1 even 2024-01-14 18:23:14.517 - debug: smartmeter.0 (2840) SET MESSAGE TIMEOUT TIMER: 5000 2024-01-14 18:23:14.549 - debug: smartmeter.0 (2840) connected set to false 2024-01-14 18:23:19.520 - debug: smartmeter.0 (2840) MESSAGE TIMEOUT TRIGGERED 2024-01-14 18:23:19.520 - debug: smartmeter.0 (2840) Error: No or too long answer from Serial Device after last request. 2024-01-14 18:23:19.521 - warn: smartmeter.0 (2840) No or too long answer from Serial Device after last request. 2024-01-14 18:23:19.522 - debug: smartmeter.0 (2840) Error: No or too long answer from Serial Device after last request. 2024-01-14 18:23:19.524 - debug: smartmeter.0 (2840) Transport Reset!! Restart = true 2024-01-14 18:23:19.525 - debug: smartmeter.0 (2840) SCHEDULE NEXT RUN IN 10s 2024-01-14 18:23:29.526 - debug: smartmeter.0 (2840) CREATE SERIALPORT: 9600 7 1 even 2024-01-14 18:23:29.532 - debug: smartmeter.0 (2840) SET MESSAGE TIMEOUT TIMER: 5000 2024-01-14 18:23:34.532 - debug: smartmeter.0 (2840) MESSAGE TIMEOUT TRIGGERED 2024-01-14 18:23:34.533 - debug: smartmeter.0 (2840) Error: No or too long answer from Serial Device after last request. 2024-01-14 18:23:34.533 - warn: smartmeter.0 (2840) No or too long answer from Serial Device after last request. 2024-01-14 18:23:34.533 - debug: smartmeter.0 (2840) Error: No or too long answer from Serial Device after last request. 2024-01-14 18:23:34.534 - debug: smartmeter.0 (2840) Transport Reset!! Restart = true 2024-01-14 18:23:34.534 - debug: smartmeter.0 (2840) SCHEDULE NEXT RUN IN 10s 2024-01-14 18:23:44.534 - debug: smartmeter.0 (2840) CREATE SERIALPORT: 9600 7 1 even 2024-01-14 18:23:44.535 - debug: smartmeter.0 (2840) SET MESSAGE TIMEOUT TIMER: 5000 2024-01-14 18:23:49.535 - debug: smartmeter.0 (2840) MESSAGE TIMEOUT TRIGGERED 2024-01-14 18:23:49.536 - debug: smartmeter.0 (2840) Error: No or too long answer from Serial Device after last request. 2024-01-14 18:23:49.537 - warn: smartmeter.0 (2840) No or too long answer from Serial Device after last request. 2024-01-14 18:23:49.537 - debug: smartmeter.0 (2840) Error: No or too long answer from Serial Device after last request. 2024-01-14 18:23:49.537 - debug: smartmeter.0 (2840) Transport Reset!! Restart = true 2024-01-14 18:23:49.537 - debug: smartmeter.0 (2840) SCHEDULE NEXT RUN IN 10s ^C2024-01-14 18:23:52.089 - info: smartmeter.0 (2840) terminating 2024-01-14 18:23:52.093 - debug: smartmeter.0 (2840) Plugin sentry destroyed 2024-01-14 18:23:52.093 - info: smartmeter.0 (2840) Terminated (NO_ERROR): Without reason
Auf https://github.com/Apollon77/ioBroker.smartmeter
steht, dass SML nur im Binärformat unterstützt wird. Allerdings steht unter
https://github.com/Apollon77/smartmeter-obis
das der Logarex Stromzähler unterstützt werden soll. Könnte es sein, dass der smarterer Adapter tatsächlich binäre Daten erwartet, wenn man SML konfiguriert und nun der Adapter mit dem ASCII Daten nichts anfangen kann? Ich habe mal versucht den Source-Code zu verstehen, um die Fehlermeldungen ein wenig einzuordnen. Da müsste ich erstmal einiges an Zeit in das Verständnis der SW-Architektur und Java-Script Verständnis stecken, um da weiter zu kommen.Ich habe mir auch hier im Forum schon einige Beiträge zum einbinden von Lesegeräten und Problemen mit /dev/ttyUSB0 angesehen. Bisher hat aber noch keins der Themen dort mein Problem lösen können. Wenn ein
cat /dev/ttyUSB Daten im Container anzeigt sollten diese doch auch für ioBroker lesbar sein. -
@tvg71 puuh
du hast da diverse zusätzliche Stolpersteine@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
Containers
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
Docker
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
dev/ttyUSB0
Danach kommt erst die Konfiguration des Adapters
Bei den ersten drei kann ich dir nicht helfen, aber wenn gesichert ist, dass dein iobroker auch den Lesekopf sieht und die Versuche mit cat & co nicht immer noch die serielleSchnittstelle blockieren, dann bitte die Konfig zeigen. -
Der Logarex gehört zu den Zählern mit langsam sterbender Info-Schnittstelle, s.
https://shop.weidmann-elektronik.de/media/files_public/67303f78bbcd558d664d0095291562d3/BekannteProblememitZhlermodellen.pdfDer einfachste Test geht immer mit einem Win Laptop und einem Terminalprogramm wie Termite
-
Ist das richtig 7N1 .
Stelle mal so die Instanz ein , wie in diesem Thread :
https://forum.iobroker.net/post/1083818 -
@klassisch
Ja habe ich auch schon gesehen. Habe aber auch geschrieben, dass die Daten mit Windows Testprogramm funktionieren. Die Dioden sollten also bisher noch funktionieren.
Der obige Cat auf /dev/ttyUSB ist ja innerhalb des Containers.Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 0403:6015 Future Technology Devices International, Ltd Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
die Tools unter dem QNAP NAS sind etwas dürftig. Aus irgendeinem Grund kann ich leider auch keine weiteren Pakete installieren, da sich IPKR nicht über die UI installieren lässt.
-
Wie oben schon geschrieben hat das Weidmann-Tesprogramm die Daten für die Serielle Schnittstelle mit 9600 7E1 ausgegeben und unidirektional mit
irgend etwas auf die Schnittstelle schreiben wird es also nichts.echo xxx > /dev/ttyUSB0
wird es also auch nichts.
Die diversen Einstellungen die weiter oben vorgeschlagen wurden, hatte ich schon mal probiert, habe es aber sicherheitshalber noch mal gemacht, kein Erfolg. Braucht der Adapter beim Lesen von /dev/ttyUSB0 irgend welche besonderen Rechte, die im Container fehlen könnten die "cat /dev/ttyUSB0" nicht braucht? Mit dem Cat im Container kann ich ja auch sehen, dass sich die Daten ändern. Für mich sieht es so aus, dass die Daten im Container ankommen aber nicht vom Adapter verstanden werden. Die Daten kommen ja im ASCII Format im und sind nicht binär codiert. -
@tvg71 erst einmal im Adapter alle Einstellungen auf default!
wie beteits gesagt
@glasfaser sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
Stelle mal so die Instanz ein , wie in diesem Thread :
https://forum.iobroker.net/post/1083818@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
Braucht der Adapter beim Lesen von /dev/ttyUSB0 irgend welche besonderen Rechte, die im Container fehlen könnten die "cat /dev/ttyUSB0" nicht braucht?
wie ebenfalls schon gefragt;
wurde die Schnittstelle nach Nutzung von cat wieder für den Adapter freigegeben?funktioniert
ls -la /dev/serial/by-id
im Container? -
@homoran
in dem link hat das Weidemann Testprogramm was anderes ergeben als bei mir. mit den Parametern wie in dem Link hat hat das Testprogramm bei mir keine Verbindung erstellen können. Aus die Default Einstellungen, die man beim Einstellen der default Werte smarterer Adapter machen kann sind im Logging sichtbar sind (9600 8 1 none), kommen nicht funktionierende Werte im Weidmann Testprogramm heraus.ls -la /dev/serial/by-id /bin/ls: cannot access /dev/serial/by-id: No such file or directory
-
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
No such file or directory
welchen Lesekopf hast du?
-
-
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
@homoran https://shop.weidmann-elektronik.de/index.php?page=product&info=24
sieht nach USB aus.
aber da gibt es im Container nichts
oder der Befehl geht da nicht.alternativ
lsusb
? -
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
kommen nicht funktionierende Werte im Weidmann Testprogramm heraus.
und beim Adapter , das selbe !?
ich kann nicht erlesen das du es laut dem Link so eingestellt hast , bzw. mal probiert
-
@glasfaserja habe die Werte so eingestellt, keine Änderung.
muss
/dev/serial/by-id/
im Container vorhanden sein? Im Soruce-code sieht das irgendwie nur optional aus:
... if (port.pnpId) { try { const pathById = '/dev/serial/by-id/' + port.pnpId; if (fs.existsSync(pathById)) { port.realPath = port.path; port.path = pathById; } } catch (err) { adapter.log.debug('pnpId ' + port.pnpId + ' not existing: ' + err); } return port; }
gibt weder einen else zweit mit einem Fehler noch sehe ich die Message aus der Exception.
-
@homoran lsusb ist im Container leider nicht vorhanden
-
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
/dev/serial/by-id/
im Container vorhanden sein?Nein , als USB oder als ACM wird es ausgewiesen
-
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
@glasfaserja habe die Werte so eingestellt, keine Änderung.
Vorhandene Instanz stoppen , dann eine neue Instanz anlegen , dann laut Vorlage es einstellen , was ist dann , denn durch Probieren kann man viel verstellen !?
-
@glasfaser Bisherige Instanz angehalten und neue erzeugt. Auch in der neuen Instanz keine Änderung. Immer noch die Timeouts
-
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
devices: - /dev/ttyUSB0:/dev/ttyUSB0:ro --privileged
Wo hast du das denn her , noch nie gesehn das devices nur ro ist , ich denke mal das liegt daran .
-
@glasfas das blöde ReadOnly ist irgendwie von diversen Versuchen übrig geblieben. Hab es vergessen das wieder auf rw zu setzen. (ohne irgend etwas geht es auch nicht, rw muss wohl schon sein.)
Damit hat sich nun auch was verändert. Im Jogging des Adapters Schalgen nun die Werte auf:
/opt/iobroker# iobroker debug smartmeter.1 The instance "smartmeter.1" is already running, please stop instance first. root@iobroker:/opt/iobroker# iobroker debug smartmeter.1 Debugger listening on ws://127.0.0.1:9229/aa541788-e427-454f-bb12-22e7df6279c0 For help, see: https://nodejs.org/en/docs/inspector 2024-01-14 21:41:01.413 - debug: smartmeter.1 (899) Redis Objects: Use Redis connection: 127.0.0.1:9001 2024-01-14 21:41:01.556 - debug: smartmeter.1 (899) Objects client ready ... initialize now 2024-01-14 21:41:01.563 - debug: smartmeter.1 (899) Objects create System PubSub Client 2024-01-14 21:41:01.567 - debug: smartmeter.1 (899) Objects create User PubSub Client 2024-01-14 21:41:01.607 - debug: smartmeter.1 (899) Objects client initialize lua scripts 2024-01-14 21:41:01.625 - debug: smartmeter.1 (899) Objects connected to redis: 127.0.0.1:9001 2024-01-14 21:41:01.682 - debug: smartmeter.1 (899) Redis States: Use Redis connection: 127.0.0.1:9000 2024-01-14 21:41:01.714 - debug: smartmeter.1 (899) States create System PubSub Client 2024-01-14 21:41:01.724 - debug: smartmeter.1 (899) States create User PubSub Client 2024-01-14 21:41:01.792 - debug: smartmeter.1 (899) States connected to redis: 127.0.0.1:9000 2024-01-14 21:41:01.922 - debug: smartmeter.1 (899) Plugin sentry Initialize Plugin (enabled=true) 2024-01-14 21:41:02.203 - error: smartmeter.1 (899) adapter disabled 2024-01-14 21:41:02.362 - info: smartmeter.1 (899) starting. Version 3.4.0 in /opt/iobroker/node_modules/iobroker.smartmeter, node: v18.19.0, js-controller: 5.0.17 2024-01-14 21:41:02.390 - debug: smartmeter.1 (899) SmartmeterObis options: {"debug":2,"protocol":"SmlProtocol","transport":"SerialResponseTransport","requestInterval":"30","anotherQueryDelay":"1000","transportSerialPort":"/dev/ttyUSB0","transportSerialBaudrate":null,"transportSerialDataBits":7,"transportSerialStopBits":1,"transportSerialParity":"even","transportSerialMessageTimeout":10000,"protocolSmlIgnoreInvalidCRC":true,"protocolSmlInputEncoding":"ascii"} 2024-01-14 21:41:02.395 - debug: smartmeter.1 (899) CREATE SERIALPORT: 9600 7 1 even 2024-01-14 21:41:02.402 - debug: smartmeter.1 (899) SERIALPORT OPEN 2024-01-14 21:41:02.457 - debug: smartmeter.1 (899) SET MESSAGE TIMEOUT TIMER: 10000 2024-01-14 21:41:02.477 - debug: smartmeter.1 (899) ADD NEW DATA (0 + NEW 61) 2024-01-14 21:41:02.480 - debug: smartmeter.1 (899) MATCH-RESULT MESSAGE: "\u000055(50.0*Hz)\r\n1-0:1.8.0*96(00017.9*kWh)\r\n1-0:1.8.0*97(00190.7" -> null 2024-01-14 21:41:02.490 - debug: smartmeter.1 (899) ADD NEW DATA (61 + NEW 15) 2024-01-14 21:41:02.491 - debug: smartmeter.1 (899) MATCH-RESULT MESSAGE: "\u000055(50.0*Hz)\r\n1-0:1.8.0*96(00017.9*kWh)\r\n1-0:1.8.0*97(00190.7*kWh)\r\n1-0:1.8." -> null 2024-01-14 21:41:02.500 - debug: smartmeter.1 (899) ADD NEW DATA (76 + NEW 15) 2024-01-14 21:41:02.501 - debug: smartmeter.1 (899) MATCH-RESULT MESSAGE: "\u000055(50.0*Hz)\r\n1-0:1.8.0*96(00017.9*kWh)\r\n1-0:1.8.0*97(00190.7*kWh)\r\n1-0:1.8.0*98(00597.0*kW" -> null 2024-01-14 21:41:02.509 - debug: smartmeter.1 (899) connected set to false 2024-01-14 21:41:02.512 - debug: smartmeter.1 (899) ADD NEW DATA (91 + NEW 15) 2024-01-14 21:41:02.513 - debug: smartmeter.1 (899) MATCH-RESULT MESSAGE: "\u000055(50.0*Hz)\r\n1-0:1.8.0*96(00017.9*kWh)\r\n1-0:1.8.0*97(00190.7*kWh)\r\n1-0:1.8.0*98(00597.0*kWh)\r\n1-0:1.8.0*9" -> null 2024-01-14 21:41:02.525 - debug: smartmeter.1 (899) ADD NEW DATA (106 + NEW 15) 2024-01-14 21:41:02.526 - debug: smartmeter.1 (899) MATCH-RESULT MESSAGE: "\u000055(50.0*Hz)\r\n1-0:1.8.0*96(00017.9*kWh)\r\n1-0:1.8.0*97(00190.7*kWh)\r\n1-0:1.8.0*98(00597.0*kWh)\r\n1-0:1.8.0*99(05924.6*kWh)\r" -> null
so weit so gut aber grün ist der Adapter immer noch nicht.
-
@tvg71 sagte in Probleme mit Weidmann IR Lesekopf beim Lesen von Logarex:
Damit hat sich nun auch was verändert.
hier ist noch einer mit dem Weidmann :