Messwerte aus mehreren Zeil in separate Datei speichern / regexp

Begonnen von fischle, 12 Januar 2014, 23:36:08

Vorheriges Thema - Nächstes Thema

fischle

lHallo,
wie hier  schon beschrieben, habe ich Stromzähler mit RS485-Schnittstelle, welche ich nun auslesen.

Zum Auslesen muss dem Zähler eine bestimmte Befehlssequenz gesendet werden um an die Werte zu gelangen. Dies habe ich mit Hilfe eines Makros gelöst welches zyklisch aufgerufen wird:


define RS485 ECMD serial /dev/ttyUSB0@9600
attr RS485 classdefs Stromzahler=./stromzaehler.classdef
define Zaehl1 ECMDDevice Stromzahler
attr Zaehl1 room Stromzaehler

define Zaehl1Auslesen1 notify Zaehl1Auslesen1 get Zaehl1 Info;;get Zaehl1 ProgMode;;get Zaehl1 SetPwd;;get Zaehl1 I;;get Zaehl1 U;;get Zaehl1 P_Wirk;;get Zaehl1 Wh;;get Zaehl1 negWh;;get Zaehl1 cosPhi;;get Zaehl1 Close

define Zaehler1Auslesen at +*00:00:20 trigger Zaehl1Auslesen1


Funktioniert auch alles soweit so gut, ich bekomme die Werte in der FHEM Oberfläche dargestellt (s. Bild).

Im Log sieht das ganze so aus:

2014.01.12 22:36:45 3: Zaehl1Auslesen1 return value: Info /YTL:000000000000
ProgMode P0(00000000)`
SetPwd
I 0
U 236.5
P_Wirk 0
Wh 00000065
negWh 00000199
cosPhi 0
Close


Nun würde ich das ganze gerne in eine exra Logdatei schreiben, in einem Format das in etwa so aussieht:


2014.01.12 22:36:45 I: 0  U: 236.5 P_Wirk: 0 Wh: 00000065 negWh: 00000199 cosPhi: 0


Könnt Ihr mir bitte helfen, dass ich das so hinbekomme? Ich habe
hier
schon den Hinweis auf FileLog gefunden und folgendes umgesetzt:


define TagesLog FileLog ./log/EnergieM-%Y-%m-%d.log Zaehl1:*
attr TagesLog room Stromzaehler


Das Ergebnis sieht dann wie folgt aus:


2014-01-12_23:16:59 Zaehl1 Info: /YTL:000000000000
2014-01-12_23:16:59 Zaehl1 ProgMode:  P0(00000000)`
2014-01-12_23:16:59 Zaehl1 SetPwd:
2014-01-12_23:17:00 Zaehl1 I: 0
2014-01-12_23:17:00 Zaehl1 U: 237.3
2014-01-12_23:17:00 Zaehl1 P_Wirk: 0
2014-01-12_23:17:00 Zaehl1 Wh: 00000065
2014-01-12_23:17:00 Zaehl1 negWh: 00000201
2014-01-12_23:17:00 Zaehl1 cosPhi: 0
2014-01-12_23:17:03 Zaehl1 Close:
2014-01-12_23:17:17 Zaehl1 Info: /YTL:000000000000


Ich habe auch schon rausgefunden, dass ich mit
define TagesLog FileLog ./log/EnergieM-%Y-%m-%d.log Zaehl1
(U|I).*

Nur noch Strom uns Spannung in das Log bekomme, aber leider immer noch nicht in einer Zeile.

Hat jemand eine gute Idee, wie ich das hinbekommen kann. Ist das überhaupt möglich? Vielen Dank schon mal für eure Hilfe

RPi,
- USB RS485 Adapter für Stromzähler DRS155M und SDM630M-DC (B+G E-Tech)
- Viesmann KO2B Heizung mit selbstbau Optolink Adapter
- Mi-Light WiFi-Bridge V4, WW/CW LED-Birne

kpwg

Hallo fischle,

bist Du schon weiter gekommen? Ich kämpfe gerade mit einem recht ähnlichen Problem, die Werte in eine Zeile zu bekommen.

Aus meiner Sicht muss das die classdef erledigen. Ich kann entweder alles ein eine Zeile bekommen, habe aber keine Readings (= nutzlos) oder ich erstelle mir gleich richtige Readings, habe aber dann für jeden Messwert eine Zeile und viele sinnfreie Zeilenumbrüche, die nicht weg zu bekommen sind (= mangelnde Doku/ keine Beispiele).

Viele Grüße, Ricardo