...folgend via Widget die Auswahl von Urlaubsbeginn/-ende:
Urlaubsbeginn:
defmod Urlaub_Start DOIF ##
attr Urlaub_Start DbLogExclude .*
attr Urlaub_Start devStateStyle style="color:green;;font-weight:bold;;font-size: 16px;; background: #ffffff"
attr Urlaub_Start event_Readings Urlaub_Start: ( [Urlaub_Timer:Urlaub_Start] )
attr Urlaub_Start room Urlaub
attr Urlaub_Start sortby 1
attr Urlaub_Start stateFormat Urlaub_Start
attr Urlaub_Start uiTable {package ui_Table;;}\
\
"Datum"|widget([Urlaub_Timer:Urlaub_Start],'datetime,theme:"default",format:d.m.Y,timepicker:false,step:5,inline:true')
setstate Urlaub_Start 08.08.2023
setstate Urlaub_Start 2023-10-24 12:56:30 Urlaub_Start 08.08.2023
setstate Urlaub_Start 2023-10-22 18:09:38 cmd 0
setstate Urlaub_Start 2023-10-22 18:09:38 mode enabled
setstate Urlaub_Start 2023-10-22 18:09:38 state initialized
Urlaubsende:
defmod Urlaub_Ende DOIF ##
attr Urlaub_Ende DbLogExclude .*
attr Urlaub_Ende devStateStyle style="color:red;;font-weight:bold;;font-size: 16px;; background: #ffffff "
attr Urlaub_Ende event_Readings Urlaub_Ende: ( [Urlaub_Timer:Urlaub_Ende] )
attr Urlaub_Ende room Urlaub
attr Urlaub_Ende sortby 2
attr Urlaub_Ende stateFormat Urlaub_Ende
attr Urlaub_Ende uiTable {package ui_Table;;}\
\
"Datum"|widget([Urlaub_Timer:Urlaub_Ende],'datetime,theme:"default",format:d.m.Y,timepicker:false,step:5,inline:true')
setstate Urlaub_Ende 02.10.2023
setstate Urlaub_Ende 2023-10-22 19:40:19 Urlaub_Ende 02.10.2023
setstate Urlaub_Ende 2023-10-22 19:11:24 cmd 0
setstate Urlaub_Ende 2023-10-22 19:11:24 mode enabled
setstate Urlaub_Ende 2023-10-22 19:11:24 state initialized
...und jetzt mein Ausführungs-DOIF
defmod Urlaub_Timer DOIF ( [17:01] and ( heute() eq [?$SELF:Urlaub_Start] ) )\
\
( set Heizung off ) \
({Log 3, '$SELF: ... URLAUB-TIMER START '}) \
\
\
\
\
DOELSEIF\
(\
( [23:45] and heute() eq [?$SELF:Urlaub_Ende] )\
)\
\
( set Heizung on ) \
( {Log 3, '$SELF/[$SELF:cmd_nr]: Urlaubs_Ende => Heizung NormalBetrieb '} )\
\
\
\
\
attr Urlaub_Timer DbLogExclude .*
attr Urlaub_Timer do always
attr Urlaub_Timer event-on-change-reading Urlaub_Start,Urlaub_Ende
attr Urlaub_Timer room Urlaub
attr Urlaub_Timer verbose 3
setstate Urlaub_Timer deactivated
setstate Urlaub_Timer 2023-10-24 13:26:58 mode deactivated
setstate Urlaub_Timer 2023-10-24 13:26:58 state deactivated
...heute() in myUtils.pm speichern:
######################
## Rückgabewert ist String !!
sub heute{
my $heute = shift;
my $mday = shift;
my $year = shift;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $heute = sprintf('%02d.%02d.%04d', $mday, $mon+1, $year+1900);
return $heute;
}
.... es wird im Floorplan ein neuer Raum "Urlaub" angezeigt.
Start-/Enddatum & weblink auf Raum "Urlaub" liegt bei mir auf dem Floorplan.
Der Rest sollte selbsterklärend sein ... ;D