Ich hab seit dem Anlegen eines Calendar Device Probleme mit ellenlangen stündlichen Log Einträgen. Wie kann ich das beheben?
Ich versteh nicht mal das Problem dahinter....
Bei meinem Müllkalender habe ich das nicht.
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
2021.01.22 15:57:52 2: Calendar Schichtkalender: Duplicate VEVENT
Hier mal das List vom Calendar-Device:
Internals:
DEF ical url http://XXXXXXXXXXX/remote.php/dav/calendars/Sebi/personal/?export
FUUID 5cf818ce-f33f-6467-f56d-fd2d85fd85da89cd
NAME Schichtkalender
NOTIFYDEV global
NR 437
NTFY_ORDER 50-Schichtkalender
STATE triggered
TYPE Calendar
READINGS:
2021-01-22 16:58:00 calname Persönlich
2021-01-22 16:58:00 lastUpdate 2021-01-22 16:57:47
2020-05-09 16:46:33 modeAlarm
2021-01-22 12:15:00 modeAlarmOrStart FlexRUID2939
2020-05-09 16:46:33 modeAlarmed
2021-01-22 12:58:01 modeChanged
2021-01-22 16:58:00 modeEnd FlexRUID2872;FlexRUID2894;FlexRUID2879;FlexRUID2708;FlexRUID2871;FlexRUID2938;FlexRUID2700;FlexRUID2707;FlexRUID2730;FlexRUID2900;FlexRUID2937;FlexRUID2930;FlexRUID2874;FlexRUID2718;FlexRUID2928;FlexRUID2899;FlexRUID2880;FlexRUID2728;FlexRUID2927;FlexRUID2717;FlexRUID2865;FlexRUID2727;FlexRUID2720;FlexRUID2882;FlexRUID2866;FlexRUID2881;FlexRUID2897;FlexRUID2934;FlexRUID2729;FlexRUID2722;FlexRUID2711;FlexRUID2719;FlexRUID2929;FlexRUID2898;FlexRUID2693;FlexRUID2704;FlexRUID2712;FlexRUID2721;FlexRUID2884;FlexRUID2877;FlexRUID2870;FlexRUID2731;FlexRUID2932;FlexRUID2724;JD3ZHU6ZCXPKEBSS8KILFD;FlexRUID2701;FlexRUID2878;FlexRUID2931;FlexRUID2709;FlexRUID2714;FlexRUID2863;FlexRUID2893;FlexRUID2698;FlexRUID2705;FlexRUID2876;FlexRUID2868;FlexRUID2873;FlexRUID2885;FlexRUID2867;FlexRUID2715;FlexRUID2896;FlexRUID2725;FlexRUID2716;FlexRUID2895;FlexRUID2726;FlexRUID2933;FlexRUID2703;FlexRUID2694;FlexRUID2886;FlexRUID2869;FlexRUID2706;FlexRUID2883;FlexRUID2875;FlexRUID2936;FlexRUID2723;FlexRUID2864;FlexRUID2713;FlexRUID2699;FlexRUID2692
2021-01-20 05:58:01 modeEnded
2021-01-22 12:15:00 modeStart FlexRUID2939
2021-01-22 12:58:01 modeStarted
2021-01-22 16:58:00 modeUpcoming FlexRUID2943;FlexRUID2946;FlexRUID2945;FlexRUID2951;FlexRUID2941;FlexRUID2942;FlexRUID2949;FlexRUID2948;FlexRUID2950;FlexRUID2947;FlexRUID2940
2021-01-22 16:58:00 nextUpdate 2021-01-22 17:57:47
2021-01-22 16:58:03 nextWakeup 2021-01-22 17:57:47
2021-01-22 16:58:00 state triggered
Attributes:
hideOlderThan 1
Ich würde stark vermuten, das liegt an den Eingangsdaten. Kann es sein, dass der Kalender, den du abrufst, mehrfache Einträge mit der gleichen UID enthält?
Also identische UID: ... Zeilen in http://XXXXXXXXXXX/remote.php/dav/calendars/Sebi/personal/?export
http://de.wikipedia.org/wiki/ICalendar
Ich füge zu dem Kaleneder jede Woche Termine hinzu und dann wird vermutlich alles neu geladen. Muss ich also die alten Termine rauslöschen?
Zitat von: Stonemuc am 22 Januar 2021, 17:44:12
Muss ich also die alten Termine rauslöschen?
Du kannst die entsprechenden Attribute im Calendar-device setzen, ein Blick in die commandref würde Dich klugmachen.
Da habe ich schon geschaut, werde daraus aber nicht schlau. Deshalb frag ich ja hier...
Muss ich die alten Termine aus meinem FHEM Calendar Device löschen oder die Termine in der Quelle?
Welches attr nutze ich dann dafür?
removevcalendar 0|1
oder
cutoffOlderThan <timespec>
Zitat von: Stonemuc am 22 Januar 2021, 18:46:50
Welches attr nutze ich dann dafür?
removevcalendar 0|1
oder
cutoffOlderThan <timespec>
Weder noch. Das erste verwirft die Originaldaten nach dem Einlesen, das zweite verwirft Einträge mit einem bestimmten Alter. Der Fehler tritt aber schon beim Einlesen auf. Ein kurzer Auszug aus der 57_Calendar.pm (http://svn.fhem.de/trac/browser/trunk/fhem/FHEM/57_Calendar.pm) von der Stelle, an der die Fehlermeldung ausgegeben wird:
2909 # we now run through the list of freshly retrieved VEVENTs and merge them into
2910 # the hash
2911 my ($n, $nknown, $nmodified, $nnew, $nchanged)= (0,0,0,0,0,0);
2912
2913 # this code is O(n^2) and stalls FHEM for large numbers of VEVENTs
2914 # to speed up the code we first build a reverse hash (UID,RECURRENCE-ID) -> id
2915 sub kf($) { my ($v)= @_; return $v->value("UID").$v->valueOrDefault("RECURRENCE-ID","") }
2916
2917 my %lookup;
2918 foreach my $id (keys %vevents) {
2919 my $k= kf($vevents{$id});
2920 Log3 $hash, 2, "Calendar $name: Duplicate VEVENT" if(defined($lookup{$k}));
2921 $lookup{$k}= $id;
2922 #main::Debug "Adding event $id with key $k to lookup hash.";
2923 }
Hier werden die neuen Kalender-Einträge eingelesen und es wird überprüft, ob es
innerhalb dieser Einträge mehrfach vorkommende UID gibt. Wenn ja, wird die Fehlermeldung ausgegeben (Zeile 2920). Also bringt es nichts, die alten Daten aus dem Kalender zu löschen mit einem der obigen Attribute, weil scheinbar in den frisch eingelesenen Daten Duplikate vorhanden sind.
Was sagt denn dieser Befehl (in der FHEM-Kommandozeile - URL durch deinen Kalender ersetzen):
{qx(wget -O - "http://XXXXXXXXXXX/remote.php/dav/calendars/Sebi/personal/?export" | grep '^UID')}
Bad Port number hinter der Zeile ist die Ausgabe.
Zitat von: Stonemuc am 23 Januar 2021, 05:26:07
Bad Port number hinter der Zeile ist die Ausgabe.
Das klingt eher nach einem Fehler in der angegebenen URL (z.B. wenn hinter der Domain ein Doppelpunkt zur Angabe der Port-Nummer folgt, aber keine gültige Port-Nummer).
Geht denn das in der Linux-Kommandozeile?
wget -O - "http://XXXXXXXXXXX/remote.php/dav/calendars/Sebi/personal/?export" | grep '^UID'