[Modul] iCal Calender in IP Symcon lesen und verarbeiten

Hi,
mein Problem konnte ich lösen.

Statt ICCR_GetNotifierPresenceReason(35220, „NOTIFIER1“) benutze ich jetzt ICCR_GetCachedCalendar(14290);um an alle Daten zu kommen und dann einen Text für Enigma2 und Alexa daraus zu stricken. Klappt prächtig:-)

Ralf

Schau mal ins Debug. Da siehst du deinen gesetzten Zeitraum und dass vier Events gefunden werden:

TXT: 14.05.2020, 10:13:54 |       ImportCalendar | cached time: (DaysToCacheBack: 30, DaysToCache: 150, 2020-04-14 00:00:00 - 2020-10-12 00:00:00)
TXT: 14.05.2020, 10:13:54 |       ImportCalendar | vEvents_with_RRULE: 0, vEvents_with_Recurrence_id: 0, $vEvents: 4

Aber alle Termine liegen außerhalb des gesetzten Zeitraums:

14.05.2020, 10:13:54 |       ImportCalendar | Event 'Besichtigung Richterstrasse' (2017-06-29T14:00:00+02:00 - 2017-06-29T17:00:00+02:00) is outside the cached time, ignoring
...

Hi,
danke für dieses schöne Modul:-)

Ich kann so einfach meine Kalender einlesen und mir Strings für die nächsten Tage zusammen basteln. Ich benutze z.Z. die Notifier nicht. Was macht ihr mit den Notifiern?

btw. Ich benutze schon ein paar Jahre NextCloud als Kalender und da ist mir was aufgefallen. Leider hat mein Ursprungs-Docker anscheinend nicht die timezone und localtime von der DS übernommen so das in meinem Kalender jetzt alle alten Einträge mit UTC angegeben sind. Wenn man die Zeiten jetzt richtig behandelt bedeutet es für Tagesereignisse das diese von 2:00 bis 2:00 gehen. Um das zu korrigieren ändere ich die Zeiten bei Tagesereignissen mit


$entry["From"] = mktime(0, 0, 0, date("m", $entry["From"])  , date("d", $entry["From"]), date("Y", $entry["From"]));
$entry["To"] = mktime(0, 0, 0, date("m", $entry["To"])  , date("d", $entry["To"]), date("Y", $entry["To"]));

Falls also euer Docker auch in der falschen Zone lebt dann richtige Dateien timezone und localtime auf eine Freigabe legen und jeweils ein Volume auf /etc dafür eintragen.

Ralf

Hi,
in den Feldern fehlt noch ein Status falls z.B. ein Termin gecancelt wurde man ihn aber nicht aus dem Kalender löschen möchte. Bei NextCloud nennt sich der Eintrag auch Status.

Ralf

@bumaas: Vielen Dank für das Modul - ich hätte eine Anregung und ein Problem:
Zur Anregung - mir reichen die 10s timeout nicht für umfangreiche Kalender, wäre es möglich den timeout einstellbar zu macheen (bei 20s habe ich keine Probleme)

Leider (ich verwende Kopano als Mailserver) bekomme ich ständig eine Fehlermeldung bezgl. ungültiger Zeitzone:


17.05.2020 16:06:19 | 00000 | CUSTOM  | PHP                  | Error: Error: Uncaught Exception: DateTimeZone::__construct(): Unknown or bad timezone ("(UTC+01:00)") in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php:97
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php(97): DateTimeZone->__construct('"(UTC+01:00)"')
#1 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(530): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('"(UTC+01:00)"')
#2 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(503): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20100710T173000', Array)
#3 C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\RegulateTimezoneFactory.php(320): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp
   Error in Script C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Util\DateTimeZoneFactory.php on Line 100
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   33 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
  121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)
      in IPSLogger_PhpFatalErrorHandler

Vielleicht lässt sich das was machen bezgl dieser Zeitzone (sollte doch Winterzeit ME sein…)
Vielen Dank für das super modul
hoep

Da kann ich wohl die TimeOut Zeit generell auf 20 Sekunden hochsetzen. Das sollte eigentlich keine negativen Effekte haben.

Könntest du mir das Ergebnis von curl_result aus dem Debug einmal per Email zukommen lassen? Dann kann ich mir das genauer anschauen.

Kannst du mir dazu ein Beispiel aus dem debug von curl_result zukommen lassen? Dann schaue ich mir das mal an.

@bumaas - Vielen Dank für Deine prompte Antwort. Das curl_result habe ich als gezippte textdatei (Größe) angefügt.
Vielen Dank
hoep

Hi Bumaas,
danke für das Angebot brauchst aber kein Debug wälzen:-)

Alle Funktionen sind schon vorhanden. Man muss nur in GetEventAttributes:


        $Event['Name'] = $vEvent->getSummary();

durch


        $Event['Name'] = $vEvent->getSummary();
        $Event['Status'] = $vEvent->getStatus();

ersetzen. In Status stehen so Sachen drin wie „CANCELLED“ oder „CONFIRMED“ (Bei Einladungen). Mehr ist mir bisher nicht untergekommen. Ist mir auch erst dieses Wochenende aufgefallen denn statt im Flugzeug sitze ich hier zu Hause, was auch nicht das Schlechteste ist.

Ralf

Ok. Dann kommt es zur nächsten Version.

Hi,
danke Ralf

Probiere mal bitte die Beta Version des Moduls (2.0 build 49). Da sollte die Erweiterung drin sein.

@bumaas) danke dir für die prompte Änderung. Habe auf Build 50 aktualisiert, leider nach wie vor eine Fehlermeldung (siehe unten).
Beste Grüße
hoep

Hallo hoep,

leider kommt die verwendete Bibliothek mit einigen deiner Kalendereinträge und der darin vermerkten Zeitzone nicht zurecht. In deinem Beispiel ist es der Eintrag am 20160916T161500 also am 16.9.2016 16:50 Uhr.

Könntest du einmal versuchen, den Eintrag in deinem Kalender neu anzulegen und dann erneut zu importieren?

Ich vermute, dass es sich hauptsächlich um ältere Termine handelt.

Burkhard

Könntest du mir aus dem Debug mal das Ergebnis (oder einen Auszug davon) von curl_result als Email zukommen lassen? Dann schau ich da mal rein.

Hi Bumaas,

konntest Du Dir schon „mein Problem“ vom 15.04.20, 12:53 einmal ansehen?
Schönen Abend - und besten Dank im Voraus

Ciao
HerbertF

Hi,
hast Du denn einen Notifier angelegt? Der Befehl sieht bei mir so (ICCR_GetNotifierPresenceReason(35220, „NOTIFIER1“)) aus und „NOTIFIERx“ wird vom Modul beim Erstellen der Notifier vergeben.

Ralf

Der Fehler lag in der verwendeten RRule Bibliothek. Da wurden wiederkehrende Ereignisse nach 28 Jahren nicht mehr erkannt. Ich habe die Bibliothek auf die aktuelle Version hochgezogen und eine neue Beta Version im Store abgelegt.

Burkhard

Hi Burkhard,
sieht auf den ersten Blick gut aus. Danke.

Ralf

Sorry, das ist bei mir untergegangen. Bist du inzwischen weitergekommen?