FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: masterpete23 am 15 Dezember 2018, 23:23:56

Titel: DOIF und Kalander
Beitrag von: masterpete23 am 15 Dezember 2018, 23:23:56
Hallo,

ich versuche gerade ein bestehendes DOIF (bzw. mehrere ) mit der Berücksichtigung eines Ferienkalenders nachzurüsten.

Ist es möglich, wenn ja wie? Ist eine Anfängerfrage - ich war mir nicht sicher, wo ich es posten soll.

DOIF:
Internals:
   DEF        ([07:00|8] or [09:00|7]) (set Sonoff_Aquarium on) DOELSEIF ([20:00|8] or [20:30|7]) (set Sonoff_Aquarium off)
   MODEL      FHEM
   NAME       dAquarium
   NR         534
   NTFY_ORDER 50-dAquarium
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-12-15 20:30:00   cmd             2
     2018-12-15 20:30:00   cmd_event       timer_4
     2018-12-15 20:30:00   cmd_nr          2
     2018-10-12 21:57:48   mode            enabled
     2018-12-15 20:30:00   state           cmd_2
     2018-12-15 07:00:00   timer_01_c01    16.12.2018 07:00:00|8
     2018-12-15 09:00:00   timer_02_c01    16.12.2018 09:00:00|7
     2018-12-15 20:00:01   timer_03_c02    16.12.2018 20:00:00|8
     2018-12-15 20:30:00   timer_04_c02    16.12.2018 20:30:00|7
   Regex:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday,"8") or ::DOIF_time_once($hash,1,$wday,"7")
     1          ::DOIF_time_once($hash,2,$wday,"8") or ::DOIF_time_once($hash,3,$wday,"7")
   days:
     0          8
     1          7
     2          8
     3          7
   devices:
   do:
     0:
       0          set Sonoff_Aquarium on
     1:
       0          set Sonoff_Aquarium off
     2:
   helper:
     event      timer_4
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   
     timerevent timer_4
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: timer_4
       state: cmd_2
     timerevents:
       timer_4
     triggerEvents:
       timer_4
   internals:
   interval:
   intervalfunc:
   itimer:
   localtime:
     0          1544940000
     1          1544947200
     2          1544986800
     3          1544988600
   perlblock:
   readings:
   realtime:
     0          07:00:00
     1          09:00:00
     2          20:00:00
     3          20:30:00
   time:
     0          07:00:00
     1          09:00:00
     2          20:00:00
     3          20:30:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1
     1           2  3
   triggertime:
     1544940000:
       localtime  1544940000
       hash:
     1544947200:
       localtime  1544947200
       hash:
     1544986800:
       localtime  1544986800
       hash:
     1544988600:
       localtime  1544988600
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Timer


Kalender, dummy,notify:


define NI_Ferien Calendar ical url http://i.cal.to/ical/68/niedersachsen/ferien/xxxxxxxxxxxxxxxxxxxx.ics 86400
define NI_Ferientag dummy
define NI_Ferien.notify notify NI_Ferien { \
        fhem "set NI_Ferientag " . (ReadingsVal("NI_Ferien", "modeStart", "") =~ "ferien" ? 1: 0) }

Titel: Antw:DOIF und Kalander
Beitrag von: Ellert am 16 Dezember 2018, 00:07:46
Ergänze Dein DOIF um die Auslöserangabe

[NI_Ferien:modeStart] =~ "ferien"

Weitere Infos in der deutschsprachigen Befehlsreferenz zu DOIF https://commandref.fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
Titel: Antw:DOIF und Kalander
Beitrag von: masterpete23 am 16 Dezember 2018, 01:00:21
Also so?
In der Woche wenn nicht Ferien sind 07:00 und wochenende or in den Ferien 9 Uhr.

Die hintere würde ich danach entsprechend anpassen :)
define dAquarium DOIF (([07:00|8] and ([NI_Ferien:modeStart] !~ "ferien") or ([09:00|7] and ([NI_Ferien:modeStart] =~ "ferien"))) (set Sonoff_Aquarium on) DOELSEIF ([20:00|8] or [20:30|7]) (set Sonoff_Aquarium off)

Zitat von: Ellert am 16 Dezember 2018, 00:07:46
Ergänze Dein DOIF um die Auslöserangabe

[NI_Ferien:modeStart] =~ "ferien"

Weitere Infos in der deutschsprachigen Befehlsreferenz zu DOIF https://commandref.fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
Titel: Antw:DOIF und Kalander
Beitrag von: amenomade am 16 Dezember 2018, 01:08:27
Ja, sollte gehen
Titel: Antw:DOIF und Kalander
Beitrag von: masterpete23 am 17 Dezember 2018, 19:09:48
Müssten nicht jeweils noch eine Klammer zu.

Also falsch:

richtig:

define dAquarium DOIF (([07:00|8] and ([NI_Ferien:modeStart] !~ "ferien") or ([09:00|7] and ([NI_Ferien:modeStart] =~ "ferien"))) (set Sonoff_Aquarium on) DOELSEIF (([20:00|8] and ([NI_Ferien:modeStart] !~ "ferien") (or [20:30|7]and ([NI_Ferien:modeStart] =~ "ferien"))) (set Sonoff_Aquarium off)

Oder?

define dAquarium DOIF (([07:00|8] and ([NI_Ferien:modeStart] !~ "ferien") or ([09:00|7] and ([NI_Ferien:modeStart] =~ "ferien")))) (set Sonoff_Aquarium on) DOELSEIF (([20:00|8] and ([NI_Ferien:modeStart] !~ "ferien") (or [20:30|7]and ([NI_Ferien:modeStart] =~ "ferien")))) (set Sonoff_Aquarium off)
Titel: Antw:DOIF und Kalander
Beitrag von: Damian am 17 Dezember 2018, 19:18:21

define dAquarium DOIF ([07:00|8] and [NI_Ferien:modeStart] !~ "ferien" or [09:00|7] and [NI_Ferien:modeStart] =~ "ferien")...

sollte genau so gut funktionieren.
Titel: Antw:DOIF und Kalander
Beitrag von: masterpete23 am 20 Dezember 2018, 16:58:48
ich glaube ich habe einen Denkfehler oder?

Es soll Wochentags wenn keine Ferien um 7 Uhr angeschaltet werden und wenn Ferien sind ODER es Wochenende ist um 9 Uhr.
Was wäre da richtig?
Titel: Antw:DOIF und Kalander
Beitrag von: Damian am 20 Dezember 2018, 17:50:25
Zitat von: masterpete23 am 20 Dezember 2018, 16:58:48
ich glaube ich habe einen Denkfehler oder?

Es soll Wochentags wenn keine Ferien um 7 Uhr angeschaltet werden und wenn Ferien sind ODER es Wochenende ist um 9 Uhr.
Was wäre da richtig?

So, wie von mir vorgeschlagen.
Titel: Antw:DOIF und Kalander
Beitrag von: Ellert am 20 Dezember 2018, 17:51:15
Zitat von: masterpete23 am 20 Dezember 2018, 16:58:48
ich glaube ich habe einen Denkfehler oder?

Es soll Wochentags wenn keine Ferien um 7 Uhr angeschaltet werden und wenn Ferien sind ODER es Wochenende ist um 9 Uhr.
Was wäre da richtig?
Ich verwende Calendar nicht zum Steuern, daher weiss ich nicht was Calendar liefert, von der Verknüpfung her müsste es so klappen
Zitatdefine dAquarium DOIF ([07:00|8] and [NI_Ferien:modeStart] !~ "ferien" or [09:00|7] or [09:00] and [NI_Ferien:modeStart] =~ "ferien")...
Titel: Antw:DOIF und Kalander
Beitrag von: masterpete23 am 20 Dezember 2018, 19:14:19
Danke, ich werde es testen :)