Local Time & UTC (Pilotenuhr) in FHEM oder FTUI

Begonnen von SebastianStorb, 28 August 2021, 16:20:05

Vorheriges Thema - Nächstes Thema

SebastianStorb

Ich hätte gerne in meiner FTUI eine Uhr mit Localzeit und eine Uhr mit UTC. Bisher habe ich es so gelöst:
<li data-row="1" data-col="1" data-sizey="1" data-sizex="1">
                <header>Uhr</header>
                <div class="sheet">
                    <div class="row">
                        <div style="color:#f7a816"
data-type="clock"
data-format="H:i:s"
data-interval="100"
class="container bigger">
</div>
<div style="color:#044d01"
data-type="clock"
data-format="H:i:s"
data-interval="100"
data-offset="-1"
class="container bigger">
</div>
<div data-type="clock"
data-format="D d.m.Y"
data-interval="100"
class="darker large">
</div>
                </div>
            </li>


Ich finde es jedoch sehr lästig 2x ich Jahr die Zeitzone (data-offset) ändern zu müssen (-1 bzw -2 je nach Sommer oder Winterzeit).

Lässt sich das automatisieren oder anders lösen?

pwlr

Moin,

ich habe mir in der 99_myUtils eine Routine geschrieben, die täglich per at um 03:15 Uhr aufgerufen wird.


....
# $Sommerzeit = 1 bei Sommerzeit
# $Sommerzeit = 0 bei Winterzeit
my ($Sekunde, $Minute, $Stunde, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);

...


Mit $Sommerzeit hättest Du dann eine Basis für Deinen gesuchten Offset. Ich habe aber keine Ahnung, wie Du das in Deinen Code integrieren kannst - sorry !

Wenn es aktueller sein soll, muss die Routine auch noch kurz nach 02:00 Uhr aufgerufen werden, das brauche ich aber nicht.

Moin
Bernd



SebastianStorb

Vielen Dank - etwas ähnliches habe ich schon, ist aber nicht das was ich suchte:

Internals:
   DEF        (
   my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);
   [00:00] and
   (
      ($mon == 2 && $mday >= 20 )
      || $mon == 3
      || $mon == 4
      || ( $mon == 5 && $mday < 21 )
   )
)

DOELSEIF
(
   my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);
   [00:00] and
   (   ( $mon == 5 && $mday >= 21 )
      || $mon == 6
      || $mon == 7
      || ( $mon == 8 && $mday < 22 ) )
)

DOELSEIF
(
   my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);
   [00:00] and
   (   ( $mon == 8 && $mday >= 22 )
      || $mon == 9
      || $mon == 10
      || ( $mon == 11 && $mday < 21 ) )
)

DOELSEIF
(
   my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);
   [00:00] and
   (   ( $mon == 11 && $mday >= 21 )
      || $mon == 0
      || $mon == 1
      || ( $mon == 2 && $mday < 20 ) )
)
   FUUID      5f6b1317-f33f-ec85-2ba0-f0a513420371e2a4
   FVERSION   98_DOIF.pm:0.249050/2021-09-01
   MODEL      FHEM
   NAME       Season
   NOTIFYDEV  global
   NR         587
   NTFY_ORDER 50-Season
   STATE      Sommer
   TYPE       DOIF
   VERSION    24905 2021-09-01 18:35:54
   READINGS:
     2021-06-22 00:00:00   cmd             2
     2021-06-22 00:00:00   cmd_event       timer_2
     2021-06-22 00:00:00   cmd_nr          2
     2020-09-23 11:27:40   mode            enabled
     2021-06-22 00:00:00   state           summer
     2021-09-05 00:00:00   timer_01_c01    06.09.2021 00:00:00
     2021-09-05 00:00:00   timer_02_c02    06.09.2021 00:00:00
     2021-09-05 00:00:00   timer_03_c03    06.09.2021 00:00:00
     2021-09-05 00:00:00   timer_04_c04    06.09.2021 00:00:00
   Regex:
     accu:
     collect:
   attr:
     cmdState:
       0:
         spring
       1:
         summer
       2:
         autumn
       3:
         winter
     waitdel:
   condition:
     0              my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);    ::DOIF_time_once($hash,0,$wday) and    (       ($mon == 2 && $mday >= 20 )       || $mon == 3       || $mon == 4       || ( $mon == 5 && $mday < 21 )    )
     1              my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);    ::DOIF_time_once($hash,1,$wday) and    (   ( $mon == 5 && $mday >= 21 )       || $mon == 6       || $mon == 7       || ( $mon == 8 && $mday < 22 ) )
     2              my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);    ::DOIF_time_once($hash,2,$wday) and    (   ( $mon == 8 && $mday >= 22 )       || $mon == 9       || $mon == 10       || ( $mon == 11 && $mday < 21 ) )
     3              my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);    ::DOIF_time_once($hash,3,$wday) and    (   ( $mon == 11 && $mday >= 21 )       || $mon == 0       || $mon == 1       || ( $mon == 2 && $mday < 20 ) )
   days:
   do:
     0:
       0         
     1:
       0         
     2:
       0         
     3:
       0         
     4:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     event      timer_2
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   
     timerevent timer_2
     triggerDev
     timerevents:
       timer_2
     timereventsState:
       timer_2
     triggerEvents:
       timer_2
     triggerEventsState:
       timer_2
   interval:
   intervalfunc:
   localtime:
     0          1630879200
     1          1630879200
     2          1630879200
     3          1630879200
   perlblock:
   realtime:
     0          00:00:00
     1          00:00:00
     2          00:00:00
     3          00:00:00
   time:
     0          00:00:00
     1          00:00:00
     2          00:00:00
     3          00:00:00
   timeCond:
     0          0
     1          1
     2          2
     3          3
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0
     1           1
     2           2
     3           3
   triggertime:
     1630879200:
       localtime  1630879200
       hash:
   uiState:
   uiTable:
Attributes:
   cmdState   spring|summer|autumn|winter
   event-on-change-reading state
   eventMap   spring:Frühling summer:Sommer autumn:Herbst winter:Winter initialized:---
   group      Jahreszeit
   icon       scene_garden
   room       Kalender