Neues Modul: 57_GCALVIEW Google Kalender Viewer (+Abfall Kalender)

Begonnen von mumpitzstuff, 04 Oktober 2017, 00:02:11

Vorheriges Thema - Nächstes Thema

borsTiHD

Zitat von: trinitywhm am 02 April 2018, 08:21:25
Es funktioniert wieder.
Geholfen hat: Bei allen sechs Devices disable auf 1 zu setzen, reboot vom Raspberry, disable auf 0 setzen.

Danke für deine Unterstützung.

Danke für eure Hilfe.
Klappt so, hatte das gleiche Problem.  ;D


Ich hatte vor paar Tagen einen Stromausfall, der zu vielerlei Problemen führte, da mein Pi auch als Pi-Hole läuft etc.
Gleichzeitig hab ich gemerkt dass MariaDB nicht reboot fest ist bei mir. Mein FritzBox NAS konnte ich unter dem Pi nicht mehr einbinden, was dadurch führte dass mein Backup Script ein Image des Pi's auf dem Pi selbst versuchte zu schreiben (dadurch war dann die SD Karte voll), was zu vielen weiteren Problemen führte. Achja, Homebridge ging auch nicht mehr.

Mittlerweile war ich so weit das alles wieder funktionierte, nur der Kalender nicht... unter der Kommandozeile des Pi's über SSH konnte ich alle Kalender auslesen lassen nur in FHEM nicht. Ein löschen der oauth Datei und erneutes Authentifizieren bei Google brachte auch keine Besserung.

Erst obige Lösung mit dem Device auf "disable 1" zu setzen, einen Pi Reboot durchzuführen, sowie das Device wieder auf "disable 0" mit einem anschließenden "set update" half.
Wollte es nur kurz teilen, vlt. hilft es anderen auch. :)


mumpitzstuff

Wie schon gesagt vermute ich, das es durch zu kurze Timeout Werte dazu kommt. Setzt mal bitte zur Sicherheit die Timeouts für die einzelnen Kalender höher. Dazu gehst du bei Internals auf def und änderst dort die z.b. 10 in 60 oder so um. Beim starten von FHEM brauchen die Kalender vielleicht etwas länger, da das System durch das Hochfahren von FHEM noch extrem belastet ist. Dann reicht vielleicht der Standard Timeout Wert von 10s nicht aus und irgendwas crasht.

borsTiHD

#227
Werde ich mal anpassen, danke für den Tipp. :)
Ich habe zwar nur einen Kalender, aber die Daten brauche ich auch nicht direkt nach einem Start, da tut eine größere Verzögerung nicht sonderlich weh.  ;D

€dit: Hm... hatte den Timeout bei der ersten Einrichtung wohl schon höher gestellt gehabt: "3600"
Oder ist das der Standardwert?

mumpitzstuff

Hmm das ist krass. 3600 ist 1h. Mein Attribut updateInterval ist auf 3600 eingestellt, so das nur jede Stunde ein Update gezogen wird.

defmod <kalender device> GCALVIEW 60

Mit dem Kommando solltest du das Timeout setzen können. Wenn das bei dir wirklich auf 3600 steht, dann solltest du das definitiv nach unten setzen. 60 oder meinetwegen auch 120 sind völlig ausreichend.

borsTiHD

 ;D

Habs mal auf 60 gestellt.
Ich glaube mein Gedanke damnals war, dass es den Betrieb von Pi-Hole weniger belastet und somit mein Netzwerk performanter werden sollte.

mumpitzstuff

Das Timeout ist nur die Zeit die gewartet wird bis die Kalenderabfrage z.b. im Falle eines Fehlers abgebrochen wird. Das ist nicht die Zeit nach der jeweils ein neues Update von Google geholt werden soll. Das legst du mit dem Attribut updateInterval fest.

mumpitzstuff

Im ersten Beitrag habe ich 2 readingsGroups hinzugefügt. Eine für einen Abfallkalender und eine für einen Geburtstagskalender.

Amenophis86

Habe seit heute auch das Problem, dass ständig folgender Fehler kommt:

2018.04.22 07:51:57 3: KL.Test blocking call already running
2018.04.22 07:51:57 3: BlockingCall for KL.Test aborted
2018.04.22 07:51:58 3: KL.Test: gcalcli agenda 04/22/2018 05/22/2018  --calendar "Privat" --calendar "Arbeit" --detail_all  --tsv
2018.04.22 07:51:58 3: KL.Test: something went wrong (check your parameters) - WARNING:root:This function, oauth2client.tools.run(), and the use of the gflags library are deprecated and will be removed in a future version of the library.
Failed to start a local webserver listening on either port 8080
or port 9090. Please check your firewall settings and locally
running programs that may be blocking or using those ports.

Falling back to --noauth_local_webserver and continuing with
authorization.

Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?xxxxxx

Enter verification code: Traceback (most recent call last):
  File "/usr/local/bin/gcalcli", line 2647, in <module>
    BowChickaWowWow()
  File "/usr/local/bin/gcalcli", line 2493, in BowChickaWowWow
    gcal.AgendaQuery(startText=args[1], endText=args[2])
  File "/usr/local/bin/gcalcli", line 1730, in AgendaQuery
    eventList = self._SearchForCalEvents(start, end, None)
  File "/usr/local/bin/gcalcli", line 1629, in _SearchForCalEvents
    work = self._CalService().events().\
  File "/usr/local/bin/gcalcli", line 694, in _CalService
    http=self._GoogleAuth())
  File "/usr/local/bin/gcalcli", line 683, in _GoogleAuth
    storage)
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/util.py", line 137, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/old_run.py", line 150, in run
    code = input('Enter verification code: ').strip()
EOFError: EOF when reading a line

2018.04.22 07:51:58 1: ERROR evaluating {GCALVIEW_DoEnd('KL.Test||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.


Habe disable auf 1, reboot pi, disable 0, set update => Fehler bleibt

Habe dann mal das Device gelöscht und neu angelegt. Im Anschluss ein set update gemacht, zur gleichen Zeit auf der Console top laufen lassen. Sehe dann den Prozess 1295 fhem      20   0   47100  19420  11112 S   0.0  2.1   0:00.54 gcalcli
. Dazu kommt, dass nun FHEM blockiert und erst wieder erreichbar ist, wenn ich den Prozess mit gcalcli kille. Ne Idee woran es liegen könnte?

{qx(gcalcli list);;} in FHEM ergibt ohne Probleme:
 Access  Title
 ------  -----
  owner  Privat
  owner  Arbeit
 reader  Alles
 reader  Contacts
 reader  Feiertage in Deutschland

Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mumpitzstuff

Die gcalcli Aufrufe sind komplett non blocking, haben also mit deinem Fhem Hauptprozess nichts zu tun. Dein Problem liegt wahrscheinlich an einem zu kurzen timeout oder einem zu kurzen Intervall. Auf welchen Werten stehen die beiden Dinge bei dir?

Amenophis86

Intervall auf 3600 und Timeout keine Ahnung, habe ich nie verändert.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mumpitzstuff

Das wäre aber wichtig zu wissen. Steht bei den Internals oben im Device. Wenn da 10 steht, dann stell das mal bitte auf 60 oder besser 120. Dann das Device auf disable stellen, reboot durchführen, nach dem Fhem Start mal 2-3 min warten bis alle anderen Fhem Module ihr Update gemacht haben und dann das disable wieder ausschalten. Wahrscheinlich musst du dann das Update einmal manuell anstoßen, damit du nicht erst 1h warten musst.

mumpitzstuff

Alternativ könntest du auch mal versuchen das Kommando zum Kalender abholen in der Commandline von fhem auszuführen. Aber dazu bitte erst das Device auf disable stellen und rebooten, damit sich das automatische Update und die manuelle Abfrage nicht in die Quere kommen.

{qx(gcalcli agenda 04/22/2018 05/22/2018  --calendar "Privat" --calendar "Arbeit" --detail_all --tsv)}

RoBra81

Hallo,

ich habe zur Zeit das Problem, dass das Kalender-Device leer bleibt. Im Log habe ich folgende Meldungen:

2018.05.03 12:42:22 1: ERROR evaluating {GCALVIEW_DoEnd('Kalender.gcal||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
2018.05.03 12:42:22 5: Kalender.gcal_DoEnd: end running

KeyError: 'creator'
    if 'email' in event['creator'] else '')
  File "/usr/local/bin/gcalcli", line 1187, in _tsv
    self._tsv(start, eventList)
  File "/usr/local/bin/gcalcli", line 1733, in AgendaQuery
    gcal.AgendaQuery(startText=args[1], endText=args[2])
  File "/usr/local/bin/gcalcli", line 2493, in BowChickaWowWow
    BowChickaWowWow()
  File "/usr/local/bin/gcalcli", line 2647, in <module>


Woran könnte das liegen?

BTW: BowChickaWowWow ist schon ein interessanter Funktionsname...

Ronny

mumpitzstuff

gcalcli hat leider ein Problem mit Kommas in den Terminen. Genauer gesagt gcalcli maskiert die Kommas nicht die in den Terminen enthalten sind, erzeugt aber trotzdem eine csv Datei. Diese passt dann aber nicht mehr, da dort einfach zu viele Kommas enthalten sind. Ich kann an diesem Verhalten leider nichts ändern, das ist ein Bug in gcalcli. Kannst du bitte mal prüfen, ob das bei dir das Problem sein könnte?

RoBra81

In Beschreibung und location sind Kommas, aber die haben bis jetzt funktioniert...