Autor Thema: Calendar: Bei Änderung LAST-MODIFIED Aktion auslösen  (Gelesen 2475 mal)

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2709
Calendar: Bei Änderung LAST-MODIFIED Aktion auslösen
« am: 06 Februar 2022, 17:19:00 »
Hallo,

ich habe in einem GoogleKalender Termine. 
Sobald ein Termin verändert wird, möchte ich das in FHEM erkennen können. Ich hatte angenommen, dass bei einer Änderung ein Event "changed" erzeugt wird.
Das klappt leider nicht, obwohl die LAST-MODIFIED durchaus korrekt vorhanden ist.


defmod Kalender_Test Calendar ical url https://calendar.google.com/calendar/ical/<meiner> 7200
attr Kalender_Test cutoffLaterThan 7d
attr Kalender_Test room Kalender
attr Kalender_Test verbose 5


Sobald ein Update läuft, wundert mich auch, dass immer 11 modified erkannt werden, auch wenn ich an den Einträgen nichts verändere (Auszug aus FHEM-Log):
2022.02.06 17:08:01 4: Calendar Kalender_Test: process ended.
2022.02.06 17:08:01 4: Calendar Kalender_Test: Checking times...
2022.02.06 17:08:01 4: Calendar Kalender_Test: events for 11 records cleared, events for 11 records created.
2022.02.06 17:08:01 4: Calendar Kalender_Test: creating calendar events
2022.02.06 17:08:01 4: Calendar Kalender_Test: 11 records processed, 0 new, 0 known, 11 modified, 0 changed.
2022.02.06 17:08:01 4: Calendar Kalender_Test: merging data
2022.02.06 17:08:01 4: Calendar Kalender_Test: asynchronous parsing finished.
2022.02.06 17:08:01 4: Calendar Kalender_Test: got result from asynchronous parsing.
2022.02.06 17:08:00 5: Calendar Kalender_Test: control passed back to main loop.
2022.02.06 17:08:00 4: Calendar Kalender_Test: parsing data asynchronously (PID= 1221180)
2022.02.06 17:08:00 5: Calendar Kalender_Test: HTTP response code 200
2022.02.06 17:08:00 4: Calendar Kalender_Test: Getting data from URL <hidden>
2022.02.06 17:08:00 4: Calendar Kalender_Test: Updating...


Ich könnte jetzt anfangen vCalendar oder vEvents irgendwie auszulesen und mir die letzten Einträge zu speichern, aber vielleicht gibt es ja eine einfachere oder schon halbwegs nutzbare Vorgehensweise. Ich bin jedenfalls für alle Tips offen.



Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5120
  • Are we just self-replicating DNA?
Antw:Calendar: Bei Änderung LAST-MODIFIED Aktion auslösen
« Antwort #1 am: 06 Februar 2022, 18:13:04 »
ich habe in einem GoogleKalender Termine. 
Sobald ein Termin verändert wird, möchte ich das in FHEM erkennen können. Ich hatte angenommen, dass bei einer Änderung ein Event "changed" erzeugt wird.
Das klappt leider nicht, obwohl die LAST-MODIFIED durchaus korrekt vorhanden ist.

Es wird das VEVENT verändert. Der Kalender enthält aber die daraus abgeleiteten Termine und die Information wird nicht an die aus dem VEVENT abgeleiteten Termine propagiert. Mit ist aber auch nicht klar, welches FHEM-Event Du gerne haben möchtest.

Zitat
Sobald ein Update läuft, wundert mich auch, dass immer 11 modified erkannt werden, auch wenn ich an den Einträgen nichts verändere (Auszug aus FHEM-Log):
2022.02.06 17:08:01 4: Calendar Kalender_Test: process ended.
2022.02.06 17:08:01 4: Calendar Kalender_Test: Checking times...
2022.02.06 17:08:01 4: Calendar Kalender_Test: events for 11 records cleared, events for 11 records created.
2022.02.06 17:08:01 4: Calendar Kalender_Test: creating calendar events
2022.02.06 17:08:01 4: Calendar Kalender_Test: 11 records processed, 0 new, 0 known, 11 modified, 0 changed.
2022.02.06 17:08:01 4: Calendar Kalender_Test: merging data
2022.02.06 17:08:01 4: Calendar Kalender_Test: asynchronous parsing finished.
2022.02.06 17:08:01 4: Calendar Kalender_Test: got result from asynchronous parsing.
2022.02.06 17:08:00 5: Calendar Kalender_Test: control passed back to main loop.
2022.02.06 17:08:00 4: Calendar Kalender_Test: parsing data asynchronously (PID= 1221180)
2022.02.06 17:08:00 5: Calendar Kalender_Test: HTTP response code 200
2022.02.06 17:08:00 4: Calendar Kalender_Test: Getting data from URL <hidden>
2022.02.06 17:08:00 4: Calendar Kalender_Test: Updating...
Probier es mal bitte mit dem Quirk-Attribut ignoreDtStamp.

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

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2709
Antw:Calendar: Bei Änderung LAST-MODIFIED Aktion auslösen
« Antwort #2 am: 06 Februar 2022, 18:48:54 »
Hi Boris,

Danke für die schnelle Antwort.

Mit ist aber auch nicht klar, welches FHEM-Event Du gerne haben möchtest.
Probier es mal bitte mit dem Quirk-Attribut ignoreDtStamp.

Folgendes habe ich in der Comandref gelesen:
Zitat
Wenn ein Termin geändert wurde, werden zwei FHEM-Events erzeugt:

changed: UID <mode>
<mode>: UID

Also habe ich mir gedacht, wenn ich im Kalender einen Termin verändere (Uhrzeit oder halt das Datum) dann bekomme ich das changed event.

Nachdem ich nun das Quirk Attribut geändert habe, wird Protokolliert, dass ein Termin geändert wurde:

2022.02.06 18:42:18 4 : Calendar Kalender_Test: Updating...
2022.02.06 18:42:18 4 : Calendar Kalender_Test: Getting data from URL <hidden>
2022-02-06 18:42:18 Calendar Kalender_Test update
2022.02.06 18:42:18 5 : Calendar Kalender_Test: HTTP response code 200
2022.02.06 18:42:18 4 : Calendar Kalender_Test: parsing data asynchronously (PID= 1316521)
2022.02.06 18:42:18 5 : Calendar Kalender_Test: control passed back to main loop.
2022-02-06 18:42:18 Calendar Kalender_Test retrieved
2022.02.06 18:42:19 4 : Calendar Kalender_Test: got result from asynchronous parsing.
2022.02.06 18:42:19 4 : Calendar Kalender_Test: asynchronous parsing finished.
2022.02.06 18:42:19 4 : Calendar Kalender_Test: merging data
2022.02.06 18:42:19 4 : Calendar Kalender_Test: 11 records processed, 0 new, 10 known, 1 modified, 0 changed.
2022.02.06 18:42:19 4 : Calendar Kalender_Test: creating calendar events
2022.02.06 18:42:19 4 : Calendar Kalender_Test: events for 1 records cleared, events for 1 records created.
2022.02.06 18:42:19 4 : Calendar Kalender_Test: Checking times...
2022.02.06 18:42:19 4 : Calendar Kalender_Test: process ended.
2022-02-06 18:42:19 Calendar Kalender_Test parsed
2022-02-06 18:42:19 Calendar Kalender_Test calname: xxxxx@gmail.com
2022-02-06 18:42:19 Calendar Kalender_Test lastUpdate: 2022-02-06 18:42:18
2022-02-06 18:42:19 Calendar Kalender_Test nextUpdate: 2022-02-06 20:42:18
2022-02-06 18:42:19 Calendar Kalender_Test triggered
2022-02-06 18:42:19 Calendar Kalender_Test nextWakeup: 2022-02-06 20:42:18

Im Eventlog findet sich aber leider kein Event, auf das ich einen trigger setzen können, dass sich etwas am Termin verändert haben könnte.
Ich vermute, changed wird nur als Event ausgelöst, wenn der Termin beginnt bzw. beendet wurde. Kann das sein?

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5120
  • Are we just self-replicating DNA?
Antw:Calendar: Bei Änderung LAST-MODIFIED Aktion auslösen
« Antwort #3 am: 07 Februar 2022, 15:01:24 »
Die Änderungen werden auf der Ebene der VEVENTs im ICalender bemerkt. Ein verändertes VEVENT führt dazu, dass alle dazu gehörigen Termine gelöscht und neu angelegt werden. Es wird aber keine Information darüber an den Termin mitgegeben.

Das FHEM-Event bezieht sich auf Änderungen des Mode eines Termin.

Siehe bitte auch ausführliche Beschreibung des Algorithmus in der Wall of Text am Anfang des Moduls.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!