Werte von serieller Schnittstelle auslesen und loggen

Begonnen von Jackie, 25 November 2024, 09:53:36

Vorheriges Thema - Nächstes Thema

Jackie

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 :-)
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...

betateilchen

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
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jackie

#2
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?
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!