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
Eventuell kommst du mit: https://fhem.de/commandref_DE.html#DOIF_aggregation weiter
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