Calendar: Holt nicht vorhandene Termine

Begonnen von krosenkr, 25 November 2023, 16:15:39

Vorheriges Thema - Nächstes Thema

krosenkr

Hallo,
ich steuere seit Jahren sehr erfolgreich meine Heizung per Google-Kalender.
Seit letzter Woche stelle ich fast dass Calendar Termine beinhaltet, welche nicht im Google- Kalender sind (und es auch nie waren).
Versuchsweise habe ich 'ignoreCancelled' aktiviert aber kann ja nichts bringen, wenn solch ein Termin jemals exisitiert hat.

defmod CCFG_Heizung Calendar ical url https://calendar.google.com/calendar/ical/XXX.ics 86400
attr CCFG_Heizung hideOlderThan 0
attr CCFG_Heizung ignoreCancelled 1
attr CCFG_Heizung onCreateEvent { $e->{start}= $e->{start}-main::AttrVal($e->{summary}, "Vorheizzeit", 60) }
attr CCFG_Heizung room 15_Kalender_2

Der 3. Eintrag (Coffeebar von 20:00 Uhr heute bis 7:30 Uhr morgen) existiert nicht im Google- Kalender:
defmod Kalender_2 CALVIEW CCFG_Heizung 1
attr Kalender_2 maxreadings 15
attr Kalender_2 modes next
attr Kalender_2 room 15_Kalender_2
attr Kalender_2 verbose 1

setstate Kalender_2 t: 15 td: 5 tm: 10
setstate Kalender_2 2023-11-25 16:08:33 c-term 15
setstate Kalender_2 2023-11-25 16:08:33 c-today 5
setstate Kalender_2 2023-11-25 16:08:33 c-tomorrow 10
setstate Kalender_2 2023-11-25 16:08:33 state t: 15 td: 5 tm: 10
setstate Kalender_2 2023-11-25 16:08:33 t_001_bdate 25.11.2023
setstate Kalender_2 2023-11-25 16:08:33 t_001_btime 14:00
setstate Kalender_2 2023-11-25 16:08:33 t_001_categories
setstate Kalender_2 2023-11-25 16:08:33 t_001_daysleft 0
setstate Kalender_2 2023-11-25 16:08:33 t_001_daysleftLong heute
setstate Kalender_2 2023-11-25 16:08:33 t_001_description
setstate Kalender_2 2023-11-25 16:08:33 t_001_duration 10800
setstate Kalender_2 2023-11-25 16:08:33 t_001_edate 25.11.2023
setstate Kalender_2 2023-11-25 16:08:33 t_001_etime 17:00
setstate Kalender_2 2023-11-25 16:08:33 t_001_location
setstate Kalender_2 2023-11-25 16:08:33 t_001_mode next
setstate Kalender_2 2023-11-25 16:08:33 t_001_source CCFG_Heizung
setstate Kalender_2 2023-11-25 16:08:33 t_001_sourcecolor white
setstate Kalender_2 2023-11-25 16:08:33 t_001_summary Mufu
setstate Kalender_2 2023-11-25 16:08:33 t_001_timeshort 14:00 - 17:00
setstate Kalender_2 2023-11-25 16:08:33 t_001_weekday 6
setstate Kalender_2 2023-11-25 16:08:33 t_001_weekdayname Samstag
setstate Kalender_2 2023-11-25 16:08:33 t_002_bdate 25.11.2023
setstate Kalender_2 2023-11-25 16:08:33 t_002_btime 14:15
setstate Kalender_2 2023-11-25 16:08:33 t_002_categories
setstate Kalender_2 2023-11-25 16:08:33 t_002_daysleft 0
setstate Kalender_2 2023-11-25 16:08:33 t_002_daysleftLong heute
setstate Kalender_2 2023-11-25 16:08:33 t_002_description
setstate Kalender_2 2023-11-25 16:08:33 t_002_duration 9900
setstate Kalender_2 2023-11-25 16:08:33 t_002_edate 25.11.2023
setstate Kalender_2 2023-11-25 16:08:33 t_002_etime 17:00
setstate Kalender_2 2023-11-25 16:08:33 t_002_location
setstate Kalender_2 2023-11-25 16:08:33 t_002_mode next
setstate Kalender_2 2023-11-25 16:08:33 t_002_source CCFG_Heizung
setstate Kalender_2 2023-11-25 16:08:33 t_002_sourcecolor white
setstate Kalender_2 2023-11-25 16:08:33 t_002_summary Kigo3
setstate Kalender_2 2023-11-25 16:08:33 t_002_timeshort 14:15 - 17:00
setstate Kalender_2 2023-11-25 16:08:33 t_002_weekday 6
setstate Kalender_2 2023-11-25 16:08:33 t_002_weekdayname Samstag
setstate Kalender_2 2023-11-25 16:08:33 t_003_bdate 25.11.2023
setstate Kalender_2 2023-11-25 16:08:33 t_003_btime 20:00
setstate Kalender_2 2023-11-25 16:08:33 t_003_categories
setstate Kalender_2 2023-11-25 16:08:33 t_003_daysleft 0
setstate Kalender_2 2023-11-25 16:08:33 t_003_daysleftLong heute
setstate Kalender_2 2023-11-25 16:08:33 t_003_description
setstate Kalender_2 2023-11-25 16:08:33 t_003_duration 41400
setstate Kalender_2 2023-11-25 16:08:33 t_003_edate 26.11.2023
setstate Kalender_2 2023-11-25 16:08:33 t_003_etime 07:30
setstate Kalender_2 2023-11-25 16:08:33 t_003_location
setstate Kalender_2 2023-11-25 16:08:33 t_003_mode next
setstate Kalender_2 2023-11-25 16:08:33 t_003_source CCFG_Heizung
setstate Kalender_2 2023-11-25 16:08:33 t_003_sourcecolor white
setstate Kalender_2 2023-11-25 16:08:33 t_003_summary Coffeebar
setstate Kalender_2 2023-11-25 16:08:33 t_003_timeshort 20:00 - 07:30
setstate Kalender_2 2023-11-25 16:08:33 t_003_weekday 6
setstate Kalender_2 2023-11-25 16:08:33 t_003_weekdayname Samstag
Selbstverständlich habe ich mehrmals einen reload gemacht und auch den ics-link nochmal neu eingebunden. - Alles ohne Erfolg.
Hat jemand ne Idee, wo ich noch suchen kann oder was ich testen kann?

Gruß
Ralf
FHEM auf Raspberry PI, UVR 1611 mit CMI, MAX-Thermostate, Z-Wave Thermometer, Siemens-Logo,
Sonoff- Aktoren, Kalender- Heizungssteuerung

Dr. Boris Neubert

Hallo Ralf,

ist der Termin Coffeebar im Kalender CCFG_Heizung?

Wir müssen erstmal herausfinden, an welchem Device wir mit der Fehlerbehebung ansetzen.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

krosenkr

Hallo Boris,
nein, der Kalender beinhaltet keinen Termin in Bezug auf die Coffebar.
Weder vor heute, noch irgendwann nach heute ist ein solcher Termin im Kalender.
Die empfangenen Termine werden wüer ein Notify und den Eintrag in der 99_myUtils.pm verarbeitet.
Das Problem ist ja, dass dies plötzlich aufgekommen ist. Hier die 'myUtils', auch wenn ich nicht glaube, dass es hieran liegt. Hat ja bisher immer einwandfrei funktioniert:
sub
Kalenderstart ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids = split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get CCFG_Heizung summary uid=$uid 1");
if ($Kalendertext =~ /Saal/) {
fhem("set Heizung_EIN_dummy ja");
}
                if ($Kalendertext =~ /Coffeebar/) {
fhem("set Coffeebar_EIN_dummy ja");
}
                if ($Kalendertext =~ /Kueche/) {
fhem("set Kueche desiredTemperature comfort;set Kueche2 desiredTemperature comfort");
}
                if ($Kalendertext =~ /Jugend/) {
fhem("set Jugend_EIN_dummy ja");
}
                if ($Kalendertext =~ /Seelsorge/) {
fhem("set Seelsorge desiredTemperature comfort");
}
                if ($Kalendertext =~ /Kigo3/) {
fhem("set Kigo3 desiredTemperature comfort");
}
                if ($Kalendertext =~ /Kigo2/) {
fhem("set Kigo2 desiredTemperature comfort");
}
                if ($Kalendertext =~ /Kigo1/) {
fhem("set Kigo1 desiredTemperature comfort");
}
                if ($Kalendertext =~ /Mufu/) {
fhem("set Mufu desiredTemperature comfort");
}
                if ($Kalendertext =~ /Muki/) {
fhem("set Muki desiredTemperature comfort");
}
                if ($Kalendertext =~ /Saal_LH/) {
fhem("set SAAL_LUFTHEIZUNG_DUMMY ja");
}
                if ($Kalendertext =~ /Coffeebar_LH/) {
fhem("set COFFEEBAR_LUFTHEIZUNG_DUMMY ja");
}
                if ($Kalendertext =~ /Wolfgang/) {
fhem("set Wolfgang desiredTemperature comfort");
}
                if ($Kalendertext =~ /Sandra/) {
fhem("set Sandra desiredTemperature comfort");
}
                if ($Kalendertext =~ /Gerrit/) {
fhem("set Gerrit desiredTemperature comfort");
}

}
}
sub Kalenderende ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids = split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get CCFG_Heizung summary uid=$uid 1");
if ($Kalendertext =~ /Saal/) {
fhem("set Heizung_EIN_dummy nein");
}
if ($Kalendertext =~ /Coffeebar/) {
fhem("set Coffeebar_EIN_dummy nein");
}
if ($Kalendertext =~ /Kueche/) {
fhem("set Kueche desiredTemperature auto;set Kueche2 desiredTemperature auto");
}
if ($Kalendertext =~ /Jugend/) {
fhem("set Jugend_EIN_dummy nein");
}
          if ($Kalendertext =~ /Seelsorge/) {
fhem("set Seelsorge desiredTemperature auto");
}
                if ($Kalendertext =~ /Kigo3/) {
fhem("set Kigo3 desiredTemperature auto");
}
                if ($Kalendertext =~ /Kigo2/) {
fhem("set Kigo2 desiredTemperature auto");
}
                if ($Kalendertext =~ /Kigo1/) {
fhem("set Kigo1 desiredTemperature auto");
}
                if ($Kalendertext =~ /Mufu/) {
fhem("set Mufu desiredTemperature auto");
}
                if ($Kalendertext =~ /Muki/) {
fhem("set Muki desiredTemperature auto");
}
                if ($Kalendertext =~ /Saal_LH/) {
fhem("set SAAL_LUFTHEIZUNG_DUMMY nein");
}
                if ($Kalendertext =~ /Coffeebar_LH/) {
fhem("set COFFEEBAR_LUFTHEIZUNG_DUMMY nein");
}
                if ($Kalendertext =~ /Wolfgang/) {
fhem("set Wolfgang desiredTemperature auto");
}
                if ($Kalendertext =~ /Sandra/) {
fhem("set Sandra desiredTemperature auto");
}
                if ($Kalendertext =~ /Gerrit/) {
fhem("set Gerrit desiredTemperature auto");
}
}
}
Das Problem ist, dass dieser "falsche" Termin schon von Calendar abgerufen wird und dann natürlich auch entsprechend verarbeitet wird.
Im Anhang der Kalender dieser Woche.
Gruß
Ralf
Du darfst diesen Dateianhang nicht ansehen.
FHEM auf Raspberry PI, UVR 1611 mit CMI, MAX-Thermostate, Z-Wave Thermometer, Siemens-Logo,
Sonoff- Aktoren, Kalender- Heizungssteuerung

Dr. Boris Neubert

Ist mir noch nicht klar.

Du hast
1. einen Google-Kalender (ohne den beanstandeten Termin),
2. ein Device namens CCFG_Heizung vom Typ Calendar, und
3. ein Device namens Kalender_2 vom Typ CALVIEW (mit dem beanstandeten Termin).

Frage: ist der Termin im Device CCFG_Heizung vom Typ Calendar? Ja, oder nein?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

krosenkr

Hallo Boris,
ja, CCFG_Heizung ist Typ Calendar.
Übrigens, der gestrige Termin hat die Heizung wie angezeigt eingeschaltet.
Die Termine, welche für heute im Google Kalender standen, haben anstandslos funktioniert.
Ich werde das beobachten und melden, wenn wieder so ein ,Ghost- Termin' auftaucht...
Gruß
Ralf
FHEM auf Raspberry PI, UVR 1611 mit CMI, MAX-Thermostate, Z-Wave Thermometer, Siemens-Logo,
Sonoff- Aktoren, Kalender- Heizungssteuerung

Dr. Boris Neubert


Frage: ist der "falsche" Termin im Device CCFG_Heizung? Ja, oder nein?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

krosenkr

Hallo,
wie kann ich sehen, ob der falsche Termin im Device CCFG_Heizung ist?
Ich konnte bisher nur feststellen, dass wenn ich einen reload mache, dann erscheint der Termin im Calview (und entsprechend auch zu ersehen im log.
Die Einzeltermine beim reload des Calendars habe ich bisher nicht sehen können. Verbose steht auf 5.
Gruß
Ralf
FHEM auf Raspberry PI, UVR 1611 mit CMI, MAX-Thermostate, Z-Wave Thermometer, Siemens-Logo,
Sonoff- Aktoren, Kalender- Heizungssteuerung

Dr. Boris Neubert

https://commandref.fhem.de/#Calendar

get CCFG_Heizung events
GGf. Filter setzen, wenn der "falsche" Termin schon vorbei ist.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

krosenkr

#8
Ja, die Termine sind da (siehe Anhang).
Gruß
Ralf
FHEM auf Raspberry PI, UVR 1611 mit CMI, MAX-Thermostate, Z-Wave Thermometer, Siemens-Logo,
Sonoff- Aktoren, Kalender- Heizungssteuerung

betateilchen

#9
Zitat von: krosenkr am 26 November 2023, 19:10:00Hi, bitte den vorherigen Beitrag nicht beachten.

Du kannst den Beitrag auch löschen, wenn er Unsinn ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Zitat von: krosenkr am 26 November 2023, 19:10:00Ja, die Termine sind da (siehe Anhang).

Ich sehe, dass die Coffeebar-Termine im Calendar-Device nicht mit den Terminen im Google-Kalender übereinstimmen. Allerdings änderst Du die Start-Zeiten noch um die Vorheizzeit.

Bitte lösche das onCreate-Attribut und führe ein

set CCFG_Heizung reload
durch. Prüfe dann, ob die Termine immer noch nicht mit den Terminen im Google-Kalender übereinstimmen. Wenn es dann immer noch eine Diskrepanz gibt, dann schaue Dir bitte mit

get CCFG_Heizung vevents
das Mapping zwischen Google-Kalender-Einträgen und den Terminen im Calendar-Device an. Details dazu bitte der Hilfe entnehmen.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

krosenkr

Hallo Boris,
sorry für die späte Antwort, ich war beruflich unterwegs...
Ich habe mir das Ganze nochmal angesehen. Ja, ich habe eine Vorheizzeit je Raum programmiert, was bei der Coffeebar 5h sind. Somit sollt dieser Termin passen.
Das Problem am 25.11. war ja der Termin "Saal", der garnicht an diesem Tag exisitiert.
Dazu habe ich in einem erneuten Abruf (get CCFG_Heizung vevents) dieses gefunden:
9229: VEVENT @6678 [new]
    CLASS: PUBLIC
    CREATED: 20231121T143503Z
    DTEND: 20220116T123000
    DTSTAMP: 20231130T162803Z
    DTSTART: 20220116T055500
    EXDATE: (20221225T055500 20230101T055500)
    LAST-MODIFIED: 20231121T172409Z
    RRULE: FREQ=WEEKLY;UNTIL=20231125T225959Z;BYDAY=SU
    SEQUENCE: 0
    STATUS: CONFIRMED
    SUMMARY: Saal
    TRANSP: OPAQUE
    UID: cco36d3168qjgbb2cdi32b9kckr38b9o64pj2b9g64sm6cb6c9gj4cj1ck@google.com
    >>> is a series
    >>> Events:
      cco36d3168qjgbb2cdi32b9kckr38b9o64pj2b9g64sm6cb6c9gj4cj1ckgooglecom         end                     29.10.2022 20:55-30.10.2022 07:00 Saal  
    >>>ZWISCHENZEILEN GELÖSCHT<<<
      cco36d3168qjgbb2cdi32b9kckr38b9o64pj2b9g64sm6cb6c9gj4cj1ckgooglecom         end                     18.11.2023 20:55-19.11.2023 08:00 Saal  
      cco36d3168qjgbb2cdi32b9kckr38b9o64pj2b9g64sm6cb6c9gj4cj1ckgooglecom         end                     25.11.2023 20:55-26.11.2023 08:00 Saal  
Kann es sein, dass der Fehler von solchen Serienterminen kommt, die aber nicht mehr existent sind?

Deine Vorschläge von zuvor werde ich gerne testen aber momentan ist der Googlekalender und FHEM "konform"...

Gruß
Ralf
FHEM auf Raspberry PI, UVR 1611 mit CMI, MAX-Thermostate, Z-Wave Thermometer, Siemens-Logo,
Sonoff- Aktoren, Kalender- Heizungssteuerung

krosenkr

Hallo,
nachdem ich heute wieder Probleme hatte (dieses mal andersherum: ein Termin im Kalender wurde nicht in FHEM verarbeitet), habe ich das onCreateEvent rausgenommen und zumindest augenscheinlich läuft jetzt alles super.
Wäre dann nur die Frage, was an dem Eintrag
{ $e->{start}= $e->{start}-main::AttrVal($e->{summary}, "Vorheizzeit", 60) }
falsch ist?

Hier die Funktion: In jedem Device ist ein Attribut "Vorheizzeit" mit dem entsprechenden Wert hinterlegt.
Dieser Wert wird von der Einschaltzeit subtrahiert. Wenn Vorheizzeit nicht vorhanden ist, dann nimm 60.

Irgendjemand ne Idee?

Gruß
Ralf
FHEM auf Raspberry PI, UVR 1611 mit CMI, MAX-Thermostate, Z-Wave Thermometer, Siemens-Logo,
Sonoff- Aktoren, Kalender- Heizungssteuerung

krosenkr

Hallo nochmal,
ich habe heute den Code auf "alarm" geändert und das Notify ebenfalls.
{ $e->{alarm}= $e->{start}-main::AttrVal($e->{summary}, "Vorheizzeit", 60) }Zumindest sieht jetzt alles gut aus und die Heizung wird entsprechend der berechneten Alarmzeit eingeschaltet.
Trotzdem würde ich gerne verstehen wollen, warum das mit dem ursprünglichen code nicht (zuverlässig) funktioniert...

Gruß
Ralf

FHEM auf Raspberry PI, UVR 1611 mit CMI, MAX-Thermostate, Z-Wave Thermometer, Siemens-Logo,
Sonoff- Aktoren, Kalender- Heizungssteuerung

Dr. Boris Neubert

Zitat von: krosenkr am 30 November 2023, 18:13:119229: VEVENT @6678 [new]
...
Kann es sein, dass der Fehler von solchen Serienterminen kommt, die aber nicht mehr existent sind?

Ich hatte hierauf vor Tagen eine Antwort verfasst. Offenbar habe ich diese aber nicht abgeschickt. Daher nochmal in Kürze.


Der Termin Saal steht jeden Sonntag von 5:55 bis 12:30 an. Die Serie endete am Samstag, 25.11.2023 23:59:59. Durch das onCreate-Event wird von den 5:55 eine Vorheizzeit abgezogen, die den Start auf 20:55 am Vortag vorverlegt. Dieser Zeitpunkt liegt vor dem Serienende. Der Termin ist daher also noch als Termin in FHEM vorhanden.

Ist diese Erklärung verständlich?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!