FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: Jackie am 25 November 2024, 09:53:36

Titel: Werte von serieller Schnittstelle auslesen und loggen
Beitrag von: Jackie am 25 November 2024, 09:53:36
Hallo,

ich würde gerne Daten von einer seriellen Schnittstelle in FHEM auslesen und dabei die Werte vorher etwas vorbereiten. Leider bin ich mir unsicher, was der geeignete Weg dafür wäre.

Hier mal ein Beispieloutput von meinem Seriellen Gerät:

Long signal detected, counting. Signal length = 30
Long signal detected, counting. Signal length = 30
4029325
Long signal detected, counting. Signal length = 30
Long signal detected, counting. Signal length = 29
4029327
Long signal detected, counting. Signal length = 30
Long signal detected, counting. Signal length = 30
Long signal detected, counting. Signal length = 31
4029330
Long signal detected, counting. Signal length = 30
Long signal detected, counting. Signal length = 30
4029332
Long signal detected, counting. Signal length = 29
Long signal detected, counting. Signal length = 30
4029334
Long signal detected, counting. Signal length = 30
Long signal detected, counting. Signal length = 31
4029336
Long signal detected, counting. Signal length = 31

Ich möchte dabei nur die Zeilen loggen, die ausschließlich Zahlen enthalten. Außerdem würde ich den Wert gerne umrechnen, so dass beispielsweise aus 4029336 der Wert 4029,336 wird, also eine Divison durch den Faktor 1000 durchführen.

Könnte das mit ECMD gehen, oder gibt es eine einfachere Alternative? Ich werde aus dem Vorgehen mit ECMD noch nicht ganz schlau, habt ihr da einen Beispielcode mit dem ich anfangen könnte zu experimentieren? Danke :-)
Titel: Aw: Werte von serieller Schnittstelle auslesen und loggen
Beitrag von: betateilchen am 25 November 2024, 10:05:39
Zitat von: Jackie am 25 November 2024, 09:53:36Könnte das mit ECMD gehen, oder gibt es eine einfachere Alternative? Ich werde aus dem Vorgehen mit ECMD noch nicht ganz schlau, habt ihr da einen Beispielcode mit dem ich anfangen könnte zu experimentieren? Danke :-)

Hattest Du Dir mal das Beispiel angeschaut, das im Wiki beschrieben ist?

https://wiki.fhem.de/wiki/ECMD
Titel: Aw: Werte von serieller Schnittstelle auslesen und loggen
Beitrag von: Jackie am 25 November 2024, 11:46:58
Das Beispiel habe ich mir natürlich angeschaut, ich werde aber aus so einigem nicht schlau, vor allem nicht woher die magische Nummer 42356 kommt. Ich finde es recht umständlich beschrieben, hier mal mein bisheriger Ansatz:

define WPCounterArduinoClass ECMD serial /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600
set WPCounterArduinoClass classdef WPCA /opt/fhem/FHEM/WPCounterArduino.classdef

define WPCounterArduino ECMDDevice WPCA 1234

und meine classdef sieht so aus:

params devId
reading counter match "%devId^\d+[\r\n]*$"
state counter

Der Regex soll nur auf ganze Zahlen matchen, sowie Zeilenumbrüche. Dennoch fehlt anscheinend noch etwas, denn der STATE vom Device ist "? ? ?" und der STATE von WPCounterArduinoClass ist disconnected. Was fehlt mir denn noch?
Titel: Aw: Werte von serieller Schnittstelle auslesen und loggen
Beitrag von: betateilchen am 25 November 2024, 11:50:29
Eine typische Anfängerfrage ist das ja nicht wirklich.

Das richtige Unterforum zu ECMD ist "Sonstige Systeme" (herauszufinden mit "help ecmd" in der FHEM Eingabezeile). Unten links auf der Seite hier findest Du einen Button, um das Thema zu verschieben. Im richtigen Unterforum finden sich bestimmt Leute, die die Dir weiterhelfen können.