FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Michael am 20 September 2015, 10:15:12

Titel: [ Gelöst ] FileLog HILFE
Beitrag von: Michael am 20 September 2015, 10:15:12
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.  ;)
Titel: Antw:FileLog HILFE
Beitrag von: Bartimaus am 20 September 2015, 10:23:50
Probier mal ReadingX:.*
Titel: Antw:FileLog HILFE
Beitrag von: Michael am 20 September 2015, 10:44:24
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:.*
Titel: Antw:FileLog HILFE
Beitrag von: Bartimaus am 20 September 2015, 10:49:13
Hast Du mal "Regexp parts" probiert ?
Da kannst Du das Device incl. Reading auswählen und hinzufügen.
Titel: Antw:FileLog HILFE
Beitrag von: Michael am 20 September 2015, 11:04:48
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.
Titel: Antw:FileLog HILFE
Beitrag von: Michael am 27 September 2015, 16:43:30
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.  ;)
Titel: Antw:FileLog HILFE
Beitrag von: dirkbalzer am 27 September 2015, 19:31:10
Hast du vielleicht 'event-on-change-reading' aktiviert?
Titel: Antw:FileLog HILFE
Beitrag von: Michael am 28 September 2015, 07:08:57
Moin

Danke
für den Hinweis

@dirkbalzer
ZitatHast du vielleicht 'event-on-change-reading' aktiviert?
Nein, habe Ich nicht.
Titel: Antw:FileLog HILFE
Beitrag von: Hollo am 28 September 2015, 09:14:46
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.
Titel: Antw:FileLog HILFE
Beitrag von: Puschel74 am 28 September 2015, 18:59:31
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 IndikatorX

Die 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  ???
Titel: Antw:FileLog HILFE
Beitrag von: Michael am 28 September 2015, 19:58:45
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");;})
Titel: Antw:FileLog HILFE
Beitrag von: Puschel74 am 29 September 2015, 19:02:13
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.  ;)
Titel: Antw:FileLog HILFE
Beitrag von: Michael am 30 September 2015, 18:56:12
Moin

@Puschel74

Erstmal 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.  :-[