FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Neonblack am 28 Juni 2018, 17:36:52

Titel: Problem mit DOIF
Beitrag von: Neonblack am 28 Juni 2018, 17:36:52
Hi. Ich versuche seit einigen Tagen vergeblich, meiner Rollosteuerung die Weckzeit aus Residents als Parameter mitzugeben. Die relevante Zeile lautet:

([{sunrise(+1810, "07:05", "09:40")}] and [[rr_Micha:nextWakeup]] and [HomeStatus] ne "gone")
   (set az_rollo open)


Für mich heißt das: 30 min. nach Sonnenaufgang, frühestens aber um 7.05 Uhr und spätestens um 9.40 Uhr, wenn die eingestellte Weckzeit in diesen Zeitraum fällt und der Homestatus nicht "gone" ist, mach mal das Rollo hoch. Das Reading "rr_Micha:nextWakeup" wird auch korrekt (nämlich 8.30 Uhr) in den Timer der Rollosteuerung geschrieben. Es passiert aber nichts. Ich habe die commandref zum DOIF jetzt mehrfach durch und viele Klammer-Kombinationen ausprobiert; entweder gibt es direkt eine Fehlermeldung, oder das Reading wird in den Timer geschrieben aber nicht ausgeführt.

Hier mal das vollständige List:

Internals:
   DEF        ([{sunrise(+1810, "07:05", "09:40")}] and [[rr_Micha:nextWakeup]] and [HomeStatus] ne "gone")
   (set az_rollo open)
DOELSEIF ([{sunset(-1815, "16:00", "22:00")}] and [az_fdgk] eq "closed")
   (set az_rollo closed)
DOELSEIF ([az_fdgk] eq "closed" and [{sunset_abs(0,"16:00","22:00")}-{sunrise(0, "06:00", "09:00")}] and [az_rollo] ne "closed")
   (set az_rollo closed)
DOELSEIF ([az_fdgk] eq "tilted" and [{sunset_abs(0,"16:00","22:00")}-{sunrise(0, "06:00", "09:00")}] and [az_rollo:position] ne "70")
   (set az_rollo position 70)
   MODEL      FHEM
   NAME       az_rollosteuerung
   NR         111
   NTFY_ORDER 50-az_rollosteuerung
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2018-06-28 13:49:10   Device          az_rollo
     2018-06-27 23:39:40   cmd             0
     2018-06-28 13:48:37   e_az_fdgk_STATE open
     2018-06-28 13:49:10   e_az_rollo_STATE open
     2018-06-27 23:39:40   mode            enabled
     2018-06-27 23:39:40   state           initialized
     2018-06-28 07:04:59   timer_01_c01    29.06.2018 07:04:59
     2018-06-28 08:30:00   timer_02_c01    29.06.2018 08:30:00
     2018-06-27 23:39:40   timer_03_c02    28.06.2018 22:00:00
     2018-06-28 06:00:00   timer_04_c03    28.06.2018 22:00:00
     2018-06-28 06:00:00   timer_05_c03    29.06.2018 06:00:00
     2018-06-28 06:00:00   timer_06_c04    28.06.2018 22:00:00
     2018-06-28 06:00:00   timer_07_c04    29.06.2018 06:00:00
   Regex:
   attrtimer:
     wait:
     waitdel:
   condition:
     0          DOIF_time_once($hash,0,$wday) and DOIF_time_once($hash,1,$wday) and InternalDoIf($hash,'HomeStatus','STATE') ne "gone"
     1          DOIF_time_once($hash,2,$wday) and InternalDoIf($hash,'az_fdgk','STATE') eq "closed"
     2          InternalDoIf($hash,'az_fdgk','STATE') eq "closed" and DOIF_time($hash,3,4,$wday,$hms) and InternalDoIf($hash,'az_rollo','STATE') ne "closed"
     3          InternalDoIf($hash,'az_fdgk','STATE') eq "tilted" and DOIF_time($hash,5,6,$wday,$hms) and ReadingValDoIf($hash,'az_rollo','position') ne "70"
   days:
   devices:
     0           HomeStatus
     1           az_fdgk
     2           az_fdgk az_rollo
     3           az_fdgk az_rollo
     all         HomeStatus az_fdgk az_rollo
   do:
     0:
       0          set az_rollo open
     1:
       0          set az_rollo closed
     2:
       0          set az_rollo closed
     3:
       0          set az_rollo position 70
     4:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      open,statePosition: open
     globalinit 1
     last_timer 7
     sleeptimer -1
     triggerDev az_rollo
     triggerEvents:
       open
       statePosition: open
     triggerEventsState:
       state: open
       statePosition: open
   internals:
     0           HomeStatus:STATE
     1           az_fdgk:STATE
     2           az_fdgk:STATE az_rollo:STATE
     3           az_fdgk:STATE
     all         HomeStatus:STATE az_fdgk:STATE az_rollo:STATE
   interval:
     3          -1
     4          3
     5          -1
     6          5
   intervalfunc:
   itimer:
     all         rr_Micha
   localtime:
     0          1530248699
     1          1530253800
     2          1530216000
     3          1530216000
     4          1530244800
     5          1530216000
     6          1530244800
   readings:
     3           az_rollo:position
     all         az_rollo:position
   realtime:
     0          07:04:59
     1          08:30:00
     2          22:00:00
     3          22:00:00
     4          06:00:00
     5          22:00:00
     6          06:00:00
   time:
     0          {sunrise(+1810,"07:05","09:40")}
     1          [rr_Micha:nextWakeup]
     2          {sunset(-1815,"16:00","22:00")}
     3          {sunset_abs(0,"16:00","22:00")}
     4          {sunrise(0,"06:00","09:00")}
     5          {sunset_abs(0,"16:00","22:00")}
     6          {sunrise(0,"06:00","09:00")}
   timeCond:
     0          0
     1          0
     2          1
     3          2
     4          2
     5          3
     6          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
   timers:
     0           0  1
     1           2
     2           3  4
     3           5  6
   trigger:
   triggertime:
     1530216000:
       localtime  1530216000
       hash:
     1530244800:
       localtime  1530244800
       hash:
     1530248699:
       localtime  1530248699
       hash:
     1530253800:
       localtime  1530253800
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Rolladen



Kann mir mal bitte jemand einen Tipp geben, wie man das richtig schreibt?

Vielen Dank im Voraus
Micha
Titel: Antw:Problem mit DOIF
Beitrag von: Frank_Huber am 28 Juni 2018, 18:04:59
30 Minuten nach Sonnenaufgang UND deine Weckzeit müssen zeitgleich sein. Denke der wird so nie auslösen.
Wann soll er denn fahren? Weckzeit ODER Sonnenaufgang?

Gesendet von meinem Doogee S60 mit Tapatalk

Titel: Antw:Problem mit DOIF
Beitrag von: Neonblack am 28 Juni 2018, 22:23:53
Hi Frank. Naja, fahren soll das Rollo nach Weckzeit (die ist zwischen 5.00 Uhr und 9.00 Uhr, je nach Dienst), aber nicht vor Sonnenaufgang und im Falle eines nicht gestellten Weckers spätestens um 9.30 Uhr. Aber mir wird jetzt das Problem deutlich: Nach Sonnenaufgang aber nicht vor 7.05 Uhr; da die Sonne früh aufgeht, triggert das DOIF um 7.05, und das fällt eben nicht mit der eingestellten Weckzeit zusammen.

Wie kann ich das denn schreiben dass es für meine Bedürfnisse passt? Jemand eine Idee?

Vielen Dank
Micha
Titel: Antw:Problem mit DOIF
Beitrag von: Damian am 28 Juni 2018, 23:17:36
Zitat von: Neonblack am 28 Juni 2018, 22:23:53
Hi Frank. Naja, fahren soll das Rollo nach Weckzeit (die ist zwischen 5.00 Uhr und 9.00 Uhr, je nach Dienst), aber nicht vor Sonnenaufgang und im Falle eines nicht gestellten Weckers spätestens um 9.30 Uhr. Aber mir wird jetzt das Problem deutlich: Nach Sonnenaufgang aber nicht vor 7.05 Uhr; da die Sonne früh aufgeht, triggert das DOIF um 7.05, und das fällt eben nicht mit der eingestellten Weckzeit zusammen.

Wie kann ich das denn schreiben dass es für meine Bedürfnisse passt? Jemand eine Idee?

Vielen Dank
Micha

Da musst du immer den Zeitpunkt mit einem Zeitintervall kombinieren. Beispiele gibt es zur Genüge: https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen

([?{sunrise(+1810, "07:05", "09:40")}-09:40] and [[rr_Micha:nextWakeup]] and [HomeStatus] ne "gone")
Titel: Antw:Problem mit DOIF
Beitrag von: Neonblack am 01 Juli 2018, 10:09:12
Zitat von: Damian am 28 Juni 2018, 23:17:36
Da musst du immer den Zeitpunkt mit einem Zeitintervall kombinieren. Beispiele gibt es zur Genüge: https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen

([?{sunrise(+1810, "07:05", "09:40")}-09:40] and [[rr_Micha:nextWakeup]] and [HomeStatus] ne "gone")


Hallo Damian. Ich habe diese Beispiele schon gesehen, aber so ganz blicke ich da nicht durch. Was macht das "?" vor der geschweiften Klammer, und was macht die letzte Zeitangabe (-09:40) hinter der geschweiften Klammer?

Der Code hat aber ohnehin nicht funktioniert. Die Weckzeit (nextWakeup) stand auf 7.45 Uhr, getriggert wurde das Rollo aber schon um 7.05. Noch eine Idee?

Vielen Dank
Micha
Titel: Antw:Problem mit DOIF
Beitrag von: Otto123 am 01 Juli 2018, 10:29:46
Moin Micha,

ist das wirklich so schwer zu lesen?
ZitatZeitintervalle werden im Format angegeben: [<begin>-<end>], für <begin> bzw. <end> wird das gleiche Zeitformat verwendet, wie bei einzelnen Zeitangaben.
ZitatZeitintervalle, Readings und Status ohne Trigger   back

Angaben in eckigen Klammern, die mit einem Fragezeichen beginnen, führen zu keiner Triggerung des Moduls, sie dienen lediglich der Abfrage.

Ansonsten wäre es zur Fehlerfindung gut ein list vom DOIF zu dem Zeitpunkt zu haben, wo es 7:05 ausgelöst hat obwohl es 7:45 Uhr auslösen sollte.

Gruß Otto
Titel: Antw:Problem mit DOIF
Beitrag von: Neonblack am 05 Juli 2018, 08:47:57
Zitat von: Otto123 am 01 Juli 2018, 10:29:46
Moin Micha,

ist das wirklich so schwer zu lesen?

Hallo Otto. Es ist nicht so schwer zu lesen, wenn man die Rosinen herausgepickt bekommt. ;) Aber gerade zu DOIF sind so viele Informationen verfügbar, dass man schnell die Relevanz einzelner Stellen verkennt. Außerdem ist es für des Programmierens Unverständige auch eben nicht so ganz leicht zu kombinieren; da steht ja nach der geschweiften Klammer noch mal eine Zeitangabe. Und wie eine Abfrage in Kombination mit gesetzten Parametern dann etwas triggert, hängt ja nicht unwesentlich von der "Klammerei" ab. Also:ja. Wenn man nicht tief im Thema steckt, ist es nicht so einfach anzuwenden. Aber ich bekomme ja Hilfe.... :)

Ich habe jetzt noch mal getestet und die letzten Tage hat es nicht funktioniert. Hier mal ein List vom WakeupTimer:

Internals:
   NAME       rr_Micha_wakeuptimer1
   NR         154
   STATE      08:16
   TYPE       dummy
   READINGS:
     2018-07-05 07:05:00   lastRun         07:09
     2018-07-05 08:12:06   nextRun         08:16
     2018-07-05 07:09:01   running         0
     2018-07-05 08:12:06   state           08:16
     2018-06-24 11:02:54   time            08:28
     2018-06-24 11:26:29   wakeupDefaultTime 08:30
Attributes:
   alias      Wake-up Timer 1
   comment    Auto-created by ROOMMATE module for use with RESIDENTS Toolkit
   devStateIcon OFF:general_aus@red:reset running:general_an@green:stop .*:general_an@orange:nextRun%20OFF
   group      Micha
   icon       time_timer
   room       Residents
   setList    nextRun:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 reset:noArg trigger:noArg start:noArg stop:noArg end:noArg wakeupOffset:slider,0,1,120 wakeupDefaultTime:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 wakeupResetdays:multiple-strict,0,1,2,3,4,5,6 wakeupDays:multiple-strict,0,1,2,3,4,5,6 wakeupHolidays:,andHoliday,orHoliday,andNoHoliday,orNoHoliday wakeupEnforced:0,1,2,3
   sortby     2
   userattr   wakeupOffset:slider,0,1,120 wakeupDefaultTime:OFF,00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45 wakeupMacro wakeupUserdevice wakeupAtdevice wakeupResetSwitcher wakeupResetdays:multiple-strict,0,1,2,3,4,5,6 wakeupDays:multiple-strict,0,1,2,3,4,5,6 wakeupHolidays:andHoliday,orHoliday,andNoHoliday,orNoHoliday wakeupEnforced:0,1,2,3 wakeupWaitPeriod:slider,0,1,360
   wakeupAtdevice at_rr_Micha_wakeuptimer1
   wakeupDays 1,2,3,4,5
   wakeupDefaultTime 08:30
   wakeupEnforced 1
   wakeupHolidays andNoHoliday
   wakeupMacro Macro_rr_Micha_wakeuptimer1
   wakeupOffset 4
   wakeupResetSwitcher rr_Micha_wakeuptimer1_resetswitcher
   wakeupResetdays 1,2,3,4,5
   wakeupUserdevice rr_Micha
   webCmd     nextRun


Gestern sollte also um 7.09 Uhr das Rollo hochfahren. Ist aber erst um 8.30 Uhr hochgefahren und im Log ist um 7.09 Uhr nichts zu sehen:

2018.07.04 08:26:00 3: Macro_rr_Micha_wakeuptimer1: Wake-up program started for rr_Micha with target time 08:30. Current state: home
2018.07.04 08:26:00 3: Macro_rr_Micha_wakeuptimer1: planning enforced wake-up
2018.07.04 08:30:00 3: ESPEasy: set az_rolloauf gpio 5 1


Vorgestern war die Weckzeit (7.12 Uhr) korrekt im Log vermerkt:

2018.07.03 07:08:00 3: Macro_rr_Micha_wakeuptimer1: Wake-up program started for rr_Micha with target time 07:12. Current state: home
2018.07.03 07:08:00 3: Macro_rr_Micha_wakeuptimer1: planning enforced wake-up
2018.07.03 07:12:01 3: Macro_rr_Micha_wakeuptimer1: Wake-up program ended for rr_Micha with target time 07:12. Current state: home


Passiert ist aber erst um 8.30 etwas:

2018.07.03 08:26:00 3: RESIDENTStk rr_Micha_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastWakeup (expLastWakeup=1530616319 > nowRunSec=1530599400)
2018.07.03 08:30:00 3: ESPEasy: set az_rolloauf gpio 5 1
2018.07.03 08:30:33 3: ESPEasy: set az_rolloauf gpio 5 0


Heute früh war der Wecker auf 7.09 gestellt:

2018.07.05 07:09:01 3: Macro_rr_Micha_wakeuptimer1: Wake-up program ended for rr_Micha with target time 07:09. Current state: home
2018.07.05 08:06:00 3: RESIDENTStk rr_Micha_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastWakeup (expLastWakeup=1530788939 > nowRunSec=1530771000)


Das Rollo blieb unten (bis 8.30 Uhr, was die defaulttime ist). Gerade eben habe ich das nochmal probiert. Weckzeit auf 8.16 Uhr gestellt und da hat es funktioniert. Das Rollo ist um 8.16 Uhr hochgefahren.

Das ist mindestens mysteriös. ;)

Ich teste das noch mal ein paar Tage und melde mich dann wieder. Danke für eure Geduld und einen schönen Tag wünscht

Micha
Titel: Antw:Problem mit DOIF
Beitrag von: Neonblack am 06 Juli 2018, 21:11:40
Heute morgen hat es wohl wieder nicht funktioniert. Der Wecker stand auf 8.16 Uhr und hochgefahren ist das Rollo um ~8.30 Uhr.

2018.07.06 08:12:00 3: Macro_rr_Micha_wakeuptimer1: Wake-up program started for rr_Micha with target time 08:16. Current state: home
2018.07.06 08:12:00 3: Macro_rr_Micha_wakeuptimer1: planning enforced wake-up
2018.07.06 08:16:01 3: Macro_rr_Micha_wakeuptimer1: Wake-up program ended for rr_Micha with target time 08:16. Current state: home
2018.07.06 08:26:00 3: RESIDENTStk rr_Micha_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastWakeup (expLastWakeup=1530879359 > nowRunSec=1530858600)
2018.07.06 08:28:58 3: ESPEasy: set az_rolloauf gpio 5 1
2018.07.06 08:29:32 3: ESPEasy: set az_rolloauf gpio 5 0



Mit der Meldung kann ich leider nicht viel anfangen. Also das Reading das von der Rollosteuerung (DOIF, s.o.) abgefragt wird ist rr_Micha:nextWakeup. Das stand auf 8.16 Uhr (steht jetzt auch bei lastWakeup). Getriggert wurde das Rollo aber zu rr_Micha_wakeuptimer1:wakeupDefaultTime. Ich blicke da nicht durch. Wahrscheinlich verstehe ich da grundsätzlich etwas falsch. Da wundert es mich aber, dass es gestern morgen geklappt hat....

Kann das vielleicht jemand erhellen?

LG
Micha
Titel: Antw:Problem mit DOIF
Beitrag von: Damian am 06 Juli 2018, 22:27:05
Zitat von: Neonblack am 06 Juli 2018, 21:11:40
Heute morgen hat es wohl wieder nicht funktioniert. Der Wecker stand auf 8.16 Uhr und hochgefahren ist das Rollo um ~8.30 Uhr.

2018.07.06 08:12:00 3: Macro_rr_Micha_wakeuptimer1: Wake-up program started for rr_Micha with target time 08:16. Current state: home
2018.07.06 08:12:00 3: Macro_rr_Micha_wakeuptimer1: planning enforced wake-up
2018.07.06 08:16:01 3: Macro_rr_Micha_wakeuptimer1: Wake-up program ended for rr_Micha with target time 08:16. Current state: home
2018.07.06 08:26:00 3: RESIDENTStk rr_Micha_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastWakeup (expLastWakeup=1530879359 > nowRunSec=1530858600)
2018.07.06 08:28:58 3: ESPEasy: set az_rolloauf gpio 5 1
2018.07.06 08:29:32 3: ESPEasy: set az_rolloauf gpio 5 0



Mit der Meldung kann ich leider nicht viel anfangen. Also das Reading das von der Rollosteuerung (DOIF, s.o.) abgefragt wird ist rr_Micha:nextWakeup. Das stand auf 8.16 Uhr (steht jetzt auch bei lastWakeup). Getriggert wurde das Rollo aber zu rr_Micha_wakeuptimer1:wakeupDefaultTime. Ich blicke da nicht durch. Wahrscheinlich verstehe ich da grundsätzlich etwas falsch. Da wundert es mich aber, dass es gestern morgen geklappt hat....

Kann das vielleicht jemand erhellen?

LG
Micha

Du sprichts hier von einem DOIF-Problem. All diese geposteten Meldung haben mit DOIF nichts zu tun. Wenn du eine Antwort zum DOIF-Verhalten haben willst, dann musst du hier list vom DOIF posten.
Titel: Antw:Problem mit DOIF
Beitrag von: Neonblack am 09 Juli 2018, 10:34:45
Zitat von: Damian am 06 Juli 2018, 22:27:05
Du sprichts hier von einem DOIF-Problem. All diese geposteten Meldung haben mit DOIF nichts zu tun. Wenn du eine Antwort zum DOIF-Verhalten haben willst, dann musst du hier list vom DOIF posten.

Hallo Damian. Also, Wecker auf 7.43 Uhr gestellt. Das List vom DOIF vor dem Wecken:

Internals:
   DEF        ([?{sunrise(+1200, "07:00", "09:30")}-09:30] and [[rr_Micha:nextWakeup]] and [HomeStatus] ne "gone")
(set az_rollo open)
DOELSEIF ([{sunset(-1815, "16:00", "22:00")}] and [az_fdgk] eq "closed")
   (set az_rollo closed)
DOELSEIF ([az_fdgk] eq "closed" and [{sunset_abs(0,"16:00","22:00")}-{sunrise(0, "06:00", "09:00")}] and [az_rollo] ne "closed")
   (set az_rollo closed)
DOELSEIF ([az_fdgk] eq "tilted" and [{sunset_abs(0,"16:00","22:00")}-{sunrise(0, "06:00", "09:00")}] and [az_rollo:position] ne "70")
   (set az_rollo position 70)
   MODEL      FHEM
   NAME       az_rollosteuerung
   NR         111
   NTFY_ORDER 50-az_rollosteuerung
   STATE      cmd_3
   TYPE       DOIF
   READINGS:
     2018-07-08 11:44:32   Device          az_fdgk
     2018-07-08 00:38:50   cmd             3
     2018-07-08 00:38:50   cmd_event       az_fdgk
     2018-07-08 00:38:50   cmd_nr          3
     2018-07-08 11:44:32   e_az_fdgk_STATE tilted
     2018-07-08 11:20:24   e_az_rollo_STATE open
     2018-06-29 18:28:39   mode            enabled
     2018-07-08 00:38:50   state           cmd_3
     2018-07-08 13:15:37   timer_01_c01    09.07.2018 07:00:00
     2018-07-08 13:15:37   timer_02_c01    09.07.2018 09:30:00
     2018-07-08 13:29:27   timer_03_c01    09.07.2018 07:43:00
     2018-07-08 13:15:37   timer_04_c02    08.07.2018 22:00:00
     2018-07-08 13:15:37   timer_05_c03    08.07.2018 22:00:00
     2018-07-08 13:15:37   timer_06_c03    09.07.2018 06:00:00
     2018-07-08 13:15:37   timer_07_c04    08.07.2018 22:00:00
     2018-07-08 13:15:37   timer_08_c04    09.07.2018 06:00:00
   Regex:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and DOIF_time_once($hash,2,$wday) and InternalDoIf($hash,'HomeStatus','STATE') ne "gone"
     1          DOIF_time_once($hash,3,$wday) and InternalDoIf($hash,'az_fdgk','STATE') eq "closed"
     2          InternalDoIf($hash,'az_fdgk','STATE') eq "closed" and DOIF_time($hash,4,5,$wday,$hms) and InternalDoIf($hash,'az_rollo','STATE') ne "closed"
     3          InternalDoIf($hash,'az_fdgk','STATE') eq "tilted" and DOIF_time($hash,6,7,$wday,$hms) and ReadingValDoIf($hash,'az_rollo','position') ne "70"
   days:
   devices:
     0           HomeStatus
     1           az_fdgk
     2           az_fdgk az_rollo
     3           az_fdgk az_rollo
     all         HomeStatus az_fdgk az_rollo
   do:
     0:
       0          set az_rollo open
     1:
       0          set az_rollo closed
     2:
       0          set az_rollo closed
     3:
       0          set az_rollo position 70
   helper:
     globalinit 1
     last_timer 8
     sleeptimer -1
   internals:
     0           HomeStatus:STATE
     1           az_fdgk:STATE
     2           az_fdgk:STATE az_rollo:STATE
     3           az_fdgk:STATE
     all         HomeStatus:STATE az_fdgk:STATE az_rollo:STATE
   interval:
     0          -1
     1          0
     4          -1
     5          4
     6          -1
     7          6
   intervalfunc:
   intervaltimer:
   itimer:
     all         rr_Micha
   localtime:
     0          1531112400
     1          1531121400
     2          1531114980
     3          1531080000
     4          1531080000
     5          1531108800
     6          1531080000
     7          1531108800
   perlblock:
   readings:
     3           az_rollo:position
     all         az_rollo:position
   realtime:
     0          07:00:00
     1          09:30:00
     2          07:43:00
     3          22:00:00
     4          22:00:00
     5          06:00:00
     6          22:00:00
     7          06:00:00
   time:
     0          {sunrise(+1200,"07:00","09:30")}
     1          09:30:00
     2          [rr_Micha:nextWakeup]
     3          {sunset(-1815,"16:00","22:00")}
     4          {sunset_abs(0,"16:00","22:00")}
     5          {sunrise(0,"06:00","09:00")}
     6          {sunset_abs(0,"16:00","22:00")}
     7          {sunrise(0,"06:00","09:00")}
   timeCond:
     0          0
     1          0
     2          0
     3          1
     4          2
     5          2
     6          3
     7          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           2
     1           3
     2           4  5
     3           6  7
   triggertime:
     1531080000:
       localtime  1531080000
       hash:
     1531108800:
       localtime  1531108800
       hash:
     1531112400:
       localtime  1531112400
       hash:
     1531114980:
       localtime  1531114980
       hash:
     1531121400:
       localtime  1531121400
       hash:
Attributes:
   do         always
   room       Rolladen



Auszug aus dem Logfile:

2018.07.09 07:39:00 3: Macro_rr_Micha_wakeuptimer1: Wake-up program started for rr_Micha with target time 07:43. Current state: home
2018.07.09 07:39:00 3: Macro_rr_Micha_wakeuptimer1: planning enforced wake-up
2018.07.09 07:43:01 3: Macro_rr_Micha_wakeuptimer1: Wake-up program ended for rr_Micha with target time 07:43. Current state: home
2018.07.09 08:15:52 3: ABFALL Abfallentsorgung - CALENDAR:Kalender triggered, updating ABFALL Abfallentsorgung ...
2018.07.09 08:15:58 3: Aral_Lue: Read callback: Error: read from https://www.clever-tanken.de:443 timed out
2018.07.09 08:16:19 3: [Astro_SunRise] no solution possible for astronomical twilight - maybe the sun never sets below -18 degrees?
2018.07.09 08:26:00 3: RESIDENTStk rr_Micha_wakeuptimer1: won't trigger wake-up program due to non-expired wakeupWaitPeriod threshold since lastWakeup (expLastWakeup=1531136579 > nowRunSec=1531117800)
2018.07.09 08:30:00 3: ESPEasy: set az_rolloauf gpio 5 1
2018.07.09 08:30:33 3: ESPEasy: set az_rolloauf gpio 5 0



Das Rollo ist also wieder erst um 8.30 gefahren.

List vom DOIF nach dem Wecken:

Internals:
   DEF        ([?{sunrise(+1200, "07:00", "09:30")}-09:30] and [[rr_Micha:nextWakeup]] and [HomeStatus] ne "gone")
(set az_rollo open)
DOELSEIF ([{sunset(-1815, "16:00", "22:00")}] and [az_fdgk] eq "closed")
   (set az_rollo closed)
DOELSEIF ([az_fdgk] eq "closed" and [{sunset_abs(0,"16:00","22:00")}-{sunrise(0, "06:00", "09:00")}] and [az_rollo] ne "closed")
   (set az_rollo closed)
DOELSEIF ([az_fdgk] eq "tilted" and [{sunset_abs(0,"16:00","22:00")}-{sunrise(0, "06:00", "09:00")}] and [az_rollo:position] ne "70")
   (set az_rollo position 70)
   MODEL      FHEM
   NAME       az_rollosteuerung
   NR         111
   NTFY_ORDER 50-az_rollosteuerung
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-07-09 08:51:33   Device          az_fdgk
     2018-07-09 08:30:00   cmd             1
     2018-07-09 08:30:00   cmd_event       timer_3
     2018-07-09 08:30:00   cmd_nr          1
     2018-07-09 08:51:33   e_az_fdgk_STATE open
     2018-07-09 08:30:33   e_az_rollo_STATE open
     2018-06-29 18:28:39   mode            enabled
     2018-07-09 08:30:00   state           cmd_1
     2018-07-09 09:30:00   timer_01_c01    10.07.2018 07:00:00
     2018-07-09 09:30:00   timer_02_c01    10.07.2018 09:30:00
     2018-07-09 08:30:00   timer_03_c01    10.07.2018 08:30:00
     2018-07-08 22:00:00   timer_04_c02    09.07.2018 21:59:51
     2018-07-09 06:00:00   timer_05_c03    09.07.2018 22:00:00
     2018-07-09 06:00:00   timer_06_c03    10.07.2018 06:00:00
     2018-07-09 06:00:00   timer_07_c04    09.07.2018 22:00:00
     2018-07-09 06:00:00   timer_08_c04    10.07.2018 06:00:00
   Regex:
   attr:
     cmdState:
     waitdel:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and DOIF_time_once($hash,2,$wday) and InternalDoIf($hash,'HomeStatus','STATE') ne "gone"
     1          DOIF_time_once($hash,3,$wday) and InternalDoIf($hash,'az_fdgk','STATE') eq "closed"
     2          InternalDoIf($hash,'az_fdgk','STATE') eq "closed" and DOIF_time($hash,4,5,$wday,$hms) and InternalDoIf($hash,'az_rollo','STATE') ne "closed"
     3          InternalDoIf($hash,'az_fdgk','STATE') eq "tilted" and DOIF_time($hash,6,7,$wday,$hms) and ReadingValDoIf($hash,'az_rollo','position') ne "70"
   days:
   devices:
     0           HomeStatus
     1           az_fdgk
     2           az_fdgk az_rollo
     3           az_fdgk az_rollo
     all         HomeStatus az_fdgk az_rollo
   do:
     0:
       0          set az_rollo open
     1:
       0          set az_rollo closed
     2:
       0          set az_rollo closed
     3:
       0          set az_rollo position 70
     4:
   helper:
     event      battery: ok,contact: open (to broadcast),open,trigDst_broadcast: noConfig,trigger_cnt: 50
     globalinit 1
     last_timer 8
     sleeptimer -1
     timerdev   
     timerevent timer_3
     triggerDev az_fdgk
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: timer_3
       state: cmd_1
     timerevents:
       timer_3
     timereventsState:
       state: closed
       statePosition: closed
     triggerEvents:
       battery: ok
       contact: open (to broadcast)
       open
       trigDst_broadcast: noConfig
       trigger_cnt: 50
     triggerEventsState:
       battery: ok
       contact: open (to broadcast)
       state: open
       trigDst_broadcast: noConfig
       trigger_cnt: 50
   internals:
     0           HomeStatus:STATE
     1           az_fdgk:STATE
     2           az_fdgk:STATE az_rollo:STATE
     3           az_fdgk:STATE
     all         HomeStatus:STATE az_fdgk:STATE az_rollo:STATE
   interval:
     0          -1
     1          0
     4          -1
     5          4
     6          -1
     7          6
   intervalfunc:
   intervaltimer:
   itimer:
     all         rr_Micha
   localtime:
     0          1531198800
     1          1531207800
     2          1531204200
     3          1531166391
     4          1531166400
     5          1531195200
     6          1531166400
     7          1531195200
   perlblock:
   readings:
     3           az_rollo:position
     all         az_rollo:position
   realtime:
     0          07:00:00
     1          09:30:00
     2          08:30:00
     3          21:59:51
     4          22:00:00
     5          06:00:00
     6          22:00:00
     7          06:00:00
   time:
     0          {sunrise(+1200,"07:00","09:30")}
     1          09:30:00
     2          [rr_Micha:nextWakeup]
     3          {sunset(-1815,"16:00","22:00")}
     4          {sunset_abs(0,"16:00","22:00")}
     5          {sunrise(0,"06:00","09:00")}
     6          {sunset_abs(0,"16:00","22:00")}
     7          {sunrise(0,"06:00","09:00")}
   timeCond:
     0          0
     1          0
     2          0
     3          1
     4          2
     5          2
     6          3
     7          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           2
     1           3
     2           4  5
     3           6  7
   trigger:
   triggertime:
     1531166391:
       localtime  1531166391
       hash:
     1531166400:
       localtime  1531166400
       hash:
     1531195200:
       localtime  1531195200
       hash:
     1531198800:
       localtime  1531198800
       hash:
     1531204200:
       localtime  1531204200
       hash:
     1531207800:
       localtime  1531207800
       hash:
   uiState:
Attributes:
   do         always
   room       Rolladen



Woran mag das liegen? Ich nehme ja an, dass ich etwas falsch mache.... ;)


Viele Grüße
Micha

Titel: Antw:Problem mit DOIF
Beitrag von: Damian am 09 Juli 2018, 12:57:31
Man kann hier erkennen

2018-07-08 13:29:27   timer_03_c01    09.07.2018 07:43:00

, dass der Timer richtig gesetzt war.


Hier ist der Timer schon auf 08:30 gesetzt gewesen:

2018-07-09 08:30:00   timer_03_c01    10.07.2018 08:30:00

Die Zeiten überlegt sich DOIF nicht selbst, die kommen durch das Setzen von rr_Micha:nextWakeup.

Da musst du prüfen, wo überall rr_Micha:nextWakeup gesetzt wird.
Titel: Antw:Problem mit DOIF
Beitrag von: Neonblack am 09 Juli 2018, 13:34:23
Wenn ich das richtig verstanden habe, hat der Timer eine defaultWakeup-Zeit, die jeden Tag gesetzt wird. Möchte man temporär die Weckzeit ändern, setzt man im Timer mit "nextRun" die gewünschte Weckzeit. Das habe ich getan, und der Wert ist ja auch korrekt im Reading gelandet. rr_Micha:nextWakeup - und das ist ja der Wert der für das DOIF von Belang ist - stand somit auf 7.43 Uhr. Ob trotzdem auf DefaultWakeup getriggert wurde (was ja eigentlich nicht möglich sein sollte) oder ob der Timer irgendwann in der Nacht auf DefaultWakeup umstellt (und wenn ja, warum und wann), das ist wohl die Frage.

Das Logfile gibt ja da auch nicht mehr her. Ich lasse heute mal den Eventmonitor mitlaufen, vielleicht bin ich dann morgen schlauer.

Vielen Dank und Gruß
Micha
Titel: Antw:Problem mit DOIF
Beitrag von: Neonblack am 10 Juli 2018, 16:40:39
Hm. Der Wecker war auf 7.06 Uhr gestellt. Der Eventmonitor sagt um 7.06 Uhr:

2018-07-10 07:06:00 RESIDENTS rgr_Bewohner durTimerPresence_cr: 75363
2018-07-10 07:06:00 RESIDENTS rgr_Bewohner durTimerPresence: 1256:02:32
2018-07-10 07:06:01 at atTmp_9_Macro_rr_Micha_wakeuptimer1 Next: 07:11:01
2018-07-10 07:06:01 Global global DEFINED atTmp_9_Macro_rr_Micha_wakeuptimer1
2018-07-10 07:06:01 notify Macro_rr_Micha_wakeuptimer1 stop 07:06 4 1 rr_Micha home
2018-07-10 07:06:02 RESIDENTS rgr_Bewohner residentsTotalWakeup: 0
2018-07-10 07:06:02 RESIDENTS rgr_Bewohner residentsTotalWakeupDevs: -
2018-07-10 07:06:02 RESIDENTS rgr_Bewohner residentsTotalWakeupNames: -
2018-07-10 07:06:02 RESIDENTS rgr_Bewohner durTimerPresence: 1256:02:33
2018-07-10 07:06:02 ROOMMATE rr_Micha wakeup: 0
2018-07-10 07:06:02 dummy rr_Micha_wakeuptimer1 stop triggerpost
2018-07-10 07:06:02 dummy rr_Micha_wakeuptimer1 running: 0
2018-07-10 07:06:02 dummy rr_Micha_wakeuptimer1 nextRun 08:30
2018-07-10 07:06:02 dummy rr_Micha_wakeuptimer1 08:30



Das Rollo ist erst um 8.30 Uhr gefahren. 'Hat jemand vielleicht noch eine Idee?

Viele Grüße
Micha