DOIF Abfrage eines Termins (Platzhalterproblem)

Begonnen von MarvinLu, 05 Januar 2020, 10:52:03

Vorheriges Thema - Nächstes Thema

MarvinLu

Guten Morgen zusammen,
ich benötige einmal eure Hilfe mit einem DOIF.
Und zwar folgendes:
Ich nutze verschiedene Heizungsszenarien in Abhängigkeit von verschiedenen Schaltern.
Einer davon ist mein "Arbeitsmodus". Diesen Switch würde ich u.a. gerne über meinen Kalender triggern.
Jede Nacht um kurz vor 12 soll abgefragt werden, ob für morgen "Urlaub" im Kalender steht.

Die Readings meines Kalenders sehen folgendermaßen aus:
Internals:
   DEF        Kal_MaArbeiten,Kal_MaWohnung,Kal_MaPrivat 2
   FUUID      5dc3cf51-f33f-dc26-19fc-4243dc4db07d832b
   INTERVAL   43200
   KALENDER   Kal_MaArbeiten,Kal_MaWohnung,Kal_MaPrivat
   NAME       Kalender_Marvin
   NR         146
   NTFY_ORDER 50-Kalender_Marvin
   STATE      t: 324 td: 0 tm: 1
   TYPE       CALVIEW
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1578217410.2798
           VALUE      t: 324 td: 0 tm: 1
   READINGS:
     2020-01-05 10:43:09   c-term          324
     2020-01-05 10:43:09   c-today         0
     2020-01-05 10:43:09   c-tomorrow      1
     2020-01-05 10:43:09   state           t: 324 td: 0 tm: 1
     2020-01-05 10:43:09   t_001_bdate     01.01.2020
     2020-01-05 10:43:09   t_001_btime     00:00
     2020-01-05 10:43:09   t_001_categories
     2020-01-05 10:43:09   t_001_daysleft  -4
     2020-01-05 10:43:09   t_001_daysleftLong in -4 Tagen
     2020-01-05 10:43:09   t_001_description
     2020-01-05 10:43:09   t_001_duration  1296000
     2020-01-05 10:43:09   t_001_edate     16.01.2020
     2020-01-05 10:43:09   t_001_etime     00:00
     2020-01-05 10:43:09   t_001_location 
     2020-01-05 10:43:09   t_001_mode      next
     2020-01-05 10:43:09   t_001_source    Kal_MaWohnung
     2020-01-05 10:43:09   t_001_sourcecolor white
     2020-01-05 10:43:09   t_001_summary   Sofortbonus Gas erhalten? 105€ Grünwelt Energie
     2020-01-05 10:43:09   t_001_timeshort 00:00 - 00:00
     2020-01-05 10:43:09   t_001_weekday   3
     2020-01-05 10:43:09   t_001_weekdayname Mittwoch
     ....
2020-01-05 10:43:09   t_004_bdate     06.01.2020
     2020-01-05 10:43:09   t_004_btime     00:00
     2020-01-05 10:43:09   t_004_categories
     2020-01-05 10:43:09   t_004_daysleft  1
     2020-01-05 10:43:09   t_004_daysleftLong morgen
     2020-01-05 10:43:09   t_004_description
     2020-01-05 10:43:09   t_004_duration  ganztägig
     2020-01-05 10:43:09   t_004_edate     07.01.2020
     2020-01-05 10:43:09   t_004_etime     00:00
     2020-01-05 10:43:09   t_004_location 
     2020-01-05 10:43:09   t_004_mode      next
     2020-01-05 10:43:09   t_004_source    Kal_MaArbeiten
     2020-01-05 10:43:09   t_004_sourcecolor white
     2020-01-05 10:43:09   t_004_summary   Urlaub
     2020-01-05 10:43:09   t_004_timeshort ganztägig
     2020-01-05 10:43:09   t_004_weekday   1
     2020-01-05 10:43:09   t_004_weekdayname Montag
     ...


In diesem Fall ist es Termin 4.
Ich würde das doif gerne mit den Abfragen "t_xxx_daysleft = 1",  t_xxx_source = Kal_MaArbeiten" und "t_xxx_summary = Urlaub" durchführen, bekomme aber die Abfrage nicht hin, wenn es z.B. "t_005_...." statt wie in diesem Fall "t_004_xxx" lautet.
Der Termin mss zusätzlich bei allen drei Abfragen identisch sein, nicht dass die Abfrage zb. auf den Urlaub in 3 Tagen triggert, wenn ein anderes Event die daysleft-Bedingung erfüllt..
Könnte mir da jemand helfen?

EDIT: So sieht es bis jetzt aus, ich muss nur noch herausfinden wie ich die korrekten Readings rauskriege..
defmod at_check_Urlaub at *23:55:00 { if ([Kalender_Marvin:t_xxx_daysleft] == 1 && [Kalender_Marvin:t_xxx_source] eq "Kal_MaArbeiten" && [t_xxx_summary] eq "Urlaub"){\
{ fhem ("set switch_Arbeitsmodus off ");;}\
}\
{ else\
{ fhem ("set switch_Arbeitsmodus on ");;}\
}\
}\


Liebe Grüße und vielen Dank,
Marvin

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MarvinLu

Perfekt, vielen Dank!

Das schaue ich mir mal an, auch wenn ich da vermutlich erst nächste Woche zu kommen werde.

Liebe Grüße, Marvin