[Modul] iCal Calender in IP Symcon lesen und verarbeiten

Die aktuelle Version findest du im Module Store. Hast du die GitHub Adressen von dort? Mir ist nicht ganz klar, welche Version du installiert hast.

Hallo, ich habe die git URL aus dem ersten Posting entnommen. Ich kann das Modul gerne nochmal via dem Module Store installieren.

Danke für den Hinweis

Erstmal natürlich vielen Dank für das Modul. :wink:

Ich hab hunderte Einträge über die Zeit in den Logs:

30.07.2019, 10:11:38 | iCal Calendar Reader | Error 'Invalid BYDAY value: 1' in CalRRule 'Kühlschrank putzen': Array
(
    [FREQ] => MONTHLY
    [UNTIL] => DateTime Object
        (
            [date] => 2019-07-05 00:00:00.000000
            [timezone_type] => 3
            [timezone] => Europe/Berlin
        )

    [INTERVAL] => 3
    [BYDAY] => Array
        (
            [0] => 1
            [DAY] => SA
        )

    [DTSTART] => DateTime Object
        (
            [date] => 2017-10-07 00:00:00.000000
            [timezone_type] => 3
            [timezone] => Europe/Berlin
        )

)

Wie kann ich hier helfen oder die Termine in Nextcloud anpassen??

Welche Version hast du im Einsatz? Hast du schon probiert, ob der Fehler in der Beta Version ebenfalls vorhanden ist?

Ansonsten bräuchte ich mal den kompletten Termin im iCal Format. Du findest ihn in den Debug Ausgaben. Er sieht ungefähr so aus:

BEGIN:VEVENT<CR><LF>DTSTART:20190716T060000Z<CR><LF>DTSTAMP:20190730T104523Z<CR><LF>UID:893018<CR><LF>CREATED:20190614T103359Z<CR><LF>DESCRIPTION:<CR><LF>.........<CR><LF>END:VEVENT

Ich nutze die 2.00 build 31 (Beta-Kanal) auf der aktuellsten Stable IPS (raspi)


BEGIN:VEVENT<CR><LF>DTSTAMP:20190629T064938Z<CR><LF>UID:41ce5f52-b47e-441b-bce3-7184e279e507<CR><LF>SEQUENCE:5<CR><LF>SUMMARY:Kühlschrank putzen<CR><LF>DTSTART;VALUE=DATE:20171007<CR><LF>DURATION:P1D<CR><LF>RRULE:FREQ=MONTHLY;UNTIL=20190705T235959Z;INTERVAL=3;BYDAY=1SA<CR><LF>STATUS:CONFIRMED<CR><LF>END:VEVENT

Es gab noch ein Problem mit Regelterminen wie ‚Monatlich an jedem ersten Donnerstag‘. Probiere mal bitte den neuen Build 32 aus.

Hallo,
erst mal vielen Dank für das Modul.
Ich benutze es mit Google-Kalendern. Es funktioniert auch vom Grundsatz her. Nur bei einem Kalender bekomme ich eine Fehlermeldung, wenn ich diesen auslesen möchte:

Ashampoo_Snap_2019.08.01_10h03m33s_003_.jpg

Ich benutze mehrere Kalender unter einem Account. Alle Kalender funktionieren, nur der „Haupt“-Kalender, bringt diesen Fehler.
Ich hoffe, dass mir jemand helfen kann. Vielen Dank.

Hallo, ich habe die GIT Url aus dem ersten Thread verwendet. Mittlerweile habe ich das Modul jedoch wieder entfernt und versucht es im Module Store zu finden, wo ich es jedoch nicht auffinden kann.

Das Modul ist in der Rubrik „Komfort“.

Kannst du mal bitte im Logfile nachsehen, ob die Fehlermeldung dort umfangreicher (mit Callstack) ist?

Es wird mit der Anzahl deiner Kalendereinträge zusammenhängen. Was hast du an Cachegrößen für Vergangehnheit und Zukunft eingetragen. Vielleicht hilft eine Verkleinerung des Zeitraums.

Das habe ich auch gedacht, habe aber die Cachegröße auf ein Minimum reduziert (Vergangenheit = 0, Zukunft = 1). Das sind 4 Termine (3 ganztägige und ein Normaler.

Im Logfile kann ich gar kein Eintrag finden. Das Modul schreibt nur rein, dass Einstellungen geändert wurden. Mehr steht nicht drin.
Muss ich da etwas anders machen?

Viele Grüße
Frank

PS: Wenn ich diese Instance über ein Script auslese, kommt folgende Fehlermeldung:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 20480 bytes) in D:\IPSymcon\modules.store\de.bumaas.ical\libs\iCalcreator-master\src\IcalBase.php on line 234

Gruß Frank

Danke! Damit ist das Problem weg … Allerdings kommt jetzt häufig das (Exakt alle 15 Minuten):

02.08.2019, 06:48:13 | TimerPool | iCal Calendar Reader (UpdateCalendar): <br />
<b>Fatal error</b>:  Uncaught TypeError: Argument 1 passed to iCalImporter::iCalDateTimeArrayToDateTime() must be of the type array, bool given, called in /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php on line 407 and defined in /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php:97
Stack trace:
#0 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php(407): iCalImporter->iCalDateTimeArrayToDateTime(false)
#1 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(488): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#2 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(523): iCalCalendarReader->ReadCalendar()
#3 /var/lib/symcon/scripts/__generated.inc.php(31): iCalCalendarReader->UpdateCalendar()
#4 /-(1): ICCR_UpdateCalendar(29995)
#5 {main}
  thrown in <b>/var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php</b> on line <b>97</b><br />

Der Eintrag müsste sich aber eigentlich auch im Logfile wiederfinden. Kannst du bitte noch einmal nachschauen.

Momentan fällt mir nur ein, dass du das memory_limit in der php.ini erhöhen könntest. Z.B.

memory_limit=64M

@skeal: kannst du herausfinden, bei welchem Kalendereintrag es passiert? Es muss sich um einen Regeltermin handeln.

Hallo,

habe den memory-Limit erhöht und bekomme jetzt folgende Fehler:
Im Kalender stehen 3 Termine drin, die über mehrere Tage gehen. Diese werden nach den Fehlermeldungen auch angezeigt.

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Warning: Invalid argument supplied for foreach() in D:\IPSymcon\modules.store\de.bumaas.ical\iCalCalendarReader\iCalImporter.php on line 351

Welche Version setzt du ein? Könntest du einmal die aktuelle Version (2.0 build 32) aus dem Beta Kanal ausprobieren?

Hallo,

habe jetzt alles aktualisiert. Habe bei IPS die aktuellste Version und beim Modul die angegebene Beta installiert.
Das Problem mit den Fehlermeldungen ist jetzt weg, allerdings habe ich jetzt noch ein Anderes.

Es werden zu viele Termine ausgegeben, d.h. bei regelmäßigen Terminen (z.B. jeden Montag von 14 bis 15 Uhr).-
Wenn hier in der Terminserie z.B. in der dritte Woche dieser Termin rausgelöscht wird, ist er bei Google zwar weg, über das Modul wird er jedoch noch immer angezeigt. Sehr merkwürdig!

Hallo fschult2001,

Hast du bei deinen letzten Tests auch immer wieder den/die iCal Kalender neu geladen ?

LG
lueralba

Hallo,
ich habe das immer direkt in der Instance über Kalender neu laden gemacht…
Habe es jetzt noch mal ausgetestet. Das passiert bis jetzt nur bei einem einzigen Termin, der schön länger im Kalender steht.
Mit aktuell eingestellten regelmäßigen Termin konnte ich den Fehler nicht nachstellen.
Ich werde es weiter beobachten.

Vielen Dank

Hallo,

habe jetzt noch mal mit verschiedenen Kalendern getestet.
Das Problem besteht bei wiederkehrenden Termin (z.B. jeden Dienstag von 09-10:15 Uhr)!
Wenn bei so einem Termin einzelne Termine raus gelöscht werden, weil die Veranstaltung halt mal ausfällt oder wegen Ferien oder…, wird der gelöschte Termin bei der Rückgabe des Befehls

$$InstanceID = json_decode(ICCR_UpdateCalendar($InstanceID));

trotzdem mit ausgegeben. Auch wenn ich in der Instance den betreffenden Kalender neu lade, erscheinen alle gelöschten Termine in der Ausgabe.
Nur zum Verständnis: Die Termine habe ich schon vor Wochen gelöscht. Ferien sind ja schon eine Weile. trotzdem werden diese fälschlicher Weise mit ausgegeben.
Ich denke, dass hier bei der Abfrage der ICAL-Adresse bei regelmäßigen Terminen noch irgendein Wert abgefragt werden muss, ob dieser Termin relevant ist, oder gelöscht wurde.
Wäre schön, wenn das noch mal geprüft werden könnte. Ein Kalender, der falsche Termine anzeigt, nützt mir logischer weise natürlich nichts.

Vielen Dank für die Bemühungen und viele Grüße

Frank

@: Ich verwende bereits die Beta-Version