Moin
Brauche eure Hilfe.
Bekomme es nicht hin. :-[
Versuche aus zwei Device eine .log Datei zuerstellen.
Es wird leider nur das erste Device/Reading gespeichert.
./log/Sensor-%m-%Y.log Device1:ReadingX.*|Device2:ReadingY.*
Was mache ich da Falsch ?
PS. Ja, Google, Commadref, Suche im Forum und das WIKI ist mir bekannt
aber da habe ich keine Lösung gefunden. Bzw ist mir nicht aufgefallen. ;)
Probier mal ReadingX:.*
Hallo Bartimaus
Vielen Dank für deine Antwort.
Leider wird auch so nur das erste Device/Reading gespeichter.
./log/Sensor-%m-%Y.log Device1:ReadingX:.*|Device2:ReadingY:.*
Hast Du mal "Regexp parts" probiert ?
Da kannst Du das Device incl. Reading auswählen und hinzufügen.
Bei addRegexpPart bekomme ich ein Eingabefeld, gebe ich dort Device2:ReadingY:.* mit und ohne | ein
bekomme ich diese Meldung addRegexpPart needs 2 parameter(s)
Ich habe die Eingabe in der DEF gemacht.
Moin
Bin leider kaum weiter gekommen. :-[
So nun habe ich
ein Dummy Device mit zwei Reading's
und diese möchte ich gern Loggen.
Dies ist der Dummy :
ZitatInternals:
CFGFN /opt/fhem/cfg/Umwelt.cfg
NAME Helligkeit
NR 330
STATE 84.8 %
TYPE dummy
Readings:
2015-09-27 16:24:51 Indikator 84.8
2015-09-27 07:15:29 IndikatorX 100
Attributes:
group 00 Aussen
room Umwelt
sortby 3
stateFormat Indikator %
Das Dummy Device wird über ein DOIF
ZitatInternals:
CFGFN /opt/fhem/cfg/Umwelt.cfg
DEF ([+00:05]) ({ my $t1 = ReadingsVal("LuxOst","IndikatorOst","");;
my $t2 = ReadingsVal("LuxWest","IndikatorWest","");;
my $var = sprintf("%.1f", ($t1 + $t2) /2 );;
fhem("setreading Helligkeit Indikator $var")}
)
NAME check_Lux
NR 328
NTFY_ORDER 50-check_Lux
STATE cmd_1
TYPE DOIF
Readings:
2015-09-27 16:34:17 cmd_event timer_1
2015-09-27 16:34:17 cmd_nr 1
2015-09-27 16:34:17 state cmd_1
2015-09-27 16:34:17 timer_1_c1 27.09.2015 16:39:17
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
Days:
Devices:
Do:
0:
0 { my $t1 = ReadingsVal("LuxOst","IndikatorOst","");;my $t2 = ReadingsVal("LuxWest","IndikatorWest","");;my $var = sprintf("%.1f", ($t1 + $t2) /2 );;fhem("setreading Helligkeit Indikator $var")}
Helper:
globalinit 1
last_timer 1
sleeptimer -1
Internals:
Itimer:
Readings:
Realtime:
0 16:39:17
State:
Time:
0 +00:05
Timecond:
0 0
Timer:
0 0
Timerfunc:
Timers:
0 0
Attributes:
do always
sowie über zwei at's (Sunrise=100/Sunset=0) aktualisiert:
ZitatInternals:
COMMAND setreading Helligkeit IndikatorX 100
DEF *{sunrise("REAL")} setreading Helligkeit IndikatorX 100
NAME SunRise
NR 755
NTM 07:17:12
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 07:17:12
TIMESPEC {sunrise("REAL")}
TRIGGERTIME 1443417432
TRIGGERTIME_FMT 2015-09-28 07:17:12
TYPE at
Readings:
2015-09-27 16:29:16 state Next: 07:17:12
Attributes:
room FS20
Und dass das Log Device :
ZitatInternals:
CFGFN /opt/fhem/cfg/Umwelt.cfg
DEF ./log/LuxSensor-%m-%Y.log Helligkeit:(Indikator|IndikatorX).*
NAME Lux_Log
NR 359
NTFY_ORDER 50-Lux_Log
REGEXP Helligkeit:(Indikator|IndikatorX).*
STATE active
TYPE FileLog
currentlogfile ./log/LuxSensor-09-2015.log
logfile ./log/LuxSensor-%m-%Y.log
Attributes:
logtype text
room FS20
Auszug vom Logfile :
Zitat2015-09-27_16:24:51 Helligkeit Indikator: 84.8
2015-09-27_16:19:51 Helligkeit Indikator: 84.9
2015-09-27_16:14:51 Helligkeit Indikator: 83.0
2015-09-27_16:09:51 Helligkeit Indikator: 82.7
2015-09-27_16:04:51 Helligkeit Indikator: 82.2
2015-09-27_15:59:51 Helligkeit Indikator: 84.8
.
.
.
2015-09-27_07:24:51 Helligkeit Indikator: 61.7
2015-09-27_07:19:51 Helligkeit Indikator: 58.2
2015-09-27_07:15:29 Helligkeit IndikatorX: 100
2015-09-27_07:14:51 Helligkeit Indikator: 53.4
2015-09-27_07:09:51 Helligkeit Indikator: 48.1
Das Log sollte so Aussehen :
2015-09-27_07:29:00 Helligkeit Indikator: 58.2
2015-09-27_07:29:00 Helligkeit IndikatorX: 100
2015-09-27_07:24:00 Helligkeit Indikator: 58.2
2015-09-27_07:24:00 Helligkeit IndikatorX: 100
2015-09-27_07:19:00 Helligkeit Indikator: 58.2
2015-09-27_07:19:00 Helligkeit IndikatorX: 100
Wo ist mein Fehler?
Ja ich weiss, zwischen den Ohren. ;)
Hast du vielleicht 'event-on-change-reading' aktiviert?
Moin
Danke für den Hinweis
@dirkbalzer
ZitatHast du vielleicht 'event-on-change-reading' aktiviert?
Nein, habe Ich nicht.
Zitat von: Michael am 20 September 2015, 10:15:12
...Was mache ich da Falsch ? ...
Die LOG-Definition sieht erstmal gut aus.
Kontrollier mal im Event-Monitor, ob denn da von Deinem Device2 etwas kommt.
Im Zweifel schmeiss beim Device2 erstmal alles raus, was mit Log zu tun hat bzw. Events beeinflusst.
ZitatWo ist mein Fehler?
Ja ich weiss, zwischen den Ohren. ;)
Korrekt 8)
Das was du möchtest
ZitatDas Log sollte so Aussehen :
2015-09-27_07:29:00 Helligkeit Indikator: 58.2
2015-09-27_07:29:00 Helligkeit IndikatorX: 100
2015-09-27_07:24:00 Helligkeit Indikator: 58.2
2015-09-27_07:24:00 Helligkeit IndikatorX: 100
2015-09-27_07:19:00 Helligkeit Indikator: 58.2
2015-09-27_07:19:00 Helligkeit IndikatorX: 100
hast du nirgends so programmiert.
Entweder lässt du in deinem 5-minütigen DOIF auch noch
Helligkeit IndikatorX: mitschreiben oder du machst das mit addLog - siehe Wiki(http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden (http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden)).
Warum?
Das at
*{sunrise("REAL")} setreading Helligkeit IndikatorX 100
schreibt dir das Reading genau einmal am Tag und zu diesem Zeitpunkt wird es auch geloggt.
Logfileeintrag:
Zitat2015-09-27_07:15:29 Helligkeit IndikatorX: 100
Letztes schreiben des Wertes in den Dummy:
Zitat2015-09-27 07:15:29 IndikatorX 100
In deinem DOIF wird mit der Zeile
setreading Helligkeit Indikator $var
das Reading Indikator alle 5 Minuten geschrieben und auch geloggt.
Aber nirgends das Reading
IndikatorXDie Logfile-Definition ist in Ordnung aber es wird eben das at nur einmal am Tag ausgeführt ;)
Edith: Weil das nur einmal am Tag zutrifft - nämlich bei
{sunrise("REAL")}
Sollte ich was übersehen haben und mich täuschen würde ich gern drauf gestossen werden ???
Moin
@Puschel74
Ja, das was du geschrieben hast leuchtet mir ein. :)
ZitatEntweder lässt du in deinem 5-minütigen DOIF auch noch Helligkeit IndikatorX: mitschreiben oder ...
Kannst du mich dabei Unterstützen? :-[
Bin leider kein Experte und das Übertrifft mein wenig können. ::)
Habe es jetzt so Versucht, aber da müssen noch Fehler bei sein. :'(
([+00:05]) ({ my $t1 = ReadingsVal("LuxOst","IndikatorOst","");;
my $t2 = ReadingsVal("LuxWest","IndikatorWest","");;
my $var = sprintf("%.1f", ($t1 + $t2) /2 );;
fhem("setreading Helligkeit Indikator $var");;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);;
my $zeit = sprintf("%02d:%02d:%02d",$hour, $min, $sec);;
if ($zeit => {sunrise("REAL")}) fhem("setreading Helligkeit IndikatorX 100");;
if ($zeit => {sunset("REAL")}) fhem("setreading Helligkeit IndikatorX 0");;})
Da ich leider noch nicht ganz verstanden habe wozu du das brauchst - ich bin manchmal etwas langsamer weil schon älter ;D - hab ich das mal ganz banal,
so wie ich das erstmal angehen würde geschrieben:
([+00:05]) ({ my $t1 = ReadingsVal("LuxOst","IndikatorOst","");;
my $t2 = ReadingsVal("LuxWest","IndikatorWest","");;
my $var = sprintf("%.1f", ($t1 + $t2) /2 );;
my $var_x = ReadingsVal("Helligkeit", "IndikatorX","");;
fhem("setreading Helligkeit Indikator $var");;
fhem("setreading Helligkeit IndikatorX $var_x");;})
Da ich DOIF nicht verwende kann ich dir keine Garantie geben das es klappt.
Möglich wäre es die at mit sunrise/sunset normal weiter laufen zu lassen und das Reading einfach im DOIF auslesen und wieder schreiben.
Allerdings würde ich eher addLog für sowas nehmen da das ja eigentlich dafür gedacht ist zyklisch ein beliebiges Reading eines beliebigen Gerätes ins Logfile zu bekommen
aber gut, vermutlich geht es mit DOIF doch noch einfacher aber wie gesagt - ich verwende kein DOIF daher kann ich dir keinen "kürzeren" Code liefern.
Edith:
Zitataber da müssen noch Fehler bei sein. :'(
FHEM spricht mit dir - schau mal ins Logfile.
Und lies dir bitte mal einen angepinnten Beiträge durch, da versuche ich zumindest zu erläutern was so an Infos nicht unwichtig wäre. ;)
Moin
@Puschel74Erstmal
vielen Dank, das klappt wie Vorgestellt. :D
Zitat... - ich bin manchmal etwas langsamer weil schon älter ...
Das ist auch mein Problem :-X, der jüngste bin ich auch nicht mehr und Programmieren kann man das nicht nennen was ich da zusammen bastle.
ZitatDa ich leider noch nicht ganz verstanden habe wozu du das brauchst ...
Ich habe mir nach diesen (http://forum.fhem.de/index.php/topic,26335.0.html (http://forum.fhem.de/index.php/topic,26335.0.html)) Forenbetrag zwei Helligkeitssensoren für
West und Ostrichtung Zusammengebaut und bekam immer einen schönen Helligkeitsverlauf.
Nun kam mir ein Geistesblitz :o und wollte im Plot den Bereich von Sonnenaufgang bis Sonnenuntergang darstellen.
Ist im Anhang zusehen.
ZitatFHEM spricht mit dir - schau mal ins Logfile.
Und lies dir bitte mal einen angepinnten Beiträge durch, da versuche ich zumindest zu erläutern was so an Infos nicht unwichtig wäre. ;)
Im Logfile war keine Meldung in diesen Zusammenhang für mich zuerkennen.
Wenn ich zuwenig Info's gegeben habe, Entschuldige bitte. :-[