Zitat von: Salvi5 am 01 April 2023, 11:16:56Hallo,
ich habe ein Doif A welches devices von Sonnenaufgang bis Sonnenuntergang schaltet.
Unter bestimmten Bedingungen wird Doif A von einem Doif B disabled bzw. initialized.
Der Trigger für Doif A erfolgt ja nur genau bei Sonnenaufgang bzw. Sonnenuntergang.
Wie bekomme ich nun das Doif A wenn es wieder initialisiert wird, dazu, sofort zu checken, ob es gerade vor oder nach Sonnenuntergang ist?
Gruß Mike
Du musst ein Zeitintervall definieren https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen
Zitat von: Damian am 01 April 2023, 12:37:35Du musst ein Zeitintervall definieren https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitintervallen
Das habe ich doch...
define Tag_Nacht_DOIF DOIF ([{sunset(-3600)}-{sunrise(+3600)}])\
(set Herz on) \
(set Bild on)\
(set Kuechenrollo pct 100)\
(set Balkonrollo pct 100) \
(set Arndrollo pct 100) \
(set Flasche on) \
(set Aussensteckdose on)\
(set Treppenlicht on)\
(set Potterswitch on)\
(set Remote_Teich_17 on)\
DOELSEIF\
([{sunset(+3600)}])\
(set Buerorollo pct 100) \
DOELSE\
(set Buerorollo pct 0) \
(set Kuechenrollo pct 30) \
(set Balkonrollo pct 0)\
(set Arndrollo pct 0) \
(set Herz off)\
(set Bild off)\
(set Aussensteckdose off)\
(set Treppenlicht off)\
(set Potterswitch off)\
(set Remote_Teich_17 off)
attr Tag_Nacht_DOIF room Programme
attr Tag_Nacht_DOIF wait 0,2,2,2,2,2,2,2,2,2,2:0:0,2,2,2,2,2,2,2,2,2,2
# DEF ([{sunset(-3600)}-{sunrise(+3600)}])
#(set Herz on)
#(set Bild on)
#(set Kuechenrollo pct 100)
#(set Balkonrollo pct 100)
#(set Arndrollo pct 100)
#(set Flasche on)
#(set Aussensteckdose on)
#(set Treppenlicht on)
#(set Potterswitch on)
#(set Remote_Teich_17 on)
#DOELSEIF
#([{sunset(+3600)}])
#(set Buerorollo pct 100)
#DOELSE
#(set Buerorollo pct 0)
#(set Kuechenrollo pct 30)
#(set Balkonrollo pct 0)
#(set Arndrollo pct 0)
#(set Herz off)
#(set Bild off)
#(set Aussensteckdose off)
#(set Treppenlicht off)
#(set Potterswitch off)
#(set Remote_Teich_17 off)
# FUUID 5ed6bf2c-f33f-8836-b478-e185159da1be9989
# MODEL FHEM
# NAME Tag_Nacht_DOIF
# NOTIFYDEV global
# NR 175
# NTFY_ORDER 50-Tag_Nacht_DOIF
# STATE cmd_3
# TYPE DOIF
# VERSION 27262 2023-02-21 19:36:39
# eventCount 359
# Helper:
# DBLOG:
# cmd:
# logdb:
# TIME 1680326617.81128
# VALUE 3.10
# cmd_event:
# logdb:
# TIME 1680326617.81128
# VALUE timer_2
# cmd_nr:
# logdb:
# TIME 1680326617.81128
# VALUE 3
# cmd_seqnr:
# logdb:
# TIME 1680326617.81128
# VALUE 10
# last_cmd:
# logdb:
# TIME 1680233137.17527
# VALUE cmd_2
# mode:
# logdb:
# TIME 1680266778.99788
# VALUE enabled
# state:
# logdb:
# TIME 1680337689.7715
# VALUE checkall
# wait_timer:
# logdb:
# TIME 1680326617.7237
# VALUE no timer
# READINGS:
# 2023-04-01 07:23:37 cmd 3.10
# 2023-04-01 07:23:37 cmd_event timer_2
# 2023-04-01 07:23:37 cmd_nr 3
# 2023-04-01 07:23:37 cmd_seqnr 10
# 2023-03-31 05:25:37 last_cmd cmd_2
# 2023-03-31 14:46:18 mode enabled
# 2023-04-01 07:23:37 state cmd_3
# 2023-04-01 07:23:19 timer_01_c01 01.04.2023 19:23:17
# 2023-04-01 07:23:19 timer_02_c01 02.04.2023 07:21:02
# 2023-03-31 21:21:35 timer_03_c02 01.04.2023 21:23:17
# 2023-04-01 07:23:37 wait_timer no timer
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# attr:
# cmdState:
# wait:
# 0:
# 0
# 2
# 2
# 2
# 2
# 2
# 2
# 2
# 2
# 2
# 2
# 1:
# 0
# 2:
# 0
# 2
# 2
# 2
# 2
# 2
# 2
# 2
# 2
# 2
# 2
# waitdel:
# condition:
# 0 ::DOIF_time($hash,0,1,$wday,$hms)
# 1 ::DOIF_time_once($hash,2,$wday)
# days:
# do:
# 0:
# 0 set Herz on
# 1 set Bild on
# 2 set Kuechenrollo pct 100
# 3 set Balkonrollo pct 100
# 4 set Arndrollo pct 100
# 5 set Flasche on
# 6 set Aussensteckdose on
# 7 set Treppenlicht on
# 8 set Potterswitch on
# 9 set Remote_Teich_17 on
# 1:
# 0 set Buerorollo pct 100
# 2:
# 0 set Buerorollo pct 0
# 1 set Kuechenrollo pct 30
# 2 set Balkonrollo pct 0
# 3 set Arndrollo pct 0
# 4 set Herz off
# 5 set Bild off
# 6 set Aussensteckdose off
# 7 set Treppenlicht off
# 8 set Potterswitch off
# 9 set Remote_Teich_17 off
# helper:
# NOTIFYDEV global
# event timer_2
# globalinit 1
# last_timer 3
# sleepdevice timer_2
# sleepsubtimer -1
# sleeptimer -1
# timerdev
# timerevent timer_2
# timerevents
# timereventsState
# triggerDev
# interval:
# 0 -1
# 1 0
# intervalfunc:
# intervaltimer:
# localtime:
# 0 1680369797
# 1 1680412862
# 2 1680376997
# realtime:
# 0 19:23:17
# 1 07:21:02
# 2 21:23:17
# time:
# 0 {sunset(-3600)}
# 1 {sunrise(+3600)}
# 2 {sunset(+3600)}
# timeCond:
# 0 0
# 1 0
# 2 1
# timer:
# 0 0
# 1 0
# 2 0
# timers:
# 0 0 1
# 1 2
# triggertime:
# 1680369797:
# localtime 1680369797
# hash:
# 1680376997:
# localtime 1680376997
# hash:
# 1680412862:
# localtime 1680412862
# hash:
# uiState:
# uiTable:
#
setstate Tag_Nacht_DOIF cmd_3
setstate Tag_Nacht_DOIF 2023-04-01 07:23:37 cmd 3.10
setstate Tag_Nacht_DOIF 2023-04-01 07:23:37 cmd_event timer_2
setstate Tag_Nacht_DOIF 2023-04-01 07:23:37 cmd_nr 3
setstate Tag_Nacht_DOIF 2023-04-01 07:23:37 cmd_seqnr 10
setstate Tag_Nacht_DOIF 2023-03-31 05:25:37 last_cmd cmd_2
setstate Tag_Nacht_DOIF 2023-03-31 14:46:18 mode enabled
setstate Tag_Nacht_DOIF 2023-04-01 07:23:37 state cmd_3
setstate Tag_Nacht_DOIF 2023-04-01 07:23:19 timer_01_c01 01.04.2023 19:23:17
setstate Tag_Nacht_DOIF 2023-04-01 07:23:19 timer_02_c01 02.04.2023 07:21:02
setstate Tag_Nacht_DOIF 2023-03-31 21:21:35 timer_03_c02 01.04.2023 21:23:17
setstate Tag_Nacht_DOIF 2023-04-01 07:23:37 wait_timer no timer
...aber ich denke set doif_a checkall ist das was ich suche. Es hat nur beim Probieren nicht funktioniert, weil kein do always gesetzt war. Bin auch manchmal bissl blöd.
Gruß Mike
OK, dann kannst du startup-Attribut nutzen: https://fhem.de/commandref_DE.html#DOIF_startup
Zitat von: Damian am 01 April 2023, 13:03:28OK, dann kannst du startup-Attribut nutzen: https://fhem.de/commandref_DE.html#DOIF_startup
Ich denke, wir haben aneinander vorbeigeredet, aber da es augenscheinlich jetzt funktioniert und vielleicht irgendwem noch hilft, hier eine kurze Erklärung:
Doif_A fährt meine Rollos von Sonnenaufgang bis Sonnenuntergang hoch, ansonsten runter. Paar Lichter werden dabei auch noch geschaltet.
Doif_B schaltet mein Haus ab, wenn ich es weit genug verlasse (geofence) und fährt die Rollos runter
und disabled Doif_A. Wenn ich heim komme fährt es die Rollos wieder hoch und initialisiert Doif_A.
So war es bisher und hat gut funktioniert. Allerdings hat mich geärgert, dass, wenn ich Nachts heimkomme, die Rollos trotzdem hochgefahren werden, also habe ich einen Weg gesucht, Doif_A zu sagen, es möge sich doch bitte informieren, ob gerade Tag oder Nacht ist, wenn es initialisiert wird.
Den Befehl set Doif_A checkall hatte ich zu diesem Zweck ausprobiert, der hat aber nicht funktioniert (auf Grund meiner Blödheit)...
Wenn man es richtig macht, scheint checkall genau das zu bewirken, was ich will.
Dass checkall das Doif nicht enabled, ist blöd, lässt sich aber durch ein vorgesetztes set Doif_A initialize lösen.
Der Langzeittest steht noch aus, aber ich betrachte das Thema als gelöst. Wenn jemandem ein Denkfehler auffällt, immer her damit!
Vielen Dank an alle Beteiligten.
Gruß Mike