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 :-)
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
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?
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.