UrlaubsTimer/-definition mit komfortabler widget-Auswahl von Start-/Enddatum

Begonnen von daedalus0815, 24 Oktober 2023, 13:39:14

Vorheriges Thema - Nächstes Thema

daedalus0815

...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