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

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

Vorheriges Thema - Nächstes Thema

Jamo

Danke, jetzt hab ich verstanden! Echt ein klasse Modul, Ein dickes DANKE nochmal!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Kusselin

Hallo,

wäre es möglich das man mal einen Screenshot vom Tablet Ui machen könnte wie das aussieht?

Danke


Gruss
Kussel

mumpitzstuff

Ich habe keine alternative Oberfläche, sondern nur das Standard Web interface. Ich kann deshalb nichts zeigen. Das Modul sollte sich von den readings her identisch zum Modul abfall bzw. Calview verhalten. Darauf basierende Oberflächen sollten auch hier gehen.

Roli1606

#33
Zitat von: mumpitzstuff am 08 November 2017, 01:10:37
Wann siehst du deine Kalender? Wenn du als fhem eingeloggt bist? Du must das nach Punkt 4 aus der Anleitung sehen, ansonsten hat der fhem User the Authentifizierungsdaten nicht (wichtig ist hier als fhem User angemeldet zu sein). Geh doch noch mal die Punkte von 1 ab nacheinander durch. Sobald ein Fehler auftritt brauchst du nicht weitermachen. Das Anlegen als Fhem Device ist der letzte Punkt nachdem alle anderen Punkte fehlerfrei durchgelaufen sind. Du kannst mir auch gern eine private Nachricht schreiben mit den Punkten 1 bis 5 und den jeweiligen Ausgaben auf dem Bildschirm dazu. Irgendwas von den Punkten wurde bestimmt vergessen.

Weiter unten findet das System anscheinend nicht mal deine gcalcli Installation. Das verwundert mich etwas, da das doch installiert sein sollte. Kann dein fhem User vielleicht nicht darauf zugreifen? Versuch doch mal die Punkte 1 und 2 als fhem User zu machen.

Die Kalender sehe ich als user fhem. Hab nur ein paar geschwärzt.

root@cubieNAS:~# sudo su - fhem
fhem@cubieNAS:~$ gcalcli list
Access  Title
------  -----
  owner  Familie
  owner  Abfall
  owner  Schichtkalender
  owner  -----------------------
  owner  ---------------------
  owner  Geburts und Jahrestage
  owner  ------------------
reader  http://-----------------------------------------------------------
reader  Ferien - NRW
reader  Feiertage in Deutschland
reader  Week Numbers


Habe die Schritte auch gerade noch mal wiederholt von 1 bis 5 ohne Fehlermeldung.

Bekomme aber immernoch diese Fehlermeldung im Fhem Log

2017.11.08 15:07:49 3: GKalender: gcalcli agenda   --detail_all   --tsv
2017.11.08 15:07:49 3: GKalender: something went wrong (check your parameters) - Error: must specify a username



Hat das vielleicht was mit dem Paket python-parsedatetime_1.2-1_all.deb zu tun das ich gestern Installiert habe um den ersten Fehler zu beseitigen?
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

mumpitzstuff

Schau dir mal bitte die Attribute an. Ist dort ein Attribut userattr gesetzt, in dem deine Kalender auftauchen? Falls nicht, dann aktiviere mal bitte das Attribut verbose 5 und schau dir dann noch mal nach einem Update das Logfile an. Hoffentlich steht dann mehr drin, ansonsten muss ich dir noch eine modifizierte Version geben wo man den Fehler besser sieht.

Oder noch besser, gib mal das hier als fhem Kommando ein, dann siehst du ganz genau den Output den fhem sieht.

{qx(gcalcli list);;}

Damit solltest du die selbe Ausgabe sehen wie auf der Console.

Roli1606

Da kommt leider auch nicht viel mehr zum Vorschein mit Verbose 5.

2017.11.08 18:04:36 5: GKalender_SetNextTimer: set next timer
2017.11.08 18:04:37 5: GKalender_DoRun: start running
2017.11.08 18:04:38 3: GKalender: gcalcli list
2017.11.08 18:04:38 3: GKalender: something went wrong (check your parameters) - Error: must specify a username

2017.11.08 18:04:39 3: GKalender: gcalcli agenda   --detail_all   --tsv
2017.11.08 18:04:39 3: GKalender: something went wrong (check your parameters) - Error: must specify a username

2017.11.08 18:04:39 5: GKalender_DoEnd: end running


mit dem eingabe von {qx(gcalcli list);;} kommt die gleiche Meldung wie vorher
[31;1mError: must specify a username

Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

mumpitzstuff

Das Problem ist, dass du eine veraltete Version installiert hast. In der aktuellen Version 3.4.0 gibt es diesen Fehler gar nicht mehr.

{qx(gcalcli --version);;}

Damit siehst du deine Version. Diese wird älter als 3.4.0 sein. Irgendwie hat vermutlich Punkt 2 nicht geklappt.

sudo pip install gcalcli

Wenn das ohne Fehler durch geht, dann wird die Version nicht geupdatet. Versuch mal folgendes:

sudo apt-get remove --purge gcalcli

und danach:

sudo pip install gcalcli

Dann wieder auf der Kommandozeile prüfen ob du jetzt die richtige Version hast.

rabehd

#37
Ist das Absicht, dass das Attribut disable nur die Option 1 hat?
Statt auf 0 zu setzen, muss man wohl das Attribut löschen.

Nach dem Löschen habe ich wieder
Zitat2017.11.08 19:41:37 3: Kalendertest blocking call already running
2017.11.08 19:41:37 5: Kalendertest_SetNextTimer: set next timer
im Log. state ändert sich wohl nicht so schnell.
Internals:
   DEF        30
   NAME       Kalendertest
   NOTIFYDEV  global
   NR         442
   NTFY_ORDER 50-Kalendertest
   STATE      disabled
   TIMEOUT    30
   TYPE       GCALVIEW
   READINGS:
     2017-11-08 12:16:58   state           disabled
   helper:
     RUNNING_PID:
       abortFn    GCALVIEW_DoAbort
       arg        Kalendertest
       bc_pid     9
       finishFn   GCALVIEW_DoEnd
       fn         GCALVIEW_DoRun
       pid        DEAD:21903
       telnet     telnetPort_127.0.0.1_44936
       terminated 1
       timeout    30
       abortArg:
Attributes:
   calendarType standard
   room       Test
   updateInterval 300
   verbose    5


Mit {qx(gcalcli list);;} sehe ich alle meine Kalender, das Device bleibt leer.
Irgendwie unbefriedigend.
Ich denke schon, dass ich genau nach Anleitung vorgegangen bin.
Auch funktionierende Lösungen kann man hinterfragen.

mumpitzstuff

#38
Bitte bleib am Ball. Das sind die Anfangsprobleme, die vermutlich jedes Modul hat.

Wenn da steht already running, dann hat sich im Hintergrund was aufgehangen. Kannst du dir mal deine Prozesse ansehen und prüfen ob da irgendwas mit gcalcli rennt? Wenn ja bitte mal killen.
An deinen Attributen sieht man aber, das irgendwas beim auslesen deiner Kalender schief gegangen ist, denn ansonsten hätte das Modul ein Attribut userattr mit deinen Kalendern anlegen müssen. Ich schau mir nachher noch mal den Code an und werde versuchen, an dieser Stelle noch ein paar debug Ausgaben rein zu hängen.

ps -aux

Device löschen und wieder anlegen könntest du auch mal versuchen, vielleicht ist im hash irgend eine alte PID hängen geblieben und er startet jetzt das Update gar nicht mehr.

PS: Ich habe jetzt ein Update eingespielt, das 2 weitere Debugausgaben beinhaltet, die man mit verbose 5 sieht. Vielleicht hilft uns das bei der Problemlösung weiter.
PSPS: Habe eben noch ein Update eingespielt. Wennn jetzt der Update Thread bereits läuft, dann wird dieser gekillt und neu aufgesetzt. Das ist erst mal nicht besonders schön, aber vielleicht hilft das erst mal Anfangsprobleme zu vermeiden.

RoBra81

Hallo,

ich habe das Modul entdeckt und wollte es mal ausprobieren, habe aber das Problem, dass nix aktualisiert wird und im Log steht folgende Meldung:

2017.11.08 20:33:32 5: gcal_SetNextTimer: set next timer
2017.11.08 20:33:32 5: gcal_DoRun: start running
2017.11.08 20:33:33 3: gcal: gcalcli list
2017.11.08 20:33:33 3: gcal: something went wrong (check your parameters) - 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?xxx=offline

Enter verification code: Traceback (most recent call last):
  File "/usr/bin/gcalcli", line 2649, in <module>
    BowChickaWowWow()
  File "/usr/bin/gcalcli", line 2472, in BowChickaWowWow
    allDay=FLAGS.allday
  File "/usr/bin/gcalcli", line 614, in __init__
    self._GetCached()
  File "/usr/bin/gcalcli", line 740, in _GetCached
    self._CalService().calendarList().list())
  File "/usr/bin/gcalcli", line 696, in _CalService
    http=self._GoogleAuth())
  File "/usr/bin/gcalcli", line 685, in _GoogleAuth
    storage, args)
  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/tools.py", line 222, in run_flow
    code = input('Enter verification code: ').strip()
EOFError: EOF when reading a line

2017.11.08 20:33:34 3: gcal: gcalcli agenda 11/08/2017 02/06/2018  --detail_all   --tsv
2017.11.08 20:33:34 3: gcal: something went wrong (check your parameters) - 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?xxx=offline

Enter verification code: Traceback (most recent call last):
  File "/usr/bin/gcalcli", line 2649, in <module>
    BowChickaWowWow()
  File "/usr/bin/gcalcli", line 2472, in BowChickaWowWow
    allDay=FLAGS.allday
  File "/usr/bin/gcalcli", line 614, in __init__
    self._GetCached()
  File "/usr/bin/gcalcli", line 740, in _GetCached
    self._CalService().calendarList().list())
  File "/usr/bin/gcalcli", line 696, in _CalService
    http=self._GoogleAuth())
  File "/usr/bin/gcalcli", line 685, in _GoogleAuth
    storage, args)
  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/tools.py", line 222, in run_flow
    code = input('Enter verification code: ').strip()
EOFError: EOF when reading a line

2017.11.08 20:33:34 5: gcal_DoEnd: end running


Ich habe die Schritte aus der Anleitung sowohl für den Nutzer root als auch für den Nutzer fhem gemacht und mit beiden Nutzern kann ich nun von der Konsole die Liste der Kalender abrufen. Im FHEM geht's leider nicht (weder über das Modul noch über den manuellen Aufruf aus der Eingabezeile). FHEM läuft als Nutzer fhem. Woran kann das liegen?

Ronny

mumpitzstuff

Kannst du bitte die Permissions in /opt/fhem überprüfen?

ls -all

-rw-r--r--  1 fhem dialout   2514 Oct 21 00:14 .gcalcli_cache
-rw-------  1 fhem dialout    849 Nov  8 20:16 .gcalcli_oauth


So sieht es bei mir aus. Überprüfe vor allem ob bei dir ebenfalls fhem und dialout steht und auch die Lese/Schreibrechte in etwa so gesetzt sind.

Ich vermute das ist auch das Problem anderer User, wobei mir nicht ganz klar ist, woher dieses Problem kommt, denn letztendlich sollte sich doch der Aufruf auf der Console unter dem fhem user und der Aufruf aus fhem heraus gleich verhalten. Das mit dem Webserver kann man ignorieren, das ist nicht der wahre Grund,sondern nur der letzte Fehler der nach dem Fall Back von gcalcli geworfen wurde. Normalerweise sollte dieser Fall Back aber nicht passieren und damit dieser Fehler auch nicht auftauchen.

Kannst auch du mal gucken ob du mit ps -aux irgendwelche hängenden gcalcli Prozesse entdecken kannst und gegebenenfalls killen?

Bekommst du den selben Fehler wenn du das als Kommando in fhem aufrufst?

{qx(gcalcli list);;}

Solange das Kommando nicht funktioniert, wird alles andere auch nicht gehen.


Roli1606

Zitat von: mumpitzstuff am 08 November 2017, 18:38:30
Das Problem ist, dass du eine veraltete Version installiert hast. In der aktuellen Version 3.4.0 gibt es diesen Fehler gar nicht mehr.

{qx(gcalcli --version);;}

Damit siehst du deine Version. Diese wird älter als 3.4.0 sein. Irgendwie hat vermutlich Punkt 2 nicht geklappt.

sudo pip install gcalcli

Wenn das ohne Fehler durch geht, dann wird die Version nicht geupdatet. Versuch mal folgendes:

sudo apt-get remove --purge gcalcli

und danach:

sudo pip install gcalcli

Dann wieder auf der Kommandozeile prüfen ob du jetzt die richtige Version hast.

Hab mal ein bisschen im Rahmen meiner Möglichkeiten gesucht und probiert.

über apt-get install gcalcli ausführe  bekomme ich Version in fhem über den Befehl {qx(gcalcli list);;}  2.4.2. angezeigt
und bekomme dann die Fehlermeldung das ich einen unser angeben muss wie gehabt.

wenn ich das Paket wieder entferne und mit sudo pip install gcalcli installiere wird Version 3.4.0 installiert.

allerdings habe ich dann im  Fhem Log den Fehler
PERL WARNING: Can't exec "gcalcli": No such file or directory at ./FHEM/57_GCALVIEW.pm line 380.
GKalender: gcalcli agenda   --detail_all   --tsv


Da komme ich dann so nicht mehr weiter mit meinen Kenntnissen.

Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

mumpitzstuff

#42
Also 2.4.2 ist definitiv falsch. Das Ding wird nicht funktionieren.

Und die pip installation scheint ebenfalls zu scheitern oder nicht richtig ausgeführt zu werden. Das war wahrscheinlich auch der Grund warum die Version vorher nicht richtig installiert wurde.

Du hast ja irgendwie die Version gesehen. Hast du die auch auf der Console als fhem User abfragen können und dann die 3.4.0 gesehen?

Ich hasse Linux. Alles nur Bastelscheiss von irgend welchen Studenten.

Versuch das Ding mal als Source zu installieren, vielleicht geht es dann:

git clone https://github.com/insanum/gcalcli.git
cd gcalcli
python setup.py install


Danach gehen mir dann wirklich auch die Ideen aus. Ich kann vielleicht noch mal im Forum fragen woran es liegen könnte das man Befehle als fhem User in der Konsole absetzen kann, aber nicht aus fhem heraus.

RoBra81

Guten Morgen,

ich hab's geschaft: Die .gcalcli-Dateien waren im fhem-Verzeichnis gar nicht vorhanden und auch das Kopieren dahin hat nix gebracht. Ein bisschen Recherche im Internet führte mich zur gcalcli-Option --configFolder. Also habe ich ein Verzeichnis /opt/gcalcli angelegt und

gcalcli --configFolder /opt/gcalcli list

auf der Kommandozeile ausgeführt und den neuen Dateien im Ordner /opt/gcalcli/ den Nutzer fhem und die Gruppe Dialout zugewiesen. Anschließen habe ich

{qx(gcalcli --configFolder /opt/gcalcli list);;}

ausgeführt und ein Ergebnis erhalten  ;D

Also habe ich die 57_GCALVIEW.pm bei mir um den hardcodierten Eintrag

--configFolder /opt/gcalcli

erweitert und prompt funktioniert. Vielleicht könntest du da noch ein entsprechendes Attribut ergänzen?

Ronny

mumpitzstuff

#44
Oh super! Vielen Dank! Ich war hier schon am verzweifeln. Ich schau es mir noch mal genau an und versuche dann eine gute Lösung daraus abzuleiten.

PS: Vielleicht wäre es auch möglich als configFolder /opt/fhem zu verwenden, dann müsste man wahrscheinlich im Modul gar nichts ändern, da das dann ja der Home path von fhem ist.