Hallo zusammen,
ich habe letzte Woche mal mein FHEM auf einem neuen RPi3 installiert und neu konfiguriert. Dort habe ich dann auch einen DOIF Schalter eingebaut der bis gestern einwandfrei funktionierte. Heute morgen wurde das Licht dann aber nicht eingeschaltet, weil das Datum des DOIF noch auf dem 30.5 stand.
Ich habe dann heute mal den DOIF neu initialisiert und das Datum steht nun auf morgen.
Gibt es ein Problem mit dem 31. Mai - Oder 1.6 ?
Der DOIF Befehl lautet:
([06:25|12345] and [Schulfrei] eq "off" )
(set structure_lichter_morgens on; set HomeStatus home)
Gruß
Hermann
Welches Datum zeigt denn Dein Pi an?
in der Bash ein date ein geben.
Dachte ich auch erst, aber das Datum ist in Ordnung.
In FHEM werden die LOG Einträge auch mit dem aktuellen Datum/Uhrzeit geschrieben.
Zitat von: hermann1514 am 01 Juni 2016, 10:01:15
Dachte ich auch erst, aber das Datum ist in Ordnung.
In FHEM werden die LOG Einträge auch mit dem aktuellen Datum/Uhrzeit geschrieben.
Wenn du den Verdacht hast, dass etwas nicht richtig funktioniert, musst du immer von dem betroffenen DOIF-Modul von diesem Zustand in der Kommandozeile ein list <DOIF-Modul> ausführen und die Ausgabe hier posten. Mit den bisherigen Informationen ist keine Fehleranalyse möglich.
Gruß
Damian
Danke. OK. Mache ich beim nächsten Auftreten des Fehlers.
Gruß
Hermann
So nun ist es soweit,
DOIF hat heute morgen nicht geschaltet.
Der nächste Schaltpunkt steht nun aber auf morgen.
Im LOG nicht zu sehen.
Hiermal die Ausgabe von list....
Internals:
DEF ([06:25|12345] and [Schulfrei] eq "off" )
(set structure_lichter_morgens on; set HomeStatus home)
NAME di_clock_morgens
NR 101
NTFY_ORDER 50-di_clock_morgens
STATE cmd_1
TYPE DOIF
Readings:
2016-06-02 06:25:01 cmd 1
2016-06-02 06:25:01 cmd_event timer_1
2016-06-02 06:25:01 cmd_nr 1
2016-06-02 06:25:01 state cmd_1
2016-06-03 06:25:01 timer_1_c1 04.06.2016 06:25:00|12345
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"12345") and InternalDoIf($hash,'Schulfrei','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "off"
Days:
0 12345
Devices:
0 Schulfrei
all Schulfrei
Do:
0:
0 set structure_lichter_morgens on; set HomeStatus home
Helper:
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
timereventsState
triggerDev
timerevents:
timer_1
triggerEvents:
timer_1
Internals:
0 Schulfrei:STATE
all Schulfrei:STATE
Interval:
Itimer:
Localtime:
0 1465014300
Readings:
Realtime:
0 06:25:00
Regexp:
All:
State:
Time:
0 06:25:00
Timecond:
0 0
Timer:
0 0
Timers:
0 0
Triggertime:
1465014300:
localtime 1465014300
Hash:
Attributes:
room Schalter
Gruß
Hermann
Zum wiederholten Auslösen durch einen Zeitpunkt ist "do always" erforderlich, s. http://fhem.de/commandref_DE.html#DOIF_do_always
Verstehe ich nicht.
Das DOIF ([06:25|12345] and [Schulfrei] eq "off" ) (set structure_lichter_morgens on; set HomeStatus home) sagt doch nur, das jeden Tag um 6:25 und wenn der Dummy Schulfrei auf OFF ist die Licher angeschaltet werden. Das sollte doch immer so ausgeführt werden - hat es ja auch bis letzer Woche.
Der Status der Struktur structure_lichter_morgens ist ja um diese Zeit auf OFF geschaltet. Also sollt das DOIF ausgeführt werden.
Gruß
Hermann
Wie viele Tage hat es denn bisher Funktioniert, ohne das du etwas daran geändert oder FHEM neu gestartet hast?
Wenn dein DOIF bereits auf cmd1 steht, dann wird der Ausführungsteil beim wiederholten 'wahr' werden der Bedingungen nicht nocheinmal ausgeführt, es sei denn du hast das 'attr ... do always' gesetzt.
Zitat von: hermann1514 am 03 Juni 2016, 08:58:04
Verstehe ich nicht.
Das DOIF ([06:25|12345] and [Schulfrei] eq "off" ) (set structure_lichter_morgens on; set HomeStatus home) sagt doch nur, das jeden Tag um 6:25 und wenn der Dummy Schulfrei auf OFF ist die Licher angeschaltet werden. Das sollte doch immer so ausgeführt werden - hat es ja auch bis letzer Woche.
Der Status der Struktur structure_lichter_morgens ist ja um diese Zeit auf OFF geschaltet. Also sollt das DOIF ausgeführt werden.
Gruß
Hermann
Zitat aus der Commandref:
Zitat
Das DOIF-Modul arbeitet mit Zuständen. Jeder Ausführungszweig DOIF/DOELSEIF..DOELSEIF/DOELSE stellt einen eigenen Zustand dar (cmd_1, cmd_2, usw.). Das Modul merkt sich den zuletzt ausgeführten Ausführungszweig und wiederholt diesen standardmäßig nicht. Ein Ausführungszweig wird erst dann wieder ausgeführt, wenn zwischenzeitlich ein anderer Ausführungszweig ausgeführt wurde, also ein Zustandswechsel stattgefunden hat. Dieses Verhalten ist sinnvoll, um zu verhindern, dass zyklisch sendende Sensoren (Temperatur, Feuchtigkeit, Helligkeit, usw.) zu ständiger Wiederholung des selben Befehls oder Befehlsabfolge führen.
Gruß
Damian
Ich meine es hat schon einmal über eine Woche lang funktioniert. Nun, ich werde das attribut mal setzten. Mal sehen ob es dann besser geht.
Danke.
Gruß
Hermann
Zitat von: hermann1514 am 03 Juni 2016, 09:34:35
Ich meine es hat schon einmal über eine Woche lang funktioniert.
Durch Ändern der Definition wird das Modul neu initialisiert und schaltet dann am nächsten Tag erst mal. ;)
Hey,
nachdem ich das Attribut gesetzt habe funktioniert alles wieder tadellos.
Zitat von: Ellert am 03 Juni 2016, 08:30:51
Zum wiederholten Auslösen durch einen Zeitpunkt ist "do always" erforderlich, s. http://fhem.de/commandref_DE.html#DOIF_do_always
Danke.
Gruß
Hermann