[Modul] iCal Calender in IP Symcon lesen und verarbeiten

Hallo Alex,

kannst du genauer beschreiben, an welcher Stelle du hängst?

Burkhard

Moin.
Bekomme seit Update auf 5.5 auch ständig Fehler im Log:



01.11.2020, 12:30:26 | TimerPool            | Abfallkalender (UpdateCalendar): <br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeFactory.php</b> on line <b>98</b><br />
<br />


Ist das mit dem kommenden Update auch gefixed?
Danke!

Hallo Burkhard,
und zwar habe ich die im Forum schon einmal verwendeten PHP Code verwendet

<?php
$ParID=IPS_GetParent($_IPS['SELF']);
echo ICCR_GetCachedCalendar($ParID)."
";
$ident="Biotonne";
echo ICCR_GetNotifierPresenceReason($ParID,$ident);
?>

die Ident habe ich wie von dir beschrieben auf „NOTIFIER1“ geändert. Da ich mit PHP nicht all zuviel am Hut habe schietere ich ab hier. Einiges habe ich versucht allerdings ohne den erhofften Erfolg.

Danke schon mal

Ja. Du kannst aber auch schon - wenn du magst - die Beta ausprobieren.

Du möchtest, wenn die Variable „Abholung“ auf true geht, eine Benachrichtigung erhalten?

Dann nimm einfach ein ein Skript mit einer WFC_PushNotification Anweisung und ordnest dem Skript ein „Ausgelöstes Ereignis“ zu, dass auf den Zustand „true“ der Variablen „Abholung“ reagiert.

Ja das habe ich bereits beim Licht, ich hatte dies allerdings als „Erinnerung“ einen Tag vor dem eigentlichen Tag im Kalender auf dem Webfront angezeigt.

Top, Fehler ist weg. Danke

Hallo Burkhard, seid deinem Update werden mir nicht mehr die Termine im Kalender Angezigt. Wenn ich Ihn neu Laden will sagt er „Es wurden keine Einträge gefunden“.

Ich hab mir das Modul auch installiert, weil ich mir eine Erinnerung über Alexa einrichten wollte. Zusätzlich hab ich das Skript hier kopiert
Kalenderübersicht, Terminübersicht als Tabelle (ohne Meldevariable)
Läuft auch soweit, nur bekomme ich bei der Ausführung des Skripts folgende Fehlermeldung:

Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 65536 bytes) in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\autoload.php on line 65

Ich hätte dann schon versucht den Spezialschalter „ServerHardQueueBytesLimit“ auf 64mb zu erhöhen hilft aber auch nichts. Ich bekomme nach wie vor die selbe Fehlermdlung.
Mir ist auch aufgefallen, dass, wenn ich bei der Intanz „ICAL CALENDAR READER“ auf den Button „Kalender laden“ klicke bekomme ich folgende Meldung

<br />
<b>Fatal error</b>:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 65536 bytes) in <b>C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\autoload.php</b> on line <b>65</b><br />

Das System läuft auf einer virtuellen Win10 Home mit 4Gb vRAM. Sollte reichen.

Hi,
welchen Vor- bzw. Nachlauf (Cache-Größe) hast Du eingestellt?

Ralf

Das was IPS bei der Installation einstellt. Ich hab da nicht reingefummelt. Testweise hab ich in der php.ini von 32mb auf 128mb hochgedreht. Bringt aber auch nichts. BTW, wo sehe ich die von dir erwähnten werte?

Hi,
bei den eingerichteten Kalender-Instanzen und dann bei Synchronisation.

Für meinen Geburtstagskalender habe ich +/- 180 Tage drin. Für meinen Terminkalender habe ich -14 und +60 Tage drin.

Ralf

Ich vermute, dein gelesener Kalender hat zu viele Einträge. Leider kann der Kalender nur als Gesamtheit gelesen und geparst werden.

Du müsstest das memory_limit in der php.ini erhöhen. Z.B.

memory_limit=64M

[QUOTE=bumaas;440177

memory_limit=64M

[/QUOTE]
Ich hab schon 128MB drinnen, geht auch nicht.
Eine Änderung von 30 auf 3 Tagen bei beiden Cache Werten ändert auch nichts.
Noch was, ich hab in der php.ini auf 128mb geändert. Nach dem Start von IPS wurde es wieder auf 32 zurückgestellt. 64MB werden akzeptiert.
Bekomme aber trotzdem diese Fehlermeldung

Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 135168 bytes) in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Vcalendar.php on line 367

Zumindest sieht man hier schon, dass nun das neue Limit überschritten wird („67108864 bytes exhausted“)

Ich habe aber keine Ahnung, wer die 128M wieder auf 32M zurückstellt :eek:

Gibt es einen Hinweis im Logfile?

Hast du mal versucht, das Limit zu deaktivieren?

memory_limit=-1

Ich hab es jetzt mit 128M und 256M probiert. Wird jedesmal auf 32M geändert. Im Log hab ich nichts gefunden. Sollte ja, wenn überhaupt, am Beginn stehen. Wird sicher beim Starten geändert, weil der Dienst noch nicht vollständig geladen ist, aber die Änderung schon passiert ist.
Interessanterweise funktioniert -1 … Und dann funktioniert auch das Skript.
In der Prozessliste steigt der ips dienst kurz auf etwa 128mb Speichernutzung.
Sogar mit 30 Tagen vor und zurück steigt der Speicherverbrauch nicht über 130mb. Mir ist das Verahlten und die Fehlermelund schleierhaft.

Das kann ich nachvollziehen:

auch bei mir werden als memory_limit 64M und -1 akzeptiert, aber Werte >=128M werden auf 32M zurückgesetzt. @paresy: hast du da eine Erklärung für?

-1 ist eigentlich eine unglücklicher Wert. Besser wäre es, wenn man ein explizites Limit angeben könnte.

Wir validieren dies, damit man dies nicht exorbitant hoch setzen kann. Denn: Wenn alle PHP Threads 128MB verwenden dürfen und du z.B. 50 Threads hast, brauchst du im Peak 6400 MB RAM. Falls du dies z.B. unter Linux dann nicht hast, entsorgt der Kernel dein Prozess…

Da wir mittlerweile aber immer mehr RAM haben, würde ich das Limit zum nächsten Update auf max. 128MB setzen anstatt der aktuellen 64MB. Den -1 Workaround sperre ich in dem Zuge ebenfalls, da dieser sehr unglücklich ist.

Hast du mal versucht nur für dein Skript das Memory Limit zu erhöhen?


ini_set('memory_limit', $limit . 'M');

paresy

Ah, ihr seid es :slight_smile:

Da wäre vielleicht ein Hinweis auf das Maximum im Logfile nicht schlecht, wenn der Wert zurückgesetzt wird.

Ich setze jetzt mal - da das Problem beim Kalender schon häufiger aufgetreten ist - das Limit für das Modul auf 256M. Mal sehen, wie das ankommt.

public function __construct($InstanceID)
{
    ini_set('memory_limit', '256M');
    parent::__construct($InstanceID);
}

@hfichtinger: willst du mal die Beta ausprobieren?

@hfichtinger: willst du mal die Beta ausprobieren?

Werde ich machen, sobald mein Netzwerkscanner fertig ist :wink: