Beim Abruf eines Google Kalenders kommt es bei mir immer zu einem Timeout. Das wird wohl noch nicht ganz sauber abgefangen denn dadurch kommt zu einer Warnung:
2018.07.11 20:45:43 4: Calendar cal_Beruflich: Wakeup
2018.07.11 20:45:43 4: Calendar cal_Beruflich: Updating...
2018.07.11 20:45:43 4: Calendar cal_Beruflich: Getting data from URL <hidden>
2018.07.11 20:46:15 1: Calendar cal_Beruflich: retrieval failed with error message read from https://calendar.google.com:443 timed out
2018.07.11 20:46:15 1: Calendar cal_Beruflich: retrieved no or empty data
2018.07.11 20:46:15 4: Calendar cal_Beruflich: Checking times...
2018.07.11 20:46:15 1: PERL WARNING: Use of uninitialized value $t in numeric lt (<) at ./FHEM/57_Calendar.pm line 2217.
2018.07.11 20:46:15 1: stacktrace:
2018.07.11 20:46:15 1: main::__ANON__ called by ./FHEM/57_Calendar.pm (2217)
2018.07.11 20:46:15 1: main::Calendar_RearmTimer called by ./FHEM/57_Calendar.pm (2582)
2018.07.11 20:46:15 1: main::Calendar_CheckAndRearm called by ./FHEM/57_Calendar.pm (2550)
2018.07.11 20:46:15 1: main::Calendar_ProcessUpdate called by FHEM/HttpUtils.pm (108)
2018.07.11 20:46:15 1: main::HttpUtils_Err called by fhem.pl (3127)
2018.07.11 20:46:15 1: main::HandleTimeout called by fhem.pl (646)
Kannst Du mal bitte ein list von Deinem Kalender-device posten?
(URL und Userdaten bitte anonymisieren)
Edit: Falscher Ansatz meinerseits, deshalb gestrichen.
Nebenbemerkung:
Auch wenn die Meldung aus dem Kalendermodul unschön ist, sollte Dein Hauptaugenmerk darauf liegen, herauszufinden, warum Du da überhaupt in einen Timeout läufst.
Kannst Du mal bitte in Zeile 2250 die markierte Zeile einfügen und dann testen?
if($errmsg or !defined($ics) or ("$ics" eq "") ) {
Log3 $hash, 1, "Calendar $name: retrieved no or empty data";
readingsSingleUpdate($hash, "state", "error (no or empty data)", 1);
++ $hash->{".fhem"}{t}= $t;
Calendar_CheckAndRearm($hash);
} else {
Das Problem ist, dass Calendar_CheckAndRearm() einen Wert in $hash->{".fhem"}{t} erwartet, der aber (bisher) nur dann existiert, wenn vorher KEIN Fehler aufgetreten ist.
Unabhängig davon, ob es einen Fehler gab oder nicht, muss aber das Calendar_CheckAndRearm() natürlich ausgeführt werden.
Zitat von: betateilchen am 11 Juli 2018, 21:48:39
Kannst Du mal bitte in Zeile 2250 die markierte Zeile einfügen und dann testen?
Danke, dann tritt die Warnung nicht mehr auf.
Zitat
Nebenbemerkung:
Auch wenn die Meldung aus dem Kalendermodul unschön ist, sollte Dein Hauptaugenmerk darauf liegen, herauszufinden, warum Du da überhaupt in einen Timeout läufst.
Ja, dazu habe ich einen neuen Thread (https://forum.fhem.de/index.php/topic,89318.0.html) aufgemacht.
Zitat von: kaihs am 11 Juli 2018, 22:12:42
Danke, dann tritt die Warnung nicht mehr auf.
Danke für die Rückmeldung, dann hat Boris ja was zum patchen :)
Auf einen HTTP response code 404 wird auch nicht ganz sauber reagiert:
2018.07.12 12:31:56 1: PERL WARNING: Use of uninitialized value $ics in split at ./FHEM/57_Calendar.pm line 991.
Danke an Euch beide für die Hinweise. Ich sehe zu, dass ich das gelegentlich einbaue im Zuge der kontinuierlichen Verbesserung. Zwei Warnungen rausgepatcht sind zwei Anlässe für Fragen im Forum weniger :D
Kannst Du Dir bitte mal die Version in https://forum.fhem.de/index.php/topic,104587.msg985270.html#msg985270 (https://forum.fhem.de/index.php/topic,104587.msg985270.html#msg985270) daraufhin ansehen?