FHEM - Hausautomations-Systeme > Unterstützende Dienste

$we und IsWe() liefert immer 1

(1/3) > >>

Nighthawk:
Hallo,

leider bekomme ich in meinem FHEM keine klare Auswertung von Wochentagen/ Wochenenden mehr hin.
$we liefert immer eine 1, unabhängig davon ob Wochenende oder Wochentag ist.
Auch {IsWe()} oder beispielsweise {IsWe(20210929)} gibt eine 1 zurück.

Ich nutze holiday2we.

Das global Device sieht wie folgt aus:


--- Code: ---Internals:
   DEF        no definition
   FD         3
   NAME       global
   NR         1
   STATE      no definition
   TYPE       Global
   currentlogfile ./log/fhem-2021-10-01.log
   logfile    ./log/fhem-%Y-%m-%d.log
Attributes:
   DbLogExclude .*
   altitude   63
   autoload_undefined_devices 1
   autosave   0
   backup_before_update 0
   configfile fhem.cfg
   group      System
   holiday2we Feiertage,Ferien,Urlaub
   language   DE
   latitude   *
   logfile    ./log/fhem-%Y-%m-%d.log
   longitude  *
   modpath    .
   motd       .
   statefile  ./log/fhem.save
   updateInBackground 0
   verbose    3
   version    fhem.pl:24983/2021-09-16
--- Ende Code ---

Und hier die Kalender:

Feiertage:

--- Code: ---Internals:
   DEF        ical file feiertage.ics 86400
   NAME       Feiertage
   NOTIFYDEV  global
   NR         178
   NTFY_ORDER 50-Feiertage
   STATE      triggered
   TYPE       Calendar
   Helper:
     DBLOG:
       lastUpdate:
         logdb:
           TIME       1633077417.15869
           VALUE      2021-10-01 10:36:55
       nextUpdate:
         logdb:
           TIME       1633077417.15869
           VALUE      2021-10-02 10:36:55
       nextWakeup:
         logdb:
           TIME       1633077417.18851
           VALUE      2021-10-02 10:36:55
       state:
         logdb:
           TIME       1633077417.176
           VALUE      triggered
   READINGS:
     2018-04-29 10:49:03   calname         Feiertage
     2021-10-01 10:36:57   lastUpdate      2021-10-01 10:36:55
     2021-10-01 10:36:57   nextUpdate      2021-10-02 10:36:55
     2021-10-01 10:36:57   nextWakeup      2021-10-02 10:36:55
     2021-10-01 10:36:57   state           triggered
Attributes:
   onCreateEvent { $e->{end}= $e->{start}+86400  unless(defined($e->{end}))}

--- Ende Code ---

Inhalt:

--- Code: ---01.01.2021 00:00 24h Neujahr in Deutschland
02.04.2021 00:00 24h Karfreitag in Deutschland
05.04.2021 00:00 24h Ostermontag in Deutschland
01.05.2021 00:00 24h Tag der Arbeit in Deutschland
13.05.2021 00:00 24h Christi Himmelfahrt in Deutschland
24.05.2021 00:00 24h Pfingstmontag in Deutschland
03.10.2021 00:00 24h Tag der Deutschen Einheit
31.10.2021 00:00 25h Reformationstag in Deutschland
25.12.2021 00:00 24h 1. Weihnachtstag in Deutschland
26.12.2021 00:00 24h 2. Weihnachtstag in Deutschland
--- Ende Code ---

Ferien:


--- Code: ---Internals:
   DEF        ical file ./ferien.ics 86400
   FUUID      5cb57027-f33f-357a-e791-53a18df7fb251417
   NAME       Ferien
   NOTIFYDEV  global
   NR         74
   NTFY_ORDER 50-Ferien
   STATE      triggered
   TYPE       Calendar
   Helper:
     DBLOG:
       lastUpdate:
         logdb:
           TIME       1633077415.53248
           VALUE      2021-10-01 10:36:53
       nextUpdate:
         logdb:
           TIME       1633077415.53248
           VALUE      2021-10-02 10:36:53
       nextWakeup:
         logdb:
           TIME       1633077415.56386
           VALUE      2021-10-02 10:36:53
       state:
         logdb:
           TIME       1633077415.55086
           VALUE      triggered
   READINGS:
     2021-10-01 10:36:55   lastUpdate      2021-10-01 10:36:53
     2021-10-01 10:36:55   nextUpdate      2021-10-02 10:36:53
     2021-10-01 10:36:55   nextWakeup      2021-10-02 10:36:53
     2021-10-01 10:36:55   state           triggered
--- Ende Code ---


Inhalt     

--- Code: ---01.02.2021 00:00 48h Winterferien
29.03.2021 00:00 12d Osterferien
14.05.2021 00:00 24h Pfingstferien
25.05.2021 00:00 24h Pfingstferien
22.07.2021 00:00 42d Sommerferien
18.10.2021 00:00 12d Herbstferien
23.12.2021 00:00 16d Weihnachtsferien
--- Ende Code ---


Urlaub:

--- Code: ---Internals:
   DEF        ./FHEM/Urlaub.holiday
   FUUID      61489635-f33f-357a-c76d-9eeb9ad238e61154
   HOLIDAYFILE ./FHEM/Urlaub.holiday
   NAME       Urlaub
   NR         533
   READONLY   0
   STATE      none
   TRIGGERTIME 1633125602.00782
   TYPE       holiday
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1633077396.01682
           VALUE      none
       tomorrow:
         logdb:
           TIME       1633077396.01682
           VALUE      none
       yesterday:
         logdb:
           TIME       1633077396.01682
           VALUE      none
   READINGS:
     2021-10-01 10:36:36   state           none
     2021-10-01 10:36:36   tomorrow        none
     2021-10-01 10:36:36   yesterday       none
--- Ende Code ---

Beta-User:
Deine Calendar-Devices haben in state auch "triggered". Aus Sicht von holiday2we ist das dann "Feiertag", da nicht "none".

Du mußt also entweder dafür sorgen, dass das Reading "state" in diesen Devices korrekt gesetzt wird, oder du musst halt das ganze umpacken. Ich mache das z.B., indem ich aus einem zentralen (ical-) Calendar dann ein paar .holiday-Dateien mache und die als holiday-Devices einbinde (und teils in holiday2we angebe).

Nighthawk:
Hallo Beta-User,

danke für deine Rückmeldung, das Vorgehen widerspricht aber leider dem was ich Automatisierung nennen würde, denn das würde bedeuten das ich jedes Jahr aufs neue die Kalender zusammenpicken müsste.
Um dies zu umgehen habe ich hier in unserem Ort sogar unseren Abfallentsorger so lange getriezt, bis dieser die Entsorgungskalender als ical Datei zur Verfügung gestellt hat :-)

Was mich wundert, früher (vor ~1,5-2 Jahren) hat es bei mir problemlos funktioniert (ich war längere Zeit im Ausland).
Damals habe ich es so eingerichtet dass die Feiertage, sowie Ferien automatisch einmal im Jahr geholt werden und ich nicht händisch nachbessern muss.
Warum setzt das Calendar Modul den state auf triggered (das passiert bei jedem Update)? Das macht doch aus Sicht FHEM keinen Sinn, oder übersehe ich etwas?

Das Verändern vom State-reading stellt sich leider ebenfalls als Problem dar, denn setstate, ändert nicht das Reading und set Ferien state none gibt eine Fehlermeldung zurück "Unknown argument state, choose one of update reload "

Wie komme ich hier an ein korrekt funktionierendes "automatisiertes" System ?

Gruß
Alex

Beta-User:
Also:

IsWe() ist "relativ neu", holiday2we hat früher (mit Value()) auf STATE (das Internal) geschaut, evtl. hast du da mit stateFormat irgendwas hingezaubert? (Ist im list aber nicht erkennbar gewesen).

Eventuell hattest du auch mal dummy-Devices geschaltet und die in h2we eingebunden?

Gebe dir aber recht, dass das automatisch laufen sollte... Bei mir macht das "Zwischenstück" zwischen ical und holiday der Code aus https://forum.fhem.de/index.php/topic,85759.msg1167954.html#msg1167954, wobei wir einen "Familienkalender" haben, in den dann die Abfall-Termine und eben Ferien (und Feiertage, die aber über das "klassische" holiday kommen) und weitere "allgemeingültige Termine", die hier nicht interessieren, importiert sind.

Hier das aktuelle at dazu, dann wird ggf. klarer, dass man (außer für "passende Einträge" im ical zu sorgen) eigentlich nicht viel tun muss:

--- Code: ---define a_make_holiday at *23:30 { return if $wday != 5;;\
 myCalendar2Holiday('Familienkalender','.*[fF]erie.*','ferien','summary',10);;\
myCalendar2Holiday('Familienkalender','.*(Bioabfall|Restmüll).*','muell','summary',10)\
}
--- Ende Code ---

rudolfkoenig:
Ich kenne Calendar nicht.
Was bedeutet "triggered"?
Wuerde es helfen, wenn IsWe neben none auf triggered prueft?

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln