Calendar Modul: lange Ladezeit und 98% CPU

Begonnen von slupus, 20 August 2016, 12:47:13

Vorheriges Thema - Nächstes Thema

sTaN

Hi Dr. Boris,

ja das Problem der leeren Kalender habe ich eigentlich fast täglich...Heute werden mal wieder welche angezeigt aber nur von einem Kalender.
Mit "das geht bald wieder" meinst du Google wird hier Abhilfe schaffen?

Ich habe folgende Einstellungen für meine Kalender:

# Google Kalender Arbeit
define TACalendar Calendar ical url https://calendar.google.com/calendar/ical/XXXX/XXXX/basic.ics 84600
attr TACalendar group Kalender
attr TACalendar hideLaterThan 5
attr TACalendar hideOlderThan 1
attr TACalendar room Wohnzimmer,Kalender

# TACalendar 1x täglich automatisch um 03:00 Uhr aktualisieren
define UpdateTACalendar at *03:00:00 set TACalendar update

# Letzten 5 Einträge des TACalendar
define vKalenderTA CALVIEW TACalendar 1
attr vKalenderTA maxreadings 10
attr vKalenderTA modes next
attr vKalenderTA room Kalender

# Privater Google Kalender
define TPCalendar Calendar ical url https://calendar.google.com/calendar/ical/XXX/XXX/basic.ics 84600
attr TPCalendar group Kalender
attr TPCalendar hideLaterThan 5
attr TPCalendar hideOlderThan 1
attr TPCalendar room Wohnzimmer,Kalender

# privaten Kalender 1x täglich automatisch um 04:00 Uhr aktualisieren
define UpdateTPCalendar at *04:00:00 set TPCalendar update

# Letzten 5 Einträge des privaten Kalenders
define vKalenderTP CALVIEW TPCalendar 1
attr vKalenderTP maxreadings 10
attr vKalenderTP modes next
attr vKalenderTP room Kalender

# Alle Kalender
define calview_all CALVIEW TACalendar, TPCalendar 1
attr calview_all maxreadings 10
attr calview_all modes next
attr calview_all room Kalender


Das callview_all lasse ich im Tablet UI ausgeben mittels:

<li data-row="3" data-col="6" data-sizex="4" data-sizey="2" class="">
          <header><div data-type="label" class="normal">Termine</div></header>
            <div   data-type="calview"
                data-device="calview_all"
                data-get="all"
                data-max="7"
                data-detail='["bdate","btime","etime","summary"]'
                data-showempty="true"
                class="large">
            </div>
</li>


An der Konfiguration sollte das ja dann nicht liegen, oder? Ich möchte eigentlich immer nur die kommenden Termine für den nächsten Tage anzeigen lassen. Maximal 7 an der Zahl.

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

Dr. Boris Neubert

Hallo,

Zitat von: sTaN am 13 Juni 2017, 11:48:11
ja das Problem der leeren Kalender habe ich eigentlich fast täglich...Heute werden mal wieder welche angezeigt aber nur von einem Kalender.
Mit "das geht bald wieder" meinst du Google wird hier Abhilfe schaffen?

ich meine damit, dass der Abruf manchmal fehlt schlägt aber nicht immer. Deine Antwort bestätigt das. Bitte zeige uns einmal das Protokoll des Abrufs mit verbose 5.

Was erhältst Du, wenn Du den Kalender z.B. mit wget von Hand herunterlädst?

Zitat

define TACalendar Calendar ical url https://calendar.google.com/calendar/ical/XXXX/XXXX/basic.ics 84600
# TACalendar 1x täglich automatisch um 03:00 Uhr aktualisieren
[/quote]

Warum gibst Du an, dass der Kalender automatisch alle 84600 Sekunden aktualisiert wird, und lässt ihn zusätzlich noch per at aktualisieren? Das at kannst Du Dir sparen, es sei denn, dass Du unbedingt einmal nachts um 3 Uhr aktualisieren willst und nicht jeweils alle 84600 Sekunden (1 Tag sind 86400 Sekunden).

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

sTaN

Zitat von: Dr. Boris Neubert am 13 Juni 2017, 18:54:36
Bitte zeige uns einmal das Protokoll des Abrufs mit verbose 5.

Wie mache ich manuell am saubersten das Update? Habe verbose bereits bei beiden Kalendern auf 5 gesetzt.
Mittels get Calendar update oder set Calendar update?
Laut commandref müsste es ja das Gleiche sein. Ich frage lieber vorher, da ich dann wieder eine Weile meine Steuerung lahm lege.

Zitat von: Dr. Boris Neubert am 13 Juni 2017, 18:54:36
Was erhältst Du, wenn Du den Kalender z.B. mit wget von Hand herunterlädst?

Das scheint relativ zügig zu funktionieren und die basics.ics mit Daten liegt im Verzeichnis.

sudo wget https://calendar.google.com/calendar/ical/XXX/private-XXX/basic.ics
--2017-06-13 19:26:48--  https://calendar.google.com/calendar/ical/XXX/private-XXX/basic.ics
Resolving calendar.google.com (calendar.google.com)... 172.217.16.206, 2a00:1450:4001:817::200e
Connecting to calendar.google.com (calendar.google.com)|172.217.16.206|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/calendar]
Saving to: `basic.ics'

    [        <=>                                                                    ] 725,028      437K/s   in 1.6s   

2017-06-13 19:27:04 (437 KB/s) - `basic.ics' saved [725028]


Zitat von: Dr. Boris Neubert am 13 Juni 2017, 18:54:36
Warum gibst Du an, dass der Kalender automatisch alle 84600 Sekunden aktualisiert wird, und lässt ihn zusätzlich noch per at aktualisieren? Das at kannst Du Dir sparen, es sei denn, dass Du unbedingt einmal nachts um 3 Uhr aktualisieren willst und nicht jeweils alle 84600 Sekunden (1 Tag sind 86400 Sekunden).

Ja das stimmt...Das war bisher für mich noch ein unlösbares Problem. Eigentlich wollte ich den Kalender gern zeitgesteuert nur 1 x Nachts um 3 Uhr updaten lassen, da er tagsüber immer mein FHEM blockiert und ich meine Geräte nicht schalten konnte. Leider muss man bei der Kalenderdefinition ja eine Zeit mitgeben und dann zählt diese ab speichern der fhem.cfg
Dann dachte ich, wenn ich Nachts das Update zeitgesteuert mache, müsste er die 84600 Sekunden ab Fertigstellung triggern und somit bleiben die Updates immer Nachts. Wobei er diese dann natürlich hintereinander macht. Wenn ich so drüber nachdenke könnte das ja schon die Ursache für die bei mir häufiger leeren Kalender sein, oder?

Vielleicht gibt es hierfür ja noch eine elegantere Lösung? Am liebsten wäre es mir kein Zeit Intervall zu vergeben, sondern eine feste Uhrzeit.

Viele Grüße
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

sTaN

Nach einem Update meines privaten Kalenders erhalte ich folgendes im Logfile:

2017.06.13 19:45:22 4: Calendar TPCalendar: process ended.
2017.06.13 19:45:20 4: Calendar TPCalendar: Checking times...
2017.06.13 19:45:02 4: Calendar TPCalendar: creating calendar events
2017.06.13 19:45:02 4: Calendar TPCalendar: 764 records processed, 1 new, 757 known, 6 modified, 0 changed.
2017.06.13 19:45:00 4: Calendar TPCalendar: merging data
2017.06.13 19:44:50 4: Calendar TPCalendar: parsing data synchronously
2017.06.13 19:44:44 4: Calendar TPCalendar: Getting data from URL <hidden>
2017.06.13 19:44:44 4: Calendar TPCalendar: Updating...


Nun sind die Einträge in der Calview vCalendarTP aber wieder leer.
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

Dr. Boris Neubert

Zitat von: sTaN am 13 Juni 2017, 19:37:40
Wie mache ich manuell am saubersten das Update? Habe verbose bereits bei beiden Kalendern auf 5 gesetzt.
Mittels get Calendar update oder set Calendar update?

Ich meine, dass Du attr global verbose 5 setzen musst, um auch die Meldungen beim Abholen zu sehen. set und get ... update sind äquivalent. Nimm eines davon.

ZitatVielleicht gibt es hierfür ja noch eine elegantere Lösung? Am liebsten wäre es mir kein Zeit Intervall zu vergeben, sondern eine feste Uhrzeit.

Idealerweise setzt Du die Zahl im define auf 9999999 und benutzt weiter Dein at. Dann solltest Du aber auch das attr ... update async setzen, damit FHEM während des Parsens nicht blockiert.

Oder Du lässt die Zahl im define und setzt attr ... update none und benutzt weiter Dein at.

Die Gründe für das fehlgeschlagene Herunterladen liegen nicht im Kalendermodul sondern im Fehlschlagen des Herunterladens (in anderen Worten: wir sind in diesem Thema off-topic). Vielleicht hilft uns das Log weiter.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

sTaN

Okay danke Dr. Boris Neubert!

Erneutes update mit globalem attr. verbose 5 durchgeführt:

2017.06.13 20:10:15 4: Connection accepted from WEB_192.168.1XX.2XX_57773
/
2017.06.13 20:10:15 4: WEB: /fhem?cmd=%7BAttrVal(%22vKalenderTP%22%2C%22room%22%2C%22%22)%7D&XHR=1&fwcsrf=csrf_XXXXX / RL:29 / text/plain; charset=UTF-8 / Content-Encoding: gzip
2017.06.13 20:10:15 5: Cmd: >{AttrVal("vKalenderTP","room","")}<
2017.06.13 20:10:15 4: WEB_192.168.1XX.2XX_57772 GET /fhem?cmd=%7BAttrVal(%22vKalenderTP%22%2C%22room%22%2C%22%22)%7D&XHR=1&fwcsrf=csrf_XXX; BUFLEN:0
2017.06.13 20:10:15 4: Connection accepted from WEB_192.168.1XX.2XX_57772
/
2017.06.13 20:10:15 4: WEB: /fhem?cmd=%7BReadingsVal(%22vKalenderTP%22%2C%22update%22%2C%22%22)%7D&XHR=1&fwcsrf=csrf_XXX / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
2017.06.13 20:10:15 5: Cmd: >{ReadingsVal("vKalenderTP","update","")}<
2017.06.13 20:10:15 4: WEB_192.168.1XX.2XX_57699 GET /fhem?cmd=%7BReadingsVal(%22vKalenderTP%22%2C%22update%22%2C%22%22)%7D&XHR=1&fwcsrf=csrf_XXX; BUFLEN:0
2017.06.13 20:10:15 4: Connection closed for WEB_192.168.1XX.2XX_57771: EOF
/
2017.06.13 20:10:15 4: WEB: /fhem?detail=vKalenderTP / RL:3453 / text/html; charset=UTF-8 / Content-Encoding: gzip
2017.06.13 20:10:15 4: WEB_192.168.1XX.2XX_57699 GET /fhem?detail=vKalenderTP; BUFLEN:0


Mehr finde ich dazu nicht im Logfile.

Habe den csrf Token und meine IP-Adresse mal auch unkenntlich gemacht, wobei das eigentlich egal sein sollte?!

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

Dr. Boris Neubert

Hallo,

das ist aber kein Kalenderabruf drin.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!