Hallo zusammen,
ich nutze schon lange das Calendar-Modul. Ich habe meinen iCloud-Kalender angebunden.
defmod Chris_Kalender Calendar ical url http://p21-calendars.icloud.com/published/2/<id> 41220\
attr Chris_Kalender cutoffLaterThan 30d
attr Chris_Kalender cutoffOlderThan 2d
attr Chris_Kalender defaultFormat $S
attr Chris_Kalender room Kalender
Ich habe eine Funktion, die bestimmte Kalendereinträge auswertet und dann Dummy setzt.
sub Kalenderstart_Chris ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Chris_Kalender events filter:uid==\"$uid\"");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Chris_Urlaub ja");
};
if ($Kalendertext =~ /Andrea-spät/) {
fhem("set Chris_Urlaub ja");
};
if ($Kalendertext =~ /Besuch/) {
fhem("set Gast_dummy ja");
};
if ($Kalendertext =~ /Beregnung1/) {
fhem("set du_Beregnung_Kalender_1 on");
};
if ($Kalendertext =~ /Beregnung2/) {
fhem("set du_Beregnung_Kalender_2 on");
};
};
}
sub Kalenderende_Chris ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Chris_Kalender events filter:uid==\"$uid\"");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Chris_Urlaub nein");
};
if ($Kalendertext =~ /Andrea-spät/) {
fhem("set Chris_Urlaub nein");
};
if ($Kalendertext =~ /Besuch/) {
fhem("set Gast_dummy nein");
};
if ($Kalendertext =~ /Beregnung1/) {
fhem("set du_Beregnung_Kalender_1 off");
};
if ($Kalendertext =~ /Beregnung2/) {
fhem("set du_Beregnung_Kalender_2 off");
};
};
}
Aufgerufen wird das Ganze in dieser Art:
defmod n_Chris_Kalender_Ende notify Chris_Kalender:modeEnded:.* {Kalenderende_Chris("$EVENT");;}
In letzter Zeit habe ich häufiger das Problem, dass bei ganztägigen wiederkehrenden Termine kein Endeevent um 00:00 Uhr ausgelöst wird. Der entsprechende Dummy wird dann leider nicht zurückgesetzt.
Im Log sieht man gut, dass das Start-Event kommt:
2020.10.08 00:00:00 3: CUL_HM set Ga.Licht_Vorgarten off
2020.10.08 00:00:00 3: get Chris_Kalender events filter:uid=="444707E4081C01E30F22FF010073B" : Andrea-spät
Andrea-spät
Andrea-spät
Andrea-spät
Andrea-spät
2020.10.08 00:00:00 3: ABFALL Abfall - CALENDAR:AbfallKalender triggered, updating ABFALL Abfall ...
2020.10.08 00:00:35 3: UWZ Unwetterzentrale: UWZ.1811 Done fetching data
Es gibt aber am 09.10.2020 um 00:00 Uhr keine Event.
Die Einträge scheinen aber korrekt ausgelesen werden zu können:
...
444707E4081C01E30F22FF010073B end 08.10.2020 00:00-09.10.2020 00:00 Andrea-spät
...
444707E4081C01E30F22FF010073B upcoming 15.10.2020 00:00-16.10.2020 00:00 Andrea-spät
...
444707E4081C01E30F22FF010073B upcoming 22.10.2020 00:00-23.10.2020 00:00 Andrea-spät
...
444707E4081C01E30F22FF010073B upcoming 29.10.2020 00:00-30.10.2020 00:00 Andrea-spät
...
444707E4081C01E30F22FF010073B upcoming 05.11.2020 00:00-06.11.2020 00:00 Andrea-spät
....
Was kann das sein?
Habt Ihr eine Idee?
Vielen Dank und Gruß
Christian
Nachtrag:
Ich habe gerade gesehen, dass ich vor einigen Tagen schon ein FileLog für Kalenderevents erstellt hatte:
2020-10-08_00:00:00 Chris_Kalender changed: 444707E4081C01E30F22FF010073B start
2020-10-08_00:00:00 Chris_Kalender start: 444707E4081C01E30F22FF010073B
2020-10-08_00:00:00 Chris_Kalender modeUpcoming: D255FDEA8CD543818065C68E15F61196;7686B7353FEF4F46A74B728CF38EA0F5;2050CCBE543A4BE593C9D072ECF85C93;FT_2020_feiertag5f28b7c2d5c22schulferienorg
2020-10-08_00:00:00 Chris_Kalender modeAlarmOrStart: 444707E4081C01E30F22FF010073B
2020-10-08_00:00:00 Chris_Kalender modeChanged: 444707E4081C01E30F22FF010073B
2020-10-08_00:00:00 Chris_Kalender modeStart: 444707E4081C01E30F22FF010073B
2020-10-08_00:00:00 Chris_Kalender modeStarted: 444707E4081C01E30F22FF010073B
2020-10-08_00:00:00 Chris_Kalender modeEnd: 7C1D1551533D461191FD19ECB18FE23D;D34A855DBAF54D52BB2B31B33F492247;444707E2080701E31230FF2C0073A;E16C59904B9C43A286F0AD4BFE5FF623;B81FF2B1901D475981F1416BCE8ED4DD;444707E2050C02970621FF2200739;5AE79F200B91475DB3CAF922795F532A;435DE1EAE6064A14B7C4FC7BD23C227F;8FA22F03602A49E0B5B070D0CE98A3B5;D4C298B0B2E34FFEA8EE25C11230BC19
2020-10-08_00:00:00 Chris_Kalender triggered
2020-10-08_00:00:00 Chris_Kalender nextWakeup: 2020-10-08 05:33:36
2020-10-08_05:33:38 Chris_Kalender retrieved
2020-10-08_05:33:40 Chris_Kalender parsed
2020-10-08_05:33:40 Chris_Kalender calname: Privat
2020-10-08_05:33:40 Chris_Kalender lastUpdate: 2020-10-08 05:33:36
2020-10-08_05:33:40 Chris_Kalender nextUpdate: 2020-10-08 17:00:36
2020-10-08_05:33:40 Chris_Kalender modeUpcoming: D255FDEA8CD543818065C68E15F61196;FT_2020_feiertag5f28b7c2d5c22schulferienorg;7686B7353FEF4F46A74B728CF38EA0F5;2050CCBE543A4BE593C9D072ECF85C93
2020-10-08_05:33:40 Chris_Kalender modeChanged:
2020-10-08_05:33:40 Chris_Kalender modeStarted:
2020-10-08_05:33:40 Chris_Kalender modeEnd: 444707E2080701E31230FF2C0073A;E16C59904B9C43A286F0AD4BFE5FF623;B81FF2B1901D475981F1416BCE8ED4DD;444707E2050C02970621FF2200739;5AE79F200B91475DB3CAF922795F532A;435DE1EAE6064A14B7C4FC7BD23C227F;7C1D1551533D461191FD19ECB18FE23D;D34A855DBAF54D52BB2B31B33F492247;8FA22F03602A49E0B5B070D0CE98A3B5;D4C298B0B2E34FFEA8EE25C11230BC19
2020-10-08_05:33:40 Chris_Kalender triggered
2020-10-08_05:33:40 Chris_Kalender nextWakeup: 2020-10-08 17:00:36
2020-10-08_17:00:36 Chris_Kalender retrieved
2020-10-08_17:00:39 Chris_Kalender parsed
2020-10-08_17:00:39 Chris_Kalender calname: Privat
2020-10-08_17:00:39 Chris_Kalender lastUpdate: 2020-10-08 17:00:36
2020-10-08_17:00:39 Chris_Kalender nextUpdate: 2020-10-09 04:27:36
2020-10-08_17:00:39 Chris_Kalender modeUpcoming: D255FDEA8CD543818065C68E15F61196;FT_2020_feiertag5f28b7c2d5c22schulferienorg;2050CCBE543A4BE593C9D072ECF85C93;7686B7353FEF4F46A74B728CF38EA0F5
2020-10-08_17:00:39 Chris_Kalender modeEnd: 435DE1EAE6064A14B7C4FC7BD23C227F;5AE79F200B91475DB3CAF922795F532A;444707E2050C02970621FF2200739;B81FF2B1901D475981F1416BCE8ED4DD;E16C59904B9C43A286F0AD4BFE5FF623;444707E2080701E31230FF2C0073A;D34A855DBAF54D52BB2B31B33F492247;7C1D1551533D461191FD19ECB18FE23D;D4C298B0B2E34FFEA8EE25C11230BC19;8FA22F03602A49E0B5B070D0CE98A3B5
2020-10-08_17:00:39 Chris_Kalender triggered
2020-10-08_17:00:39 Chris_Kalender nextWakeup: 2020-10-09 00:00:00
2020-10-09_00:00:00 Chris_Kalender changed: 444707E4081C01E30F22FF010073B end
2020-10-09_00:00:00 Chris_Kalender end: 444707E4081C01E30F22FF010073B
2020-10-09_00:00:00 Chris_Kalender modeUpcoming: 2050CCBE543A4BE593C9D072ECF85C93;7686B7353FEF4F46A74B728CF38EA0F5;FT_2020_feiertag5f28b7c2d5c22schulferienorg;D255FDEA8CD543818065C68E15F61196;444707E4081C01E30F22FF010073B
2020-10-09_00:00:00 Chris_Kalender modeAlarmOrStart:
2020-10-09_00:00:00 Chris_Kalender modeChanged: 444707E4081C01E30F22FF010073B
2020-10-09_00:00:00 Chris_Kalender modeStart:
2020-10-09_00:00:00 Chris_Kalender modeEnd: D4C298B0B2E34FFEA8EE25C11230BC19;8FA22F03602A49E0B5B070D0CE98A3B5;7C1D1551533D461191FD19ECB18FE23D;D34A855DBAF54D52BB2B31B33F492247;435DE1EAE6064A14B7C4FC7BD23C227F;5AE79F200B91475DB3CAF922795F532A;B81FF2B1901D475981F1416BCE8ED4DD;444707E2050C02970621FF2200739;E16C59904B9C43A286F0AD4BFE5FF623;444707E2080701E31230FF2C0073A
2020-10-09_00:00:00 Chris_Kalender triggered
2020-10-09_00:00:00 Chris_Kalender nextWakeup: 2020-10-09 04:27:36
2020-10-09_04:27:36 Chris_Kalender retrieved
2020-10-09_04:27:38 Chris_Kalender parsed
2020-10-09_04:27:39 Chris_Kalender calname: Privat
Ich denke, hier fehlte vielleicht das ModeEnded Event.
Bei einem Termin innerhalb eines Tages kommt das ohne Probleme.
7C1D1551533D461191FD19ECB18FE23D end 07.10.2020 16:30-07.10.2020 17:30 Friseur Sylvia Bei uns
2020-10-07_06:39:38 Chris_Kalender nextWakeup: 2020-10-07 16:30:00
2020-10-07_16:30:00 Chris_Kalender changed: 7C1D1551533D461191FD19ECB18FE23D start
2020-10-07_16:30:00 Chris_Kalender start: 7C1D1551533D461191FD19ECB18FE23D
2020-10-07_16:30:00 Chris_Kalender modeUpcoming: D255FDEA8CD543818065C68E15F61196;444707E4081C01E30F22FF010073B;2050CCBE543A4BE593C9D072ECF85C93;7686B7353FEF4F46A74B728CF38EA0F5;FT_2020_feiertag5f28b7c2d5c22schulferienorg
2020-10-07_16:30:00 Chris_Kalender modeAlarmOrStart: 7C1D1551533D461191FD19ECB18FE23D
2020-10-07_16:30:00 Chris_Kalender modeChanged: 7C1D1551533D461191FD19ECB18FE23D
2020-10-07_16:30:00 Chris_Kalender modeStart: 7C1D1551533D461191FD19ECB18FE23D
2020-10-07_16:30:00 Chris_Kalender modeStarted: 7C1D1551533D461191FD19ECB18FE23D
2020-10-07_16:30:00 Chris_Kalender modeEnd: D34A855DBAF54D52BB2B31B33F492247;435DE1EAE6064A14B7C4FC7BD23C227F;5AE79F200B91475DB3CAF922795F532A;B81FF2B1901D475981F1416BCE8ED4DD;444707E2050C02970621FF2200739;E16C59904B9C43A286F0AD4BFE5FF623;444707E2080701E31230FF2C0073A;D4C298B0B2E34FFEA8EE25C11230BC19;8FA22F03602A49E0B5B070D0CE98A3B5
2020-10-07_16:30:00 Chris_Kalender triggered
2020-10-07_16:30:00 Chris_Kalender nextWakeup: 2020-10-07 17:30:00
2020-10-07_17:30:00 Chris_Kalender changed: 7C1D1551533D461191FD19ECB18FE23D end
2020-10-07_17:30:00 Chris_Kalender end: 7C1D1551533D461191FD19ECB18FE23D
2020-10-07_17:30:00 Chris_Kalender modeAlarmOrStart:
2020-10-07_17:30:00 Chris_Kalender modeStart:
2020-10-07_17:30:00 Chris_Kalender modeStarted:
2020-10-07_17:30:00 Chris_Kalender modeEnd: 7C1D1551533D461191FD19ECB18FE23D;D34A855DBAF54D52BB2B31B33F492247;5AE79F200B91475DB3CAF922795F532A;435DE1EAE6064A14B7C4FC7BD23C227F;B81FF2B1901D475981F1416BCE8ED4DD;444707E2050C02970621FF2200739;444707E2080701E31230FF2C0073A;E16C59904B9C43A286F0AD4BFE5FF623;D4C298B0B2E34FFEA8EE25C11230BC19;8FA22F03602A49E0B5B070D0CE98A3B5
2020-10-07_17:30:00 Chris_Kalender modeEnded: 7C1D1551533D461191FD19ECB18FE23D
2020-10-07_17:30:00 Chris_Kalender triggered
2020-10-07_17:30:00 Chris_Kalender nextWakeup: 2020-10-07 18:06:36
2020-10-07_18:06:38 Chris_Kalender retrieved
2020-10-07_18:06:40 Chris_Kalender parsed
2020-10-07_18:06:40 Chris_Kalender calname: Privat
2020-10-07_18:06:40 Chris_Kalender lastUpdate: 2020-10-07 18:06:36
Das mit dem fehlenden Ende-Tag in manchen Kalendern ist ein bekanntes Problem... Ein Lösungsansatz wäre in der cref zu Calendar zu finden:
ZitatPlug-ins
Experimentell, bitte mit Vorsicht nutzen. Ein Plug-In ist ein kleines Perl-Programm, das Termine nebenher verändern kann.
[...]
Zum Ergänzen einer fehlenden Endezeit, kann folgendes Plug-In benutzt werden:
attr MyCalendar onCreateEvent { $e->{end}= $e->{start}+86400 unless(defined($e->{end})) }