[gelöst]DOIF Abfrage Twilight triggert bei jeder Änderung

Begonnen von Sambadancer, 10 Dezember 2019, 19:34:02

Vorheriges Thema - Nächstes Thema

Sambadancer

Ich hätte da mal eine Frage zu dem DOIF.

Ich würde gerne meine Rollläden mit Twilight weather herunterfahren. In der Zeit von 16:00 bis spätestens 21:00 Uhr.

Soweit funktioniert das auch. Jedoch hab ich im Log gesehen das der Befehl für das runterfahren der Rollläden immer wieder im Abstand von 5 min gesendet wird. Da wahrscheinlich Astro immer alle 5 min neu berechnet und sich die Werte ändern.
Wie kann ich dies verhinder bzw sodass nur einmal gesendet wird sobald der Wert <35 erreicht ?

([?Rollladen_Auto] eq "an" and ([Astro:twilight_weather] <35 and [16:00-21:00|0123456789])) (set Kanal_0 down)

Internals:
   CONDITION  0
   DEF        50.xxxx 8.xxxx 0 0
   FUUID      5deae53a-f33f-133d-0a0d-5ac7f062882e819e
   INDOOR_HORIZON 0
   LATITUDE   50.xxxx
   LONGITUDE  8.xxxx
   NAME       Astro
   NR         31
   STATE      12
   SUNPOS_OFFSET 300
   SWIP       0
   TYPE       Twilight
   VERSUCHE   0
   WEATHER    0
   WEATHER_HORIZON 0
   READINGS:
     2019-12-10 18:21:22   aktEvent        ss_astro
     2019-12-10 19:39:18   azimuth         269.41
     2019-12-10 19:39:18   compasspoint    west-southwest
     2019-12-10 17:04:18   condition       0
     2019-12-10 19:39:18   elevation       -30.37
     2019-12-10 18:21:22   horizon         -18
     2019-12-10 18:21:22   light           0
     2019-12-10 18:21:22   nextEvent       sr_astro
     2019-12-10 18:21:22   nextEventTime   06:12:23
     2019-12-10 17:04:18   sr              08:17:38
     2019-12-10 17:04:18   sr_astro        06:12:23
     2019-12-10 17:04:18   sr_civil        07:33:01
     2019-12-10 17:04:18   sr_indoor       08:17:38
     2019-12-10 17:04:18   sr_naut         06:51:42
     2019-12-10 17:04:18   sr_weather      08:17:38
     2019-12-10 17:04:18   ss              16:16:08
     2019-12-10 17:04:18   ss_astro        18:21:22
     2019-12-10 17:04:18   ss_civil        17:00:45
     2019-12-10 17:04:18   ss_indoor       16:16:08
     2019-12-10 17:04:18   ss_naut         17:42:03
     2019-12-10 17:04:18   ss_weather      16:16:08
     2019-12-10 18:21:22   state           12
     2019-12-10 19:39:18   twilight        0
     2019-12-10 19:39:18   twilight_weather 0
   TIMER:
     Astro_Midnight:
       HASH       Astro
       MODIFIER   Midnight
       NAME       Astro_Midnight
     Astro_sr:
       DEG        0
       HASH       Astro
       LIGHT      4
       MODIFIER   sr
       NAME       Astro_sr
       NAMENEXT   sr_indoor
       STATE      4
       SWIP       0
       TIME       1575962258.03
     Astro_sr_astro:
       DEG        -18
       HASH       Astro
       LIGHT      1
       MODIFIER   sr_astro
       NAME       Astro_sr_astro
       NAMENEXT   sr_naut
       STATE      1
       SWIP       0
       TIME       1575954743
     Astro_sr_civil:
       DEG        -6
       HASH       Astro
       LIGHT      3
       MODIFIER   sr_civil
       NAME       Astro_sr_civil
       NAMENEXT   sr
       STATE      3
       SWIP       0
       TIME       1575959581.02
     Astro_sr_indoor:
       DEG        0
       HASH       Astro
       LIGHT      5
       MODIFIER   sr_indoor
       NAME       Astro_sr_indoor
       NAMENEXT   sr_weather
       STATE      5
       SWIP       0
       TIME       1575962258.04
     Astro_sr_naut:
       DEG        -12
       HASH       Astro
       LIGHT      2
       MODIFIER   sr_naut
       NAME       Astro_sr_naut
       NAMENEXT   sr_civil
       STATE      2
       SWIP       0
       TIME       1575957102.01
     Astro_sr_weather:
       DEG        0
       HASH       Astro
       LIGHT      6
       MODIFIER   sr_weather
       NAME       Astro_sr_weather
       NAMENEXT   ss_weather
       STATE      6
       SWIP       0
       TIME       1575962258.05
     Astro_ss:
       DEG        0
       HASH       Astro
       LIGHT      3
       MODIFIER   ss
       NAME       Astro_ss
       NAMENEXT   ss_civil
       STATE      9
       SWIP       0
       TIME       1575990968.97
     Astro_ss_astro:
       DEG        -18
       HASH       Astro
       LIGHT      0
       MODIFIER   ss_astro
       NAME       Astro_ss_astro
       NAMENEXT   sr_astro
       STATE      12
       SWIP       0
       TIME       1575998482
     Astro_ss_civil:
       DEG        -6
       HASH       Astro
       LIGHT      2
       MODIFIER   ss_civil
       NAME       Astro_ss_civil
       NAMENEXT   ss_naut
       STATE      10
       SWIP       0
       TIME       1575993645.98
     Astro_ss_indoor:
       DEG        0
       HASH       Astro
       LIGHT      4
       MODIFIER   ss_indoor
       NAME       Astro_ss_indoor
       NAMENEXT   ss
       STATE      8
       SWIP       0
       TIME       1575990968.96
     Astro_ss_naut:
       DEG        -12
       HASH       Astro
       LIGHT      1
       MODIFIER   ss_naut
       NAME       Astro_ss_naut
       NAMENEXT   ss_astro
       STATE      11
       SWIP       0
       TIME       1575996123.99
     Astro_ss_weather:
       DEG        0
       HASH       Astro
       LIGHT      5
       MODIFIER   ss_weather
       NAME       Astro_ss_weather
       NAMENEXT   ss_indoor
       STATE      7
       SWIP       0
       TIME       1575990968.95
     Astro_sunpos:
       HASH       Astro
       MODIFIER   sunpos
       NAME       Astro_sunpos
   TW:
     sr:
       DEG        0
       LIGHT      4
       NAME       sr
       NAMENEXT   sr_indoor
       STATE      4
       SWIP       0
       TIME       1575962258.03
     sr_astro:
       DEG        -18
       LIGHT      1
       NAME       sr_astro
       NAMENEXT   sr_naut
       STATE      1
       SWIP       0
       TIME       1575954743
     sr_civil:
       DEG        -6
       LIGHT      3
       NAME       sr_civil
       NAMENEXT   sr
       STATE      3
       SWIP       0
       TIME       1575959581.02
     sr_indoor:
       DEG        0
       LIGHT      5
       NAME       sr_indoor
       NAMENEXT   sr_weather
       STATE      5
       SWIP       0
       TIME       1575962258.04
     sr_naut:
       DEG        -12
       LIGHT      2
       NAME       sr_naut
       NAMENEXT   sr_civil
       STATE      2
       SWIP       0
       TIME       1575957102.01
     sr_weather:
       DEG        0
       LIGHT      6
       NAME       sr_weather
       NAMENEXT   ss_weather
       STATE      6
       SWIP       0
       TIME       1575962258.05
     ss:
       DEG        0
       LIGHT      3
       NAME       ss
       NAMENEXT   ss_civil
       STATE      9
       SWIP       0
       TIME       1575990968.97
     ss_astro:
       DEG        -18
       LIGHT      0
       NAME       ss_astro
       NAMENEXT   sr_astro
       STATE      12
       SWIP       0
       TIME       1575998482
     ss_civil:
       DEG        -6
       LIGHT      2
       NAME       ss_civil
       NAMENEXT   ss_naut
       STATE      10
       SWIP       0
       TIME       1575993645.98
     ss_indoor:
       DEG        0
       LIGHT      4
       NAME       ss_indoor
       NAMENEXT   ss
       STATE      8
       SWIP       0
       TIME       1575990968.96
     ss_naut:
       DEG        -12
       LIGHT      1
       NAME       ss_naut
       NAMENEXT   ss_astro
       STATE      11
       SWIP       0
       TIME       1575996123.99
     ss_weather:
       DEG        0
       LIGHT      5
       NAME       ss_weather
       NAMENEXT   ss_indoor
       STATE      7
       SWIP       0
       TIME       1575990968.95
Attributes:
   alias      Astro
   event-on-change-reading 1
   room       Rollladen_Settings
   useExtWeather MyWeather:cloudCover
   verbose    2

Internals:
   DEF        ([?Rollladen_Auto] eq "an" and ([Astro:twilight_weather] <35 and [16:00-21:00|0123456789])) (set Kanal_0 down)
   FUUID      5d527cf6-f33f-133d-60e3-28816c7e19af434f
   MODEL      FHEM
   NAME       ROLLADEN_runter
   NOTIFYDEV  Astro,global
   NR         23
   NTFY_ORDER 50-ROLLADEN_runter
   STATE      cmd_1
   TYPE       DOIF
   VERSION    20500 2019-11-12 17:54:48
   READINGS:
     2019-12-10 19:39:18   Device          Astro
     2019-12-10 19:39:18   cmd             1
     2019-12-10 19:39:18   cmd_event       Astro
     2019-12-10 19:39:18   cmd_nr          1
     2019-12-10 19:39:18   e_Astro_twilight_weather 0
     2019-12-10 19:38:38   mode            enabled
     2019-12-10 19:39:18   state           cmd_1
     2019-12-10 19:38:38   timer_01_c01    11.12.2019 16:00:00|0123456789
     2019-12-10 19:38:38   timer_02_c01    10.12.2019 21:00:00|0123456789
   Regex:
     accu:
     cond:
       Astro:
         0:
           twilight_weather ^Astro$:^twilight_weather:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'Rollladen_Auto','STATE') eq "an" and (::ReadingValDoIf($hash,'Astro','twilight_weather') <35 and ::DOIF_time($hash,0,1,$wday,$hms,"0123456789"))
   days:
     0          0123456789
     1          0123456789
   do:
     0:
       0          set Kanal_0 down
     1:
   helper:
     DEVFILTER  ^global$|^Astro$
     NOTIFYDEV  global|Astro
     event      azimuth: 269.41,elevation: -30.37,twilight: 0,twilight_weather: 0,compasspoint: west-southwest
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   Astro
     timerevent azimuth: 269.41,elevation: -30.37,twilight: 0,twilight_weather: 0,compasspoint: west-southwest
     triggerDev Astro
     timerevents:
       azimuth: 269.41
       elevation: -30.37
       twilight: 0
       twilight_weather: 0
       compasspoint: west-southwest
     timereventsState:
       azimuth: 269.41
       elevation: -30.37
       twilight: 0
       twilight_weather: 0
       compasspoint: west-southwest
     triggerEvents:
       azimuth: 269.41
       elevation: -30.37
       twilight: 0
       twilight_weather: 0
       compasspoint: west-southwest
     triggerEventsState:
       azimuth: 269.41
       elevation: -30.37
       twilight: 0
       twilight_weather: 0
       compasspoint: west-southwest
   internals:
     all         Rollladen_Auto:STATE
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1576076400
     1          1576008000
   readings:
     all         Astro:twilight_weather
   realtime:
     0          16:00:00
     1          21:00:00
   time:
     0          16:00:00
     1          21:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1576008000:
       localtime  1576008000
       hash:
     1576076400:
       localtime  1576076400
       hash:
   uiState:
   uiTable:
Attributes:
   alias      ROLLADEN_runter
   do         always
   room       Rollladen_Settings

Frank_Huber

bitte ein list von beidem.

Dir fehlt vermutlich ein DOELSEIF.

Gesendet von meinem S60 mit Tapatalk

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Sambadancer

Das do always ist gesetzt. Und nachdem ich change on event reading gesetzt habe ändern sich die Werte überhaupt nicht mehr.

Zumindest im Astro sollte sich doch der Azimuth usw immer noch alle 5 min ändern oder?

Frank_Huber

bitte ein list von beidem.

Gesendet von meinem Doogee S60 mit Tapatalk


amenomade

Zitatevent-on-change-reading 1
Das wird nix. Somit wird erst ein Event generiert, wenn ein Reading mit 1 im ReadingsName sich ändert.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Frank_Huber

Sorry, nicht gesehen dass du oben editiert hast.
Ja, der Klassiker, setze das event-on-change-reading auf .* und mach ein DOELSEIF dazu auf z. B. 00.00 Uhr ohne Ausführungsteil.

Gesendet von meinem Doogee S60 mit Tapatalk


Sambadancer

Dankeschön. Hab alles mal angepasst , bis jetzt sendet es nicht mehr. Mal sehen ob morgen früh die Rollläden auch aufgehen :-)

Vielen Dank für die Hilfe !!

Frank_Huber

Wenn du magst poste ein list vom Hoch doif. [emoji6]

Btw, warum hast die getrennt?
Hoch und runter in eines ohne do always wäre imho einfacher.

Gesendet von meinem Doogee S60 mit Tapatalk


Sambadancer

Ich habe sie getrennt da ich es nicht besser weiß wie das alles in einem zunprogrammieren geht.
Sozusagen ein blutiger Anfänger
  nternals:
   DEF        ([?Rollladen_Auto] eq "an" and ([?Astro:twilight] >50 and [6:00-8:30|8]or [8:00|7])) (set Kanal_0 up) DOELSEIF ([0:00])
   FUUID      5d527db1-f33f-133d-b832-2bcbc9f551976ac4
   MODEL      FHEM
   NAME       ROLLADEN_hoch
   NOTIFYDEV  global
   NR         24
   NTFY_ORDER 50-ROLLADEN_hoch
   STATE      initialized
   TYPE       DOIF
   VERSION    20500 2019-11-12 17:54:48
   READINGS:
     2019-12-10 21:22:37   cmd             0
     2019-12-10 21:22:37   mode            enabled
     2019-12-10 21:22:37   state           initialized
     2019-12-10 21:22:37   timer_01_c01    11.12.2019 06:00:00|8
     2019-12-10 21:22:37   timer_02_c01    11.12.2019 08:30:00|8
     2019-12-10 21:22:37   timer_03_c01    11.12.2019 08:00:00|7
     2019-12-10 21:22:37   timer_04_c02    11.12.2019 00:00:00
   Regex:
     accu:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'Rollladen_Auto','STATE') eq "an" and (::ReadingValDoIf($hash,'Astro','twilight') >50 and ::DOIF_time($hash,0,1,$wday,$hms,"8")or ::DOIF_time_once($hash,2,$wday,"7"))
     1          ::DOIF_time_once($hash,3,$wday)
   days:
     0          8
     1          8
     2          7
   do:
     0:
       0          set Kanal_0 up
     1:
       0         
     2:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 4
     sleeptimer -1
   internals:
     all         Rollladen_Auto:STATE
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1576040400
     1          1576049400
     2          1576047600
     3          1576018800
   realtime:
     0          06:00:00
     1          08:30:00
     2          08:00:00
     3          00:00:00
   time:
     0          6:00
     1          8:30
     2          8:00
     3          0:00
   timeCond:
     0          0
     1          0
     2          0
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1  2
     1           3
   triggertime:
     1576018800:
       localtime  1576018800
       hash:
     1576040400:
       localtime  1576040400
       hash:
     1576047600:
       localtime  1576047600
       hash:
     1576049400:
       localtime  1576049400
       hash:
   uiState:
   uiTable:
Attributes:
   alias      ROLLADEN_hoch
   do         always
   loglevel   5

Frank_Huber

Einfach bei einem davon als DOELSEIF den anderen rein. Bedingung und Ausführungsteil.
Do always nicht setzen
Fertig. [emoji6]

Gesendet von meinem Doogee S60 mit Tapatalk