Hallo,
ich habe Probleme mit einem Filelog:
Aus einem I2C-Device werden 4 Analogwerte im 5-Minutentakt eingelesen und sollen in einem Filelog geloggt werden.
Der jeweilige Eintrag im fhem.log sieht wie folgt aus:
2017.10.24 16:17:07 3: get I2C_Device read 48 40 4 : received : 140 208 255 100 | transmission: Ok
2017.10.24 16:22:07 3: get I2C_Device read 48 40 4 : received : 140 211 255 100 | transmission: Ok
und so die dummy-Variable, die aufgezeichnet werden soll:
I2C_0x40bis43_analog received : 140 215 255 102 | transmission: Ok
Trotzdem ist der Logfile leer (0 Zeilen):
Internals:
DEF /opt/fhem/log/fhem-analogwerte-%Y-%m-%d.log I2C_0x40bis43_analog
NAME Log_Analog
NOTIFYDEV I2C_0x40bis43_analog
NR 212
NTFY_ORDER 50-Log_Analog
REGEXP I2C_0x40bis43_analog
STATE active
TYPE FileLog
currentlogfile /opt/fhem/log/fhem-analogwerte-2017-10-24.log
logfile /opt/fhem/log/fhem-analogwerte-%Y-%m-%d.log
READINGS:
2017-10-24 00:00:01 linesInTheFile 0
pos:
/opt/fhem/log/fhem-analogwerte-2017-10-23.log:2017-10-23_00:00:00 0
/opt/fhem/log/fhem-analogwerte-2017-10-24.log:2017-10-24_00:00:00 0
Attributes:
group I2C
nrarchive 2
room Bastelkeller
Sieht jemand einen Fehler? Ich suche schon mehrere Tage und habe schon mal alles gelöscht und neu definiert - ohne Erfolg.
Die Log-Datei wird täglich neu angelegt, bleibt aber immer leer.
Bin für jeden Tipp dankbar!!
mach doch mal ein list des dummy devices I2C_0x40bis43_analog oder was meinst Du mit dummy-variable?
Der dummy sieht so aus:
Internals:
CHANGED
NAME I2C_0x40bis43_analog
NR 129
STATE received : 140 248 255 77 | transmission: Ok
TYPE dummy
READINGS:
2017-10-24 17:57:07 state received : 140 248 255 77 | transmission: Ok
Attributes:
event-on-change-reading 1
group I2C
room Bastelkeller
Hi,
was ist das für ein Syntax? Habe ich gestern schon mal gelesen :(
event-on-change-reading
1 Auszug aus der Doku
Zitatevent-on-change-reading
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten "readings" identisch sind, wird kein Ereignis generiert.
Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird das Event nur getriggert wenn die Änderung grösser als diese Schwelle ist.
event-on-change-reading state wäre in deinem Fall richtig, oder von mir aus event-on-change-reading .*
Wodurch wird der dummy gesetzt?
Gruß Otto
Sorry, das mit der "1" im event-on-change-reading war Quatsch, da muss ein Städte hin.
Das dummy-device wird von einem at geschrieben:
Internals:
COMMAND { my $d= fhem("get I2C_Device read 48 40 4"); fhem("set I2C_0x40bis43_analog $d") ; my $d1 = substr $d, 10, 4; my $d2=int $d1; fhem("set I2C_0x40_Poti $d2"); my $d3 = substr $d, (index $d," ",(11 + length $d2)), 4; my $d4=int $d3 ; fhem("set I2C_0x41_Helligkeit $d4"); fhem("set Helligkeit $d4"); my $d5 = substr $d, (index $d," ",(12 + length $d2 + length $d4)), 4; my$d6=int $d5; fhem("set I2C_0x42_Analog_In $d6"); my $d7 = substr $d, (index $d," ",(16 + length $d2 + length $d4 + length $d6)), 4; my $d8 = int $d7; fhem("set I2C_0x43_Temperatur $d8") }
DEF +*00:05:00 { my $d= fhem("get I2C_Device read 48 40 4"); fhem("set I2C_0x40bis43_analog $d") ; my $d1 = substr $d, 10, 4; my $d2=int $d1; fhem("set I2C_0x40_Poti $d2"); my $d3 = substr $d, (index $d," ",(11 + length $d2)), 4; my $d4=int $d3 ; fhem("set I2C_0x41_Helligkeit $d4"); fhem("set Helligkeit $d4"); my $d5 = substr $d, (index $d," ",(12 + length $d2 + length $d4)), 4; my$d6=int $d5; fhem("set I2C_0x42_Analog_In $d6"); my $d7 = substr $d, (index $d," ",(16 + length $d2 + length $d4 + length $d6)), 4; my $d8 = int $d7; fhem("set I2C_0x43_Temperatur $d8") }
NAME Get_Analogwerte
NR 127
NTM 18:22:07
PERIODIC yes
RELATIVE yes
REP -1
STATE Next: 18:22:07
TIMESPEC 00:05:00
TRIGGERTIME 1508862127.62874
TRIGGERTIME_FMT 2017-10-24 18:22:07
TYPE at
READINGS:
2017-10-24 18:17:08 state Next: 18:22:07
Attributes:
group I2C
room Bastelkeller
Das at schreibt noch ein paar mehr dummys wie man sieht. Die kommen alle korrekt.
Ist dann nicht event-on-change-reading entfernen die Lösung?
Ja, das war die Lösung! Ich war wohl etwas betriebsblind 😗