Smartmeter Konfigurationsproblem

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
openHAB Benutzer
Beiträge: 3
Registriert: 23. Aug 2025 12:38
Answers: 0

Smartmeter Konfigurationsproblem

Beitrag von openHAB Benutzer »

Hallo,

ich bin neu hier im Forum und mache meine ersten Gehversuche in openHAB. Sehr weit bin ich allerdings noch nicht gekommen.
Mein Stromzähler emittiert unbeachtet seit mehr als ein Jahrzehnt alle zwei Sekunden nach dieser Spezifikation ein Datentelegramm. Da ich die Verbrauchsdaten zukünftig besser protokollieren möchte, habe ich mir einen geeigneten Sensor gebaut um die Daten auszulesen. Die Datentelegramme stehen mir jetzt alle zwei Sekunden per serieller Schnittstelle zur Verfügung.
Im 1. Schritt möchte ich openHAB dazu nutzen, die Daten zu protokollieren und komfortabel anzuzeigen ohne dabei sie direkt am Zähler manuell ablesen zu müssen.
Ich habe dazu ein Thing mit dieser Konfiguration erstellt:

Code: Alles auswählen

UID: smartmeter:meter:EasyMeter-Q3DA1004-01
label: Smart Meter
thingTypeUID: smartmeter:meter
configuration:
  mode: D
  refresh: 10
  baudrate: "9600"
  conformity: NONE
  port: /dev/ttyUSB0
  baudrateChangeDelay: 0
aber dann ist es auch schon vorbei, das log ist nicht sehr hilfreich:

Code: Alles auswählen

07:06:21.860[INFO] [org.openhab.core.Activator] - Starting openHAB 5.0.1 (Release Build)
07:06:22.176[INFO] [org.openhab.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
07:06:22.178[INFO] [org.openhab.core.internal.i18n.I18nProviderImpl] - Locale set to 'en_DE'.
07:06:30.605[INFO] [org.openhab.core.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
07:06:42.503[INFO] [org.openhab.core.automation.internal.RuleEngineImpl] - Rule engine started.
07:06:44.472[INFO] [openhab.event.ThingStatusInfoChangedEvent] - Thing 'smartmeter:meter:EasyMeter-Q3DA1004-01' changed from UNINITIALIZED (NOT_YET_READY) to INITIALIZING
07:06:44.490[INFO] [openhab.event.ThingStatusInfoChangedEvent] - Thing 'smartmeter:meter:EasyMeter-Q3DA1004-01' changed from INITIALIZING to UNKNOWN (HANDLER_CONFIGURATION_PENDING): Waiting for messages from device
07:06:44.634[INFO] [openhab.event.ThingStatusInfoChangedEvent] - Thing 'smartmeter:meter:EasyMeter-Q3DA1004-01' changed from UNKNOWN (HANDLER_CONFIGURATION_PENDING): Waiting for messages from device to OFFLINE (COMMUNICATION_ERROR): Serial port /dev/ttyUSB0 not found or port is busy.
Das die Schnittstelle funktioniert belegt ein "minicom", das alle zwei Sekunden ein Datentelegramm empfängt. Und nach dessen Terminierung mit "STRG-A Q" belegt ein "runuser -u openhab cat /dev/ttyUSB0" das auch im openHAB Kontext Daten gelesen werden können. Weiterhin belegt "lsof /dev/ttyUSB0" vor dem Start von openHAB, das das device auch von keinem anderen Prozess belegt ist.

Wie ist hier mit der Fehleranalyse fortzufahren?

Was mir aufgefallen ist, ist das die Konfiguration keinen Parameter für die Leitungs-Disziplin besitzt. Sich darauf zu verlassen das eine Schnittstelle auf magische Weise vor Programmstart bereits konfiguriert ist, zeugt nicht von einem verlässlichem Design.

Benutzeravatar
udo1toni
Beiträge: 15335
Registriert: 11. Apr 2018 18:05
Answers: 247
Wohnort: Darmstadt

Re: Smartmeter Konfigurationsproblem

Beitrag von udo1toni »

Herzlich willkommen im openHAB Forum!

Die unterstützten Zähler verwenden alle genau festgelegte Betriebsarten, es ist also nicht notwendig, hier irgendwelche Parameter (außer Modus und Bitrate) zu konfigurieren. Das Binding kümmert sich selbst um den Rest und verlässt sich nicht auf irgendwelche Magie :)

Allerdings: Die Fehlermeldung ist ziemlich eindeutig:

Code: Alles auswählen

Serial port /dev/ttyUSB0 not found or port is busy.
Es gibt hier also zwei Möglichkeiten,
  1. Du hast eine andere Software gestartet, die die Schnittstelle belegt
  2. Du hast Java nicht erlaubt, die Schnittstelle zu nutzen
Ich tippe auf Letzteres. dazu muss man sagen, das ist eventuell nicht prominent genug erwähnt :) aber das Ding ist: openHAB läuft unter Java, und Java nutzt nur Schnittstellen, die es explizit nutzen darf. Für Ethernet ist das "naheliegend" :) weil man sonst keinen Webserver starten könnte, bei seriellen Schnittstellen ist das aber nicht so einfach, Java kann sich nicht einfach alle seriellen Schnittstellen krallen. Entsprechend musst Du Java hier den Zugriff erlauben, unter GNU/Linux geht das über die Datei /etc/default/openhab.
Schau Dir die Datei an, dort gibt es einen Parameter EXTRA_JAVA_OPTS, unmittelbar über der aktuellen Konfiguration gibt es zwei Beispielzeilen, für Deinen seriellen Port heißt der Parameter -Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0.
Falls EXTRA_JAVA_OPTS schon Daten enthält, musst Du den Parameter ergänzen (irgendwo, falls angehängt, dann mit Leerzeichen vorneweg). Achte auch darauf, dass der Parameter nur einmal in der Zeile vorkommt. Falls Du mehrere serielle Schnittstellen brauchst, werden diese mit Doppelpunkt getrennt hintereinander angegeben.
openHAB5.0.0 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)

openHAB Benutzer
Beiträge: 3
Registriert: 23. Aug 2025 12:38
Answers: 0

Re: Smartmeter Konfigurationsproblem

Beitrag von openHAB Benutzer »

Ich habe die Konfiguration hinzugefügt:

Code: Alles auswählen

openhab    16707       1  8 12:26 ?        00:01:18 /usr/bin/java -XX:-UsePerfData -Dopenhab.home=/usr/share/openhab -Dopenhab.conf=/etc/openhab -Dopenhab.runtime=/usr/share/openhab/runtime -Dopenhab.userdata=/var/lib/openhab -Dopenhab.logdir=/var/log/openhab -Dfelix.cm.dir=/var/lib/openhab/config -Djava.library.path=/var/lib/openhab/tmp/lib -Djdk.util.zip.disableZip64ExtraFieldValidation=true -Djetty.host=0.0.0.0 -Djetty.http.compliance=RFC2616 -Dorg.apache.cxf.osgi.http.transport.disable=true -Dorg.ops4j.pax.web.listening.addresses=0.0.0.0 -Dorg.osgi.service.http.port=8080 -Dorg.osgi.service.http.port.secure=8443 -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0 --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=/usr/share/openhab/runtime/lib/endorsed/org.apache.karaf.specs.locator-4.4.7.jar --patch-module java.xml=/usr/share/openhab/runtime/lib/endorsed/org.apache.karaf.specs.java.xml-4.4.7.jar --add-opens java.base/java.security=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.naming/javax.naming.spi=ALL-UNNAMED --add-opens java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.base/java.time=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED --add-exports=java.rmi/sun.rmi.registry=ALL-UNNAMED --add-exports=java.security.sasl/com.sun.security.sasl=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED -Dkaraf.instances=/var/lib/openhab/tmp/instances -Dkaraf.home=/usr/share/openhab/runtime -Dkaraf.base=/var/lib/openhab -Dkaraf.data=/var/lib/openhab -Dkaraf.etc=/var/lib/openhab/etc -Dkaraf.log=/var/log/openhab -Dkaraf.restart.jvm.supported=true -Djava.io.tmpdir=/var/lib/openhab/tmp -Djava.util.logging.config.file=/var/lib/openhab/etc/java.util.logging.properties -Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -classpath /usr/share/openhab/runtime/lib/boot/org.apache.karaf.diagnostic.boot-4.4.7.jar:/usr/share/openhab/runtime/lib/boot/org.apache.karaf.jaas.boot-4.4.7.jar:/usr/share/openhab/runtime/lib/boot/org.apache.karaf.main-4.4.7.jar:/usr/share/openhab/runtime/lib/boot/org.apache.karaf.specs.activator-4.4.7.jar:/usr/share/openhab/runtime/lib/boot/osgi.core-8.0.0.jar:/usr/share/openhab/runtime/lib/jdk9plus/istack-commons-runtime-3.0.12.jar:/usr/share/openhab/runtime/lib/jdk9plus/jakarta.xml.bind-api-2.3.3.jar:/usr/share/openhab/runtime/lib/jdk9plus/javax.annotation-api-1.3.2.jar:/usr/share/openhab/runtime/lib/jdk9plus/jaxb-runtime-2.3.9.jar:/usr/share/openhab/runtime/lib/jdk9plus/org.apache.servicemix.specs.activation-api-1.2.1-1.2.1_3.jar:/usr/share/openhab/runtime/lib/jdk9plus/txw2-2.3.9.jar org.apache.karaf.main.Main
Bis auf die timestamps im log hat sich nichts geändert.
udo1toni hat geschrieben: 24. Aug 2025 03:24 Die Fehlermeldung ist ziemlich eindeutig:
Die Fehlermeldung scheint wohl doch nicht so eindeutig zu sein ;-)
Das das Gerät existiert und von keinem anderen Prozess belegt ist, ist ja durch "cat" und "lsof" belegt. Aber das noch eine java Konfiguration notwendig ist, hätte ich daraus nie abgeleitet zumal sie ja wohl auch nicht die Lösung ist.

Benutzeravatar
udo1toni
Beiträge: 15335
Registriert: 11. Apr 2018 18:05
Answers: 247
Wohnort: Darmstadt

Re: Smartmeter Konfigurationsproblem

Beitrag von udo1toni »

Was ergibt ls -l /dev/ttyUSB0 als Ausgabe?
Was ergibt groups openhab als Ausgabe?

Hast Du den Rechner zwischendrin (also nachdem Du die Schnittstelle erlaubt hast) mal durchgestartet?
openHAB5.0.0 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)

mad-mike
Beiträge: 499
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Smartmeter Konfigurationsproblem

Beitrag von mad-mike »

Moin,

bietet dir openHAB denn diesen Anschluss überhaupt an?
Über die UI zeigt mir das menü mehrere geräte an, aber vielleicht ist 0 und 1 vertauscht. Solche Probleme hatte ich öffters als ein USB 485 adapter hinzukam

meinen Lesekopf habe ich diesen über

Code: Alles auswählen

/dev/serial/by-id/ .....
eingebunden.

Weiss ja nicht ob es an sowas liegen kann??... :idea:
Gruss mad-mike

openHABian 5.0.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

openHAB Benutzer
Beiträge: 3
Registriert: 23. Aug 2025 12:38
Answers: 0

Re: Smartmeter Konfigurationsproblem

Beitrag von openHAB Benutzer »

udo1toni hat geschrieben: 24. Aug 2025 16:35 Was ergibt ls -l /dev/ttyUSB0 als Ausgabe?

Code: Alles auswählen

crw-rw---- 1 root dialout 188, 0 Aug 24 14:26 /dev/ttyUSB0
udo1toni hat geschrieben: 24. Aug 2025 16:35 Was ergibt groups openhab als Ausgabe?

Code: Alles auswählen

openhab : openhab tty dialout lock audio
udo1toni hat geschrieben: 24. Aug 2025 16:35 Hast Du den Rechner zwischendrin (also nachdem Du die Schnittstelle erlaubt hast) mal durchgestartet?
Wiederholte Male, selbst bevor ich den ersten Test mit der geänderten Konfiguration durchgeführt habe.
mad-mike hat geschrieben: 24. Aug 2025 19:11 bietet dir openHAB denn diesen Anschluss überhaupt an?
Zur Zeit ist nur ein USB-UART Adapter angeschlossen und damit gibt es nur /dev/ttyUSB0. Und er wurde auch als Auswahl bei der Einrichtung angeboten.
mad-mike hat geschrieben: 24. Aug 2025 19:11 /dev/serial/by-id/...
Das ist in diesem Fall nur ein symlink auf /dev/ttyUSB0 und macht keinen Unterschied aus Sicht der Anwendung. Es sei denn die Anwendung kann nicht mit symlinks umgehen, was durchaus bei Multi-Platform Anwendungen sein kann weil es auch Betriebssysteme gibt, die gar keine symlinks unterstützen. Aber das sollte hier kein Thema sein.

Antworten