Dieses Modul arbeitet Standalone, also baut nicht auf anderen Modulen auf. Alle Funktionen wurden absolut non blocking implementiert und sollten somit andere Module nicht behindern. Jedes angezeigte Event verfügt über einen anklickbaren Link, der direkt zum Eintrag im Google Kalender führt, so das man den Eintrag direkt editieren kann (funktioniert super in jedem Browser).
Es gibt innerhalb des Moduls 2 Ansichten, welche sich zum einen an 57_CALVIEW und zum anderen an 57_ABFALL anlehnen. Diese Ansicht lässt sich beliebig umschalten oder man erstellt mehrere Devices und konfiguriert die einzelnen Devices entsprechend. Bei mir kann dieses Modul die Module 57_CALENDAR, 57_CALVIEW und 57_ABFALL inzwischen komplett ersetzen.
Um das Modul nutzen zu können, muss gcalcli (open source) installiert sein!
Installation:
1.) Zuerst einmal muss man gcalcli installieren:
sudo apt-get install gcalcli
Eventuell müssen auch die folgenden Pakete installiert werden:
sudo apt-get install git python-pip python-gdata python-dateutil python-gflags python-vobject python-parsedatetime
2.) An dieser Stelle unbedingt prüfen, ob mindestens Version 3.4.0 installiert ist!
gcalcli --version
Wenn das nicht der Fall ist, können folgende Alternativen probiert werden:
pip install gcalcli --upgrade
oder
git clone https://github.com/insanum/gcalcli.git
cd gcalcli<br>
python setup.py install
oder
Hier kann man sich eine deb Datei für sein System runterladen: https://pkgs.org/download/gcalcli (https://pkgs.org/download/gcalcli) und installieren:
sudo dpkg -i <name of file>.deb
Wenn die Installation über pip fehl schlägt, dann muss man eventuell zuvor die über apt-get installierte Version entfernen:sudo apt-get remove gcalcli
3.) Jetzt das folgende Kommando eingeben:
sudo -u fhem gcalcli --noauth_local_webserver list
Die angezeigte URL muss kopiert und mit einem Browser aufgerufen werden. Dort muss man die Verknüpfung mit dem Google Konto bestätigen und erhält dann ein OAuth Token angezeigt. Das kopiert man wieder und kopiert es in die Konsole des Users fhem und bestätigt die Eingabe. Nun kann gcalcli auf den Google Kalender zugreifen! Um das zu prüfen kann man folgendes eingeben und erhält dann eine Liste der verfügbaren Kalender angezeigt:
sudo -u fhem gcalcli list
Bitte an dieser Stelle prüfen, ob eine Datei namens .gcalcli_oauth im fhem Verzeichnis erstellt wurde (/opt/fhem). Wenn das nicht der Fall ist, sollte versucht werden Punkt 6. mit dieser zusätzlichen Option durchzuführen:
--configFolder /opt/fhem
Für neuere gcalcli Versionen muss --config-folder verwendet werden!
4.) In fhem sollte jetzt das folgende Kommando eine Liste deiner Google Kalender anzeigen:
{qx(gcalcli list);;}
oder
{qx(gcalcli list --configFolder /opt/fhem);;}
Für neuere gcalcli Versionen muss --config-folder verwendet werden!
5.) Jetzt kann das neue Modul 57_GCALVIEW installiert werden. Dazu folgende fhem Kommandos eingeben:
update add http://raw.githubusercontent.com/mumpitzstuff/fhem-GCALVIEW/master/controls_gcalview.txt
update all
shutdown restart
6.) Nun kann das Device in fhem angelegt werden:
define <name> GCALVIEW <timeout>
timeout ist hier ein Timeout in Sekunden für den Backgroundtask. Wenn dieses Timeout überschritten wird, dann wird der Task gekillt.
7.) Wenn es notwendig war die Option --configFolder bzw. --config-folder zu verwenden, dann muss unbedingt das Attribut configFolder im Device gesetzt werden!
Damit ist die Installation abgeschlossen!
Mit den Default Einstellungen sollten alle Termine der nächsten 5 Tage abgerufen werden. Das kann man entweder manuell auslösen oder man wartet das updateIntervall ab, das auf 1 Stunde voreingestellt ist.
Folgende Attribute gibt es aktuell:
updateIntervall: Intervall für das Abholen der Kalenderdaten in Sekunden (default: 3600s)
calendarFilter: Dieses Attribut wird erst verfügbar, wenn man das erste Mal seinen Google Calendar eingelesen hat. Mit diesem Attribut kann man bestimmte Kalender filtern. Wenn das Attribut nicht vorhanden ist oder kein Kalender ausgewählt ist, dann werden alle Kalender angezeigt. Ansonsten werden nur die ausgewählten Kalender angezeigt.
calendarDays: Gibt an von wievielen Tagen die Kalendereinträge angezeigt werden sollen. 30 würde z.B. bedeuten: von heute an 30 Tage in die Zukunft.
calendarIncludeStarted: Wenn das Attribut gesetzt ist, werden für die dort ausgewählten Kalender auch bereits gestartete Termine angezeigt. Wenn hier nichts gesetzt ist, dann werden gestartete Termine nicht angezeigt.
calendarType: Hier kann der Typ des Kalendars eingestellt werden. standard = 57_CALVIEW oder waste = 57_ABFALL
maxEntries: Hiermit kann die Anzahl der Einträge eingeschränkt werden. Die absolute Obergrenze sind jedoch 200 Einträge.
disable: Modul wird auf Eis gelegt und keine Updates werden mehr durchgeführt.
cache: Wenn das Attribut aktiviert ist, dann werden die Zugriffe nicht mehr durch einen Cache abgefedert.
filterSummary: Wenn dieses regex innerhalb des Summary matcht, dann wird das Event komplett ausgeblendet.
filterLocation: Wenn dieses regex innerhalb der Location matcht, dann wird das Event komplett ausgeblendet.
filterDescription: Wenn dieses regex innerhalb der Description matcht, dann wird das Event komplett ausgeblendet.
filterSource: Wenn dieses regex innerhalb von Source matcht, dann wird das Event komplett ausgeblendet.
filterAuthor: Wenn dieses regex innerhalb des Authors matcht, dann wird das Event komplett ausgeblendet.
filterOverall: Wenn dieses regex innerhalb des Summary, Location, Description, Source oder des Authors matcht, dann wird das Event komplett ausgeblendet.
alldayText: Gibt an, was bei einem Ganztagsevent ausgegeben werden soll (default: all-day).
weekdayText: Gibt an wie die Wochentage benannt werden sollen (default: Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday). Hier muss eine Komma separierte Liste von genau 7 Strings angegeben werden.
daysLeftLongText: Gibt an wie die lange Version der noch verbleibenden Tage benannt werden soll. Die Angabe muss eine Komma separierte Liste mit genau 3 Einträgen sein. Im letzten Eintrag sollte % verwendet werden, denn dieses Zeichen wird durch die Anzahl der verbleibenden Tage ersetzt (default: today,tomorrow,in % days).
readingPrefix: Dieses Attribut spielt nur beim Typ waste eine Rolle und gibt an, ob der Kalendername den einzelnen Readings vorangestellt werden soll oder nicht (default: nein).
sourceColor: Hiermit kann für die unterschiedlichen Kalenderquellen Farbwerte als String abgelegt werden. Es muss eine Komma separierte Liste im Stil von <source>:<color>,<source>:<color>,... angegeben werden.
wasteEventSeparator: Wenn der Typ waste eingestellt ist, dann hier hier das Trennzeichen angegeben werden, das verwendet werden soll, um Events die auf den selben Tag fallen, zusammen zu fassen (default: and).
showAge: Wenn das Attribut eingeschaltet ist, dann wird versucht, aus dem bei ageSource angegebenen Feld, eine vierstellige Zahl beginnend mit 19, 20 oder 21 zu extrahieren und das Alter z.B. einer Person zu berechnen (default: 0). Es wird ein separates Reading _age erzeugt.
ageSource: Gibt an, aus welchem Feld versucht wird, das Alter einer Person zu extrahieren (default: description). Es kann description, summary oder location ausgewählt werden.
configFolder: Hiermit kann man ein Verzeichnis für die Authentifizierungsdaten vorgeben, z.B. /opt/fhem.
HISTORY:
08.03.18
- Attribut emptyReadingText hinzugefügt (damit kann man den Inhalt von leeren Readings festlegen)
- Attribut invertFilter hinzugefügt (invertiert die Bedeutung der existierenden Filter). Hiermit kann man exakt die Einträge behalten, die dann dem Filtertext entsprechen!
- Reading _daysnext hinzugefügt (nur waste Kalender)
- Version erhöht von 1.0.2 nach 1.0.3
24.01.18
- Attribut wasteEventSeparator fixed
18.01.18
- Attribut calendarIncludeStarted hinzugefügt
- Attribut includeStarted entfernt
- Versionsinformationen hinzugefügt
14.12.17
- Attribut ageSource hinzugefügt
- bugfix falls description tabs enthalten sollte
09.12.17:
- Attribut showAge hinzugefügt
04.12.17:
- Attribut daysLeftLongText hinzugefügt
18.11.17:
- Fehler bei der utf8 Behandlung behoben
11.11.17:
- utf8 behandlung im Modul erweitert
- bei einigen Attributen wurde die Einstellung 0 oder 1 erweitert, so das man hier umschalten kann, anstatt das Attribut zu löschen
- probleme mit dem Attribut disable behoben
- attribute configFolder added
- readingsGroup template erweitert (Jahr vom Datum wird entfernt, Wochentag wird angezeigt, Farbdefinitionen des Kalenders werden verwendet)
06.11.17:
- Attribut cache hinzugefügt
- Logik von includeStarted invertiert
- Probleme mit deutschen Umlauten behoben
TODO:
- Kalender Einträge erstellen und bearbeiten
- weitere Attribute unterstützen
- verschiedene Spielereien (für Voschläge wäre ich offen)
PS: Hier noch eine schöne readingsGroup die man verwenden könnte. Wenn man das entsprechende sourceColor Attribut im Kalender setzt, dann werden diese Farbwerte auch in der Readingsgroup angezeigt. Weiterhin sind die Einträge anklickbar und man wird direkt zum Eintrag im Google Kalender weiter geleitet z.B. um ihn zu editieren:
defmod rg_KALENDER readingsGroup <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>\
KALENDER_VIEW:t_001_bdate,t_001_weekday,t_001_timeshort,t_001_summary,t_001_location\
KALENDER_VIEW:t_002_bdate,t_002_weekday,t_002_timeshort,t_002_summary,t_002_location\
KALENDER_VIEW:t_003_bdate,t_003_weekday,t_003_timeshort,t_003_summary,t_003_location\
KALENDER_VIEW:t_004_bdate,t_004_weekday,t_004_timeshort,t_004_summary,t_004_location\
KALENDER_VIEW:t_005_bdate,t_005_weekday,t_005_timeshort,t_005_summary,t_005_location\
KALENDER_VIEW:t_006_bdate,t_006_weekday,t_006_timeshort,t_006_summary,t_006_location\
KALENDER_VIEW:t_007_bdate,t_007_weekday,t_007_timeshort,t_007_summary,t_007_location\
KALENDER_VIEW:t_008_bdate,t_008_weekday,t_008_timeshort,t_008_summary,t_008_location\
KALENDER_VIEW:t_009_bdate,t_009_weekday,t_009_timeshort,t_009_summary,t_009_location\
KALENDER_VIEW:t_010_bdate,t_010_weekday,t_010_timeshort,t_010_summary,t_010_location\
KALENDER_VIEW:t_011_bdate,t_011_weekday,t_011_timeshort,t_011_summary,t_011_location\
KALENDER_VIEW:t_012_bdate,t_012_weekday,t_012_timeshort,t_012_summary,t_012_location\
KALENDER_VIEW:t_013_bdate,t_013_weekday,t_013_timeshort,t_013_summary,t_013_location\
KALENDER_VIEW:t_014_bdate,t_014_weekday,t_014_timeshort,t_014_summary,t_014_location\
KALENDER_VIEW:t_015_bdate,t_015_weekday,t_015_timeshort,t_015_summary,t_015_location\
KALENDER_VIEW:t_016_bdate,t_016_weekday,t_016_timeshort,t_016_summary,t_016_location\
KALENDER_VIEW:t_017_bdate,t_017_weekday,t_017_timeshort,t_017_summary,t_017_location\
KALENDER_VIEW:t_018_bdate,t_018_weekday,t_018_timeshort,t_018_summary,t_018_location\
KALENDER_VIEW:t_019_bdate,t_019_weekday,t_019_timeshort,t_019_summary,t_019_location\
KALENDER_VIEW:t_020_bdate,t_020_weekday,t_020_timeshort,t_020_summary,t_020_location
attr rg_KALENDER nameStyle style="font-weight:bold;;text-decoration:underline;;"
attr rg_KALENDER nonames 1
attr rg_KALENDER notime 1
attr rg_KALENDER room KALENDER
attr rg_KALENDER valueFormat {\
if ($READING =~ /bdate$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/bdate$//;;\
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Heute";;\
}\
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Morgen";;\
}\
else\
{\
# the follwoing line strips the year of the date (remove it if needed)\
substr($VALUE, 0, 5);;\
}\
}\
elsif ($READING =~ /weekday$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/weekday$//;;\
\
# the follwoing line strips the weekday down to 3 chars (remove it if needed)\
substr($VALUE, 0, 3);;\
}\
elsif ($READING =~ /summary$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/summary$//;;\
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');;\
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);;\
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';;\
if (defined($age))\
{\
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;;\
}\
else\
{\
$link =~ s/\>link\</ $style\>$VALUE\</;;\
}\
$link;;\
}\
}
attr rg_KALENDER valueStyle {\
my $readingStart = $READING;;\
$readingStart =~ s/(t_\d+_).+/$1/;;\
'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"'\
}
Noch eine Readinsgroup für einen Abfallkalender:
defmod rg_Abfall readingsGroup ABFALL_LEERUNG:Restmuell_weekday,Restmuell_date,Restmuell_text,<%dustbin@red>,<{recyclebinCounter($DEVICE,'Restmuell_')}@state>\
ABFALL_LEERUNG:Rund_weekday,Rund_date,Rund_text,<%dustbin@green>,<{recyclebinCounter($DEVICE,'Rund_')}@state>\
ABFALL_LEERUNG:Flach_weekday,Flach_date,Flach_text,<%dustbin@limegreen>,<{recyclebinCounter($DEVICE,'Flach_')}@state>\
ABFALL_LEERUNG:Biogut_weekday,Biogut_date,Biogut_text,<%dustbin@yellow>,<{recyclebinCounter($DEVICE,'Biogut_')}@state>
attr rg_Abfall nonames 1
attr rg_Abfall room KALENDER
attr rg_Abfall valueFormat {\
if ($READING =~ /bdate$/)\
{\
my $readingStart = $READING;;\
my $daysLeft;;\
\
$readingStart =~ s/bdate$//;;\
$daysLeft = ReadingsVal($DEVICE, $readingStart.'daysleft', -1);;\
\
if (0 == $daysLeft)\
{\
'Heute';;\
}\
elsif (1 == $daysLeft)\
{\
'Morgen';;\
}\
elsif (2 == $daysLeft)\
{\
'Übermorgen';;\
}\
else\
{\
# the follwoing line strips the year of the date (remove it if needed)\
substr($VALUE, 0, 5);;\
}\
}\
}
attr rg_Abfall valueStyle {\
my $color;; \
\
if ($READING =~ /^(Restmuell_|Rund_|Flach_|Biogut_)/)\
{\
my $days = ReadingsVal($DEVICE, $1.'days', 0);;\
\
$color = (1 == $days ? 'red' : 2 == $days ? 'darkorange' : 'white');;\
}\
\
return 'style="color:'.$color.'"';;\
}
Code für die 99_myUtils.pm:
sub recyclebinCounter($$)
{
my ($device, $reading) = @_;
my $days = ReadingsVal($device, $reading.'days', 'na');
my $daysnext = ReadingsVal($device, $reading.'daysnext', 'na');
my $color_days = ('1' eq $days ? 'red' : '2' eq $days ? 'darkorange' : 'green');
return '<div style="width:16px;height:14px;border-radius:14px;color:white;background-color:'.
$color_days.
';font-size:10px;font-weight:700;text-align:center;position:relative;padding-top:1%;'.
'left:-29px;top:-4px;">'.$days.'</div>'.
'<div style="width:16px;height:14px;border-radius:14px;color:white;'.
'border:1px solid white;'.
'font-size:10px;font-weight:700;text-align:center;position:relative;padding-top:1%;'.
'left:-11px;top:-19px;">'.$daysnext.'</div>';
}
Zu guter Letzt noch ein Beispiel für einen Geburtstagskalender:
defmod rg_Geburtstage readingsGroup <Datum>,<Tag>,<verbl. Tage>,<Geburtstag>\
GEBURTSTAG_VIEW:t_001_bdate,t_001_weekday,t_001_daysleft,t_001_summary\
GEBURTSTAG_VIEW:t_002_bdate,t_002_weekday,t_002_daysleft,t_002_summary\
GEBURTSTAG_VIEW:t_003_bdate,t_003_weekday,t_003_daysleft,t_003_summary\
GEBURTSTAG_VIEW:t_004_bdate,t_004_weekday,t_004_daysleft,t_004_summary\
GEBURTSTAG_VIEW:t_005_bdate,t_005_weekday,t_005_daysleft,t_005_summary\
GEBURTSTAG_VIEW:t_006_bdate,t_006_weekday,t_006_daysleft,t_006_summary\
GEBURTSTAG_VIEW:t_007_bdate,t_007_weekday,t_007_daysleft,t_007_summary\
GEBURTSTAG_VIEW:t_008_bdate,t_008_weekday,t_008_daysleft,t_008_summary\
GEBURTSTAG_VIEW:t_009_bdate,t_009_weekday,t_009_daysleft,t_009_summary\
GEBURTSTAG_VIEW:t_010_bdate,t_010_weekday,t_010_daysleft,t_010_summary
attr rg_Geburtstage nameStyle style="font-weight:bold;;text-decoration:underline;;"
attr rg_Geburtstage nonames 1
attr rg_Geburtstage notime 1
attr rg_Geburtstage room KALENDER
attr rg_Geburtstage valueFormat {\
if ($READING =~ /bdate$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/bdate$//;;\
my $daysLeft = ReadingsVal($DEVICE, $readingStart.'daysleft', -1);;\
\
if (0 == $daysLeft)\
{\
'Heute';;\
}\
elsif (1 == $daysLeft)\
{\
'Morgen';;\
}\
}\
elsif ($READING =~ /summary$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/summary$//;;\
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);;\
if (defined($age))\
{\
$VALUE .= ' ('.$age.')';;\
}\
$VALUE;;\
}\
}
attr rg_Geburtstage valueStyle {\
my $readingStart = $READING;;\
$readingStart =~ s/_[a-zA-Z]+$//;;\
my $daysleft = ReadingsVal($DEVICE, $readingStart.'_daysleft', 0);;\
my $color = ($daysleft <= 3 ? 'red' : $daysleft <= 7 ? 'orange' : $daysleft <= 14 ? 'yellow' : 'white');;\
\
return 'style="color:'.$color.'"';;\
}
Hierfür benötigt man ein spezielles Kalenderdevice, in dem man entweder nach einem speziellen Kalender filtert oder nach einem Schlüsselwort wie z.B. Geburtstag. Bei mir hat das Kalenderdevice z.B. folgende Attribute:
attr GEBURTSTAG_VIEW alldayText ganztägig
attr GEBURTSTAG_VIEW calendarDays 365
attr GEBURTSTAG_VIEW filterOverall [Gg]eburtstag
attr GEBURTSTAG_VIEW invertFilter 1
attr GEBURTSTAG_VIEW room KALENDER
attr GEBURTSTAG_VIEW showAge 1
attr GEBURTSTAG_VIEW updateInterval 3600
attr GEBURTSTAG_VIEW weekdayText Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
Ein Abfallkalender als DOIF:
defmod doif_Abfall DOIF ##
attr doif_Abfall room KALENDER
attr doif_Abfall uiTable {\
package ui_Table;;\
\
$SHOWNOSTATE=1;;\
\
sub ic\
{\
my ($icon, $days, $days2) = @_;;\
\
icon_label2($icon, $days, $days2, 'white', (1 == $days ? 'red' : 2 == $days ? 'darkorange' : 'green'));;\
}\
\
sub icon_label2\
{\
my ($icon, $text, $text2, $color, $color_bg, $pos_left, $pos_top) = @_;;\
my $pad = ((length($text) > 1) ? 2 : 5);;\
my $pad2 = ((length($text2) > 1) ? 2 : 5);;\
\
$color = "" if (!defined ($color));;\
$color_bg = "" if (!defined ($color_bg));;\
$pos_left = -5 if (!defined ($pos_left));;\
$pos_top = -10 if (!defined ($pos_top));;\
\
return '<div style="display:inline-table;;">'.::FW_makeImage($icon).\
'<div style="display:inline;;width:16px;;height:14px;;border-radius:14px;;color:'.$color.';;background-color:'.$color_bg.\
';;font-size:10px;;font-weight:700;;text-align:center;;position:relative;;padding-top:1px;;padding-left:'.$pad.'px;;padding-right:'.$pad.'px;;padding-bottom:1px;;'.\
'left:'.$pos_left.'px;;top:'.$pos_top.'px;;">'.$text.'</div>'.\
'<div style="display:inline;;width:16px;;height:14px;;border-radius:14px;;color:'.$color.';;border:1px solid white;;'.\
'font-size:10px;;font-weight:700;;text-align:center;;position:relative;;padding-top:1px;;padding-left:'.$pad2.'px;;padding-right:'.$pad2.'px;;padding-bottom:1px;;'.\
'left:'.$pos_left.'px;;top:'.$pos_top.'px;;">'.$text2.'</div></div>';;\
}\
\
sub convDate\
{\
my ($date, $days) = @_;;\
\
return 'Heute' if (0 == $days);;\
return 'Morgen' if (1 == $days);;\
return 'Übermorgen' if (2 == $days);;\
\
# the following line strips the year of the date (remove it if needed)\
#return substr($date, 0, 5);;\
return $date;;\
}\
\
sub textColor\
{\
my $days = shift;;\
\
return (1 == $days ? 'red' : 2 == $days ? 'darkorange' : 'white');;\
}\
}\
\
DEF TPL_Abfall (style([ABFALL_LEERUNG:$1_weekday], textColor([ABFALL_LEERUNG:$1_days]))|\
style(convDate([ABFALL_LEERUNG:$1_date], [ABFALL_LEERUNG:$1_days]), textColor([ABFALL_LEERUNG:$1_days]))|\
style([ABFALL_LEERUNG:$1_text], textColor([ABFALL_LEERUNG:$1_days]))|\
ic("dustbin\@$2", [ABFALL_LEERUNG:$1_days], [ABFALL_LEERUNG:$1_daysnext]))\
\
TPL_Abfall (Restmuell,red)\
TPL_Abfall (Rund,green)\
TPL_Abfall (Flach,limegreen)\
TPL_Abfall (Biogut,yellow)\
Moin mumpitzstuff,
Deine Idee hört sich erstmal nicht schlecht an. Vielen Dank für Dein Engagement.
Für mich als Tablet UI User ist natürlich interessant, ob es auch ein Widget für Tablet UI geben wird, damit die Termine schön angezeigt werden können.
Grüße Mave
Hast Du das Modul jetzt in den letzten 3 Tagen auf die Beine gestellt?
Du hast am 30.09. erstmals von gcalcli berichtet und heute präsentierst Du ein fertiges Modul? :o
Respekt.
Ich verwende leider keine alternative Oberfläche, deshalb kann ich dazu wenig beitragen. Ich kann allerdings dabei unterstützen.
Wenn es aber bereits etwas für das originale CALVIEW gibt, dann sollte man die eigentlich auch fast übernehmen können. Alle Readings sind eigentlich gleich benannt in meinem Modul. Im Idealfall kann man mit diesem Modul einfach das alte CALVIEW Device ersetzen und darauf aufbauende Schichten wie. z.B. eine GUI sollten davon gar nichts mitbekommen.
Das Modul zu erstellen war erschreckend einfach, denn der gesamte Unterbau wird von gcalcli übernommen. Ich musste an der Stelle nur noch die Daten in die Readings überführen, was sich auf nur wenige Zeilen Code beschränkt hat. Ich war selbst etwas verblüfft darüber, wie schnell etwas funktionsfähiges entstanden ist.
Ich hätte gern noch 1-2 Screenshots erstellt, damit sich jeder vor der Installation ein Bild davon machen kann, aber das ist bei privaten Kalendern immer so eine Sache...
Auch wenns nur für mich ist, hatte ich einfach Lust das Modul weitestgehend fertig zu stellen... Das Update ist jetzt verfügbar.
Hallo Mumpitzstuff,
funktioniert prima. Erste Sahne. Auch mit dem anklickbaren link ist super Praktisch.
Das freut mich. Wenn du noch etwas vermisst oder was nicht funktioniert, dann einfach melden.
Das attr 'includeStarted' funktioniert nicht wie erwartet.
Ich habe das attr nicht gesetzt, also sollten angefangene Termine nicht mehr angezeigt werden.
Habe gerade einen Eintrag 'Test' für 21:20 gemacht, der wird aber weiterhin um 21:26 nach dem Kalender update angezeigt.
Okay schau ich mir an.
Oder Moment. Das ist mir auch schon mal aufgefallen. Das liegt am Cache. Gcalcli legt sich einen Cache an und bedient sich für kurze Zeit daraus, bevor es wieder den Server abfragt. Deshalb hat man dann teilweise kurze Zeit solche Inkonsistenzen. Man kann den Cache aber löschen lassen. Dafür werde ich mal ein set Kommando einfügen. Oder ich frage generell ohne Cache ab, das könnte ich auch machen.
Kannst du mal versuchen einen längeren Termin anzulegen und nach 1h noch mal zu gucken? Ich hab leider keine Ahnung wie lange gcalcli den Cache beibehält.
Ich habe es jetzt 2 mal probiert, gestern Abend mit einem 1-stündigem Termin der um 21:20 anfing, und heute einem 8 stündigem Termin ab 10:00.
Beidesmal ist der Termin nach über 2 Stunden immer noch sichtbar, auch wenn ich zwischendurch 'update' ausführe (um damit den stündlichen refresh öfter auszuführenn), das wäre mir eindeutig zu lange, weil im ersten Fall der Termin sogar schon zuende ist.
Vielleicht besser ohne Cache?
Ich baue mal ein Attribut ein Cache ein/aus. Mal sehen ob das hilft. Ansonsten funktioniert die Filterung durch gcalcli nicht und ich muss das dann selbst "nachfiltern".
Der 8 stündige Termin von heute morgen ab 10:00 ist immer noch im Kalender. Attribut Cache ein/aus hört sich gut an. Danke!
Übrigens, der 8 stündige Termin von heute morgen mit start 10:00 / ende 18:00 ist immer noch im Kalender :-)
Was mache ich falsch?
Zitat2017.11.06 20:55:34 3: GCALVIEW defined with timeout 30
2017.11.06 20:56:29 3: Kalendertest blocking call already running
2017.11.06 20:56:30 3: Kalendertest: something went wrong (invalid gcalcli output) - 2017-11-06, 16:00, 2017-11-06, 16:30, https://www.google.com/calendar/event?eid=dmN
Im Log stehen einmalig die Einträge, aber keine readings.
Hallo rabehd, ehrlich gesagt keine Ahnung, ich habe alles nach Anleitung von mumpitzstuff gemacht, und das hat auf Anhieb funktioniert.
Hier mal eine sub, mit der kann man aus dem Kalender-Readings von 'today_00[1-9]_[be]time' sich ein 'at' event generieren. Falls das reading 'today_00[1-9]_summary' mit dem Trigger übereinstimmt, wird das 'at' zum start oder end Zeitpunkt generiert. Über den 2-ten parameter "Start oder Ende" kann man definieren ob das at event am Anfang oder am Ende vom Kalendereintrag generiert werden soll. Das ist case insensitiv wil ich das über lc() konvertiert habe.
Der Trigger muss mit dem Kalendereintrag matchen
Die Action kann dann eine beliebige fhem Aktion sein, hier wird der Schalter_Heizung eingeschaltet.
Ich bin kein Perl experte, geht bestimmt schöner, aber funktioniert bei mir.
##########################################################
# define GoogleCalendar_n notify GoogleCalendar:to.*_00[1-9]_[be]time:.* {Kalenderstart("$EVENT","Trigger","Action")}
# define GoogleCalendar_n notify GoogleCalendar:to.*_00[1-9]_[be]time:.* {Kalenderstart("$EVENT","BEGIN","Besuch kommt","set Schalter1 on;;set Schalter2 off")}
# define GoogleCalendar_n notify GoogleCalendar:to.*_00[1-9]_[be]time:.* {Kalenderstart("$EVENT","Start","Besuch kommt","set Schalter1 on;;set Schalter2 off")}
# define GoogleCalendar_n notify GoogleCalendar:to.*_00[1-9]_[be]time:.* {Kalenderstart("$EVENT","Anfang","Besuch kommt","set HMIP_PSM1 on")}
# define GoogleCalendar_n notify GoogleCalendar:to.*_00[1-9]_[be]time:.* {Kalenderstart("$EVENT","End","Besuch kommt","set HMIP_PSM1 off")}
##########################################################
sub Kalenderstart ($$$$) {
my ($Event,$StartOrEnd,$Trigger,$Action) = @_;
my $hm = strftime("%H:%M", localtime(time()));
my $startlcend = lc($StartOrEnd);
my @EVENTarray = split(": ", $Event);
if (($hm lt $EVENTarray[1] && $EVENTarray[0] =~ 'today_.*') || ($hm gt $EVENTarray[1] && $EVENTarray[0] =~ 'tomorrow_.*')) {
my @EVENTsplit = ($startlcend eq "begin" || $startlcend eq "start" || $startlcend eq "anfang")?split("btime", $EVENTarray[0]):split("etime", $EVENTarray[0]);
my $summary = $EVENTsplit[0]."summary";
#Log 3, "Event: $Event; StartOrEnd: $StartOrEnd; Trigger: $Trigger; Action: $Action; EVENTarray[0]: $EVENTarray[0]; EVENTarray[1]: $EVENTarray[1]; summary: $summary; $Action";
my $Kalendertext = ReadingsVal("GoogleCalendar","$summary","nA");
my @Triggerarray = (split(" ", $Trigger),"_","_");
my $devSpec = $Triggerarray[0]."_".$Triggerarray[1]."_".$Triggerarray[2]."_".$startlcend;
if ($Kalendertext =~ /$Trigger/) {fhem("defmod $devSpec at $EVENTarray[1]:00 $Action;attr $devSpec room Calendar ")}
}}
Hallo mumpitzstuff,
wenn ich jetzt ein 'update check' in fhem machen bekomme ich folgenden Fehler:gcalview
http://raw.githubusercontent.com/mumpitzstuff/fhem-GCALVIEW/master/controls_gcalview.txt: Too many redirects
Zitat von: inoma am 06 November 2017, 23:14:11
Hallo mumpitzstuff,
wenn ich jetzt ein 'update check' in fhem machen bekomme ich folgenden Fehler:gcalview
http://raw.githubusercontent.com/mumpitzstuff/fhem-GCALVIEW/master/controls_gcalview.txt: Too many redirects
Muss irgendwas temporäres sein:
2017.11.06 23:32:38 1 : gcalview
2017.11.06 23:32:39 1 : UPD FHEM/57_GCALVIEW.pm
2017.11.06 23:32:39 1 : saving fhem.cfg
2017.11.06 23:32:39 1 : saving ./log/fhem.save
2017.11.06 23:32:39 1 :
2017.11.06 23:32:39 1 : New entries in the CHANGED file:
2017.11.06 23:32:39 1 : - attribute cache added
So ich habe ein Update eingespielt. Die Logik von includeStarted war falsch rum. In der aktuellen Version kann man dieses Attribut nur noch auf 0 setzen und damit ausschalten anstatt wie früher einzuschalten. Außerdem habe ich im Abfall View ein Problem mit deutschen Umlauten behoben und auch ein Cache Attribut hinzugefügt. Damit kann man den Cache abschalten falls notwendig.
Zitat von: rabehd am 06 November 2017, 21:43:54
Was mache ich falsch?
Im Log stehen einmalig die Einträge, aber keine readings.
Du könntest mal versuchen im Device das Attribut Verbose auf 5 zu setzen. Das gibt dann mehr Einblicke.
Hast du dich als User fhem angemeldet gehabt und dein OAuth Token generiert? Hast du dann auf der Kommandozeile (als fhem user!) mit:
gcalcli list
Eine Liste deiner Google Kalender erhalten?
das 'attr includeStarted' funktioniert jetzt wie erwartet. Mit dem nächsten update vom Kalender verschwindet der begonnene Eintrag. Perfekt!
Das mit dem Cache habe ich nicht probiert. Danke!!!
ZitatEine Liste deiner Google Kalender erhalten?
Ja, hatte ich im Terminal gesehen.
Zitatim Device das Attribut Verbose auf 5 zu setzen.
2017.11.07 16:03:51 3: Kalendertest blocking call already running
2017.11.07 16:03:51 5: Kalendertest_SetNextTimer: set next timer
Ich bin eigentlich nach Deiner Anleitung vorgegangen.
Werde es wohl demnächst löschen und neuanlegen.
Habe alles nach anleitung gemacht.
aber nach der Eingabe von
$ gcalcli --noauth_local_webserver
kommt bei mir folgendes
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 522, in <module>
class gcalcli:
File "/usr/local/bin/gcalcli", line 535, in gcalcli
dateParser = DateTimeParser()
File "/usr/local/bin/gcalcli", line 444, in __init__
self.pdtCalendar = parsedatetime.Calendar()
File "/usr/lib/python2.7/dist-packages/parsedatetime/__init__.py", line 216, in __init__
self.ptc = Constants()
File "/usr/lib/python2.7/dist-packages/parsedatetime/__init__.py", line 1733, in __init__
self.locale = pdtLocales['icu'](self.localeID)
File "/usr/lib/python2.7/dist-packages/parsedatetime/pdt_locales.py", line 151, in __init__
self.icu = pyicu.Locale(localeID)
icu.InvalidArgsError: (<type 'icu.Locale'>, '__init__', (None,))
was stimmt da nicht?
Zitat von: rabehd am 07 November 2017, 16:21:42
Ja, hatte ich im Terminal gesehen.
2017.11.07 16:03:51 3: Kalendertest blocking call already running
2017.11.07 16:03:51 5: Kalendertest_SetNextTimer: set next timer
Ich bin eigentlich nach Deiner Anleitung vorgegangen.
Werde es wohl demnächst löschen und neuanlegen.
Bei dir rennt aktuell scheinbar eine Instanz endlos im Hintergrund. Schau mal bei dir in den Prozessen nach, ob da ein gcalcli läuft bitte. Falls ja, dann schiess das mal ab. Ansonsten kannst du auch mal ein shutdown restart probieren. Ich hoffe dann wird der Blockingcall zurück gesetzt.
Zitat von: Roli1606 am 07 November 2017, 21:38:31
Habe alles nach anleitung gemacht.
aber nach der Eingabe von
$ gcalcli --noauth_local_webserver
kommt bei mir folgendes
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 522, in <module>
class gcalcli:
File "/usr/local/bin/gcalcli", line 535, in gcalcli
dateParser = DateTimeParser()
File "/usr/local/bin/gcalcli", line 444, in __init__
self.pdtCalendar = parsedatetime.Calendar()
File "/usr/lib/python2.7/dist-packages/parsedatetime/__init__.py", line 216, in __init__
self.ptc = Constants()
File "/usr/lib/python2.7/dist-packages/parsedatetime/__init__.py", line 1733, in __init__
self.locale = pdtLocales['icu'](self.localeID)
File "/usr/lib/python2.7/dist-packages/parsedatetime/pdt_locales.py", line 151, in __init__
self.icu = pyicu.Locale(localeID)
icu.InvalidArgsError: (<type 'icu.Locale'>, '__init__', (None,))
was stimmt da nicht?
Ich hab mal etwas geschaut und folgendes gefunden:
http://ubuntuhandbook.org/index.php/2014/08/gcalcli-google-calendar-command-line/ (http://ubuntuhandbook.org/index.php/2014/08/gcalcli-google-calendar-command-line/)
Da steht was von einem Bug in parsedatetime. Kannst du mal versuchen das so zu beheben? Ansonsten versuch mal:
pip install --upgrade parsedatetime
Vielleicht findest du auch hier weitere Informationen:
https://github.com/insanum/gcalcli/issues/152 (https://github.com/insanum/gcalcli/issues/152)
https://github.com/insanum/gcalcli/issues/142 (https://github.com/insanum/gcalcli/issues/142)
https://github.com/insanum/gcalcli/issues/163 (https://github.com/insanum/gcalcli/issues/163)
Ich hoffe du bekommst das damit behoben.
Zitat von: mumpitzstuff am 07 November 2017, 21:58:34
Ich hab mal etwas geschaut und folgendes gefunden:
http://ubuntuhandbook.org/index.php/2014/08/gcalcli-google-calendar-command-line/ (http://ubuntuhandbook.org/index.php/2014/08/gcalcli-google-calendar-command-line/)
Da steht was von einem Bug in parsedatetime.
Das hat geholfen habe diese Befehle ausgeführt Danke
cd /tmp
wget https://launchpad.net/ubuntu/+archive/primary/+files/python-parsedatetime_1.2-1_all.deb
sudo dpkg -i python-parsedatetime_1.2-1_all.deb
wenn ich jetzt ein gcalcli list mache sehe ich meine Kalender aus google.
leider kommt bei einem update im fhem modul das im Log
2017.11.08 00:01:34 3: GKalender: gcalcli agenda --detail_all --tsv
2017.11.08 00:01:34 3: GKalender: something went wrong (check your parameters) - [31;1mError: must specify a username
[0m
Hab schon versucht den nächsten Schritt in der oben verlinkten Anleitung zu machen und die Datei mit User und pw anzulegen aber dann funktioniert ein gcalcli list nicht mehr und es kommt diese Meldung
fhem@cubieNAS:~$ gcalcli list
Error: [gcalcli] is an invalid commandfhem@cubieNAS:~$ gcalcli list
Hast du noch eine Idee?
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.
Hallo Mumpitzstuff,
ich habe deinen Kalender als user root eingerichtet, also Punkt 4) nicht als User fhem, sondern als root angemeldet. Grund ist das FHEM bei mir unter root läuft (Wegen SONOS, das hat Reinerlein so empfohlen). Bei mir ist der user fhem in /etc/passwd vollständig auskommentiert. Punkt 4) also mit 'su - '.
Kannst Du mir das noch mit dem attribut sourceColor erklären? Ich habe als source das was im reading t_xxx_source steht eingetragen, und dann als color z.b. blue, also sowas wie attr Kalender sourceColor abcdefg@gmail.de:blue
aber wo sehe ich den jetzt die blaue Schrift?
Hier auch noch eine andere Readingsgroup. Mit 3 Stelligen Wochentagen (also Mon,Die,Mit,Don...) und kurzem Datum (also 10.11 anstatt 10.11.2017). Wenn 'Heute' oder 'Morgen' wird der Wochentag weggelassen.
defmod GoogleCalendar_rg readingsGroup GoogleCalendar:t_001_weekday,t_001_bdate,t_001_btime,t_001_summary,t_001_location GoogleCalendar:t_002_weekday,t_002_bdate,t_002_btime,t_002_summary,t_002_location GoogleCalendar:t_003_weekday,t_003_bdate,t_003_btime,t_003_summary,t_003_location GoogleCalendar:t_004_weekday,t_004_bdate,t_004_btime,t_004_summary,t_004_location GoogleCalendar:t_005_weekday,t_005_bdate,t_005_btime,t_005_summary,t_005_location GoogleCalendar:t_006_weekday,t_006_bdate,t_006_btime,t_006_summary,t_006_location GoogleCalendar:t_007_weekday,t_007_bdate,t_007_btime,t_007_summary,t_007_location GoogleCalendar:t_008_weekday,t_008_bdate,t_008_btime,t_008_summary,t_008_location GoogleCalendar:t_009_weekday,t_009_bdate,t_009_btime,t_009_summary,t_009_location GoogleCalendar:t_010_weekday,t_010_bdate,t_010_btime,t_010_summary,t_010_location GoogleCalendar:t_011_weekday,t_011_bdate,t_011_btime,t_011_summary,t_011_location GoogleCalendar:t_012_weekday,t_012_bdate,t_012_btime,t_012_summary,t_012_location GoogleCalendar:t_013_weekday,t_013_bdate,t_013_btime,t_013_summary,t_013_location GoogleCalendar:t_014_weekday,t_014_bdate,t_014_btime,t_014_summary,t_014_location GoogleCalendar:t_015_weekday,t_015_bdate,t_015_btime,t_015_summary,t_015_location GoogleCalendar:t_016_weekday,t_016_bdate,t_016_btime,t_016_summary,t_016_location GoogleCalendar:t_017_weekday,t_017_bdate,t_017_btime,t_017_summary,t_017_location GoogleCalendar:t_018_weekday,t_018_bdate,t_018_btime,t_018_summary,t_018_location GoogleCalendar:t_019_weekday,t_019_bdate,t_019_btime,t_019_summary,t_019_location GoogleCalendar:t_020_weekday,t_020_bdate,t_020_btimet,t_020_summary,t_020_location
attr GoogleCalendar_rg noheading 1
attr GoogleCalendar_rg nonames 1
attr GoogleCalendar_rg notime 1
attr GoogleCalendar_rg room Calendar,Favourites
attr GoogleCalendar_rg valueFormat { \
my $readingStart = $READING;;\
if ($READING =~ /bdate/)\
{\
$readingStart =~ s/bdate//;;\
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Heute";;\
}\
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Morgen";;\
} else {sprintf("%s",substr(ReadingsVal($DEVICE, $READING,"nothing"),0,5))}\
} elsif ($READING =~ /weekday/) \
{\
my $readingStart2 = $READING;;\
$readingStart2 =~ s/weekday//;;\
if (0 == ReadingsVal($DEVICE, $readingStart2.'daysleft', -1) || 1 == ReadingsVal($DEVICE, $readingStart2.'daysleft', -1)) {" "} else {sprintf("%s",substr(ReadingsVal($DEVICE, $READING,"nothing"),0,3))}}\
}
Zitat von: inoma am 08 November 2017, 04:25:29
Hallo Mumpitzstuff,
ich habe deinen Kalender als user root eingerichtet, also Punkt 4) nicht als User fhem, sondern als root angemeldet. Grund ist das FHEM bei mir unter root läuft (Wegen SONOS, das hat Reinerlein so empfohlen). Bei mir ist der user fhem in /etc/passwd vollständig auskommentiert. Punkt 4) also mit 'su - '.
Kannst Du mir das noch mit dem attribut sourceColor erklären? Ich habe als source das was im reading t_xxx_source steht eingetragen, und dann als color z.b. blue, also sowas wie attr Kalender sourceColor abcdefg@gmail.de:blue
aber wo sehe ich den jetzt die blaue Schrift?
Aha okay. Dann müssten bei dir aber theoretisch auch beide Wege funktionieren denke ich, also auch wenn du das als User fhem gemacht hast.
Das Verhalten mit dem Sourcecolor habe ich von dem Modul CALVIEW übernommen. Hier wird nicht ein Eintrag gefärbt, sondern alle Einträge die von abcdefg@gmail.de erstellt wurden erhalten den String Blue anstatt White als ein Attribut. Das wiederum kann dann meines Erachtens in irgendwelchen Oberflächen für die Einfärbung verwendet werden. Ich denke in deiner Readingsgroup könntest du es z.b. auch verwenden.
Danke, jetzt hab ich verstanden! Echt ein klasse Modul, Ein dickes DANKE nochmal!
Hallo,
wäre es möglich das man mal einen Screenshot vom Tablet Ui machen könnte wie das aussieht?
Danke
Gruss
Kussel
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.
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) - [31;1mError: must specify a username
[0m
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?
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.
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) - [31;1mError: must specify a username
[0m
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) - [31;1mError: must specify a username
[0m
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
[0m
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.
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.
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.
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
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.
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.
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.
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
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.
Bei mir tut es weiterhin nicht. :-[
Da ich keinen klemmenden Prozess gefunden habe, habe ich ein Reboot des Raspi gemacht.
Jetzt schreibt er mir mehr (alle Kalendereinträge) ins Log, aber das Device ist weiterhin leer.
2017.11.09 12:04:18 3: Kalendertest blocking call already running
2017.11.09 12:04:18 3: BlockingCall for Kalendertest aborted
2017.11.09 12:04:18 5: Kalendertest_SetNextTimer: set next timer
2017.11.09 12:04:18 5: Kalendertest_DoRun: start running
2017.11.09 12:04:20 5: Kalendertest: [33;1m Access Title
[0m[33;1m ------ -----
[0m[0;36m owner G
[0m[0;36m owner b
[0m[0;36m owner R
[0m[0;36m owner A
[0m[0;36m owner Ra
[0m[0;35m reader kar
[0m[0;35m reader Di
[0m[0;35m reader Co
[0m[0;35m reader Day of the year
[0m[0;35m reader Feiertage in Deutschland
[0m[0;35m reader Phases of the Moon
[0m[0;35m reader Sunrise/Sunset:
[0m[0;35m reader Weather:
[0m[0;35m reader Week Numbers
[0m
2017.11.09 12:04:24 5: Kalendertest: 2017-11-09 00:00 2017-11-10 00:00 https://www.google.com/calendar/event?eid=RGF5b
(Kalendernamen gelöscht) Und das wiederholt sich
Das habe ich noch zwischen den Einträgen gefunden
2017.11.09 12:04:24 5: Kalendertest_DoEnd: end running
2017.11.09 12:04:24 1: ERROR evaluating
Zitat von: mumpitzstuff am 09 November 2017, 10:42:33
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.
/opt/fhem hardcodiert fände ich nicht so gut, da nicht jeder FHEM in diesem Ordner hat. Ich habe zum Beispiel aus Perfomance-Gründen zwei Instanzen /opt/fhem/ und /opt/fhem2/ und weiß noch nicht, in welcher ich den Kalender betreiben werde. Wenn man das Attribut explizit setzt, weiß man auch, mit welchem Aufrauf man die Autorisierung in der Konsole machen muss (vielleicht könnte man das auch als Funktion des Moduls implementieren (URL zum Anklicken anzeigen und dann Code entgegennehmen), dann würden die Dateien (vermutlich) im richtigen Verzeichnis mit den korrekten Berechtigungen abgelegt und man könnte die configFolder-Geschichte weglassen...)
Ronny
Ich meinte auch nicht, das ich den Pfad fest im Modul verwenden möchte, sondern das du bei deinem erstellen der Config in einem speziellen Ordner auch dein fhem Pfad hättest verwenden können. Dann hätte dein fhem das vielleicht ohne den Patch im Kalender Modul gefunden. Ich habe mich schon dafür entschieden das als Attribut anzubieten und darüber hinaus auch die Beschreibung dahingehend zu erweitern und diesen Weg zu beschreiben.
Zitat von: rabehd am 09 November 2017, 12:30:39
Bei mir tut es weiterhin nicht. :-[
Da ich keinen klemmenden Prozess gefunden habe, habe ich ein Reboot des Raspi gemacht.
Jetzt schreibt er mir mehr (alle Kalendereinträge) ins Log, aber das Device ist weiterhin leer.
2017.11.09 12:04:18 3: Kalendertest blocking call already running
2017.11.09 12:04:18 3: BlockingCall for Kalendertest aborted
2017.11.09 12:04:18 5: Kalendertest_SetNextTimer: set next timer
2017.11.09 12:04:18 5: Kalendertest_DoRun: start running
2017.11.09 12:04:20 5: Kalendertest: [33;1m Access Title
[0m[33;1m ------ -----
[0m[0;36m owner G
[0m[0;36m owner b
[0m[0;36m owner R
[0m[0;36m owner A
[0m[0;36m owner Ra
[0m[0;35m reader kar
[0m[0;35m reader Di
[0m[0;35m reader Co
[0m[0;35m reader Day of the year
[0m[0;35m reader Feiertage in Deutschland
[0m[0;35m reader Phases of the Moon
[0m[0;35m reader Sunrise/Sunset:
[0m[0;35m reader Weather:
[0m[0;35m reader Week Numbers
[0m
2017.11.09 12:04:24 5: Kalendertest: 2017-11-09 00:00 2017-11-10 00:00 https://www.google.com/calendar/event?eid=RGF5b
(Kalendernamen gelöscht) Und das wiederholt sich
Das habe ich noch zwischen den Einträgen gefunden
2017.11.09 12:04:24 5: Kalendertest_DoEnd: end running
2017.11.09 12:04:24 1: ERROR evaluating
Das sieht eigentlich schon sehr gut aus. Du scheinst zumindest keine Probleme mit dem OAuth Token mehr zu haben. Das Modul scheint bei dir die Liste der Kalender auszulesen und die Zeilen danach (wo du geschrieben hast, das sie sich wiederholen) müssten die Events in deinem Kalender sein. Das scheint soweit alles wunderbar zu klappen. Jetzt sieht es aber danach aus, als ob das Konvertieren nach JSON und wieder zurück einen Fehler erzeugt, diesen aber nicht näher ausführt. Dieses mal liegt es wohl tatsächlich am Modul bzw. an irgendwelchen Sonderzeichen in deinem Kalender.
Bitte deaktiviere das Modul erst einmal. Ich versuche zeitnah dafür eine Lösung zu finden, muss dazu aber erst mal mit diversen Zeichen rumexperimentieren und gucken ob ich das Problem irgendwie nachstellen kann. Ich melde mich auf jeden Fall und habe dann hoffentlich auch eine Lösung für dein Problem. Taucht in deinem Kalender irgend was auf, das du als Sonderzeichen bezeichnen würdest? Ich habe zum Beispiel / in einem Kaldendernamen gesehen. Gibts darüber hinaus sowas wie <>|#'`\[]{}&%$§"^° oder Buchstaben mit einem Apostroph drüber, also Zeichen die im weitesten Sinne keine Buchstaben/Zahlen oder Leerzeichen sind? Sry wegen der blöden Frage, aber ich will nur versuchen das bei mir nachzustellen, dann kann ich auch eine Lösung dazu anbieten.
Hallo,
ich habe noch ein Problem mit dem Modul: leider kann es mit Umlauten nicht richtig umgehen und stellt stattdessen nur Fragezeichen dar. Wenn ich es auf der Konsole ausführe werden alle Sonderzeichen korrekt dargestellt.
Ronny
Das ist eigenartig. Ich habe in meinen Terminen auch Sonderzeichen drin und die werden korrekt dargestellt. Ich schau es mir aber noch einmal an.
next_text Restmüll 2017-11-09 20:51:56
Das ist z.b. ein Reading bei mir im Abfallkalender...
Ich habe mal alle Zusatzkalender in Google gelöscht (Wetter, Mond...)
Trotzdem sind diese Kalender noch in der Liste im Log, aber der Logeintrag endet jetzt mit einer Fehlernmeldung
.com","white"]]')}: unexpected end of string while parsing JSON string, at character offset 1063 (before "(end of string)") at ./FHEM/57_GCALVIEW.pm line 510.
Hallo Mumpitzstuff, ich weiss nicht ob es hilft, ich habe mal die Umlaute üäö probiert, die gehen ohne Problem. Wenn ich einen Termin eintrage mit
Zitat!@#$%^&*()_+-=][}{\\|\'\";:/?.>,<
dann kommt
ERROR evaluating {GCALVIEW_DoEnd('GoogleCalendar||[["2017-11-09","23:00","2017-11-10","00:00","https://www.google.com/calendar/event ..................: illegal backslash escape sequence in string, at character offset 173 (before "\\") at ./FHEM/57_GCALVIEW.pm line 510.
Kommt zwar nie vor, aber ich wollte halt mal die Sonderzeichen probieren :-)
Ich habe jetzt ein Update eingespielt. Damit sollten dann auch die Sonderzeichen funktionieren und auch das Problem von rabehd behoben sein.
Zu der falschen Darstellung der Umlaute bin ich noch nicht gekommen. Bitte etwas Geduld, ich versuche das irgendwie nachzustellen. Momentan habe ich das Problem nicht, deshalb ist es schwierig ins Blaue da was zu ändern.
Hallo Mumpitzstuff, noch ein Fehler:
mit attr Kalender disable 1
kann man den Kalender disablen, aber wenn ich dann deleteattr Kalender disable
und dann ein 'save' mache, bleibt der Kalender disabled. Erst mit einem attr Kalender disable 0
kann man den Kalender wieder enablen. Das ist bei den anderen Modulen anders.
Okay. Ist in meiner Bugliste aufgenommen. Ich hab aber in 1 Woche ne Prüfung und muss etwas lernen ab und zu. ;) Deshalb kann ich vielleicht erst mal nur die wichtigsten Dinge beheben in der nächsten Woche. Aber danke für den Hinweis!
Danke, ist einfach ein SUPER modul. !
Nach dem Update heute Nacht, werden die Kalendereinträge eingelesen. :)
Danke
Guten Morgen,
ich habe gerade auf die aktuelle Version aktualisiert: Das Attribut für das configFolder ist scheinbar noch nicht drin (habe es wieder manuell eingefügt), aber die Umlaute funktionieren jetzt :-)
Ronny
Oh schön das die Umlaute gleich mit funktionieren. Das erspart mir Arbeit.
Für das Attribut hatte ich gerstern dann keine Zeit mehr, ist aber das nächste was auf der Liste steht.
Irgendwo weiter oben tauchte die Frage auf, warum gelöschte Kalender weiterhin bei den Attributen auftauchen. Wenn man Kalender gelöscht hat bei Google, dann kann man einfach das Attribut userattr löschen, wo die alten Einträge noch auftauchen. Nach einem Update sollte dann dort die aktuelle Liste auftauchen.
bei mir steht im FHEMWEB Papiermüll statt Papiermüll, wie es im Browser steht.
Das ist aber abhängig von Attribut "calendarType".
Es passiert bei waste, bei Standard ist die Schreibweise ok.
Eine halbe Stunde später tritt das Problem nicht mehr auf. ???
Trotz hin und her wechseln des Typs.
ZitatcalendarFilter: Dieses Attribut wird erst verfügbar, wenn man das erste Mal seinen Google Calendar eingelesen hat. Mit diesem Attribut kann man bestimmte Kalender filtern. Der Inhalt dieser Kalendar wird dann nicht mehr angezeigt.
Bei werden nur die Kalender ausgelesen, die bei diesem Attribut ausgewählt sind.
Es müßte wohl heißen:
ZitatcalendarFilter: Dieses Attribut wird erst verfügbar, wenn man das erste Mal seinen Google Calendar eingelesen hat. Mit diesem Attribut kann man bestimmte Kalender filtern. Es werden nur die Inhalte dieser Kalendar angezeigt. Ist keine auswahl getroffen, werden die Inhalte aller Kalender angezeigt.
Ich habe auch noch das Problem, dass alle Kalender gelsen werden, die bei der API-Erstellung bestellt waren. Seitdem habe ich ein paar Kalender abbestellt, diese sind aber weiterhin da.
Im Modus Abfall werden Teile des Kalendereintrags in das Reading übernommen. Hier ist FHEm wesentlich restriktiver was die Zeichen angeht. Ich hatte deshalb da ein paar Filter eingebaut, die grad Umlaute oder andere Sonderzeichen entweder ersetzen oder entfernen sollten. Es kann jetzt sein, das durch meine anderen Änderungen da was nicht mehr ganz passt. Das sollte aber nur noch eine Kleinigkeit sein. Was wirklich komisch ist, ist das es eine halbe Stunde später nicht mehr auftritt. das wundert mich ebenfalls etwas.
Beim ersten Update des Moduls wird ein Attribut userattr erzeugt. Das sorgt dafür, dass man, sobald man das Attribut calendarFilter ausgewählt hat, ein Fenster mit Checkboxen bekommt. Bestätigt man den Dialog mit OK, dann sollte hier ein zweites Attribut calendarFilter angelegt werden, das die Auswahl beinhaltet. Hat man Bespielsweise nur noch 1 Kalender ausgewählt z.b. Abfall, dann sollte nur noch der Inhalt von Abfall angezeigt werden. An der Stell hast du recht. Der Kalender wird dann nicht gefiltert, sondern genau dieser Kalender wird dann angezeigt. Da muss ich die Doku anpassen.
Wenn man keinen Kalender auswählt werden wieder alle angezeigt, das stimmt wahrscheinlich auch. Ich glaube die Logik im Modul war: steht was drin, dann zeige diese Kalender an, steht nichts drin oder existiert das Attribut nicht, dann zeige alle Kalender an. Ist auch besser so, sonst macht da jemand was falsch und es wird nichts mehr angezeigt.
Wenn du auf deinem Google Account einen Kalender gelöscht oder hinzugefügt hast, dann kannst du mal versuchen die Attribute userattr UND calendarFilter zu löschen und dann Update zu machen. Dann sollte sich das Modul an der Stelle wie beim ersten Start verhalten und die Kalenderliste neu bei Google einlesen. Wenn das nicht der Fall ist, dann liegt das dummerweise am Cache denke ich und ich müsste an der Stelle etwas tunen. Du kannst aber manuell den Cache mal kurz ausschalten per Attribut und dann userattr und calendarFilter löschen und dann ein Update machen. Dann sollte er sich die aktuelle Liste holen und nicht die veraltete aus dem Cache.
Zitat von: mumpitzstuff am 08 November 2017, 23:52:38
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.
Nur zur Info
Ich habe es jetzt hin bekommen. Hab mir ein passendes gcalcli Paket per wget runtergeladen und mit dpkg installiert.
Ich habe das Attribut Cache = 0 hinzugefügt. Einen anderen kann ich über die Weboberfläche gar nicht eingeben (Das finde ich nicht so toll).
Nach dem Löschen von userattr und calenderFilter und einem Update, enthält das userattr wieder die ursprüngliche Liste, also auch die abbestellten Kalender.
Ich habe dann einen anderen Kalender abonniert, der erscheint nach einem Update nicht.
Ein {qx(gcalcli list);;}
bringt auch die nicht aktuelle Liste.
Irgendwie werden die Änderungen in der Auswahl nicht zur Kenntnis genommen.
Versuch mal bitte:
{qx(gcalcli list ––nocache);;}
Ich werde mir das aber auch noch mal genau ansehen. Aber wenn gcalcli das nicht sieht, dann kann das Modul auch nicht viel machen. Die Frage ist nur woran es liegt. Ich habe leider die kommende Woche viel zu tun, deshalb bitte etwas Geduld. Nach dem 18. habe ich wieder mehr Luft.
@roli1606: Danke. Ich werde das als alternativen Weg in der Doku aufnehmen.
So ich hab's jetzt noch mal ausprobiert, das geht wirklich nicht. Neue Kalender werden nicht angezeigt. Ich habe daraufhin mal Google angeworfen und folgendes gefunden:
https://github.com/insanum/gcalcli/issues/262 (https://github.com/insanum/gcalcli/issues/262)
Die Lösung ist leider etwas bescheiden. So wie es aussieht musst du das Verzeichnis .gcalcli_oauth aus deinem Verzeichnis /opt/fhem löschen und die Prozedur mit dem oauth Token noch einmal machen. Es scheint so als ob der Zugriff der dort abgelegt ist dauerhaft für bestimmte Kalender besteht, auch wenn diese danach gelöscht werden oder neue dazu kommen. Das ist leider etwas umständlich, aber zum Glück macht man das ja nicht täglich.
Sowas in der Art habe ich vermutet.
Ist nicht toll, liegt aber an Google.
Danke fürs Suchen
Ich habe ein Update eingespielt mit folgenden Änderungen:
- utf8 handling improved
- missing 0 or 1 settings added to some attributes
- attribute configFolder added
Insbesondere der Punkt 1 bereitet mir etwas Bauchschmerzen und ich hoffe ich habe jetzt nichts verschlimmbessert. Wenn alles klappt, dann sollten Sonderzeichen jetzt fehlerfreier funktionieren. Bei einigen Attributen habe ich in den Settings 0 oder 1 ergänzt, so das man jetzt umschalten kann. Das Problem mit dem disable sollte jetzt ebenfalls damit behoben worden sein.
Das Attribut configFolder habe ich ebenfalls hinzugefügt, konnte damit aber erst mal selbst nichts mit anfangen. Wenn ich dort ein existierendes Verzeichnis angegeben habe, dann habe ich immer ein Fehler erhalten und sollte mich neu authorisieren. Ich vermute auch hier ist diese Prozedur so restriktiv, das man den hier angegebenen Pfad bereits bei der Authorisierung hätte verwenden müssen, damit das funktioniert. Am besten RoBra71 testet das erst einmal aus...
inoma: Ich habe zusätzlich das readingsGroup template im ersten Beitrag um deine Punkte erweitert und auch die Farbdefinition aus dem Kalender wird verwendet. Ich glaube danach hattest du gefragt. Wenn man jetzt im Kalender das Attribut sourceColor z.b. auf folgendes setzt:
<hier den Inhalt des Readings source übernehmen>:red
Dann werden alle Einträge der Readingsgroup, die diesen String als Reading source enthalten, in Rot in der readingsGroup angezeigt.
Außerdem habe ich den jeweiligen Eintrag "anklickbar" gemacht, so dass man ihn direkt im Browser editieren kann bei Bedarf.
Hallo Mumpitzstuff,
danke für alle deine Updates, das ist echt Klasse. Ich dachte du hast "in 1 Woche ne Prüfung und musst ab und zu etwas lernen"? :-)
Ich habe jetzt alles so umgesetzt, wie in deinem Readingsgroup Beispiel, also:
-> klickbare links: Das ist der Hammer
-> attr sourceColor: Funktioniert prima
Absolut geiles Modul. Ich bin begeistert.
Nur zur Info, ist für mich nicht wichtig: Der disable 'Bug' aus Post https://forum.fhem.de/index.php/topic,77502.msg712959.html#msg712959 ist immer noch da, für attr disable gibts auch kein '0' setting.
Danke Danke nochmal. Beste Grüsse, und ich drück die Daumen für die Prüfung.
Dann ist dein Update nicht vollständig. Ich habe sowohl 0 als auch 1 zur Auswahl beim Attribut disable.
update all
shutdown restart
PS: Ist nur eine Fischereiprüfung und die scheint einfacher zu sein als gedacht.
:-(
Du hast natürlich recht. Ich hatte das shutdown/restart nicht gemacht. Mea Culpa! Danke nochmal!
Hallo,
ich habe jetzt auch mal wieder ein Update gemacht. Das Attribut configFolder funktioniert. Allerdings habe ich das Problem, wenn ich das Attribut alldayText auf Ganztägig setzte, erscheint in den Readings ganztägig. Umlaute aus dem Kalender werden jedoch korrekt dargestellt.
Ronny
Kann sein das ich da was vergessen habe. Ich schau so schnell wie möglich rein.
Update ist eingespielt und sollte das Problem beheben. Da waren mir ein paar Attribute durch die Lappen gegangen...
Bei mir wird immer noch auf die Kalender zugegriffen, die beim Anlegen abonniert waren. Ich wollte das neu einrichten. Leider ohne Erfolg. Das liegt sicher auch an meinen geringen Linux-Kenntnissen.
ZitatSo wie es aussieht musst du das Verzeichnis .gcalcli_oauth aus deinem Verzeichnis /opt/fhem löschen und die Prozedur mit dem oauth Token noch einmal machen.
Das Verzeichnis war versteckt. Ich denke ich konnte es löschen, zumindest wurde es nicht mehr aufgelistet.
Die Prozedur lässt sich aber nicht wiederholen, es werden nur die bisherigen Kalender aufgelistet. (Auch nach einem Neustart des Raspi)
Wie kriege ich die Kalender wieder aus der Liste? Würde gern neu anfangen.
Sry hab vergessen zu antworten. Hast du dich als User fhem angemeldet gehabt und dann die Prozedur mit gcalcli list auf der Konsole versucht?
Zuerst solltest du mal das Kalenderdevice auf disabled setzen. Dann löscht du das Attribut userattr und calendarFilter falls vorhanden. Jetzt löscht du die beiden Dateien .gcalcli_oauth und .gcalcli_cache im Verzeichnis /opt/fhem.
Dann meldest du dich wieder als User Fhem an. Wenn du jetzt mit gcalcli list trotzdem deine Kalender bekommst, ist irgendwas schief gelaufen. Also entweder du suchst jetzt mal mit find nach anderen Dateien die .gcalcli_oauth heißen oder du versuchst mal den weg über die direkte Angabe von configFolder. Hier könntest du z.b. /opt/fhem verwenden. Vergiss dann aber nicht im Kalender Device auch das Attribut configFolder entsprechend zu setzen. In der Anleitung hatte ich den Weg ergänzt. Ich hoffe das ist ausreichend.
Mir ist Deine Antwort auch erst heute aufgefallen.
Es war wohl das Anmelden mit User fhem, zumindest konnte ich jetzt löschen und neuanlegen.
Danke
Funktioniert wunderbar.
Um eine eiermilchlegende Wollsau zu bekommen hätte ich noch ein paar Wünsche. Die kann ich auch über UserReadings selbst lösen, aber .... ;)
- Ausgabe in Deutsch, bzw. Sprache über Attribut wählbar
(daysleftLong und weekday hätte ich gern in Deutsch. Das passt besser zu meine Oberfläche) - Ein Reading, welche aus summary Jahreszahlen extrahiert und in Alter umrechnet. CALVIEW hat das Attribut isbirthday, sowas wünsche ich mir
- Im Zusammenhang mit einer Geburtstagsliste hätte ich gern nicht eine Begrenzung nach Tagen, sondern Anzahl der Einträge
Schau die mal die Attribute an:
alldayText: set the text for an allday event (default: all-day)
weekdayText: set the weekday text as comma separated list (default: Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday)
wasteEventSeparator: separator for waste events if there are more than 1 event in one day
Da kannst du doch schon Text in Deutsch eintragen. Daysleftlong fehlt an der Stelle noch. Werde ich nachrüsten.
Das mit dem Geburtstag berechnen kann ich bastelt, würde dann aber auf eine Art Keyword setzen als einfach zu versuchen Jahreszahlen zu finden. Ich hab das extra weggelassen,da ich dachte das braucht doch niemand. So kann man sich irren.
Den letzten Punkt verstehe ich nicht. Kannst du den bitte noch mal erklären?
Ich habe jetzt zusätzlich das Attribut daysLeftLongText hinzugefügt. Damit ist dann Punkt 1 deiner Wünsche komplett abgedeckt. Wenn es was übersehen habe melde dich bitte noch mal.
Punkt 3 habe ich bei nochmaligen lesen übrigens verstanden. Du möchtest nicht die Anzahl der Tage angeben für die die Events angezeigt werden, sondern eine Anzahl von Events die angezeigt werden sollen. Ich glaube das Problem lässt sich bereits lösen. Versuch mal eine große Zahl beim Attribut calendarDays einzutragen und gleichzeitig beim Attribut maxEntries die von dir gewünschte Menge an Einträgen. Ich glaube damit müsste sich Punkt 3 von deiner Liste erschlagen lassen. Gib mir auch hier Bescheid wenns klappt.
Punkt 2 breche ich nicht übers Knie, hier mache ich mir erst ein paar Gedanken dazu...
Ich sehe Dich nicht als Auftragsentwickler. Deshalb mein besonderer Dank für die Umsetzung meiner Ideen/Wünsche.
Ich bin in den letzten Tagen nicht zum Testen gekommen. Wahrscheinlich auch in den nächsten Tagen nicht.
Sobald ich es getan habe, melde ich das Ergebnis.
Auf jeden Fall Danke.
Ich habe auf Basis Deines Modules 4 Kalender. Deshalb auch die vielen "Anforderungen".
Der Kalender "Dienst" zeigt mir an wann jemand auf Grund von Diensten (Nacht, Spät...) nicht zuhause ist, bzw. zuhause ist.
Hier habe ich für die Anzeige "daysLeftLongText" gebraucht. Es funktioniert! :D
So wie es da ist, ist es gut. Einige, ich auch, fänden "übermorgen" auch nicht schlecht. Also heute,morgen,übermorgen,in % Tagen. Das ist aber Luxus.
Ich hätte das gern auch im Kalender "Abfall" gehabt. Dort gibt es keine Readings mit "daysLeftLong". Das Attribut wiederrum gibt es ;).
Geholfen habe ich mir mit
Papiermuell_inday {Muelltag2("Papiermuell_days")}
,Gelber_Sack_inday {Muelltag2("Gelber_Sack_days")}
sub Muelltag2($)
{
my ($art) = @_;
my $text = ReadingsVal("KalenderAbfall", $art, "--");
if ($text eq "--") {
return " --";
}
elsif ($text == 0) {
return " heute";
}
elsif ($text == 1) {
return " morgen";
}
else {
return " in " . $text . " Tagen";
}
}
(Werde ich wohl noch auf Übermorgen umbauen :o)
Mit meiner Geburtstagsliste habe ich mich noch nicht weiter befasst.
ZitatDas mit dem Geburtstag berechnen kann ich bastelt, würde dann aber auf eine Art Keyword setzen als einfach zu versuchen Jahreszahlen zu finden. Ich hab das extra weggelassen,da ich dachte das braucht doch niemand. So kann man sich irren.
Bin ich der einzige der es benutzt?
CALVIEW hat ein Attribut "isbirthday" welche ein Reading "_age" erzeugt.
Zitatisbirthday
0 / nicht gesetzt - keine Altersberechnung (Standard)
1 - aktiviert die Altersberechnung im Modul. Das Alter wird aus der in der Terminbeschreibung (description) angegebenen Jahreszahl (Geburtsjahr) berechnet. (siehe Attribut yobfield)
Passt bei mir. Ich kann es mir auch als Userreading für Device auf Basis Deines Modules basteln.
In meinem Terminkalender gibt es auch Einladungen. Die scheinen ein Problem zu erzeugen. Zumindest steht dieser Termin dann regelmäßig im Log.
Zitat2017.12.07 08:28:04 3: Kalendertest: something went wrong (invalid gcalcli output) - 2017-12-08, 09:00, 2017-12-08, 10:00, https://www.google.com/calendar/event?eid=bW1hMnM0Y2g0YXR........XJyYWxmLmFyYmVpdEBt, , ..... Community TelKo, Skype-Besprechung, Liebe ...... Community,
\n
\nhier die monatliche Terminserie (immer der 2. Freitag im Monat).
(Inhalt verändert und gekürzt.)
Danke für die Entwicklung des Modules.
Hallo,
Zitat von: rabehd am 07 Dezember 2017, 09:23:50
Mit meiner Geburtstagsliste habe ich mich noch nicht weiter befasst.Bin ich der einzige der es benutzt?
CALVIEW hat ein Attribut "isbirthday" welche ein Reading "_age" erzeugt.Passt bei mir. Ich kann es mir auch als Userreading für Device auf Basis Deines Modules basteln.
das würde mich auch interessieren. Ich habe zwei Kalender: Jahrestage und Termine. Beim Jahrestage-Kalender ist die Description immer das Anfangsjahr (Geburtsjahr, Hochzeit, ...). Wenn man für den konkreten Kalender jetzt sagen könnte, dass er das Alter aus der Description berechnen soll, wäre das echt super!
EDIT: Bzw. generell, wenn die Description nicht mehr als eine 4-stellige Zahl ist, wird sie als Jahreszahl interpretiert und das Reading age berechnet...
Ronny
Das mit der 4 stelligen Zahl klingt ganz gut und wenn man das nur macht, wenn dort wirklich nichts anderes steht, ist das relativ eindeutig.
Ich würde das dann so einbauen.
Ich hab da mal was eingecheckt. Mit dem Attribut showAge kann man jetzt das Alter in einem Reading _age anzeigen lassen. Es wird nach einer 4stelligen Zahl in der Description gesucht (die Restriktion das nur die Zahl drin stehen darf hab ich erst mal weg gelassen) welche mit 19, 20, 21 beginnt.
Schaut es euch mal bitte an.
Irgewndwie klappen die Updates Deiner Module bei mir nicht.
Zitatfhem
nothing to do...
fhemtabletui
nothing to do...
gcalview
List of new / modified files since last update:
UPD FHEM/57_GCALVIEW.pm
New entries in the CHANGED file:
- attribute showAge added
sird
List of new / modified files since last update:
UPD FHEM/17_SIRD.pm
New entries in the CHANGED file:
- timeouts fixed (dirty hack - rework needed)
Weshalb? Das Update war doch erfolgreich. Beide Module sind nach einem shutdown restart aktuell. Das muss genau so aussehen.
So sieht es nach Update und Restart aus.
Mein Englisch ist nicht besonders, aber "List of new / modified files since last update" heißt doch wohl, das da noch was neues ist
Das bedeutet so viel wie: Liste der aktualisierten Module, die sich seit dem letzten Update verändert haben. Glaub mir, du hast die letzten Versionen der beiden Module installiert. Es ist alles gut. :)
Zitat von: mumpitzstuff am 04 Dezember 2017, 22:16:47
...Du möchtest nicht die Anzahl der Tage angeben für die die Events angezeigt werden, sondern eine Anzahl von Events die angezeigt werden sollen. Ich glaube das Problem lässt sich bereits lösen. Versuch mal eine große Zahl beim Attribut calendarDays einzutragen und gleichzeitig beim Attribut maxEntries die von dir gewünschte Menge an Einträgen. Ich glaube damit müsste sich Punkt 3 von deiner Liste erschlagen lassen. Gib mir auch hier Bescheid wenns klappt....
Das klappt, wie gewünscht. Danke
Ich frage jetzt 350 Tage ab und beschränke auf 10 Einträge.
Das Attribut "showAge" passt leider nicht zu meinem Geburtstagskalender.
Dummerweise habe ich mir das Modul CALVIEW nicht richtig angesehen, als ich meinen Wunsch formuliert habe. Dort kann man wählen woher die Jahreszahl genommen werden soll.
Bei mir steht die Jahreszahl im Summary. Meist in Klammern am Ende.
Ich möchte auch nicht alle Einträge anpassen, besonders da ich bei einem Geburtstag nicht immer in die Beschreibung gehen will. Am Smartphone soll das für mich auf einem Blick sichtbar sein.
Wie oben schon mal gesagt, das kann ich auch als Userreading selbst bauen. Sieh das deshalb bitte als Vorschlag und nicht als persönlichen Wunsch.
Und noch eine Anmerkung zu dem Reading "_age".
Es nur zu bilden, wenn eine Jahreszahl gefunden, könnte ein Problem werden, wenn man das als Liste weiterverarbeitet. Bei mir mit readingsGroup zu einer Tabelle "Wann, Wer, Welcher".
Guten Abend,
Vielen Dank, bei mir passt das mit dem Alter - zumal meine App auf dem Handy die gleichen Einträge nutzt [emoji16]
Ronny
Gesendet von meinem SM-G935F mit Tapatalk
Zitat von: rabehd am 11 Dezember 2017, 21:08:29
Das klappt, wie gewünscht. Danke
Ich frage jetzt 350 Tage ab und beschränke auf 10 Einträge.
Das Attribut "showAge" passt leider nicht zu meinem Geburtstagskalender.
Dummerweise habe ich mir das Modul CALVIEW nicht richtig angesehen, als ich meinen Wunsch formuliert habe. Dort kann man wählen woher die Jahreszahl genommen werden soll.
Bei mir steht die Jahreszahl im Summary. Meist in Klammern am Ende.
Ich möchte auch nicht alle Einträge anpassen, besonders da ich bei einem Geburtstag nicht immer in die Beschreibung gehen will. Am Smartphone soll das für mich auf einem Blick sichtbar sein.
Wie oben schon mal gesagt, das kann ich auch als Userreading selbst bauen. Sieh das deshalb bitte als Vorschlag und nicht als persönlichen Wunsch.
Und noch eine Anmerkung zu dem Reading "_age".
Es nur zu bilden, wenn eine Jahreszahl gefunden, könnte ein Problem werden, wenn man das als Liste weiterverarbeitet. Bei mir mit readingsGroup zu einer Tabelle "Wann, Wer, Welcher".
Zu steuern woher das Attribut kommt, kann ich auch noch nachreichen.
Wenn ich richtig verstehe möchtest du das Attribut immer haben wenn man es einschaltet, also auch wenn nichts gefunden wurde. Sowas finde ich immer sehr unschön wenn ich ehrlich bin. Kannst du mir vielleicht die Definition deiner Readingsgroup geben (priv. Mitteilung), damit ich mir das Problem mal ansehen kann?
Vielleicht geht ja sowas hier (nur runtergeschrieben, kann Fehler enthalten):
attr rg_Kalender valueFormat {\
if ($READING =~ /age$/)\
{\
if (!defined($VALUE))\
{\
'';;\
}\
else\
{\
$VALUE;;\
}\
}\
}
Die Readingsgroup im ersten Beitrag habe ich schon mal so erweitert, dass hinter dem Summary auch noch das Alter in Klammern auftaucht, wenn das Reading vorhanden ist.
Meine readingsgroup für die Geburtstagsliste ist simpel.
<wann>,<wer>,<welcher>
KalenderGeburtstag:t_001_daysleftLong,t_001_summary,t_001_age
KalenderGeburtstag:t_002_daysleftLong,t_002_summary,t_002_age
KalenderGeburtstag:t_003_daysleftLong,t_003_summary,t_003_age
KalenderGeburtstag:t_004_daysleftLong,t_004_summary,t_004_age
KalenderGeburtstag:t_005_daysleftLong,t_005_summary,t_005_age
KalenderGeburtstag:t_006_daysleftLong,t_006_summary,t_006_age
KalenderGeburtstag:t_007_daysleftLong,t_007_summary,t_007_age
KalenderGeburtstag:t_008_daysleftLong,t_008_summary,t_008_age
KalenderGeburtstag:t_009_daysleftLong,t_009_summary,t_009_age
KalenderGeburtstag:t_010_daysleftLong,t_010_summary,t_010_age
Es stört auch nicht, wenn eins der Readings nicht vorhanden ist. Ich hatte diese Liste noch nicht auf den Kalender auf Basis Deines Modules umgestellt, nur eine Vermutung geäußert. Die war aber falsch. :(
Es ist für mich ok, wenn leere Readings nicht angelegt werden.
Das Geburtsjahr wird bei uns im Summary bleiben. Meist am Ende in Klammern und 4stellig.
In der Liste habe ich dadurch das Jahr und das Alter. Das ist ok.
Eine Auswahl aus welchem Reading das Jahr geholt wird wäre schön, aber ich überlege gerade eine andere Lösung für mich.
Für die Optik werde ich wohl 2 Userreadings anlegen. Zum einen das Alter extraiert aus Summary und zum anderen ein Summary_2 welches den Wert von Summary ohne Geburtsjahr enthält.
Damit hätte ich meinen Sonderwunsch erfüllt. Du kannst das Modul ja nicht für jeden passend machen.
Fazit:
Ich bin mit dem Modul zufrieden, danke.
Ob die Fehlermeldung "something went wrong (invalid gcalcli output)" noch im Log erscheint, kann ich nicht sagen, denn die Terminserie ist erstmal vorbei.
Kannst du mir ein paar Eckdaten zu dieser Serie geben, damit ich versuchen kann das nachzustellen? Interessant wäre wie das Intervall war, ob ein attachment dran hing, irgendwelche Erinnerungen oder so was.
Beruflich nutze ich Outlook und Skype. Den Outlook-Kalender synchronisiere ich mit einen Google-Kalender um die Übersicht zu behalten.
Es war eine Einladung zu einer Skype-Besprechung (monatlich).
Hilft Dir das Log-Eintrag (aus Betrag weiter oben)?
Zitat2017.12.07 08:28:04 3: Kalendertest: something went wrong (invalid gcalcli output) - 2017-12-08, 09:00, 2017-12-08, 10:00, https://www.google.com/calendar/event?eid=bW1hMnM0Y2g0YXR........XJyYWxmLmFyYmVpdEBt, , ..... Community TelKo, Skype-Besprechung, Liebe ...... Community,
\n
\nhier die monatliche Terminserie (immer der 2. Freitag im Monat).
keine Anhänge, aber ein paar Links, ein paar Zeichen / und eine Aufzählung mit Punkten.
Danke. Ich Versuch mal was nachzustellen.
Ich habe soeben wieder ein Update eingespielt.
1.) Über das Attribut ageSource kann jetzt angegeben werden woher das Alter für die Altersberechnung genommen werden soll.
2.) Bugfix für den Fall das der Bschreibungstext Tabs enthalten sollte. Leider ist die Implementierung echt Scheisse, aber nicht anders machbar. Im Grunde genommen ist das ein Bug von gcalcli, der sich eigentlich kaum beheben lässt. Ich habs bestmöglich gemacht und hoffe, dass es keine Nebeneffekte gibt. Dazu könnte es zum Beispiel kommen, wenn das Summary oder die Location Tabs enthalten sollten! Wenn das der Fall ist, dann muss der Termin manuell angepasst werden.
Wie bekomme ich denn im Google Geburtstags-Kalender eine 'description', wo ich das Datum des Geburtstages eintragen kann?
Ich sehe in der Description immer nur so was wie "Magdalena hat Geburtstag".
Also mir ist nicht klar wo ich im Google Geburtstagskalender das Geburtsdatum eintragen muss, damit es im GCALVIEW entweder unter 'Location', 'Description' oder 'Summary' erscheint, weil ich möchte auch das Alter berechnen.
Hier gibt es verschiedene Möglichkeiten und ich glaube das was du im Kopf hat geht so einfach leider nicht.
Variante 1: Man lässt sich von Google einen Geburtstagskalender von seinen Kontakten erstellen und lässt sich diesen anzeigen. Hier hat man insofern verloren, als das man keine Möglichkeit hat zusätzliche Informationen wie z.B. das Geburtsjahr hinzuzufügen. Alles was man an der Stelle tun kann ist, die Einträge manuell als Serie in einen anderen Kalender zu übertragen und dann den von Google erstellten Kalender auszublenden. In den neu angelegten Serienterminen kann man jetzt in der Description eine Jahreszahl einfügen, z.B. 1985. Setzt man dann ageSource auf description und schaltet die Berechnung des Alter mit showAge ein, dann wird ein zusätzliches Reading _age erzeugt. Die Readingsgroup aus Beitrag 1 zeigt den Inhalt des readings hinter dem summary in der Readingsgroup an.
Variante 2: Man erstellt sich gleich manuell einen Geburtstagkalender in Google und hat dann gar keine Probleme.
Variante 3: man schreibt sich in seinen Kontakten das Geburtsjahr z.B. in Klammern zum Namen dazu. Aus dem Namen wird das Summary im automatisch generierten Geburtstagskalender und man kann dann mit ageSource = summary das Alter berechnen lassen. Nicht sehr schön aber zum testen kann man es ja mal versuchen.
ageSource gibt übrigens nur an wo das Jahr her kommen soll und nicht wo das alter hingeschrieben wird. Das Alter wird immer separat in ein Reading mit der Endung _age geschrieben, also weder in die Description, noch das Summary noch die Location. Das hinzufügen zum Summary in der im Artikel 1 zu sehenden Readingsgroup ist als Code in der Readingsgroup hinterlegt.
@inoma
Ich würde sagen, Du hast gar keinen Geburstagskalender. Die Einblendungen der Geburtstage Deiner Kontakte durch Google im Kalender ist Variante 1.
Super, allerdings noch ein Problem:
Ich habe mir jetzt einen eigenen Geburtstagskalender 'Geburtstage' angelegt, den sehe ich auch mit sudo gcalcli list --configFolder /opt/fhem
Das ist auch gesetzt:attr GoogleCalender configFolder /opt/fhem
Zusätzlich habe ich manuell attr GoogleCalendar calendarFilter xxxxx.yyyyyyyyyy@gmail.com,Geburtstage
Weil, der Kalender 'Geburtstage' erscheint nämlich nicht im popup, wenn ich auf das weisse Feld rechts des attr calendarFilter klicke. Dort erscheint nur [ ] xxxxx.yyyyyyyyyy@gmail.com
[ ] Contacts
[ ] Holidays in Germany
Wisst Ihr warum?
Ja.
Lösch bitte userattr und mach ein Update. Das wird dann neu angelegt und sollte den neuen Eintrag enthalten.
Yep, das wars! DANKE!
Ich möchte eigentlich alle angefangenen Termine ausblenden, aber wenn ich das attr includeStarted auf '0' setze schmeisst das Modul auch die Geburtstage raus.
Ich habe die Geburtstage als ganztages-Termin, beim Aufstehen werden die Geburtstage per Sonos angesagt, deswegen sollen die Geburtstage ganztags drin stehen. Kann man das attribut includeStarted evtl. pro Kalender setzten?
Oder wie macht Ihr das?
Hast Du alles in einem Google-Kalender? Dann hast Du wohl ein Problem.
Ich habe mir unter meinem Google-Account verschiedene Kalender angelegt (Geburtstag, Abfall,...), dann noch verschiedene Kalender eingebunden. So komme ich auf 5-10 verschiedene Kalender.
In Fhem habe ich für jeden Zweck ein Device angelegt und greife dort nur auf die passenden Kalender zu.
Abfall -> Abfall
Dienst -> Dienst
Geburtstag -> Geburtstage
Termine -> was so noch übrig bleibt
Ich habe nur ein GoogleCalendar GCALVIEW Device, und in Google 2 verschiedene Kalender (Geburtstage / Termine).
Im device sind dann über das beide Kalender eingebunden.
attr GoogleCalendar calendarFilter xxxxxxxx.yyyyyy@gmail.com,Geburtstage
Hmm das Attribut kann man pro Device setzen. Wenn du also beide Kalender in einem Device anzeigst, dann solltest du das du das Attribut eher einschalten, damit die Geburtstage nicht sofort rausgeworfen werden. Ansonsten kannst du dir 2 Devices anlegen und kannst dann jeweils das Attribut nach belieben einstellen. Den Filter musst du dann natürlich pro Device anpassen.
Darüber hinaus kann ich ja mal überlegen, ob ich das Attribut includeStarted irgendwie pro Kaledner verfügbar machen kann. Wahrscheinlich aber erst nach Weihnachten, im Moment ist jede Menge los bei uns und ich habe kaum Zeit.
Macht es Sinn Geburtstage und Termine in einem Device anzuzeigen?
Für mich nicht.
Zitat von: rabehd am 20 Dezember 2017, 09:21:49
Macht es Sinn Geburtstage und Termine in einem Device anzuzeigen?
Für mich nicht.
Ich habe zum Beispiel Jahrestage und Termine in zwei verschiedenen Kalendern, zeige es aber auf dem tablet an der Wand in einer Tabelle an - also ja, es macht schon wegen der Sortierung Sinn, beides in einem device anzuzeigen...
Gesendet von meinem SM-G935F mit Tapatalk
Ja so hab ichs auch gemacht, ein Device, und beide Kalender in einer Tabelle. Die Geburtstage haben nur eine andere Farbe. Und so viele Geburtstage hab ich nicht. Sonst wäre die Geburtstagstabelle meistens leer....
Hallo,
Ich habe gerade mit
sudo apt-get install gcalcli
das gcalcli installiert und danach mittels
sudo pip install gcalcli
auf die neueste Version geupdatet alles ohne Fehlermeldung.
Danach habe ich ein
gcalcli --version
eingegeben und bekomme folgende Fehlermeldung
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 4, in <module>
import pkg_resources
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2707, in <modul e>
working_set.require(__requires__)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 686, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 584, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: google-api-python-client
Weiß jemand wo der Fehler liegen könnte?
Gruß BlasterX
sudo apt-get install python-gdata
Versuchs mal bitte damit. Referenz ist hier:
https://outofdataerror.wordpress.com/2013/09/02/installing-the-google-data-python-library-on-a-raspberry-pi/ (https://outofdataerror.wordpress.com/2013/09/02/installing-the-google-data-python-library-on-a-raspberry-pi/)
Ok danke für die Antwort hatte es gerade hinbekommen. Aber ich bekomme in fhem keine Daten rein. Wenn ich
{qx(gcalcli list);;}
oder
{qx(gcalcli list --configFolder /opt/fhem);;}
eingebe bekomme ich folgende Fehlermeldung
[31;1mError: must specify a username
[0m
als Antwort und im log steht
2017.12.22 23:52:09 3: GC_Kalender_Privat: gcalcli agenda --configFolder /opt/fhem --detail_all --tsv
2017.12.22 23:52:09 3: GC_Kalender_Privat: something went wrong (check your parameters) - [31;1mError: must specify a username
[0m
2017.12.22 23:52:09 1: ERROR evaluating {GCALVIEW_DoEnd('GC_Kalender_Privat||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 626.
Wenn ich das gcalcli list in Putty eingebe bekomme ich meine Kalender angezeigt.
Gruß BlasterX
Vermutlich bist du mit Putty als pi User angemeldet und hast dir das OAuth Token als pi User geholt. FHEM arbeitet mit dem User fhem und bekommt dann keinen Zugriff auf die mit dem User pi angelegten OAuth Daten.
Fragen:
1.) Hast du versucht die Punkte 4-5 aus dem ersten Beitrag auszuführen? Was war das Ergebnis?
2.) Hast du versucht die Punkte 4-5 aber mit der zusätzlichen Option --configFolder /opt/fhem auszuführen? Was war das Ergebnis?
Wenn das listing deiner kalender als pi User funktioniert, dann kannst du auch mal nach der datei .gcalcli_oauth suchen. Diese wird vermutlich im home Verzeichnis des pi Users zu finden sein. Man könnte hier auch mal spaßeshalber versuchen diese datei nach /opt/fhem zu kopieren und dann mit:
sudo chown fhem:dialout .gcalcli_oauth
die Rechte so anzupassen, das fhem Zugriff haben müsste.
Falls ich mich geirrt habe und du die OAuth Daten doch bereits als fhem User angelegt hast, versuch mal das OAuth token so zu generieren:
gcalcli list --configFolder /opt/fhem --noauth_local_webserver
und dann in FHEM genauso abzufragen nachdem du die erzeugte URL in den Browser kopiert und das generierte Token auf der Konsole eingegeben hast:
{qx(gcalcli list --configFolder /opt/fhem);;}
Also Punkt 4 hatte ich ausgeführt und in die /etc/passwd das /bin/bash eingetragen. Dann mit Punkt 5 weitergemacht und
sudo su - fhem
eingetragen und es wurde auch zum user fhem gewechselt. Die Datei .gcalcli_oauth wurde auch in /opt/fhem angelegt.
Wenn ich im Terminal
gcalcli list --configFolder /opt/fhem --noauth_local_webserver
eingebe erhalte ich (User fhem angemeldet)
fhem@raspberrypi:~$ gcalcli list --configFolder /opt/fhem --noauth_local_webserver
Access Title
------ -----
owner Ferien 2017
owner Schichten
owner Abfall
owner Mario
owner Martina
owner Diana
owner Schichten
und es wird mir keine URL angezeigt.
Gebe ich in fhem
{qx(gcalcli list --configFolder /opt/fhem);;}
ein bekomme ich wieder dieße Meldung
[31;1mError: must specify a username
[0m
Gruß BlasterX
Es scheint ein Rechte Problem zu sein. Wenn ich
{qx(sudo gcalcli list);;}
eingebe bekomme ich meine Kalender angezeigt. Leider weis ich nicht was ich genau ändern muß damit er die Rechte richtig verteilt.
Gruß BlasterX
Okay. Das sieht doch dann schon mal gut aus. Geh mal als pi User ins Verzeichnis /opt/fhem und lass dir mit:
ls -all
die Rechte anzeigen. Bei mir sieht es so aus:
-rw-r--r-- 1 fhem dialout 2514 Oct 21 00:14 .gcalcli_cac
e
-rw------- 1 fhem dialout 849 Dec 23 15:52 .gcalcli_oau
h
Bei dir auch?
Vielen Dank für dein Modul.
Funktioniert super. ;D
Mach weiter so. ;)
@mumpitzstuff,
ich habe jetzt mal testweise in der 57_GCALVIEW.pm die Einträge zb in Zeile 222
#my $calList = qx(gcalcli list --noauth_local_webserver < $filename);
in
#my $calList = qx(sudo gcalcli list --noauth_local_webserver < $filename);
geändert wenn ich das bei allen abfrage Befehlen mache
gcalcli list
geht es wunderbar.
Folgendes Problem habe ich aber noch das die Umlaute als Fragezeichen dargestellt werden.
Du hast ja im Modul
use Encode qw(encode_utf8 decode_utf8);
stehen, aber das kann ich nicht mit
use Encode qw(sudo encode_utf8 decode_utf8);
starten da kommt eine Fehlermeldung.
Gruß BlasterX
Hmm das mit dem sudo ist komisch. Naja wenns so geht, dann lass es erst mal so.
Bei dem encode kannst du kein sudo verwenden, das ist ein Perl Befehl und kein Shell Aufruf.
Normalerweise müssten alle Umlaute richtig angezeigt werden. Kannst du nähere Angaben machen welche Umlaute das sind und wo diese bei dir genau auftauchen? Im Subject in der Description oder woanders?
Ich hatte aber eigentlich alle Probleme mit Umlauten behoben und habe bisher von niemandem sonst dahingehend noch von Problemen gehört. Hängt das vielleicht mit deinen Änderungen zusammen? Versuch mal dein sudo nur dort zu verwenden, wo du einen gcalcli Aufruf siehst. Bei allen anderen Dingen bringt sudo nichts.
@mumpitzstuff,
Die Umlaute sind zb. bei Frühschicht (ü) und Spätschicht (ä) im Reading t_..._summary. Bei t_..._description Fr?hschicht tritt der Fehler auch auf. Ich habe das sudo nur bei den gcalcli Aufrufen eingetragen.
Was mir noch aufgefallen ist ich habe 2 Schichtkalender einer von mir und einer von meiner Frau, meiner heist Schichten der von meiner Frau Schichten Diana. Wenn ich bei calendarFilter Schichten eingebe werden aber beide Kalender angezeigt kann es sein damit es am Leerzeichen bei Schichten Diana liegt?
Gruß BlasterX
Hat noch jemand Probleme bei Umlauten?
Das mit den Umlauten kann ich mir nicht erklären. Dahingehend habe ich Tests gemacht und die funktionieren bei mir. Hast du Warnings im Logfile? Kannst du mal Verbose 5 einstellen und dir die Ausgaben im Logfile ansehen? Entweder sind bei dir die Umlaute ganz komisch encodiert oder Perl Encode/Decode funktioniert nicht richtig. Hast du das Problem auch bei anderen Modulen?
Das mit dem Leerzeichen im Kalender muss ich mir ansehen, das könnte aber tatsächlich ein Bug sein.
bei verbose 5steht im log
2017.12.28 12:37:32 5: GC_Mario_Schichten_SetNextTimer: set next timer
2017.12.28 12:37:32 5: GC_Mario_Schichten_DoRun: start running
2017.12.28 12:37:34 5: GC_Mario_Schichten: 2017-12-28 05:20 2017-12-28 06:00 https://www.google.com/calendar/event?eid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Urlaub Schichten xxxxxxxxxx@googlemail.com
2017-12-28 07:30 2017-12-28 16:00 https://www.google.com/calendar/event?eid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Fr?hschicht Schichten Diana xxxxxxxx@googlemail.com
Die xxx sind von mir eingesetzt worden.
In anderen Modulen habe ich keine Probleme mit Umlauten.
Gruß BlasterX
Also meine Vermutung ist, dass bereits gcalcli nur diese Fragezeichen an mein Modul weiter reicht. In diesem Fall wären mir die Hände gebunden. Kannst du bitte mal gucken, ob diese Fragezeichen auch auf dem Terminal angezeigt werden?
gcalcli agenda --detail_all --tsv
sollte dir die Termine der nächsten 5 Tage anzeigen. Bekommst du hier ebenfalls Fragezeichen angezeigt?
Wie hast du die Termine in deinem Google Kalender eingetragen? Im Browser oder mit einer speziellen App? Kannst du mal versuchen über deinen Browser einen weiteren Termin mit Umlauten einzutragen und zu gucken, ob hier die selben Probleme auftreten?
Ein gesundes neues Jahr!
@mumpitzstuff
ich bin jetzt auf einen Raspberry 3 umgezogen und alles neu aufgesetzt. Jetzt geht alles wie es soll, die Abfrage ohne (sudo) und auch die Umlaute klappen.
Die Sache mit dem (sudo) war ein Rechte Problem beim Raspberry. Und das mit den Umlauten vermute ich damit in der Raspberry Grundeinstellung (raspi config) die Einstellung
(de_DE.UTF-8) nicht richtig gesetzt worden ist.
Danke für Deine Hilfe und Dein tolles Modul!
Gruß BlasterX
Hallo zusammen und noch frohes Neues an alle, ;D
erstmal sorry für den langen Text, aber ich möchte mein Problem gerne genau beschreiben und hoffe auch das es nicht verwirrend wird.
Ich hab das Modul jetzt einige Tage schon in Betrieb und finde es super.
Bisher bezog sich die Nutzung allerdings nur auf ein Reading, das mir die Termine ausgibt.
Das ganze würde ich jetzt zu einer automatischen Heizungssteuerung bei mir missbrauchen.
Also, ich möchte gerne anhand meiner Termine, die meinen Schichten entsprechen, meine Heizung steuern.
Vorher hab ich das ganze manuell anhand eines Dummy Schalters gelöst, dem ich quasi meine Schicht per Hand sage und er eine Funktion ausführt.
Im Sinne von
"setTemp("$profil");" wobei Profil für das Heizungsprofil steht das ich setzen möchte.
Um das ganze jetzt mit deinem Modul zu handhaben, habe ich das Beispiel von
"inoma" auf der ersten Seite genutzt:
Zitat von: inoma am 06 November 2017, 22:56:38
Hier mal eine sub, mit der kann man aus dem Kalender-Readings von 'today_00[1-9]_[be]time' sich ein 'at' event generieren. Falls das reading 'today_00[1-9]_summary' mit dem Trigger übereinstimmt, wird das 'at' zum start oder end Zeitpunkt generiert. Über den 2-ten parameter "Start oder Ende" kann man definieren ob das at event am Anfang oder am Ende vom Kalendereintrag generiert werden soll. Das ist case insensitiv wil ich das über lc() konvertiert habe.
Der Trigger muss mit dem Kalendereintrag matchen
Die Action kann dann eine beliebige fhem Aktion sein, hier wird der Schalter_Heizung eingeschaltet.
Ich bin kein Perl experte, geht bestimmt schöner, aber funktioniert bei mir.
##########################################################
# define GoogleCalendar_n notify GoogleCalendar:today_00[1-9]_[be]time:.* {Kalenderstart("$EVENT","Start oder Ende","Trigger","Action")}
# define GoogleCalendar_n notify GoogleCalendar:today_00[1-9]_[be]time:.* {Kalenderstart("$EVENT","Start","Besuch kommt","set Schalter_Heizung on")}
# define GoogleCalendar_n notify GoogleCalendar:today_00[1-9]_[be]time:.* {Kalenderstart("$EVENT","Ende","Besuch kommt","set Schalter_Heizung off")}
##########################################################
sub Kalenderstart ($$$$) {
my ($Event,$StartOrEnd,$Trigger,$Action) = @_;
my $startlcend = lc($StartOrEnd);
my @EVENTarray = split(": ", $Event);
my @EVENTsplit = ($startlcend eq "begin" || $startlcend eq "start" || $startlcend eq "anfang")?split("btime", $EVENTarray[0]):split("etime", $EVENTarray[0]);
my $summary = $EVENTsplit[0]."summary";
my $Kalendertext = ReadingsVal("GoogleCalendar","$summary","nA");
my @Triggerarray = ("0","1","2");
my @Triggerarray = split(" ", $Trigger);
my $devSpec = $Triggerarray[0]."_".$Triggerarray[1]."_".$Triggerarray[2]."_".$StartOrEnd;
if ($Kalendertext =~ /$Trigger/) {fhem("defmod $devSpec at $EVENTarray[1]:00 $Action;attr $devSpec room Calendar")}
}
Das habe ich "ein wenig" meinen Bedürfnissen umgebaut.Derzeit sieht es so aus und beinhaltet ein paar Prüfungen der Variablen:
# Heizung Schichtplansteuerung
##########################################################
# define n_GoogleCalendar_X notify GoogleCalendar:today_00[1-9]_btime:.* {Schichtplansteuerung("$EVENT","Start oder Ende","Trigger","profil")}
# define n_GoogleCalendar_18T notify GoogleCalendar:today_00[1-9]_btime:.* {Schichtplansteuerung("$EVENT","Start","18T","Komfort")}
##########################################################
sub Schichtplansteuerung($$$$) {
my ($Event,$StartOrEnd,$Trigger,$profil) = @_;
my $startlcend = lc($StartOrEnd);
my @EVENTarray = split(": ", $Event);
my @EVENTsplit = ($startlcend eq "begin" || $startlcend eq "start" || $startlcend eq "anfang")?split("btime", $EVENTarray[0]):split("etime", $EVENTarray[0]);
my $summary = $EVENTsplit[0]."summary";
my $Kalendertext = ReadingsVal("GoogleCalendar","$summary","nA");
my $Sommer = ReadingsVal("HeizungsProfile","state","nA");
my @Triggerarray = ("0","1","2");
my @Triggerarray = split(" ", $Trigger);
my $devSpec = $Triggerarray[0]."_".$Triggerarray[1]."_".$Triggerarray[2]."_".$StartOrEnd;
if($Kalendertext = $Trigger){
# Variable Prüfen
fhem( "set TelegrammBot message Trigger wurde ausgelöst: $Trigger" );
fhem( "set TelegrammBot message Kalendertext beinhaltet: $Kalendertext" );
fhem( "set TelegrammBot message EVENTsplit0 beinhaltet: $EVENTsplit[0]" );
fhem( "set TelegrammBot message Summary beinhaltet: $summary" );
if($Sommer ne "Sommer"){
setTemp("$profil");
fhem( "set TelegrammBot message ♨ Heizungsprofil wegen Schichtplan umgestellt: $devSpec > $profil eingestellt." );
}
}
}
# // Heizung Schichtplansteuerung
Derzeit nur folgende
drei Notifys eingerichtet zum Testen:
defmod n_GoogleCalendar_18T notify GoogleCalendar:today_00[1-9]_btime:.* {Schichtplansteuerung("$EVENT","Start","18T","Komfort")}
defmod n_GoogleCalendar_A notify GoogleCalendar:today_00[1-9]_btime:.* {Schichtplansteuerung("$EVENT","Start","A","Komfort")}
defmod n_GoogleCalendar_AA notify GoogleCalendar:today_00[1-9]_btime:.* {Schichtplansteuerung("$EVENT","Start","! A !","Komfort")}
Jetzt setze ich bei dem
GoogleKalender ein
"set update" um meine Events zu provozieren.
Für den heutigen Tag kommen dann folgende Events im Eventmonitor:
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_bdate: 02.01.2018
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_btime: 00:00
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_daysleft: 0
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_daysleftLong: today
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_edate: 02.01.2018
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_etime: 00:00
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_location: Landgrabenweg 151, 53227 Bonn
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_description:
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_author: borstihd@gmail.com
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_source: Schichtplan
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_sourcecolor: black
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_summary: ! A !
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_timeshort: 00:00 - 00:00
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_weekday: Tuesday
2018-01-02 14:29:19 GCALVIEW GoogleCalendar today_001_url: link
Folgende Ausgaben bekomme ich jetzt mittels Telegramm:ZitatTrigger wurde ausgelöst: 18T
Kalendertext beinhaltet: 18T
EVENTsplit0 beinhaltet: today_001_
Summary beinhaltet: today_001_summary
Trigger wurde ausgelöst: A
Kalendertext beinhaltet: A
EVENTsplit0 beinhaltet: today_001_
Summary beinhaltet: today_001_summary
Trigger wurde ausgelöst: ! A !
Kalendertext beinhaltet: ! A !
EVENTsplit0 beinhaltet: today_001_
Summary beinhaltet: today_001_summary
Jetzt hoffe ich ihr könnt mir weiterhelfen.
1. Wieso provozieren
alle Notifys hier bei
"if($Kalendertext = $Trigger)" einen
"Trigger" in der Funktion?
2. Wieso beinhaltet die Variable
"Kalendertext" den Wert meines
"Triggers", sollte dort drin nicht egt. bei allen drei ausgelösten Notifys der Summary Text aus dem Event stehen (also in meinem Beispiel ein
"! A !")?
Könnt ihr mir bitte helfen?
Ich möchte egt das in diesem Beispiel
"nur" der dritte Notify mit dem Trigger "! A !" reagiert.Vielen Dank schonmal. :)
Grüße
borsTiHD
PS: Meine eigene Funktion wird nicht ausgeführt, da "my $Sommer = ReadingsVal("HeizungsProfile","state","nA");" gleich "Sommer" ist, damit zum testen nicht ständig meine Heizung umgestellt wird. ;D
Hihi schöner Fehler.
=: Zuweisung
==: Vergleich (aber nur Zahlenwerte!)
Du möchtest an der Stelle Strings vergleichen und musst deshalb eq verwenden.
Versuch mal:
if($Kalendertext eq $Trigger){
Dein Code schreibt in $Kalendertext deinen Trigger rein. Der Wert ist ungleich 0 also immer True...
Oh mein Gott... ::)
Ja, jetzt wo du es sagst. *facepalm*
Ich danke dir tausendfach. ;D
Das ganze jetzt ersetzt mit "eq" und es klappt.
Wenn man vor lauter Wald die Bäume nicht sieht.
@borsTiHD
Du hattest mein Beispiel von der ersten seite benutzt:
ZitatUm das ganze jetzt mit deinem Modul zu handhaben, habe ich das Beispiel von "inoma" auf der ersten Seite genutzt:
Da ist noch ein Fehler drin, es werden ja nur 'at' für den jeweiligen Tag erzeugt, wenn Du aber einen Google Kalendereintrag auf 00:00 gesetzt hast, kann es sein das dieser Eintrag verpasst wird weil der Eintrag ja erst 'tomorrow' ist (der trigger ist ja auf GoogleCalendar:
today_00[1-9]_[be]time).
1) Der trigger muss auf GoogleCalendar:
to.*_00[1-9]_[be]time) geändert werden, damit today und tomorrow berücksichtigt werden
2) Man muss also abfragen ob der Kalendereintrag 'today' ist, dann sollte die startzeit in der Zukunft liegen, wenn der Eintrag 'tomorrow' ist, sollte die Startzeit kleiner als in 'jetzt sein', also:
if (($hm lt $EVENTarray[1] && $EVENTarray[0] =~ 'today_.*') || ($hm gt $EVENTarray[1] && $EVENTarray[0] =~ 'tomorrow_.*'))
Ich habe das im Originalpost jetzt geändert.
Du musst auch dran denken das beim 'at' mit mehreren Befehlen das semikolon verdoppelt werden muss, ich habe auch dafür das Beispiel im ersten post geupdatet.
@ mumpitzstuff
hast du Dir das mit den Kalendern mit Leerzeichen mal angesehen bzw eine Lösung für das Problem?
ZitatWas mir noch aufgefallen ist ich habe 2 Schichtkalender einer von mir und einer von meiner Frau, meiner heist Schichten der von meiner Frau Schichten Diana. Wenn ich bei calendarFilter Schichten eingebe werden aber beide Kalender angezeigt kann es sein damit es am Leerzeichen bei Schichten Diana liegt?
Gruß BlasterX
Noch nicht, steht aber weiterhin nauf meinem Plan. Mein anderes Modulprojekt hat mich die letzten Tage den letzten Nerv gekostet...
Habe jetzt mal getestet und konnte eigentlich nichts finden:
Das sind meine Kalender:
pi@raspberrypi /opt/fhem/FHEM $ gcalcli list --nocolor
Access Title
------ -----
owner xyz@googlemail.com
owner Feiertage
owner Worktime
owner Müllabfuhr
owner Dienstplan
reader Contacts
reader Feiertage in Deutschland
Hier gibt es also "Feiertage" und "Feiertage in Deutschland".
Der Aufruf "gcalcli agenda --calendar "Feiertage" --detail_all --tsv" liefert mir:
2018-01-07 15:00 2018-01-07 16:00 https://www.google.com/calendar/event?eid=xyz test Feiertage xyz@googlemail.com
Der Aufruf "gcalcli agenda --calendar "Feiertage in Deutschland" --detail_all --tsv" liefert mir:
2018-01-06 00:00 2018-01-07 00:00 https://www.google.com/calendar/event?eid=xyz Heilige Drei Könige (regionaler Feiertag) Feiertag in: Baden-Württemberg, Bayern, Sachsen-Anhalt Feiertage in Deutschland de.german#holiday@group.v.calendar.google.com
Das habe ich von der Kommandozeile aus gemacht und zur Sicherheit mit einer Debugausgabe mit meinem Aufruf im Modul verglichen:
gcalcli agenda 01/06/2018 03/07/2018 --calendar "Feiertage in Deutschland" --detail_all --tsv
Ich kann jetzt erst einmal nichts merkwürdiges entdecken. Kannst du das vielleicht mal auf ähnliche Art und Weise auf der Konsole bei dir machen als pi User und gucken, ob das da auch auftritt?
Wenn nicht, dann würde ich dir eine spezielle Version zuschicken, in der der Aufruf von gcalcli immer ins Logfile geschrieben wird. Vielleicht sieht man dann da irgend was komisches.
@inoma:
Das mit dem includeStarted habe ich mir ebenfalls angsehen. Das ist leider eine größere Umstellung, sonst hätte ich das schon gemacht. Bisher verwende ich hier einen Parameter beim gcalcli Aufruf. Hier kann ich aber nicht angeben, dass sich das nur auf bestimmte Kalender beziehen soll. Ich muss deshalb an der Stelle einen eigenen Filter schreiben, der mir die Events dann nur für bestimmte Kalender filtert oder eben nicht. Zusätzlich dazu muss ich dann das Attribut includeStarted so erweitern, dass man hier die Kalender angeben kann anstatt nur 0 oder 1. Insgesamt ist es etwas, dass ich nicht übers Knie brechen möchte.
ich bekomme als Ausgebe bei
gcalcli agenda --calendar "Schichten" --detail_all --tsv
2018-01-08 07:30 2018-01-08 16:00 https://www.google.com/calendar/ event?eid=xyz Frühschicht Schichen Diana xyz@googlemail.com
2018-01-08 13:21 2018-01-08 22:01 https://www.google.com/calendar/ event?eid=xyz Mittelschicht Schichten xyz@googlemail.com
Ich kann nur versuchen die Kalender umzubenennen.
Gruß BlasterX
Das ist eigenartig aber wenn es bereits auf der Konsole nicht funktioniert, dann kann ich auf Modulebene wenig machen. Vermutlich wirst du dann tatsächlich den Kalender umbenennen müssen.
Wenn du das machst, dann musst die die Authentifizierung erneut durchführen und zuvor .gcalcli_oauth und .gcalcli_cache löschen. Die Authentifizierung ist mit den Kalendern verknüpft und muss deshalb neu gemacht werden, wenn man an den Kalendern etwas verändert.
ich habe jetzt die Kalender umbenannt und siehe da, alles geht wie es soll.
Gruß BlasterX
Zitat@inoma:
Das mit dem includeStarted habe ich mir ebenfalls angesehen....
Kein Problem, ich freu mich das Du dran gedacht hast. DANKE!!!
Zitat von: inoma am 06 Januar 2018, 00:40:15
@borsTiHD
Du hattest mein Beispiel von der ersten seite benutzt: Da ist noch ein Fehler drin, es werden ja nur 'at' für den jeweiligen Tag erzeugt, wenn Du aber einen Google Kalendereintrag auf 00:00 gesetzt hast, kann es sein das dieser Eintrag verpasst wird weil der Eintrag ja erst 'tomorrow' ist (der trigger ist ja auf GoogleCalendar:today_00[1-9]_[be]time).
1) Der trigger muss auf GoogleCalendar:to.*_00[1-9]_[be]time) geändert werden, damit today und tomorrow berücksichtigt werden
2) Man muss also abfragen ob der Kalendereintrag 'today' ist, dann sollte die startzeit in der Zukunft liegen, wenn der Eintrag 'tomorrow' ist, sollte die Startzeit kleiner als in 'jetzt sein', also: if (($hm lt $EVENTarray[1] && $EVENTarray[0] =~ 'today_.*') || ($hm gt $EVENTarray[1] && $EVENTarray[0] =~ 'tomorrow_.*'))
Ich habe das im Originalpost jetzt geändert.
Du musst auch dran denken das beim 'at' mit mehreren Befehlen das semikolon verdoppelt werden muss, ich habe auch dafür das Beispiel im ersten post geupdatet.
Sorry für die Späte antwort. :)
Lief bei mir egt alles soweit... allerdings wurde der Trigger bei mir öfters ausgelöst (so oft wie ich meinen Kalender auslese) und ich musste noch sicherstellen das er meine Heizungsprofile dabei nur einmal am Tag ändert.
Dafür hab ich noch eine Abfrage hinzugefügt, wo geprüft wird, welches Profil bei meiner Heizung derzeit aktiv ist, ist es das Profil, das eingestellt werden soll dann wird nichts unternommen.
Sprich, ich schaue egt nur was für ein Termin/Schicht generell an diesem Tag ist, welche dann kurz nach 0 Uhr umgestellt wird. Aber ja, sollte ich auch mal ändern... denn ich hab Schichten (Frei, Urlaub) die als Ganztagstermin drin stehen und meine normalen Schichten (Tag-/Spät-/Nachtschicht) stehen mit ihren richtigen Uhrzeiten im Kalender.
Mit den "at"'s arbeite ich derzeit nicht.
Aber das wäre für die Zukunft sehr Sinnvoll wenn ich weitere Sachen mithilfe des Kalenders steuern möchte, oder was ich noch machen möchte ist, sobald meine Schicht endet, soll in einem gewissen Zeitabstand die Heizung gestartet werden, noch bevor ich nach Hause gekommen bin (zum kuscheligen Vorwärmen :P ). Das nehme ich ein andermal in Angriff.
Jedenfalls vielen Dank das du dir Sorgen drum gemacht hast und das du die Änderung noch hinzugefügt hast.. :)
Ich war schon sehr froh das du deine Arbeit mit allen teilst, gefiehl mir sehr gut. ;D
Viele Grüße
borsTiHD
@inoma:
Ich habe mal eine Testversion für dich zusammen gebaut. Kannst du mal bitte gucken ob das so ungefähr hin kommt?
Nachdem das Modul eingespielt ist (shutdown restart nicht vergessen) und sich das Modul das erste Update geholt hat, sollte userattr automatisch erweitert werden um calendarIncludeStarted (ansonsten userattr löschen und noch mal ein Update holen). Das kann man dann als Attribut auswählen und hier einen oder mehrere Kalender angeben. Die Termine der dort angegebenen Kalender sollten dann gefiltert werden, wenn diese bereits gestartet sind. Das alte Attribut includeStarted muss auf 1 stehen, damit der Vorfilter erst mal alles Termine durchlässt und der neue zweite Filter greift.
Sry wegen der Bezeichnungen und der noch komischen bzw. falschen Logik. Ich möchte erst mal nur wissen ob es grundlegend funktioniert.
@blasterx: Inzwischen ist mir auch eingefallen wie man dein Problem hätte viel einfacher lösen können. Man hätte schlicht ein entsprechendes filterSource Attribut setzen können. Sry für die Umstände.
Hallo mumpitzstuff,
die testversion 1.0.1 funktioniert soweit. Wenn ich über das attribut calendarIncludeStarted den regulären Kalender (also den nicht- Geburtstagskalender) angebe, werden für diesen die gestarteten Termine gelöscht, die Termine für den Geburtstagskalender bleiben bestehen.
Allerdings ist das userattribut calendarIncludeStarted nicht automatisch angelegt worden, auch nachdem ich das attr userattr gelöscht hatte. Es wurde gar kein userattr mehr angelegt. Ich habe es also einfach per Hand eingetragen, das hat dann auch funktioniert.
Schonmal ein RIESEN Danke!!!
Ah stimmt. Habe jetzt den Code nicht vor Augen, aber es kann sein, dass die Erzeugung davon abhängig war, ob calendarFilter existiert oder nicht.
Schon mal danke fürs testen. Ich werde es dann noch rund machen...
@inoma
Hier wäre dann noch mal sicherheitshalber die hoffentlich finale Version zum testen mit folgenden Besonderheiten:
1.) Das Attribut includeStarted wurde entfernt! Bitte in allen aktiven Kalendern gucken, ob das Attribut gesetzt ist und gegebenenfalls VOR dem Update löschen.
2.) Update wie gewohnt durchführen und shutdown restart nicht vergessen.
3.) Falls das Attribut calendarFilter gesetzt ist, bitte kurz löschen und ein Update des Kalenders durchführen. Dadurch sollte userattr um den Eintrag calendarIncludeStarted erweitert werden.
4.) Jetzt kann calendarFilter wieder gesetzt werden.
5.) Der Default ist jetzt, das alle Termine die bereits gestartet sind, raus gefiltert werden. Will man das für einen Kalender nicht, dann muss man calendarIncludeStarted auf den entsprechenden Kalender setzen. Damit ist das Default Verhalten genau Invertiert zur alten Version, also bitte aufpassen.
Wenn alles funktioniert, würde ich es so offiziell frei geben wollen.
Hallo Mumpitzstuff,
gerade getestet, funktioniert alles so wie beschrieben, vielen Dank nochmal. Erste Sahne!
Das Update wurde eingespielt und ist jetzt über update all verfügbar.
Bitte löscht unbedingt das Attribut includeStarted vor dem Update, sonst meckert FHEM beim nächsten Start.
https://forum.fhem.de/index.php/topic,77502.msg750756.html#msg750756 (https://forum.fhem.de/index.php/topic,77502.msg750756.html#msg750756)
Hallo Mumpitzstuff,
wenn Du mir nochmal helfen könntest? Wie kann ich einen Kalender in der Readingsgroup 'excluden'?
Ich habe mir jetzt zusätzlich zum Geburtstagskalender und zum Terminkalender einen 'Reminder' Kalender gemacht, dort kommen nur Erinnerungen rein,
also ich lasse mir über deinen Calender eventgetrieben zum Erinnerungstermin dann eine Pushnachricht schicken.
Aber die Reminder möchte ich nicht unbedingt in der Readingsgroup als Termin sehen. Hast Du da einen Tipp für mich?
Danke!
Über valueFormat vielleicht? Der Kalender müsste doch einen bestimmten source haben oder? Dann könnte man darauf filtern. https://wiki.fhem.de/wiki/ReadingsGroup#Inhalte_filtern (https://wiki.fhem.de/wiki/ReadingsGroup#Inhalte_filtern)
Bedankt! Hatte ich so nicht gefunden, probiere ich später noch aus!
Hallo,
bin heute erfolgreich von CALVIEW und ABFALL auf dieses Modul umgestiegen. Echt klasse bis jetzt.
Nur eine Kleinigkeit die auch anfangs beim ABFALL-Modul nicht ganz funktioniert hat, wenn ich bei einem Kalender vom Typ waste das Attribut wasteEventSeparator mit "und" setze, schreibt er drei Events die an einem Tag vorkommen hintereinander weg.
Wenn ich " und " als Wert eintrage, gehen beim Abspeichern die Leerzeichen vorne und hinten verloren. Somit bekomme ich beim Reading next_text so unschöne Einträge wie "Blumen gießenundBad sauber machenundKüche sauber machen" Das ist nicht ganz so praktisch, da ich diesen String vorlesen lasse. Das endet dann eher im Kauderwelsch.
Muss ich mir ansehen. Ist aber bestimmt nur eine Kleinigkeit. Ich fasse noch mal zusammen:
Egal ob man "und" oder " und " eingibt, es kommt immer "1und2" raus. Richtig?
Zitat von: mumpitzstuff am 24 Januar 2018, 18:12:23
Muss ich mir ansehen. Ist aber bestimmt nur eine Kleinigkeit. Ich fasse noch mal zusammen:
Egal ob man "und" oder " und " eingibt, es kommt immer "1und2" raus. Richtig?
ja genau so ist es
Interessant. Da schlägt irgend ein Automatismus zu und entfernt die Leerzeichen wenn man das Attribut setzen möchte. Damit habe ich nicht gerechnet. Ich habe ein Update eingespielt, in dem die Leerzeichen davor und danach jetzt nachträglich eingefügt werden. Versuch mal bitte ob es jetzt geht.
Ja super, jetzt klappt es. Vielen Dank, das ging ja echt fix. Dann kann morgen ja wieder die anstehende Hausarbeit korrekt vorgelesen werden. :-)
Hi,
Bin deiner Anleitung Schritt für Schritt gefolgt und habe das hier erstellt:
define FamilienKalender GCALVIEW 10000
updateInterval steht auf 3600
Bin allerdings ziemlich neu bei fhem...
im log ist dieser Eintrag:
2018.01.25 11:52:53 3: FamilienKalender blocking call already running
2018.01.25 11:52:53 3: BlockingCall for FamilienKalender aborted
2018.01.25 11:52:57 1: ERROR evaluating {GCALVIEW_DoEnd('FamilienKalender|HIERSTEHT EIN SEHR LANGER STRING - DEN HAB ICH HIER GELÖSCHT')}: Invalid [] range "n-A" in regex; marked by <-- HERE in m/ calendarFilter:multiple-strict,Familie#Mayer,Laufkalender,Geburtstage,Oktoberfest#-#München.#Deine#Stadt#in#deinem#Kalender.,Ferien#-#Bayern,Erlenstraße,#Gräfelfing#(Lochham)#[Mein-A <-- HERE bfallkalender.de],Feiertage#in#Deutschland,Weather:#55218 / at fhem.pl line 3864.
Was mache ich falsch?
Danke&Gruss
hans
hi,
i deleted the calendar which caused (very long name with ü) the problem and now it looks good.
In dem einen Abfallkalender hast du diverse Klammern drin und überhaupt sollte ein Kalendername vielleicht nicht unbedingt ein ganzer Roman sein.
Vorschlag: Kannst du vielleicht deinen Kalendern kürzere prägnantere Namen geben und auf Sonderzeichen verzichten? Leerzeichen und Unterstriche sind ja okay, aber /()ˋ´'"\[]{}| ist eher suboptimal. Falls du dich durchringen kannst, dann musst du hinterher die Authentifizierung + Cache file löschen und die Authentifizierung neu durchführen.
Anfangen würde ich mit deinem Abfallkalender, der enthält verschiedene Klammern (vielleicht zur Sicherheit auch den Punkt mal raus nehmen von .de) die hier zu einem Problem zu werden scheinen. Vielleicht reicht das ja auch schon aus.
Da ich 2 Tage probiert habe, meine Lösung für die Nnächsten.
Mein Raspberry 2 ist von mir gegangen und so bin ich auf einen Raspberry 3 mit Raspbian Stretch Lite umgestiegen.
Der Versuch gcalcli zu installieren/einzurichten scheiterte! :(
Punkt 2 der Anleitung
pi@raspberrypi:/ $ sudo pip install gcalcli
sudo: pip: command not found
Nicht schlimm, die Version ist ja aktuell.
Schlimmer Punkt 6
fhem@raspberrypi:~$ gcalcli list --noauth_local_webserver
Unknown command line flag 'noauth_local_webserver'
Irgendwann habe ich überlegt was so anders ist als vorher. Der alte Raspi hatte kein Lite. Also im Netz mal nach einer Anleitung für gcalcli gesucht.
sudo apt-get install git python-pip python-gdata python-dateutil python-gflags python-vobject python-parsedatetime
und danach ging es ohne Fehler
Okay danke. Das mit dem pip habe ich wahrscheinlich schon mal irgendwann anders installiert. Ist immer schwer sowas zu entdecken.
Ich hab's im ersten Beitrag aufgenommen.
einfach nur ein ganz dickes Lob, wirklich klasse Arbeit !!
Vielen Dank ;D
Hallo zusammen,
ich habe das tolle Modul auch gleich mal verwendet und stolpere über ein Problem, das im CALVIEW scheinbar "heute" gefixed wurde.
Wenn ein Termin keine Location eingetragen hat, z.B. das Reading t_001_location werden im FTUI die Einträge der "nächsten" Termine einfach eine Zelle nach oben verschoben. Somit stimmt die Tabelle nicht. Mir ist es nicht gelungen, eine data-substitution zu bauen, die einen "" abfängt. Vielleicht müsste das auch im Modul direkt abgefangen werden. Wurde offensichtlich im CALVIEW so gemacht.
Siehe Thread: https://forum.fhem.de/index.php/topic,83422.0.html
Trotzdem vorab ein herzliches Danke für das Modul... unser Familienkalender ist schon up-and-running :).
lg aus Wien
Thomas Lachmayer
Ich glaube das jemand das schon mal angefragt hatte und ich fand es nicht so toll leere Readings zu haben. Kannst du mir bitte deine ftui Definition mal zur Verfügung stellen, damit ich gucken kann, ob es noch eine andere Lösung gibt? Falls nicht, würde ich einen Schalter für dieses Verhalten zur Verfügung stellen.
Hallo,
hier ist meine Definition, die Test mit data-substition sind nicht mehr drin, da hat die Chefin interveniert ::) Im Moment helfe ich mir damit, dass ich die Einträge im Google Calendar direkt mit einem Ort ersetze...
Ein optisches Problem hab ich auch noch: Das letzte Reading (also der Ort) nützt nicht die gesamte Breite, die zur Verfügung steht, sondern lässt rechts noch Platz, jetzt helfe ich mir halt mit Truncate.. :)
<li data-row="6" data-col="1" data-sizex="10" data-sizey="2">
<header><div data-type="label" class="mint bigger bold">MaLa's Familienkalender</header>
<div class="col-8">
<header> <div data-type="label" class="cell mint">Tag</header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_weekday" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_weekday" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_weekday" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_weekday" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_weekday" class="large"></div>
</div>
<div class="col-12">
<header> <div data-type="label" class="cell mint">Datum </header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_bdate" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_bdate" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_bdate" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_bdate" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_bdate" class="large"></div>
</div>
<div class="col-15">
<header> <div data-type="label" class="cell mint">Uhrzeit </header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_timeshort" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_timeshort" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_timeshort" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_timeshort" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_timeshort" class="large"></div>
</div>
<div class="col-30">
<header> <div data-type="label" class="cell mint">Betreff </header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_summary" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_summary" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_summary" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_summary" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_summary" class="large left-align truncate"></div>
</div>
<div class="col-30">
<header> <div data-type="label" class="cell mint">Ort </header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_location" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_location" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_location" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_location" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_location" class="large left-align truncate"></div>
</div>
Wie gesagt, wenn keine location da ist, werden die Zeilen einfach nicht angedruckt, sondern die nachfolgenen "rutschen" einfach rauf in den vorigen Eintrag.
Chris1284 hat es scheinbar im Modul CalView schon gefixed, vielleicht kannst ja "spicken" :).
lg und DANKE aus Wien,
Thomas
Das zu implementieren ist einfach, aber es ist meiner Meinung nach unsauber. Was spräche dagegen es mal mit dem zu versuchen?
data-substitution="s/^\z/ /"
oder
data-substitution="s/\A\z/ /"
Ich habe aber keine Ahnung ob das funktioniert.
Falls nicht baue ich einen Schalter ein, um das Feature an oder auszuschalten.
Hallo Mumpitzstuff,
Danke für deine Antwort, beides probiert - leider ohne Ergebnis. Vermutlich hatte ich die Zeichenkombination auch schon mal durch (hab einige probiert. Er verschiebt immer noch. Bild ist anbei - die dritte Zeile (Esterhazygasse 26) gehört eigentlich zum Bachata-Termin in der 4. Zeile...
Danke, wenn du da so einen Schalter einbaust :D
PS: gibt es eigentlich eine Möglichkeit, die vergangenen Termin von HEUTE (also im Bild z.B. den Mittagstermin) "nicht mehr" anzuzeigen, das attr Calenderincludestarted nimmt ja nur auf den Tag Rücksicht, oder habe ich da was überlesen?
nochmal Danke und lg aus Wien,
Thomas
Bei calenderIncludeStarted darf nichts gesetzt sein, dann werden bereits gestartete Termine von allen Kalendern ausgeblendet. Wenn dort ein Kalender drin steht, dann werden auch die bereits gestarteten Termine des Kalenders mit angezeigt.
Hier mal eine Testversion. Falls eins der Werte für ein Reading auf "" gesetzt ist, dann wird es durch " " ersetzt. Ich hoffe das bringt den gewünschten Effekt. Bitte schreib mir ob es bei dir funktioniert.
1.) Datei ersetzen und Rechte bei Bedarf anpassen.
2.) shutdown restart ausführen
Ich suche nach der Möglichkeit, die nächsten 10 Tage des Kalenders anzuzeigen, egal, ob was drinnen steht, oder nicht. Geht so etwas?
Mit dem Attribut calendarDays kannst du die Anzahl der Tage festlegen. Ist es das was du suchst?
Oder suchst du nach einer Readingsgroup die dir 10 Tage fest anzeigt und dann die Termine an den entsprechenden Stellen einblendet. Also unter Umständen mit leeren Zeilen.
Habe ich festgelegt. Da werden aber keine leeren Termine ausgegeben.
Eine RG habe ich auch, die kann aber natürlich nur Termine anzeigen, die der Kalender liefert.
Also, wenn z.B. 3 Tage angezeigt werden und am 2. Tag nichts ist, habe ich nur 2 Tage in der Ansicht.
Um das zu verhindern, wollte ich halt alle (bei mir 10) Tage des Googlekalenders anzeigen, egal, ob leer, oder ob nicht.
Falls du eine RG hast, die das kann, wäre ich für den Code dankbar.
Meine sieht so aus:
defmod Termine readingsGroup <Datum>,< >,<Zeit>,<hr>\
GKalender:t_001_bdate,t_001_weekday,t_001_summary\
GKalender:t_002_bdate,t_002_weekday,t_002_summary\
GKalender:t_003_bdate,t_003_weekday,t_003_summary\
GKalender:t_004_bdate,t_004_weekday,t_004_summary\
GKalender:t_005_bdate,t_005_weekday,t_005_summary\
GKalender:t_006_bdate,t_006_weekday,t_006_summary\
GKalender:t_007_bdate,t_007_weekday,t_007_summary\
GKalender:t_008_bdate,t_008_weekday,t_008_summary\
GKalender:t_009_bdate,t_009_weekday,t_009_summary\
GKalender:t_010_bdate,t_010_weekday,t_010_summary
attr Termine group Termine
attr Termine nonames 1
attr Termine room Kalender
attr Termine style style="border:none;;box-shadow:none"
attr Termine valueStyle {\
if($VALUE eq "So") { 'style="color:red;;"' }\
elsif($VALUE eq "Sa") { 'style="color:gold;;"' }\
elsif($VALUE eq "F") { 'style="color:lightgreen"' }\
}
Habe ich nicht. Aber ich habe jetzt verstanden was du meinst und kann mir Gedanken dazu machen.
Hab jetzt noch mal geschaut und es sieht eher schlecht aus. Vermutlich wird es sehr schwer das mit Boardmitteln hinzukriegen. Die Readingsgroup nimmt die Readings als Trigger und dann kann man die Zwischenwerte nicht erzeugen, um die Tage ohne Kalendereinträge anzuzeigen.
OK, nicht so schlimm. Mach dir nicht zu viele Gedanken darüber. Ich finde einen anderen Weg. Ich kann ja zur Not auch was im Google eintragen, z.B. "---". Dann steht was da und ich kann auswerten/anzeigen.
Ich hatte gedacht, einen Parameter übersehen zu haben.
Also vielen Dank für die Mühe.
Hallo Achim,
Danke für deine Version - habe es ausprobiert- kurz: funktioniert nicht. Liegt aber scheinbar nur bedingt an deinem Code. Ich habe mir mal nach Vergleich der beiden Versionen erlaubt, (in den Zeilen 638-646) das ' ' durch '-' zu ersetzen, dann funktioniert es. Offensichtlich mag FHEM die Leerzeichen genauso wenig, wie "NULL" Werte :).
Wenn das für alle anderen im Forum akzeptabel ist, wäre das natürlich ein gangbarer Weg.
Bin kein Perl Programmierer, leider - sonst könnte ich dir vermutlich mehr Hinweise geben ;D
lg aus Wien,
Thomas
Zitat von: mumpitzstuff am 07 Februar 2018, 21:48:01
Hier mal eine Testversion. Falls eins der Werte für ein Reading auf "" gesetzt ist, dann wird es durch " " ersetzt. Ich hoffe das bringt den gewünschten Effekt. Bitte schreib mir ob es bei dir funktioniert.
1.) Datei ersetzen und Rechte bei Bedarf anpassen.
2.) shutdown restart ausführen
Deshalb funktioniert vielleicht auch mein erstes Beispiel nicht. Kannst du mal folgendes probieren?
data-substitution="s/^\z/-/"
oder das andere Beispiel von unten mit einem - anstatt dem Leerzeichen.
Ansonsten kann ich bei mir im Code probieren. Das wäre der HTML Code für ein Leerzeichen.
Hallo,
negativ, funktioniert nicht. Sowohl mit deinem "Original", als auch mit der letzten Version getestet, er verschiebt immer noch.
Wie gesagt, für mich wäre es absolut ok, wenn das Leerzeichen mit einem '-' ersetzt wird. Da kann sich ja wohl kein System beschweren :).
Ich nehm derzeit die Version mit den Minuszeichen.
Danke für dein Engagement!,
lg aus Wien,
Thomas
Ein - ist halt sichtbar und deshalb nicht so gut. Könntest du mir bitte den Gefallen tun und probieren ob ebenfalls funktionieren würde?
Servus,
habe es gerade ausprobiert - so funktioniert es - im Reading steht zwar dann im "Klartext" ' ' drin, aber im Label im FTUI wird es richtig angezeigt - anbei die Änderung, die ich gemacht habe - weiß nicht, ob das so richtig ist, aber wie gesagt, ich bin kein Perl Programmierer ;) - bin froh, wenn ich mich in den HTML-Tags nicht verheddere... das letzte Mal habe ich vor 35 Jahren C programmiert..
my $startDate = @$_[0];
my $startTime = @$_[1];
my $endDate = ('' ne @$_[2] ? @$_[2] : @$_[0]);
my $endTime = ('' ne @$_[3] ? @$_[3] : @$_[1]);
my $url = ('' ne @$_[4] ? @$_[4] : ' ');
my $summary = ('' ne @$_[6] ? @$_[6] : ' ');
my $location = ('' ne @$_[7] ? @$_[7] : ' ');
my $description = ('' ne @$_[8] ? @$_[8] : ' ');
my $calendar = ('' ne @$_[9] ? @$_[9] : ' ');
my $author = ('' ne @$_[10] ? @$_[10] : ' ');
my $sourceColor = ('' ne @$_[11] ? @$_[11] : ' ');
my ($startYear, $startMonth, $startDay) = split("-", $startDate);
my ($endYear, $endMonth, $endDay) = split("-", $endDate);
my $eventDate = fhemTimeLocal(0, 0, 0, $startDay, $startMonth - 1, $startYear - 1900);
my $daysleft = floor(($eventDate - time) / 60 / 60 / 24 + 1);
my $daysleftLong;
my $startDateStr = $startDay.'.'.$startMonth.'.'.$startYear;
my $endDateStr = $endDay.'.'.$endMonth.'.'.$endYear;
my $timeShort;
my $weekdayStr;
Danke auf jeden Fall für das coole Modul und deine Unterstützung!
;) lg aus Wien,
Thomas
Da fehlt das Semikolon am Ende. Okay aber grundsätzlich scheint es ja so in etwa zu gehen. Ich baue das mal ein, damit du es dir ansehen kannst.
Ich habs probiert, es geht leider nicht. Ich lasse es jetzt so wie es ist. Meiner Meinung nach ist das ein Bug in FTUI. Frag am besten dort noch mal nach einer Lösung für dein Problem.
PS: Im anderen Kalender Modul wird ebenfalls mit einem " " gearbeitet, dort passiert also das Gleiche wie bei diesem Modul.
Hallo,
ich bin gerade dabei, meine Kalenderanbindung auf auf GCALVIEW umzustellen und dabei kamen mir ein Wunsch, den ich schon für das Abfallmodul hatte und ein Erweiterungswunsch:
1. Wenn ich den Modus waste aktiviere, erhalte ich ja die Anzeige der nächsten (Müll-)Termine. Nun kam es schon vor, dass ich mit dem Wissen einer dreiviertel vollen Mülltonne vor dem Tablet mit dem Abfallkalender stand und gegrübelt habe, ob ich die Tonne vollpacken und rausstellen muss oder ob das Restvolumen noch bis zum nächsten Abholtermin reicht. In dem Moment hatte ich mir eine Funktion gewünscht, für eine Terminart zwischen dem nächsten und übernächsten Termin hin und her schalten zu können. Siehst du da eine Möglichkeit, so etwas einzubauen?
2. Ich hatte die Idee, die Abfallkalenderansicht als Urlaubscountdown zu "missbrauchen". Hierfür hatte ich unseren "normalen" Kalender hergenommen, auf den waste-Modus gestellt und den Summary-Filter auf "Urlaub" - leider habe ich erst beim Nachlesen festgestellt, dass der Filter eine andere Funktion hat. Wäre es möglich, noch eine Filterfunktion einzubauen, die nur Kalendereinträge berücksichtigt, die dem Filter entsprechen?
Vielen Dank
Ronny
Zum Verständnis:
1.) Wenn du Waste eingestellt hast, dann möchtest du nicht nur sehen das der Restmüll morgen abgeholt wird, sondern das die übernächste Leerung in 14 Tagen ist. Richtig? Also im Prinzip die Tage zur übernächsten Leerung angezeigt bekommen.
2.) Das ist nicht trivial. Erstens können sich die Filter dann gegenseitig ausschliessen. Zweitens muss man dann die Filter verodern. Wenn Summary auf Urlaub steht oder wenn Location auf Italien steht oder oder oder. Ich kann aber mal drüber nachdenken...
Guten Abend.
1) Ja, genau. Optimal wäre ein "set <Müllart> next|then" zu umschalten, aber wenn beides angezeigt würde, könnte ich mir das umschalten ggf. auch selbst bauen...
2) ja, aber ich würde eher ein (vermutlich einfacher umzusetzendes) "und" an Stelle des "oder" sehen...
Vielen Dank für deine Mühe
Ronny
Gesendet von meinem SM-G935F mit Tapatalk
Guten Morgen,
da ich im Zuge der Umstellung gern auf meine "Zusammenbaufunktion" verzichten würde, hätte ich noch einen "kleinen" Wunsch: könntest du einen Schalter (Attribut) einbauen, dass man das age nicht als extra reading erhält, sondern in Klammern am summary dran?
Das wäre super
Ronny
Das würde ich lieber nicht machen wollen. Der nächste will das in der Description oder mit eckigen Klammern usw. In der Readingsgroup auf der ersten Seite schreibe ich das glaub schon irgendwo mit rein. Reicht sowas vielleicht nicht auch. Eventuell geht auch ein Userattribut.
Hier mal eine Testversion, die ein zusätzliches Reading im Abfallkalender (nicht im normalen Kalender) erzeugt: _daysnext
Das zeigt dann die Tage bis zum übernächsten Abholtermin an. Könnt ihr bitte mal prüfen ob das bei euch funktioniert?
Über den Urlaubscounter habe ich auch mal nachgedacht. Die einfachste Lösung wäre es, wenn du dir einen separaten Kalender erstellst, dort die Termine einträgst und das dann als Abfallkalender einbindest.
Zitat von: mumpitzstuff am 23 Februar 2018, 19:19:10
Über den Urlaubscounter habe ich auch mal nachgedacht. Die einfachste Lösung wäre es, wenn du dir einen separaten Kalender erstellst, dort die Termine einträgst und das dann als Abfallkalender einbindest.
Da ich bereits drei Kalender habe (Abfall, normalen und Jahrestage) möchte ich nicht noch einen weiteren für die drei mal Urlaub im Jahr...
Gesendet von meinem SM-G935F mit Tapatalk
wie kann ich denn einen neu erstellten GoogleKalender (nach Einrichtung von gcali) in FHEM einrichten?
drei vorher erstellte Kalender konnte ich bereits erfolgreich einbinden.
Zitat von: mumpitzstuff am 23 Februar 2018, 17:38:38
Hier mal eine Testversion, die ein zusätzliches Reading im Abfallkalender (nicht im normalen Kalender) erzeugt: _daysnext
Das zeigt dann die Tage bis zum übernächsten Abholtermin an. Könnt ihr bitte mal prüfen ob das bei euch funktioniert?
Ja, funktioniert. Ich habe nur ein noch nicht nachvollziehbares Problem mit Umlauten: in einer Instanz gibt es im UserAttr den "Müllkalender", in einer anderen den "M?llkalender". Nur wenn ich "M?llkalender" auswähle, erhalte ich auch Daten. In den Daten werden Umlaute ebenfalls entfernt (z.B. "Biomll_days")...
Ronny
Zitat von: mumpitzstuff am 23 Februar 2018, 19:19:10
Über den Urlaubscounter habe ich auch mal nachgedacht. Die einfachste Lösung wäre es, wenn du dir einen separaten Kalender erstellst, dort die Termine einträgst und das dann als Abfallkalender einbindest.
Ich habe auch nochmal darüber nachgedacht: wenn es den Filter für die Beschreibung gäbe, der nur auf den Filter passende Termine in die "Abfallansicht" übernimmt, könnte man sich Countdowns für bestimmte Ereignisse einrichten: z.B. wie lange ist es noch bis zum nächsten Urlaub oder (für unseren großen dieses Jahr aktuell) wie lange ist es noch bis zum Schulanfang - das könnte ich dann am Tablet an der Wand schön visuell anzeigen...
Ronny
Zitat von: kleineslichtHH am 25 Februar 2018, 13:16:34
wie kann ich denn einen neu erstellten GoogleKalender (nach Einrichtung von gcali) in FHEM einrichten?
drei vorher erstellte Kalender konnte ich bereits erfolgreich einbinden.
Wenn ich die Frage richtig verstanden habe, dann hattest du alles für 3 Kalender eingerichtet, hast jetzt in Google einen vierten Kalender eingerichtet und möchtest diesen jetzt hinzufügen? Das ist leider etwas umständlich, denn du must dazu deine Authentifizierung erst löschen und dann neu einrichten. Das liegt daran, dass die Authentifizierung fest mit deinen Kalendern verknüpft ist, die zum Zeitpunkt der Authentifizierung existiert haben.
Zitat von: mumpitzstuff am 26 Februar 2018, 16:10:40
Wenn ich die Frage richtig verstanden habe, dann hattest du alles für 3 Kalender eingerichtet, hast jetzt in Google einen vierten Kalender eingerichtet und möchtest diesen jetzt hinzufügen? Das ist leider etwas umständlich, denn du must dazu deine Authentifizierung erst löschen und dann neu einrichten. Das liegt daran, dass die Authentifizierung fest mit deinen Kalendern verknüpft ist, die zum Zeitpunkt der Authentifizierung existiert haben.
Das habe ich verstanden. Mein Problem daran ist nur, das mir für einen solchen Filter keine weitere Verwendung als diese einfällt. Und das hat erst mal nichts mit der Kalenderfunktion an sich zu tun, deshalb tue ich mich da noch etwas schwer.
Da hast du es leider richtig verstanden. Wie kann ich denn die Authentifizierung löschen?
Zitat von: mumpitzstuff am 26 Februar 2018, 16:14:40
Das habe ich verstanden. Mein Problem daran ist nur, das mir für einen solchen Filter keine weitere Verwendung als diese einfällt. Und das hat erst mal nichts mit der Kalenderfunktion an sich zu tun, deshalb tue ich mich da noch etwas schwer.
Ich nehme an, du wolltest mich zitieren :-)
Ich sehe die Möglichkeit, einen countdown zu einem bestimmten Termin zu erstellen schon als Kalenderfunktion. Ein weiteres mögliches Szenario wäre folgendes: wenn man einen Familienkalender hat und im Betreff des Termins den Namen der Familienmitglieder stehen hat, die der Termin betrifft, könnte man pro Familienmitglied eine Kalenderinstanz anlegen und nur die Termine für das entsprechende Familienmitglied auslesen...
Ronny
Gesendet von meinem SM-G935F mit Tapatalk
Zitat von: kleineslichtHH am 26 Februar 2018, 17:18:34
Da hast du es leider richtig verstanden. Wie kann ich denn die Authentifizierung löschen?
Bei mir gibts in /opt/fhem die beiden Dateien .gcalcli_oauth und .gcalcli_cache. Beide müsstest du löschen und dann die Authentifizierung erneut durchführen. Die Dateien kannst du mit ls -all anzeigen lassen.
Zitat von: RoBra81 am 26 Februar 2018, 14:30:37
Ja, funktioniert. Ich habe nur ein noch nicht nachvollziehbares Problem mit Umlauten: in einer Instanz gibt es im UserAttr den "Müllkalender", in einer anderen den "M?llkalender". Nur wenn ich "M?llkalender" auswähle, erhalte ich auch Daten. In den Daten werden Umlaute ebenfalls entfernt (z.B. "Biomll_days")...
Ronny
Ich habe selbst einen Kalender Müllabfuhr und Restmüll wird zu Restmuell im Reading. Vermutlich hast du eine falsche Codepage z.b. Latin-1 anstatt utf-8 eingestellt. Gib mal locale auf der Shell ein und Check mal ob da utf8 steht.
Hallo Armin,
wie ich sehen konnte, hast du bei deiner letzten Version das Handling der Readings bzw. Variablen geändert. Leider reicht mein Perl jetzt nicht soweit, dass ich in den Zeilen die Ersetzung mit den "-" selber vornehmen kann. Kannst du mir da auf die Sprünge helfen?
my $startDate = @$_[0];
my $startTime = @$_[1];
my $endDate = @$_[2];
my $endTime = @$_[3];
my $url = @$_[4];
my $summary = @$_[6];
my $location = @$_[7];
my $description = @$_[8];
my $calendar = @$_[9];
my $author = @$_[10];
my $sourceColor = @$_[11];
Danke und kalte Grüße aus Wien,
Thomas
Was meinst du mit letzter Version? Die Testversion oder die Version, die über das normale Update kommt?
https://forum.fhem.de/index.php/topic,77502.msg764062.html#msg764062 (https://forum.fhem.de/index.php/topic,77502.msg764062.html#msg764062)
Hier hattest du gepostet wie es ausgesehen hat.
Hallo,
die Version die über das Update kam.
Sry, ich dachte, die Version hier aus dem Thread wäre bereits "offiziell" ;) - hab jetzt ein Exclude gesetzt - und Backup sei Dank - alles wieder im Lot und die Terminlocation dort, wo sie hingehören.
lg aus Wien,
Thomas
Ich habe soeben eine neue Version eingestellt mit folgenden Änderungen:
- Attribut emptyReadingText hinzugefügt (damit kann man den Inhalt von leeren Readings festlegen)
- Attribut invertFilter hinzugefügt (invertiert die Bedeutung der existierenden Filter). Hiermit kann man exakt die Einträge behalten, die dann dem Filtertext entsprechen!
- Reading _daysnext hinzugefügt (nur waste Kalender)
- Version erhöht von 1.0.2 nach 1.0.3
Zitat von: shamal2008 am 02 März 2018, 11:07:13
Hallo,
die Version die über das Update kam.
Sry, ich dachte, die Version hier aus dem Thread wäre bereits "offiziell" ;) - hab jetzt ein Exclude gesetzt - und Backup sei Dank - alles wieder im Lot und die Terminlocation dort, wo sie hingehören.
lg aus Wien,
Thomas
Dein Problem sollte sich jetzt mit dem neuen Attribut lösen lassen. Du kannst das Update wieder aktivieren.
Zitat von: RoBra81 am 26 Februar 2018, 18:20:35
Ich nehme an, du wolltest mich zitieren :-)
Ich sehe die Möglichkeit, einen countdown zu einem bestimmten Termin zu erstellen schon als Kalenderfunktion. Ein weiteres mögliches Szenario wäre folgendes: wenn man einen Familienkalender hat und im Betreff des Termins den Namen der Familienmitglieder stehen hat, die der Termin betrifft, könnte man pro Familienmitglied eine Kalenderinstanz anlegen und nur die Termine für das entsprechende Familienmitglied auslesen...
Ronny
Gesendet von meinem SM-G935F mit Tapatalk
Deine Anforderungen sollten jetzt ebenfalls alle erfüllt sein.
Zitat von: mumpitzstuff am 08 März 2018, 21:35:57
Deine Anforderungen sollten jetzt ebenfalls alle erfüllt sein.
Super, vielen Dank! Das funktioniert :)
Ronny
Hallo zusammen,
ich hoffe ihr könnt mir weiterhelfen.
Ich nutze dein Plugin jetzt schon ne Weile und bin auch sehr zufrieden damit.
Nutzen tue ich dein Plugin für meinen Schichtplan, den ich über den Google Kalendar syncronisiere.
Letzendlich steuere ich in FHEM damit meine Heizungsprofile.
Leider ist mir vor ner Weile aufgefallen das plötzlich meine Heizung nicht mehr automatisiert sich meinen Schichten angleicht und bei näherem schauen, hab ich gemerkt das keine Einträge mehr aus dem Google Kalendar geladen werden. Das ganze ist jetzt schon ein paar Wochen her, hatte erst jetzt Zeit mich drum zu kümmern. Da sich möglicherweise was bei Google oder sonst wo geändert hatte, hab ich es erstmal mit einem "update all" probiert und alles hoffentlich auf den neusten Stand gebracht.
Versuche ich jetzt mein Device mit "set GoogleCalendar update" abzufragen, bekomme ich im Eventmonitor folgende Meldung:
2018.03.25 20:05:07 3 : GoogleCalendar blocking call already running
2018.03.25 20:05:07 3 : BlockingCall for GoogleCalendar aborted
2018.03.25 20:05:07 1 : ERROR evaluating {GCALVIEW_DoEnd('GoogleCalendar||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
Bevor ich jetzt versuche die Google Authentifizierung oder sonst was neu zu machen, wollte ich euch fragen ob ihr mir da helfen könntet?
Vielen Dank schon mal. Falls eine ähnliche Frage bereits kam, ich hab mir nur die letzten Seiten hier kurz überflogen, dann bitte ein Hinweis wo ich das finden kann. :)
Hier wäre mein Device:
Internals:
CHANGED
DEF 3600
NAME GoogleCalendar
NOTIFYDEV global
NR 149
NTFY_ORDER 50-GoogleCalendar
STATE Initialized
TIMEOUT 3600
TYPE GCALVIEW
VERSION 1.0.3
Helper:
DBLOG:
state:
DBLogging:
TIME 1522001107.40259
VALUE update
helper:
RUNNING_PID:
abortFn GCALVIEW_DoAbort
arg GoogleCalendar
bc_pid 7
finishFn GCALVIEW_DoEnd
fn GCALVIEW_DoRun
pid 11999
telnet telnetPort_127.0.0.1_48096
terminated 1
timeout 3600
abortArg:
Attributes:
calendarDays 5
calendarFilter Schichtplan,xxx@googlemail.com,Contacts,Feiertage in Deutschland,Week Numbers
calendarIncludeStarted Schichtplan,xxx@googlemail.com,Contacts,Feiertage in Deutschland,Week Numbers
group Kalender
icon time_calendar
room 6.1_GoogleKalender
sourceColor Schichtplan:black,xxx@googlemail.com:black,Contacts:black,Feiertage in Deutschland:red,Week Numbers:black
updateInterval 7200
userattr calendarFilter:multiple-strict,Schichtplan,xxx@googlemail.com,Contacts,Feiertage#in#Deutschland,Week#Numbers calendarIncludeStarted:multiple-strict,Schichtplan,xxx@googlemail.com,Contacts,Feiertage#in#Deutschland,Week#Numbers
Kannst du bitte im Kalender Device Verbose auf 5 setzen und dann ein Update machen und gucken ob man da noch mehr sieht?
Hab Verbose auf 5 gestellt, bekomme dann nur folgende Ausgabe während eines Updates:
2018.03.25 22:00:17 3 : GoogleCalendar blocking call already running
2018.03.25 22:00:17 3 : BlockingCall for GoogleCalendar aborted
2018.03.25 22:00:17 5 : GoogleCalendar_SetNextTimer: set next timer
2018.03.25 22:00:18 5 : GoogleCalendar_DoEnd: end running
2018.03.25 22:00:18 1 : ERROR evaluating {GCALVIEW_DoEnd('GoogleCalendar||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
Vlt hilft ja der Hinweis, ich hab in meine Datenbank geschaut wann die letzten Daten abgerufen werden konnten und die letzten geloggten Einträge waren am 06.03. gegen 9 Uhr.
Besteht die Möglichkeit den Raspberry mal zu rebooted? Was mich wundert ist, das der BlockingCall hängen bleibt. Im Log steht immer das der BlockingCall bereits rennt. Vielleicht hat sich irgendwas grundsätzliches aufgegangen. Da auch keine weiteren Ausgaben von gcalcli kommen, könnte auch irgend ein Zombie Process bei dir im System existieren, der vielleicht weitere gcalcli Aufrufe verhindert. Das kannst du vielleicht mal vorab verifizieren und von der Kommandozeile deinen Kalender mit gcalcli abfragen. Vermutlich wird das auch nicht mehr gehen.
Ein Update von mir kam übrigens erst am 08.03 und davor ziemlich lange nichts...
Vielen Dank schonmal für die Hilfe.
Nach dem Raspberry Neustart bekomme ich sogar garnichts mehr in dem Event Monitor ausgegeben, wenn ich ein Update durchführe.
Lediglich mein Aufurf:
2018-03-26 09:23:31 GCALVIEW GoogleCalendar update
Dann hab ich das mal auf dem Pi direkt versucht per SSH.
Ich hoffe mal "gcalcli list" war der richtige Befehl? :D
Da bekomme ich die Meldung das ein Modul fehlt... dann hab ich dem fhem user bash Rechte gegeben und hab es mit dem nochmal probiert.
Gleiches Ergebnis:
fhem@raspberrypi:~$ gcalcli list
ERROR: Missing module - No module named dateutil.tz
Dabei ist mir eingefallen das ich vor kurzem meinem Pi ein Update spendierte, ich gehe jetzt mal davon aus, dass dadurch dieses Modul entfernt wurde?
Bevor ich jetzt versuche alles nach deiner Anleitung erneut zu installieren, mal lieber die Frage was deiner Meinung nach der Beste Weg wäre.
Kann ich das Modul nachinstallieren, bzw reparieren? Meinst du das kam wegen dem Pi Update? :)
Zitat von: mumpitzstuff am 26 März 2018, 00:51:53
Ein Update von mir kam übrigens erst am 08.03 und davor ziemlich lange nichts...
Davon bin ich auch nicht ausgegangen, da ich erst gestern alles FHEM basierte geupdatet hatte. :D
Dann ist die fehlende Bibliothek die Ursache.
sudo apt-get install python-dateutil
oder
sudo apt-get install python-pip
sudo pip install python-dateutil
Guck mal ob das hilft. Auf der Console muss das Ding erst mal wieder laufen, sonst geht in FHEM gar nichts...
Es fehlten scheinbar sogar noch mehr Pakete:
ERROR: Missing module - No module named gflags
ERROR: Missing module - No module named httplib2
ERROR: Missing module - No module named apiclient.discovery
Hatte das kurz der Reihe nach immer wieder probiert und eins jeweils nachinstalliert.
Deswegen hab ich jetzt gcalcli neuinstalliert und der Pi hat sich dabei etwa 46 neue Pakete geholt.
Ich glaube wirklich das war wegen dem alten Update des Pi's.
Jetzt konnte ich auch wieder meine einzelnen Kalender per SSH sehen.
In FHEM geht auch direkt wieder alles... musste nichtmal die Verknüpfung neu machen. ::)
Ohmann... ich danke dir vielmals. ;D
Hauptsache es geht wieder. :)
Guten Abend,
bekomme seit heute folgenden Fehler im Log:
2018.04.01 17:59:15 3: CAL_Hausarbeit blocking call already running
2018.04.01 17:59:15 3: BlockingCall for CAL_Hausarbeit aborted
2018.04.01 17:59:16 3: CAL_Hausarbeit: gcalcli agenda 04/01/2018 06/30/2018 --calendar "Hausarbeit" --detail_all --tsv
2018.04.01 17:59:16 3: CAL_Hausarbeit: 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?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Furlshortener&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&client_id=232867676714.apps.googleusercontent.com&access_type=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
2018.04.01 17:59:16 1: ERROR evaluating {GCALVIEW_DoEnd('CAL_Hausarbeit||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
FHEM ist aktuell und es hat die ganze Zeit auch gut funktioniert. Weiter vorne in diesem Beitrag gab es ähnliche Meldungen im Log, aber ich habe bereits geprüft ob Berechtigungen korrekt sitzen und das erneute setzen des Sicherheitstoken bringt auch nicht den gewünschten Erfolg. Das Absetzen von {qx(gcalcli list);;}
in der FHEM-Kommandozeile bringt dieselbe Meldung wie im Log ersichtlich dass der Token gesetzt werden soll.
Was ist hier zu tun?
Die Log-Meldung kann provoziert werden, bei jedem Update des Kalenders.
War das nach einem fhem Update?
Hast du schon mal versucht deinen Rechner neu zu starten?
sudo reboot now
Mir ist aufgefallen, das wenn gcalcli einmal irgendwie gekillt wurde, es danach zu ganz komischen Effekten kommen kann. Außer einem reboot hat bei mir auch nichts geholfen. Ich habe noch nicht rausfinden können woran das liegt, aber bevor ich jetzt zu suchen anfange, Versuch mal das Naheliegenste: einen reboot...
Sorry, vergessen zu erwähnen. Reboot natürlich auch schon probiert. Leider kein Erfolg.
Disable mal das Modul und starte danach mal den Rechner neu, um alle Seiteneffekte auszuschliessen. Dann ruf mal innerhalb von FHEM das von dir schon erwähnte gcalcli list auf:
{qx(gcalcli list);;}
Wenn du hier die Aufforderung bekommst den Verification Code einzugeben, dann passt etwas nicht mit deinem Token. Bist du sicher, das du die Authentifizierung als fhem User durchgeführt hast?
Hast du mal die Möglichkeit mit der configFolder Option versucht? Einfach bei der ganzen Authentifizierung die Option configFolder auf /opt/fhem setzen und das dann im Kalender Device ebenfalls als Attribut setzen. Vorher bitte damit überprüfen ob es geht:
{qx(gcalcli list --configFolder /opt/fhem);;}
Das Device am besten erst wieder auf disable 0 stellen, wenn das list Kommando in der FHEM Kommandozeile wieder ohne Fehler durch geht. Vorher macht es keinen Sinn.
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.
Das ist ja komisch. Naja Hauptsache es geht wieder. Och schau aber bei Gelegenheit mal rein, vielleicht finde ich was.
Mir ist doch noch was eingefallen, gerade weil du relativ viele Devices hast. Auf welchem Wert steht dein Timeout Wert? Wenn es nur 10s sind, ist unter Umständen dass das Problem. Stell am besten den Timeout Wert bei allen Devices z.b. auf 30s, um zukünftig Probleme zu vermeiden.
Guten Morgen,
Zitat von: mumpitzstuff am 26 Februar 2018, 22:10:26
Ich habe selbst einen Kalender Müllabfuhr und Restmüll wird zu Restmuell im Reading. Vermutlich hast du eine falsche Codepage z.b. Latin-1 anstatt utf-8 eingestellt. Gib mal locale auf der Shell ein und Check mal ob da utf8 steht.
nachdem mein Müllkalender nach meinem letzten Post funktionierte, habe ich nun wieder das Problem, dass der Müllkalender nicht funktioniert und beim Anlegen eines neuen GCALVIEW-Gerätes nur der M?llkalender gefunden wird. Wenn ich in der SSH-Konsole
locale
eingebe, erhalte ich
LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES=POSIX
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
Gebe ich jedoch im FHEM
"locale"
ein, so erhalte ich im Logfile
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
Was kann ich tun, damit mein FHEM utf-8 kann und der Müllkalender wieder funktioniert?
Vielen Dank
Ronny
Auf was steht dein globales Attribut language in FHEM? Versuch das mal auf DE zu setzen.
attr global language DE
Auf der Console auch noch mal das eingeben:
sudo raspi-config
und prüfen ob hier die de.utf8 codepage generiert und hinterher auch ausgewählt wurde.
Danach ist glaube ich ein restart des Rechners notwendig.
Zitat von: mumpitzstuff am 04 April 2018, 07:52:18
Auf was steht dein globales Attribut language in FHEM? Versuch das mal auf DE zu setzen.
attr global language DE
Das war schon so eingestellt...
Zitat von: mumpitzstuff am 04 April 2018, 07:52:18
Auf der Console auch noch mal das eingeben:
sudo raspi-config
und prüfen ob hier die de.utf8 codepage generiert und hinterher auch ausgewählt wurde.
Danach ist glaube ich ein restart des Rechners notwendig.
Da ich einen Cubietruck habe, kann ich das nicht machen, habe aber mit
dpkg-reconfigure locales
utf-8 eingestellt und danach auch neu gestartet...
Mehr fällt mir ehrlich gesagt auch nicht ein. Bei mir kommt aber mit:
{qx('locale')}
die selbe Ausgabe wie in der Console. Kannst du das Thema bitte mal im Forum unter Anfängerfragen rein stellen? Vielleicht hat sonst noch jemand eine Idee was man tun könnte. Vermutlich lesen hier nicht so viele mit.
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. :)
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.
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?
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.
;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.
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.
Im ersten Beitrag habe ich 2 readingsGroups hinzugefügt. Eine für einen Abfallkalender und eine für einen Geburtstagskalender.
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:
[33;1m Access Title
[0m[33;1m ------ -----
[0m[0;36m owner Privat
[0m[0;36m owner Arbeit
[0m[0;35m reader Alles
[0m[0;35m reader Contacts
[0m[0;35m reader Feiertage in Deutschland
[0m
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?
Intervall auf 3600 und Timeout keine Ahnung, habe ich nie verändert.
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.
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)}
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
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?
In Beschreibung und location sind Kommas, aber die haben bis jetzt funktioniert...
Welche Version von gcalcli hast du auf dem Rechner? Das kann man mit -v oder --v ermitteln. Ich kann höchstens versuchen in den Sourcen von gcalcli was zu finden, aber das ist halt keine Software von mir.
Was du außerdem mal testen könntest ist, das wenn du verbose auf 5 stellst, dann siehst du die gcalcli Aufrufe, die von meinem Modul gemacht werden. Versuch diese mal auf der Linux Kommandozeile einzugeben und schau nach, ob dort der selbe Fehler kommt. Falls ja, versuch mal die Option --tsv wegzulassen.
Hintergrund: Wenn tatsächlich die Option --tsv Schuld daran ist, dann könnte ich noch mal versuchen auf eine andere Ausgabe von gcalcli zu wechseln. Wäre zwar enormer Aufwand aber eventuell machbar.
PS: Wo ich grad drüber schreibe, das Problem sind Tabulatoren und keine Kommas. Hast du irgendwas in den Kalender eingefügt das Tabulatoren enthält?
Hallo,
Super Kalender funktioniert wunderbar.
Ich möchte gerne im TabletUI eine 7 Tage Ansicht machen (Heute,Morgen,Der Tag darauf zb. Samstag,Sonntag,Montag,Dienstag,Mittwoch). Aber den Readings sind ja keinem Tage zugeordnet außer halt today und tomorrow. Kann mann das irgendwie bewerkstelligen das den Readings Tage zugeordnet sind, so das ich diese einfache ins TabletUI eintragen kann.
Gruß
Lars
Damit kenne ich mich leider gar nicht aus. Als Basis könntest du aber vielleicht https://github.com/chris1284/Widgets-for-fhem-tablet-ui (https://github.com/chris1284/Widgets-for-fhem-tablet-ui) das Widget für CALVIEW verwenden. Beide sollten im Prinzip fast die selben Readings haben.
https://forum.fhem.de/index.php/topic,48562.msg789404.html#msg789404 (https://forum.fhem.de/index.php/topic,48562.msg789404.html#msg789404)
Hier findest du wahrscheinlich auch was dazu.
Das TabletUI nutzt einfach nur die Readings vom gCalview und trägt die werte ins Widget ein. Im gCALVIEW oder auch im CALVIEW werden die Termine ja keinem Tag zugeordnet. Die Termine werden ja nur nach und nach in den Readings Abgelegt (Termin 1 = t_001,Termin 2 = t_002 usw.). Ich hatte gehofft, dass mann die Sortierungen Über den Attributen ändern kann. So das er sie nach Tag 1 Termin 1, Tag 1 Termin 2, Tag 2 Termin 1 in den Readings sortiert. Was auch schön wäre das Tag 1 immer Heute ist unabhängig davon ob Termine vorhanden sind oder nicht. So weiß das TabletUI immer welches Reading welcher Tag ist und wie viel Termine er hat und wo Termin 1 Beginnt.
Ich möchte nicht einfach nur ein stumpfe Termin Ansicht haben Die Termin 1 - Termin 2 Runterlistet.
Sorry,
Hatte den fullcalview mit was anderem verwechselt. das ist sowas wie ich gesucht hatte, danke.
Trotzdem wäre es schön wenn das geschriebene in mein letzten post möglich wäre das würde auch viele anderen Helfen, um z.b den ersten Termin von heute auf der Startseite des TabletUI Anzuzeigen.
Es wäre halt schön gezielt Readings für bestimmte Termine an einem Bestimmten Tag auszulesen.
Das macht für mich auf den ersten Blick nicht viel Sinn. Die Termine sind chronologisch geordnet. Das bedeutet, dass in 001 der nächste Termin drin steht (an welchem Datum der auch immer ist) und danach der danach folgende usw. Wenn z.B. nur ein Termin drin stehen würde, der erst in 3 Tagen ist, dann müsste ich nach deinem Vorschlag 2 leere Einträge anlegen, nämlich 001 und 002 und erst in 003 würde ein Termin drin stehen.
Die Readings eines Moduls sind in erster Linie Datensammler und nur bedingt als Visualisierung zu verstehen. Für diesen Zweck gibt es z.B. readingsGroups oder FTUI, in denen man sich das Ganze aufbereiten und schöner darstellen kann.
Den ersten Termin von Heute findest du immer in today_001_... Wenn das Readings nicht existiert, dann gibt es auch keinen Termin für Heute. Das sollte sich relativ einfach in FTUI darstellen lassen. Du hast natürlich recht, dass sich damit nur heute und morgen direkt ansprechen lassen. Wenn man darüber hinaus gehen möchte, dann muss man sich die Informationen raus suchen. Dafür bieten aber readingsGroups und FTUI geeignete Mittel an, da dieses Problem bei allen Modulen besteht.
ZitatDen ersten Termin von Heute findest du immer in today_001_...
Wirklich? bei mir ist das der nächste Termin. Das kann auch in x Tagen sein.
Wenn man nur den heutigen Termin haben will, dann würde ich über eine Bedingung "t_001_daysleft" = 0 nachdenken.
Hab ich mal so aufgeschrieben ohne jetzt näher nachzusehen. Wenn das nicht so ist, dann muss ich tatsächlich noch mal in den Code reib gucken, ich weiss es schlicht nicht mehr genau. Daysleft == 0 stimmt aber in jedem Fall.
Hallo.
Also erstmal ein Danke an alle hier im Forum. Ich meine das ist eines der besten Foren die es gibt im www.
Und ein Danke an mumpitzstuff für das super Modul!
So und jetzt zu meinem Problem:
Ich hab alles installiert und läuft auch einwandfrei.
Meine Termine werden wie gewollt angezeigt.
Nur die die Farben werden nicht angezeigt, auch nicht in den readings vom 1. Post.
Im Device steht z.B.
t_001_source Contacts
t_002_source Hansi
Im Attribut hab ich folgendes eingetragen:
attr Google sourceColor Contacts:red,Hansi:blue
jedoch keine Änderung.
Hab verbose auf 5
und keine Einträge im Logfile.
Weiß da vielleicht jemand meinen Fehler?
Danke.
LG Johann
Im Device selbst siehst du die Farben auch nicht. Diese Farben sind dazu da, um z.B. in einer ReadingsGroup verwendet zu werden oder einer anderen Oberfläche wie z.B. FTUI. Ein Beispiel für eine ReadingsGroup findest du im ersten Beitrag. Innerhalb dieser ReadingsGroup werden dann die Farben auch angezeigt.
Hallo,
Danke für die schnelle Antwort.
Hab noch mal alles durchgesehen.
Funktioniert schon.
Beim kopieren ist irgendwie das Attribut valueStyle verloren gegangen. ::) ???
Guten Abend,
wie kann ich das Modul GCALVIEW bei FTUI einbinden ?
Bei mir läuft soweit alles , bekomm nur leider nichts im FTUI angezeigt :(
<div data-type="calview"
data-device="GCAL_All"
data-get="all"
data-detail='["bdate","btime","summary"]'
data-detailwidth='["30","30","40"]'></div>
https://forum.fhem.de/index.php/topic,91467.0.html
Damit kenne ich mich leider gar nicht aus und kann deshalb auch nicht helfen. Tut mir leid.
Ich vermute, dass die Frage hier falsch ist (Hier gehts ja nicht um die Datstellung, die ist für mich immer eine eigene Baustelle.). Besser bei FTUI neu eingeben und den Beitrag hier per Edit verlinken.
Dann wird es sicher helfen, wenn man vorher die Hinweise fürs Forum liest. So vermute ich ein paar bissige Kommentare.
Mehr Info, oedentlich aufbereitet!
Nur Infos zum Thema!
Hallo
Habe mal eine Frage. Habe bei Google einen neuen Kalender Geburtstage angelegt und ein paar Termine eingetragen.
Wenn ich nun
gcalcli list --noauth_local_webserver
eingebe bekomme ich alle Kalender angezeigt. siehe Bild.
Im GCALVIEW tauchen aber keine der Termine auf. Was habe ich falsch gemacht?
Über einen Tipp wäre ich dankbar.
Gruß
Alex
Funktioniert bei dir Punkt 7 vom ersten Post? Falls ja, mach mal bitte ein list vom Kalenderdevice und poste das hier. Was sagt denn dein fhem Logfile? Mit dem Attribut verbose 5 werden erweiterte Informationen ins Logfile eingetragen.
Hi
Vielen Dank für die schnelle Antwort.
Mit dem Befehl unter Punkt 7 ist im FHEM der Kalender auch nicht dabei gewesen.
Es war aber mein Fehler ich habe gestern die Verknüpfung mit dem Google Konto neu gemacht weil ich in der Konsole mit dem User Pi den Befehl unter 6 ausgeführt habe.
Damit habe ich die .gcalcli_oauth vom Benutzer FHEM überschrieben somit konnte er auch nicht mehr die Kalenderliste richtig bekommen.
Habe es nun neu gemacht unter dem Benutzer FHEM und nun klappt auch alles wieder.
Hallo,
ich versuche das Modul zu installieren und bleibe bei Punkt 4 hängen.
Ich habe die folgende Fehlermeldung:
armin@PC-Arbeitszimmer:~$ gcalcli --version
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 4, in <module>
__import__('pkg_resources').run_script('gcalcli==3.4.0', 'gcalcli')
File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 664, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 1450, in run_script
script_code = compile(script_text, script_filename, 'exec')
File "/usr/local/lib/python3.6/dist-packages/gcalcli-3.4.0-py3.6.egg/EGG-INFO/scripts/gcalcli", line 199
print "ERROR: Missing module - %s" % e.args[0]
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("ERROR: Missing module - %s" % e.args[0])?
Kann mir jemannd helfen? Ich komme mit meinen Kenntnissen nicht weiter.
Grüße
Zitat von: mumpitzstuff am 04 Oktober 2017, 00:02:11
filterSummary: Wenn dieses regex innerhalb des Summary matcht, dann wird das Event komplett ausgeblendet.
Hi ich stehe gerade auf dem Schlauch. Wo muss ich das jetzt eintragen damit es ausgeblendet wird?Kann mir mal bitte einer ein Praxis Beispiel geben?
Wenn du in das Attribut z.b. Test reinschreibst, dann werden alle Kalendereinträge gefiltert, bei denen das Wort Test im Summary auftaucht.
Achso, dann war ich komplett auf dem Holzweg!
Ich hätte jetzt erwartet das bei filterLocation=1 das Reading 't_001_location' usw komplett aus dem gcalview verschwindet.
Das war mein Versuch ein bißchen Aufzuräumen und die von mir nicht benötigten Felder auszublenden.
Einzelne Felder kann man leider nicht filtern, wenn ich mich recht entsinne. Das war immer nur bezogen auf den gesamten Eintrag.
Hallo,
kann das Modul tatsächlich das Modul 57_Calendar ersetzen?
ZitatEs gibt innerhalb des Moduls 2 Ansichten, welche sich zum einen an 57_CALVIEW und zum anderen an 57_ABFALL anlehnen. Diese Ansicht lässt sich beliebig umschalten oder man erstellt mehrere Devices und konfiguriert die einzelnen Devices entsprechend. Bei mir kann dieses Modul die Module 57_CALENDAR, 57_CALVIEW und 57_ABFALL inzwischen komplett ersetzen.
Ich habe es installiert und es funktioniert klasse, aber mir fehlen die Events, die normalerweise durch die Kalender ausgelöst werden. Habe ich da einen Denkfehler?
Danke schonmal im voraus,
Wolfgang
Was genau meinst du mit Events? Dieses Modul löst Events aus, wenn die Readings aktualisiert werden. Auf diese kann man bei Bedarf mit einem Notify oder ähnlichem reagieren. Was genau ist dein Anwendungsfall?
Hallo,
danke für die schnelle Antwort. Es ist ein Bewässerungskalender, der pro Tag 16 verschiedene Schaltzyklen hat und sich die Dauer der Bewässerung nach einem Feuchtigkeitswert bemisst. Mir ist schon klar, dass es Events gibt, wenn sich das Reading aktualisiert. Einen Event ala "ModeStarted" gibt es ja leider scheinbar nicht. Das sehe ich doch richtig, oder?
Eventuell hast Du ja eeine Idee zum Workaround! Mein Antrieb war, von dem Modul Kalender wegzukommen, da bei mir die Aktualisierungen zu lange gedauert haben und mir mein FHEM blockierte.
Danke und Gruß
Wolfgang
Du kannst wie in diesem Thread Antwort #14 auf Kalendereintrâge triggern.
Ich habe auch 3 verschiedene Kalender angelegt (Geburtstage, Events, Reminder), und lasse je nach Kalender-typ und Eintrag verschiedene Aktionen ausführen, das geht prima und blockiert nicht.
Steht alles hier im Thread beschrieben.
Danke!
Reicht dir das erst mal als Antwort?
Danke an alle, ja das reicht zunächst.
Gruß Wolfgang
Zitat von: FHEM_Starter am 28 Dezember 2018, 19:11:28
Hallo,
danke für die schnelle Antwort. Es ist ein Bewässerungskalender, der pro Tag 16 verschiedene Schaltzyklen hat und sich die Dauer der Bewässerung nach einem Feuchtigkeitswert bemisst. Mir ist schon klar, dass es Events gibt, wenn sich das Reading aktualisiert. Einen Event ala "ModeStarted" gibt es ja leider scheinbar nicht. Das sehe ich doch richtig, oder?
Eventuell hast Du ja eeine Idee zum Workaround! Mein Antrieb war, von dem Modul Kalender wegzukommen, da bei mir die Aktualisierungen zu lange gedauert haben und mir mein FHEM blockierte.
Danke und Gruß
Wolfgang
Die ist bewusst das das Modul Calendar ein Attribut Update hat welches man auf async stellen kann?
Hallo Zusammen,
ich glaube einen kleinen "Fehler" gefunden zu haben.
Ich nutze das gCALVIEW mit Darstellung auf FTUI mittels entsprechendem CALVIEW Widget.
Erst einmal dickes Danke und Lob, dass so einfach ein GoogleKalender einbindbar ist!! Danke :-)
Im CALVIEW Widget, bzw. dessen JavaScript Datei gibt es die bekannten abrufbaren Readings.
Unter anderem das Reading weekdayNAME -> Wochentag.
Im gCALVIEW heißt dieses Reading aber nur weekday.
Nach Anpassung der JavaScript Datei kann dann auch im FTUI mittels weekday der Wochentag dargestellt werden.
Eventuell könnte/sollte man hier das Reading weekday im gCALVIEW auf weekdayname anpassen?
Vielen Grüße,
Kharim
Hmm das muss sich mal geändert haben. Wenn ich das umstelle, funktioniert aber bei einigen vielleicht was nicht mehr, deshalb würde ich das nur sehr ungern tun.
Hallo,
wie kann ich es anstellen, dass mir bei ganztägigen Terminen der Termin Vortages nicht mit angezeigt wird? Google legt das bdate auf Tag x 00:00 Uhr, das edate auf Tag x+1 00:00 Uhr.
Lasse ich mir nun im Geburtstagskalender die gestarteten Termin anzeigen (was ja durchweg Sinn macht), erhalte ich aber auch die Geburtstagstermine des Vortages, und das macht definitiv keinen Sinn.
Danke im voraus,
Wolfgang
@CoolTux: Ja, das kenne ich. Hat aber in einem Zusammenhang nicht wirklich zu einer zufriedenstellenden Lösung geführt.
Mit dem Attribut calendarIncludeStarted hast du schon gespielt?
ja das habe ich, sonst würde ich die Termine - die am aktuellen Tag schon gestartet sind - ja nicht angezeigt bekommen.
Die Frage war doch, wir kann ich verhindern, dass der GESTRIGE Termin, der aber bis HEUTE 00:00 Uhr geht, unterdrückt wird?
Merci Wolfgang
Ich habe die Frage schon verstanden, wollte nur ausschließen, dass es sich vielleicht mit einfachen Maßnahmen beseitigen lässt. Das Problem hatte ich so noch nicht auf dem Schirm und das muss ich mir erst mal ansehen. Eventuell muss ich da eine kleine Änderung einbauen, wenn das nicht abgefangen wird. Ich melde mich.
Könntest du mal bitte gucken, ob diese Version dein Problem beheben würde. Ist aber nur eben reingehackt und ungetestet. Wenns nicht geht, müsste ich weiter suchen bzw. intensiver testen.
Zitat von: FHEM_Starter am 13 Januar 2019, 12:58:24
ja das habe ich, sonst würde ich die Termine - die am aktuellen Tag schon gestartet sind - ja nicht angezeigt bekommen.
Die Frage war doch, wir kann ich verhindern, dass der GESTRIGE Termin, der aber bis HEUTE 00:00 Uhr geht, unterdrückt wird?
Merci Wolfgang
Kannst du dir bitte den Patch ansehen und mir sagen ob er tut oder nicht? Ich würde den gern in die offizielle Version übernehmen.
Hallo,
Zitat von: mumpitzstuff am 24 Januar 2018, 22:22:54
Interessant. Da schlägt irgend ein Automatismus zu und entfernt die Leerzeichen wenn man das Attribut setzen möchte. Damit habe ich nicht gerechnet. Ich habe ein Update eingespielt, in dem die Leerzeichen davor und danach jetzt nachträglich eingefügt werden. Versuch mal bitte ob es jetzt geht.
Jetzt habe ich ein kleines, anders gelagertes Problem, welches aber auch mit den Leerzeichen zu tun hat. Ich möchte den Inhalt des Readings "next_text" an ein HM-Dis-EP-WM55-Display ausgeben. Bei diesem Display gibt es schon von je her ein Problem mit Leerzeichen. Nach einem Leerzeichen wird der restliche Text abgeschnitten. Da austomatisiert Leereichen eingefügt werden, wird der nachfolgende Text nicht mehr angezeitgt.
Ein Leerzeichen wird bei diesem Display mit der Zeichenkomination
\_
erzeugt.
Wie könnte ich denn das lösen?
Ein Userreading vielleicht?
Danke für den Denkanstoß. Hat funktioniert.
Hallo,
seit gestern erhalte ich im Kalender feine Readings mehr.
Im Kalender habe ich keine Veränderungen vorgenommen.
Das Log zeigt die Fehlermeldung:
Kalender: something went wrong (invalid gcalcli output)
Auszug aus dem Log:
2019.02.03 10:01:12 5: Kalender_DoRun: start running
2019.02.03 10:01:14 5: Kalender: [31;1mThe following options are either no longer valid globally or just plain invalid:
--calendar
xxxx.xxxx@gmail.com
--calendar
Contacts
--calendar
Christliche Feiertage
--calendar
Feiertage in Deutschland
--detail_all
[0m2019-02-04 00:00 2019-02-05 00:00 gelber Sack
2019-02-04 00:00 2019-02-05 00:00 Kalenderwoche 6 2019
2019-02-09 09:00 2019-02-09 10:00 Schalter_1
2019-02-09 11:30 2019-02-09 12:30 Test
2019-02-11 00:00 2019-02-12 00:00 Kalenderwoche 7 2019
2019-02-12 07:30 2019-02-12 09:00 Blutabnahme 07:30
2019-02-13 00:00 2019-02-14 00:00 xxxxxx hat Geburtstag
2019-02-14 00:00 2019-02-15 00:00 xxxxxx hat Geburtstag
2019-02-14 00:00 2019-02-15 00:00 Valentinstag
2019-02-14 17:30 2019-02-14 19:00 Dr. xxxxx 17:30
2019-02-15 00:00 2019-02-16 00:00 Hausmuell
2019-02-16 09:00 2019-02-16 10:00 Schalter_1
2019-02-16 11:30 2019-02-16 12:30 Test
2019-02-18 00:00 2019-02-19 00:00 gelber Sack
2019-02-18 00:00 2019-02-19 00:00 Kalenderwoche 8 2019
2019-02-20 00:00 2019-02-21 00:00 xxxxxx hat einen Jahrestag
2019-02-23 09:00 2019-02-23 10:00 Schalter_1
2019-02-23 11:30 2019-02-23 12:30 Test
2019-02-25 00:00 2019-02-26 00:00 Kalenderwoche 9 2019
2019-02-26 00:00 2019-02-27 00:00 Papier
2019-02-27 08:30 2019-02-27 10:30 xxxxxxx
2019-02-28 00:00 2019-03-01 00:00 xxxxxxx hat einen Jahrestag
2019-03-01 00:00 2019-03-02 00:00 Hausmuell
2019-03-01 00:00 2019-03-02 00:00 St. David's Day
2019-03-02 09:00 2019-03-02 10:00 Schalter_1
2019-03-02 11:30 2019-03-02 12:30 Test
2019-03-04 00:00 2019-03-05 00:00 gelber Sack
2019-03-04 00:00 2019-03-05 00:00 xxxxxxxxx hat Geburtstag
2019-03-04 00:00 2019-03-05 00:00 Rosenmontag
2019-03-04 00:00 2019-03-05 00:00 Kalenderwoche 10 2019
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - [31;1mThe following options are either no longer valid globally or just plain invalid:
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - --calendar
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - xxxx.xxxx@gmail.com
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - --calendar
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - Contacts
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - --calendar
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - Christliche Feiertage
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - --calendar
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - Feiertage in Deutschland
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - --detail_all
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - [0m2019-02-04, 00:00, 2019-02-05, 00:00, gelber Sack
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-04, 00:00, 2019-02-05, 00:00, Kalenderwoche 6 2019
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-09, 09:00, 2019-02-09, 10:00, Schalter_1
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-09, 11:30, 2019-02-09, 12:30, Test
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-11, 00:00, 2019-02-12, 00:00, Kalenderwoche 7 2019
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-12, 07:30, 2019-02-12, 09:00, Blutabnahme 07:30
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-13, 00:00, 2019-02-14, 00:00, xxxxx hat Geburtstag
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-14, 00:00, 2019-02-15, 00:00, xxxx hat Geburtstag
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-14, 00:00, 2019-02-15, 00:00, Valentinstag
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-14, 17:30, 2019-02-14, 19:00, Dr. xxxxx 17:30
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-15, 00:00, 2019-02-16, 00:00, Hausmuell
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-16, 09:00, 2019-02-16, 10:00, Schalter_1
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-16, 11:30, 2019-02-16, 12:30, Test
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-18, 00:00, 2019-02-19, 00:00, gelber Sack
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-18, 00:00, 2019-02-19, 00:00, Kalenderwoche 8 2019
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-20, 00:00, 2019-02-21, 00:00, xxxxxxxx hat einen Jahrestag
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-23, 09:00, 2019-02-23, 10:00, Schalter_1
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-23, 11:30, 2019-02-23, 12:30, Test
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-25, 00:00, 2019-02-26, 00:00, Kalenderwoche 9 2019
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-26, 00:00, 2019-02-27, 00:00, Papier
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-27, 08:30, 2019-02-27, 10:30, xxxxx
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-02-28, 00:00, 2019-03-01, 00:00, xxxxx hat einen Jahrestag
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-03-01, 00:00, 2019-03-02, 00:00, Hausmuell
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-03-01, 00:00, 2019-03-02, 00:00, St. David's Day
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-03-02, 09:00, 2019-03-02, 10:00, Schalter_1
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-03-02, 11:30, 2019-03-02, 12:30, Test
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-03-04, 00:00, 2019-03-05, 00:00, gelber Sack
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-03-04, 00:00, 2019-03-05, 00:00, xxxxxx hat Geburtstag
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-03-04, 00:00, 2019-03-05, 00:00, Rosenmontag
2019.02.03 10:01:14 3: Kalender: something went wrong (invalid gcalcli output) - 2019-03-04, 00:00, 2019-03-05, 00:00, Kalenderwoche 10 2019
2019.02.03 10:01:14 5: Kalender_DoEnd: end running
List vom Device
Internals:
DEF 10
FUUID 5c42d293-f33f-1fa2-466e-25f92608b348292b
NAME Kalender
NOTIFYDEV global
NR 823
NTFY_ORDER 50-Kalender
STATE <table>
<tr><td><strong><span style="color: #2ECCFA;; text-decoration: underline;;">Termine:</td><td><span style="color: #2ECCFA;;">t: 0 td: 0 tm: 0</tr>
</table>
TIMEOUT 10
TYPE GCALVIEW
VERSION 1.0.3
READINGS:
2019-02-03 10:01:14 c-term 0
2019-02-03 10:01:14 c-today 0
2019-02-03 10:01:14 c-tomorrow 0
2019-02-03 10:01:14 state t: 0 td: 0 tm: 0
helper:
bm:
GCALVIEW_Get:
cnt 3
dmx -1000
dtot 0
dtotcnt 0
mTS 03.02. 10:01:13
max 2.19345092773438e-05
tot 5.38825988769531e-05
mAr:
HASH(0x5634b5a82600)
Kalender
?
GCALVIEW_Notify:
cnt 2
dmx -1000
dtot 0
dtotcnt 0
mTS 03.02. 10:03:15
max 9.05990600585938e-06
tot 1.71661376953125e-05
mAr:
HASH(0x5634b5a82600)
HASH(0x5634aa3e7b98)
GCALVIEW_Set:
cnt 13
dmx -1000
dtot 0
dtotcnt 0
mTS 03.02. 10:01:12
max 0.0209388732910156
tot 0.0211296081542969
mAr:
HASH(0x5634b5a82600)
Kalender
update
Attributes:
ageSource location
alldayText ganztägig
calendarDays 30
calendarFilter xxx.xxx@gmail.com,Contacts,Christliche Feiertage,Feiertage in Deutschland
calendarType standard
icon time_calendar@#2ECCFA
room 06_3_Kalender
sourceColor xxx.xxxx@gmail.com:#A9E2F3
stateFormat <table>
<tr><td><strong><span style="color: #2ECCFA;; text-decoration: underline;;">Termine:</td><td><span style="color: #2ECCFA;;">state</tr>
</table>
updateInterval 3600
userattr calendarFilter:multiple-strict,armin.titze@gmail.com,Contacts,Christliche#Feiertage,Feiertage#in#Deutschland,Week#Numbers calendarIncludeStarted:multiple-strict,xxx.xxxx@gmail.com,Contacts,Christliche#Feiertage,Feiertage#in#Deutschland,Week#Numbers
verbose 5
weekdayText Montag,Dienstag,Mittwoch,Donnerstag,Freitag, Samstag,Sonntag
Hast du in den letzten Tagen einen Eintrag mit einem oder mehreren Kommas erstellt. Das von mir verwendete Programm setzt das leider nicht vernünftig in der Ausgabe um, und es kann zu Fehlern kommen.
Ich könnte mal versuchen an der Stelle mehr Details auszuspucken, so dass du dann direkt den Kalendereintrag identifizieren könntest.
Hallo,
ich habe am Kalender keine Änderungen vorgenommen.
Es ist nur eigenartig, dass halt im Log die Termine zu sehen sind,
aber die werden nicht in den Readings übernommen.
Hallo,
ich bekomme auch seit einer Woche keine Updates mehr. An Änderungen in einem der Kalender kann ich mich nicht erinnern, mag es aber auch nicht ausschließen. Auch habe ich an den Tagen davor kein FHEM-Update gemacht.Aktualisiert habe ich erst am Freitag, um zu schauen, ob es eine neuere Version gibt.
Bei mir im Log sehe ich auch mit Verbose=5 nur folgende Zeile, keine Kalendereinträge:
ERROR evaluating {GCALVIEW_DoEnd('kalender.neu||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
In Zeile 625 wird $startDate gefüllt. Darüber scheint das Modul zu stolpern. Das deutet auf einen unverträglichen Kalendereintrag hin? Wie kann ich den finden?
Internals:
CHANGED
DEF 3600
FUUID xxx
NAME kalender.neu
NOTIFYDEV global
NR 7422
NTFY_ORDER 50-kalender.neu
STATE Initialized
TIMEOUT 3600
TYPE GCALVIEW
VERSION 1.0.3
Helper:
DBLOG:
state:
DbLog:
TIME 1549263242.26587
VALUE update
helper:
RUNNING_PID:
abortFn GCALVIEW_DoAbort
arg kalender.neu
bc_pid 6709
finishFn GCALVIEW_DoEnd
fn GCALVIEW_DoRun
pid DEAD:6967
telnet telnetForBlockingFn_1549179999_127.0.0.1_40584
terminated 1
timeout 3600
abortArg:
powerMap:
readingsDesc:
pM_consumption:
rtype w
pM_energy:
rtype whr
Attributes:
calendarFilter xxx1@gmail.com,xxx2@gmail.com
calendarType standard
room Kalender
updateInterval 3600
userattr calendarFilter:multiple-strict,xxx1@gmail.com,xxx2@gmail.com
calendarIncludeStarted:multiple-strict,xxx1@gmail.com,xxx2@gmail.com
Gruß
Christian
Ich versuche es mir heute Abend mal anzusehen und Debug Meldungen einzubauen falls möglich.
ZitatHast du in den letzten Tagen einen Eintrag mit einem oder mehreren Kommas erstellt. Das von mir verwendete Programm setzt das leider nicht vernünftig in der Ausgabe um, und es kann zu Fehlern kommen.
Ich könnte mal versuchen an der Stelle mehr Details auszuspucken, so dass du dann direkt den Kalendereintrag identifizieren könntest.
Ich habe den Cache vom Browser gelöscht und den Kalender neu abgerufen.
Nun sind alle Daten wieder in den Readings. Vielen Dank für die Unterstützung.
Cache vom Browser? Der hat doch eigentlich nichts mit dem Modul zu tun. Meinst du den Cache von gcalcli?
Den Cache vom Browser. Den Zusammenhang verstehe ich auch nicht.
Es geht aber wieder :)
Hmm okay. Vielleicht hilft aber tatsächlich den Cache mal im Modul abzuschalten. Dafür gibts das Attribut: cache.
Cache=0 hat bei mir nichts gebracht.
Was hat es mit dem startDate (siehe oben) auf sich? Gehe ich richtig in der Annahme, dass das Startdatum eines Kalendereintrags ist? Das dürfte doch niemals leer sein, da jedes Event bei Google ein Datum trägt.
Gruß
Christian
Das war nur eine Testversion für FHEM_starter, der sich aber nicht mehr gemeldet hat. Ich habe gestern nicht mehr geschafft es mir anzusehen.
Zitat von: cbl am 05 Februar 2019, 08:03:10
Cache=0 hat bei mir nichts gebracht.
Was hat es mit dem startDate (siehe oben) auf sich? Gehe ich richtig in der Annahme, dass das Startdatum eines Kalendereintrags ist? Das dürfte doch niemals leer sein, da jedes Event bei Google ein Datum trägt.
Gruß
Christian
Das ist komisch. Mir ist unklar, weshalb du einen Eintrag ohne Startdate hast. Das dürfte es eigentlich nicht geben. Kannst du mal versuchen folgende Zeile vor der startDate Zuweisung einzufügen?
Log3 $name, 3, $name.': '.join(', ', @$_);
Das sollte dir im Log jeden Eintrag ausspucken und irgendwann müsste wieder der Fehler kommen. Der Eintrag direkt davor sollte der fehlerhafte Kalendereintrag sein.
Der Fehler hat nicht mit einem konkreten Kalendereintrag zu tun.Er tritt auch bei meinem Abfallkalender auf.
Auch die von dir genannte Logzeile erzeugt den Fehler. Es ist also nicht ein einzelner fehlerhafte Eintrag das Problem.
Damit habe ich weitergeschaut:
Das Problem war der Verlust der Google-Anmeldung für den User FHEM. Wodurch die verloren gegangen ist, kann ich nicht nachvollziehen. Nachdem ich aber
in der Shell mit gcalcli eine neue Anmeldung durchgeführt habe, ruft das Modul auch wieder fehlerfrei Kalenderereignisse ab.
Nun bleibt die Frage, wodurch die Anmeldung verloren gegangen ist und ob man dem Modul beibringen könnte, in so einem Fall einen passenden Status zu liefern.
Hmm das ist interessant. Ich habe sowas leider noch nie gehabt, deshalb fällt es mir schwer das nachzuvollziehen. Bei Zugriff auf gcalcli speichere ich aber eigentlich die Fehlermeldungen im Logfile (soweit ich mich aktuell erinnere). Wenn man da nichts gesehen hat, dann kann ich eigentlich so gut wie nichts machen.
Ich kann es aber mal als mögliche Fehlerursache im ersten Beitrag aufnehmen. Dann hat man es zumindest mal vor Augen.
Hallo,
ich habe seit etwa vier Tagen ein Problem mit GCALVIEW. Bis gestern habe ich weder an FHEM (Update gestern gemacht, davor mindestens zwei Wochen kein Update) noch am Kalender selbst etwas verändert.
Das Log verrät mir:
2019.03.04 19:13:15 1 : ERROR evaluating {GCALVIEW_DoEnd('kalender.abfall||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
Einen leeren Eintrag sehe ich im Kalender nicht.
In der Shel kann ich mir mit "gcalcli list" eine aktuelle Liste der Kalender ausgeben lassen.
Worüber stolpert das Modul hier?
Gruß
Christian
Hallo,
ich bin etwas weiter in der Analyse. Ursache für das Hängenbleiben ist offenbar der vom Modul ausgeführte Python-Befehl
phyton /usr/bin/gcalcli agenda 03/07/2019 04/21/2019 --calendar Kalendername mit bösen Zeichen ---detail_all -tsv.
Davor sehe ich im Journal noch den Aufruf
sh -c gcalcli agenda 03/07/2019 04/21/2019 --calendar "Kalendername mit bösen Zeichen" ---detail_all -tsv.
Da stehen noch Anführungszeichen um den Kalendernamen.
Rufe ich den Phyton-Befehl mit ergänzten Anführungszeichen auf, funktoniert es in der Shell.
Gruß
Christian
Ich habe auch den gleichen Fehler, auch etwa seit 4 Tagen. Ich dachte erst dass es vielleicht an der Internet Zwangstrennung liegt, bis ich heute morgen deine (Christan) Einträge gelesen habe . . . .
Ich habe nun die oauth- und cache-Dateien gelöscht und die Anmeldung erneuert ... ohne Erfolg.
Auch eine Umbenennung des Kalenders auf eine Zeichenkette ohne Leerzeichen und Umlaut hat nichts gebracht.
Gibt es noch weitere Ideen?
Wo gehen die Anführungszeichen verloren? Im Modul werden sie beim Zusammenbau des Aufrufs offenbar richtig ergänzt.
@cbl: Der Fehler an der Stelle bedeutet, das keine Daten abgeholt wurden. Das du das Kommando in der Konsole absetzen kannst, hat noch nichts damit zu tun, dass es auch mit fhem geht. Das ist in der Regel ein anderer User.
{qx(gcalcli list);}
Was passiert denn, wenn du das in FHEM abschickst?
@inoma: Hast du irgendwelche Details?
Ansonsten kann ich weitere Debugausgaben einbauen, allerdings bin ich ziemlich sicher, das einfach keine Daten von Google kommen.
{qx /gcalcli list/}
liefert mir die aktuelle Liste der Kalender:
[33;1m Access Title
[0m[33;1m ------ -----
[0m[0;36m owner Kalender mit bösen Zeichen
[0m[0;35m reader Feiertage in Deutschland
[0m[0;35m reader Week Numbers
[0m
Ich hatte den im Beitrag oben genannten Shellbefehl mit dem FHEM-user ausgeführt.
Gruß
Christian
Hallo mumpitzstuff,
ja ich denke auch das keine Daten von Google kamen, bis jetzt ist der Fehler bei mir noch nicht wieder aufgetreten, nur Anfangs der Woche bis Donnerstag. Vielleicht hat sich das jetzt wieder erledigt, ich beobachte weiter! Danke!
Zitat von: cbl am 09 März 2019, 09:38:30
{qx /gcalcli list/}
liefert mir die aktuelle Liste der Kalender:
[33;1m Access Title
[0m[33;1m ------ -----
[0m[0;36m owner Kalender mit bösen Zeichen
[0m[0;35m reader Feiertage in Deutschland
[0m[0;35m reader Week Numbers
[0m
Ich hatte den im Beitrag oben genannten Shellbefehl mit dem FHEM-user ausgeführt.
Gruß
Christian
Hmm komisch. Deine Vermutung ist jetzt, das es an fehlenden Anführungszeichen liegt? Den Kalender hattest du doch aber umbenannt oder? Ich kann mich dunkel erinnern, das man die Anmeldung wiederholen müsste, wenn man einen Kalender hinzufügt oder entfernt. Kannst du bitte mal versuchen die beiden gcalcli Verzeichnisse zu löschen und die Authentifizierung erneut durchzuführen? Da müsste es auch ein Cache Verzeichnis von gcalcli geben, das bitte nicht vergessen zu löschen.
Hi Mumpitzstuff,
hier mal mein Log mit dem gleichen Fehler von Christian, eine Zeile vorher sagt die Fehlermeldung aber: "socket.error: [Errno 101] Network is unreachable",
also scheint es wirklich so zu sein das google keine Daten liefert.
03.10 00:01:20 3: GoogleCalendar: gcalcli agenda 03/10/2019 03/18/2019 --calendar "xxx.yyyyyy@gmail.com" --calendar "Geburtstage" --calendar "Reminders" --detail_all --tsv
2019.03.10 00:01:20 3: GoogleCalendar: something went wrong (check your parameters) - Traceback (most recent call last):
File "/usr/bin/gcalcli", line 2649, in <module>
BowChickaWowWow()
File "/usr/bin/gcalcli", line 2495, in BowChickaWowWow
gcal.AgendaQuery(startText=args[1], endText=args[2])
File "/usr/bin/gcalcli", line 1732, in AgendaQuery
eventList = self._SearchForCalEvents(start, end, None)
File "/usr/bin/gcalcli", line 1637, in _SearchForCalEvents
events = self._RetryWithBackoff(work)
File "/usr/bin/gcalcli", line 655, in _RetryWithBackoff
return method.execute()
File "/usr/local/lib/python2.7/dist-packages/oauth2client/util.py", line 137, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/googleapiclient/http.py", line 833, in execute
method=str(self.method), body=self.body, headers=self.headers)
File "/usr/lib/python2.7/dist-packages/googleapiclient/http.py", line 160, in _retry_request
resp, content = http.request(uri, method, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 572, in new_request
self._refresh(request_orig)
File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 780, in _refresh
self._do_refresh_request(http_request)
File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 799, in _do_refresh_request
self.token_uri, method='POST', body=body, headers=headers)
File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1608, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1350, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1271, in _conn_request
conn.connect()
File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1074, in connect
raise socket.error, msg
socket.error: [Errno 101] Network is unreachable
2019.03.10 00:01:20 1: ERROR evaluating {GCALVIEW_DoEnd('GoogleCalendar||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
Zitat von: inoma am 10 März 2019, 11:17:16
Hi Mumpitzstuff,
hier mal mein Log mit dem gleichen Fehler von Christian in der letzten Zeile, eine Zeile vorher sagt die Fehlermeldung aber: "socket.error: [Errno 101] Network is unreachable", also scheint es wirklich so zu sein das google keine Daten liefert.
Vielleicht kann man das ja abfangen wenn google keine Daten liefert.
03.10 00:01:20 3: GoogleCalendar: gcalcli agenda 03/10/2019 03/18/2019 --calendar "xxx.yyyyyy@gmail.com" --calendar "Geburtstage" --calendar "Reminders" --detail_all --tsv
2019.03.10 00:01:20 3: GoogleCalendar: something went wrong (check your parameters) - Traceback (most recent call last):
File "/usr/bin/gcalcli", line 2649, in <module>
BowChickaWowWow()
File "/usr/bin/gcalcli", line 2495, in BowChickaWowWow
gcal.AgendaQuery(startText=args[1], endText=args[2])
File "/usr/bin/gcalcli", line 1732, in AgendaQuery
eventList = self._SearchForCalEvents(start, end, None)
File "/usr/bin/gcalcli", line 1637, in _SearchForCalEvents
events = self._RetryWithBackoff(work)
File "/usr/bin/gcalcli", line 655, in _RetryWithBackoff
return method.execute()
File "/usr/local/lib/python2.7/dist-packages/oauth2client/util.py", line 137, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/googleapiclient/http.py", line 833, in execute
method=str(self.method), body=self.body, headers=self.headers)
File "/usr/lib/python2.7/dist-packages/googleapiclient/http.py", line 160, in _retry_request
resp, content = http.request(uri, method, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 572, in new_request
self._refresh(request_orig)
File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 780, in _refresh
self._do_refresh_request(http_request)
File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 799, in _do_refresh_request
self.token_uri, method='POST', body=body, headers=headers)
File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1608, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1350, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1271, in _conn_request
conn.connect()
File "/usr/lib/python2.7/dist-packages/httplib2/__init__.py", line 1074, in connect
raise socket.error, msg
socket.error: [Errno 101] Network is unreachable
2019.03.10 00:01:20 1: ERROR evaluating {GCALVIEW_DoEnd('GoogleCalendar||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
Hallo,
Ich bin noch nicht weitergekommen. Habt ihr noch weitere Ideen?
Authentifizierung (.gcalcli_oauth) + Cache Verzeichnis (.gcalcli_cache) hast du gelöscht gehabt?
Danach sollte unter FHEM nichts mehr angezeigt werden:
{qx(gcalcli list)}
Jetzt noch mal die Authentifizierung durchführen.
BTW steht in dem Kalender auch was drin in dem Zeitraum den du dir anzeigen lässt? Kannst du mir bitte mal ein list vom Kalender Device zukommen lassen?
Ja, ich habe beide (Auth+cache) gelöscht. Im Kalender steht auch etwas drin.
Ich habe auch gcalcli aus dem GIT auf die aktuellste Version 4.0.4 aktualisiert. Vorher habe ich das Debian-Paket genutzt.
Dann habe ich eine neue Authentifizierung bei Google durchgeführt.
Im Kalender-Device sehe ich auch korrekt die Kalender wie sie aktuell bei Google heißen.
Führe ich dann im Kalender-Device ein Update durch, bekomme ich weiterhin
2019.03.16 10:16:42 1 : ERROR evaluating {GCALVIEW_DoEnd('kalender.abfall||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 625.
Hier ist das List:
Internals:
DEF 36800
FUUID ...
NAME kalender.abfall
NOTIFYDEV global
NR 367
NTFY_ORDER 50-kalender.abfall
STATE Initialized
TIMEOUT 36800
TYPE GCALVIEW
VERSION 1.0.3
helper:
RUNNING_PID:
abortFn GCALVIEW_DoAbort
arg kalender.abfall
bc_pid 40698
finishFn GCALVIEW_DoEnd
fn GCALVIEW_DoRun
pid DEAD:28162
telnet telnetForBlockingFn_1552066782_127.0.0.1_39782
terminated 1
timeout 36800
abortArg:
Attributes:
DbLogExclude .*
DbLogInclude Gelber_Sack_date,Blaue_Tonne_days,BioTonne_date,Restmuell_date
calendarDays 45
calendarFilter Abfallkalender_J
calendarType waste
disable 0
event-on-change-reading BioTonne_days,Blaue_Tonne_days,Gelber_Sack_days,Restmuell_days
group Kalender
room Kalender
updateInterval 3600
userattr calendarFilter:multiple-strict, ...
Gruß
Christian
Mit Version 4.0.4 wirst du Probleme bekommen. In dem 4er Zweig haben sie anscheinend einiges an den Optionen geändert. Diese heißen anders bzw. einige gibt es gar nicht mehr. Versuch mal unbedingt die 3.4.0 zu verwenden, diese habe ich ebenfalls. Ich muss mal gucken was ich da machen kann, um auch die 4er Version zu unterstützen.
Mit Version 3.4.0 aus dem GIT bin ich jetzt weitergekommen und bekomme auch wieder Termine abgerufen. Danke für den Hinweis. Vielleicht kannst du den in den ersten Beitrag aufnehmen. Da steht bislang "mindestens Version 3.4.0". Das sollte "genau Version 3.4.0" heißen.
Danke für die Unterstützung.
Ich habe im ersten Beitrag die Installation wesentlich vereinfacht. Außerdem habe ich jetzt bei mir die Version 4.0.4 installiert und meines Erachtens zum laufen gebracht. Anbei eine Version, welche ich bisher NUR mit gcalcli 4.0.4 getestet habe.
Bitte achtet darauf, das ihr gcalcli für Python3 und nicht für Python2 installiert! Unter Python2 werdet ihr Probleme mit Umlauten oder anderen Sonderzeichen in Kalendernamen bekommen!
Hier sind grob die Schritte dazu:
sudo apt install python-pip3
git clone https://github.com/insanum/gcalcli.git
cd gcalcli
python3 setup.py install
Falls gcalcli bereits über apt-get installiert wurde, bekommt man eine Fehlermeldung und muss dann zuerst folgendes machen:
sudo apt remove gcalcli
1-2 Module musste ich manuell upgraden mit:
pip3 install <modul> --upgrade
Kann jemand bitte verifizieren, ob das auch bei ihm klappt?
Ich habe jetzt das Update hochgeladen, konnte allerdings nicht mehr testen, ob es noch mit der Version 3.4.0 kompatibel ist. Ich kannte zwar die alte Version wieder installieren, aber keine Authentifizierung mehr durchführen. Ich bin deshalb wieder auf die 4.0.4 gegangen. Wenn jemand Hilfe bei der Umstellung benötigt, dann meldt euch bitte.
Hallo mumpitzstuff,
nein ist nicht mit Version 3.4.0 kompatibel, es kommt eine FehlermeldungGoogleCalendar: export PYTHONIOENCODING=utf8 && gcalcli v3.4.0 (...)
Ich muss dann auch wohl mal den update machen. . . .
Danke für die Modulpflege, das ist eines meiner liebsten!
Könntest du versuchen an den 2-3 Stellen im Modul das hier rauszuwerfen?
export PYTHONIOENCODING=utf8 &&
Also alles was in dem Befehlsaufruf vor gcalcli steht.
vorher:2019.03.25 19:24:48 3: Datum: Event: UpdateCal UpdateCal
2019.03.25 19:24:49 3: GoogleCalendar: export PYTHONIOENCODING=utf8 && gcalcli --version
2019.03.25 19:24:49 3: GoogleCalendar: something went wrong (check your parameters) - gcalcli v3.4.0 (Eric Davis, Brian Hartvigsen)
nachher2019.03.25 21:32:11 3: Datum: Event: UpdateCal UpdateCal
2019.03.25 21:32:12 3: GoogleCalendar: gcalcli --version
2019.03.25 21:32:12 3: GoogleCalendar: something went wrong (check your parameters) - gcalcli v3.4.0 (Eric Davis, Brian Hartvigsen)
Ich habe mal testweise einen neuen Kalendareintrag im Google Kalender gemacht, den hat er sich fehlerfrei geholt, trotz der 'Fehlermeldung'.
PS: Habs gerade nochmal rückgängig gemacht, also die "export PYTHONIOENCODING=utf8 &&" wieder eingefügt, auch dann holt er sich einen neuen Kalendereintrag, scheint also trotz Fehlermeldung auch mt der neuen Version zu funktionieren. Anscheinend ist es dann doch mit der Version 3.4.0 kompatibel?
Was kann ich noch testen?
Hmm. Dann muss da noch ein Bug in der neuen Versionsabfrage sein. Die ist aber nicht relevant für 3.4.0, nur die Fehlermeldung ist unschön. Ich schaue es mir noch mal an. Danke!
Ich habe jetzt auch auf die version 4.0.4 geupdated, hier meine Schritte, da ich mit
Zitatgit clone https://github.com/insanum/gcalcli.git
cd gcalcli
python3 setup.py install
folgende Fehlermeldung "ImportError: No module named 'setuptools'" bekommen habe.
Das update hat dann nur wie folgt geklappt:
sudo apt remove gcalcli
sudo apt-get install git python3-pip python-gdata python-dateutil python-gflags python-vobject python-parsedatetime
sudo apt --fix-broken install
dann die richtige gcalcli Datei von https://pkgs.org/download/gcalcli für sein System runterladen und installieren:
sudo dpkg -i gcalcli_4.0.4-1_all.deb
gcalcli --version
Allerdings zeigt es dann :gcalcli v4.0.3 (Eric Davis, Brian Hartvigsen, Joshua Crowgey) an, nicht 4.0.4 :-(
Sollte auch gehen. Ich hab's mit der ersten Variante probiert von dir und die fehlenden Dinge installiert.
pip3 install --upgrade setuptools
Versuchs mal damit.
Eventuell gehts auch damit:
sudo apt-get install python3-setuptools
Dann hat man aber Schwierigkeiten ein Update über pip zu machen. Pip meckert immer, wenn man versucht ein Packet zu updaten, was vorher über apt installiert wurde.
yep, nach dem "pip3 install --upgrade setuptools" gehts auch mit der ersten Variante von Dir, also pip3 install --upgrade setuptools
git clone https://github.com/insanum/gcalcli.git
cd gcalcli
python3 setup.py install
gcalcli --version
-> gcalcli v4.0.4 (Eric Davis, Brian Hartvigsen, Joshua Crowgey)
Danke!
Hallo Mumpitzstuff,
jetzt nach dem update auf 4.0.4, bekomme ich immer folgende Fehlermeldung:
2019.03.27 12:49:42 3: GoogleCalendar: export PYTHONIOENCODING=utf8 && gcalcli agenda 03/27/2019 04/04/2019 --calendar "aaaa.bbbbbb@gmail.com" --calendar "Geburtstage" --calendar "Reminders" --details calendar --details longurl --details location --details description --details email --tsv
2019.03.27 12:49:42 3: GoogleCalendar: something went wrong (check your parameters) - Traceback (most recent call last): File "/usr/local/bin/gcalcli", line 11, in <module> load_entry_point('gcalcli==4.0.4', 'console_scripts', 'gcalcli')() File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/cli.py", line 147, in main File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 67, in __init__ File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 196, in _get_cached KeyError: 'all_cals'
2019.03.27 12:49:42 1: ERROR evaluating {GCALVIEW_DoEnd('GoogleCalendar||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 651.
Cached key Error. Löschen mal die beiden Verzeichnisse in /opt/fhem die mit .gcalcli anfangen und mache die Authentifizierung neu.
Hallo Achim,
ich komme nicht weiter: Ich bekomme immer folgende Fehlermeldung, und ich glaube das liegt daran, dass fhem bei mir wegen SONOS unter 'root' läuft:
linaro@tinkerboard:/opt/fhem/gcalcli$ sudo gcalcli --noauth_local_webserver list
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 11, in <module>
load_entry_point('gcalcli==4.0.4', 'console_scripts', 'gcalcli')()
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/cli.py", line 147, in main
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 67, in __init__
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 196, in _get_cached
KeyError: 'all_cals'
mache ich allerdings das gleich ohne 'sudo' erhalte ich:
linaro@tinkerboard:/opt/fhem/gcalcli$ gcalcli --noauth_local_webserver list
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/v2/auth?.........................................
Enter verification code:
Authentifizierung habe ich neu gemacht (Verzeichnisse vorher geloescht), und gcalcli mit deiner Methode sowohl mit als auch ohne 'sudo' installiert. Funktioniert alles nicht. Hast Du noch eine Idee?
Wenn ich nämlich im Kalender dann ein Update mache, bekomme ich nämlich die gleiche Fehlermeldung, was nämlich gar nicht an deinem Modul liegt:
2019.03.27 21:22:47 3: Datum: Event: UpdateCal UpdateCal
2019.03.27 21:22:47 3: GoogleCalendar blocking call already running
2019.03.27 21:22:50 3: GoogleCalendar: export PYTHONIOENCODING=utf8 && gcalcli agenda 03/27/2019 04/04/2019 --calendar "aaaaa.bbbbbbbbbbb@gmail.com" --calendar "Geburtstage" --calendar "Reminders" --details calendar --details longurl --details location --details description --details email --tsv
2019.03.27 21:22:50 3: GoogleCalendar: something went wrong (check your parameters) - Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 11, in <module>
load_entry_point('gcalcli==4.0.4', 'console_scripts', 'gcalcli')()
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/cli.py", line 147, in main
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 67, in __init__
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 196, in _get_cached
KeyError: 'all_cals'
2019.03.27 21:22:50 1: ERROR evaluating {GCALVIEW_DoEnd('GoogleCalendar||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 651.
Habe die Lösung gefunden:
Google search nach "KeyError: 'all_cals'" führt auf die folgende Webseite: https://github.com/insanum/gcalcli/issues/428, die einen Fehler in der 4.0.4 "Upgrade to 4.0.4-1 breaks working installation. #428" reported und "Fixed the problem by using --refresh" empfiehlt.
Ich habe dann folgendes gemacht, jetzt funktioniert alles wie vorher mit der version 4.0.4. sudo gcalcli --noauth_local_webserver --refresh list
Danke!
Oh okay. Wieder was gelernt.
Ich habe auf einem komplett jungfräulichen FHEM die ersten Schritte der Installation durchgeführt. Die Version ist lt. Versionabfrage die richtige (gcalcli v3.4.0 (Eric Davis, Brian Hartvigsen)). Allerdings komme ich mit diesem Kommando nicht weiter:
sudo -u fhem gcalcli --noauth_local_webserver list
Verwende ich das erhalte ich die Fehlermeldung:
Unknown command line flag 'noauth_local_webserver'
und drunter die Hilfe mit ausgegeben.
Verwende ich das Kommando ohne "--noauth_local_webserver", erhalte ich zwar den Authentication-Code, aber mit der korrekten Warnung dass ich es doch mit dem Parameter aufrufen soll:
If your browser is on a different machine then exit and re-run this
application with the command-line parameter
--noauth_local_webserver
Da beißt sich doch die Katze irgendwie in den Schwanz. Was soll ich denn hier tun?
Versuch mal list nach hinten zu setzen. Manchmal spielt die Reihenfolge eine Rolle. Wenn das nicht geht, dann müsstest du der alten Anweisung folgen:
https://github.com/mumpitzstuff/fhem-GCALVIEW/commit/0e7cd81947127dac8463165755dc45c6eccb19aa (https://github.com/mumpitzstuff/fhem-GCALVIEW/commit/0e7cd81947127dac8463165755dc45c6eccb19aa)
Hier must du dem User fhem die Möglichkeit geben eine Shell aufzumachen, dann zum User fhem wechseln und dann müsste es gehen. Oder du kompilierst dir gleich die 4.0.4. Das mit der Authentifizierung ist leider ein kompletter Scheiss bei dem Tool, daran kann ich aber leider nichts ändern.
Vielen vielen Dank. Mit der alten Anleitung hat es geklappt. Und dem list nach hinten setzen. Zumindest das installieren und den Token setzen.
Das define in FHEM klappt auch, aber er holt keine Daten ab. Der Fehler im Logfile dazu wenn ich den set-Befehl update aufrufe:
2019.05.10 19:10:48 3: CAL_Geburtstage: export PYTHONIOENCODING=utf8 && gcalcli agenda 05/10/2019 03/05/2020 --calendar "Geburtstagsduplikate" --details calendar --details longurl --details location --details description --details email --tsv
2019.05.10 19:10:48 3: CAL_Geburtstage: something went wrong (check your parameters) - usage: gcalcli agenda [-h]
[--details {calendar,location,length,reminders,description,url,attendees,email,attachments,all}]
[--color-owner COLOR_OWNER]
[--color-writer COLOR_WRITER]
[--color-reader COLOR_READER]
[--color-freebusy COLOR_FREEBUSY]
[--color-date COLOR_DATE]
[--color-now-marker COLOR_NOW_MARKER]
[--color-border COLOR_BORDER]
[--color-title COLOR_TITLE] [--tsv] [--nostarted]
[--nodeclined] [--width CAL_WIDTH] [--military]
[--override-color]
[start] [end]
gcalcli agenda: error: argument --details: invalid choice: 'longurl' (choose from 'calendar', 'location', 'length', 'reminders', 'description', 'url', 'attendees', 'email', 'attachments', 'all')
2019.05.10 19:10:48 1: ERROR evaluating {GCALVIEW_DoEnd('CAL_Geburtstage||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 648
Was hat es damit jetzt auf sich?
Hmm Mist. Da ist mir was durch die Lappen gegangen bei der Umstellung auf die neue Version. Ich behebe das heute Abend.
Oh super dann liegts ja nicht an mir. ;)
Vielen Dank, bis dann
Kannst du der Einfachheit halber probieren das bei dir lokal selbst zu ändern? Dazu musst du die Datei öffnen:
sudo nano /opt/fhem/FHEM/57_GCALVIEW.pm
In den Zeilen 387 und 391 findest du sowas hier:
--details longurl
Dort löschst du einfach das long, so das daraus das wird:
--details url
Damit sollte es dann eigentlich gehen. Abspeichern und in FHEm das nicht vergessen:
shutdown restart
Perfekt, das funktioniert.
Vielen Dank
Ich habe den Fix dann auch gleich eingecheckt. Danke fürs probieren!
Bei einigen Kalendern Devices klappt das auch wunderbar. Beim manchen Kalendern kommt folgender Fehler im Log:
2019.05.11 23:07:03 3: CAL_Vera: export PYTHONIOENCODING=utf8 && gcalcli agenda --calendar "Vera" --details calendar --details url --details location --details description --details email --tsv
2019.05.11 23:07:03 3: CAL_Vera: something went wrong (check your parameters) - usage: gcalcli agenda [-h]
[--details {calendar,location,length,reminders,description,url,attendees,email,attachments,all}]
[--color-owner COLOR_OWNER]
[--color-writer COLOR_WRITER]
[--color-reader COLOR_READER]
[--color-freebusy COLOR_FREEBUSY]
[--color-date COLOR_DATE]
[--color-now-marker COLOR_NOW_MARKER]
[--color-border COLOR_BORDER]
[--color-title COLOR_TITLE] [--tsv] [--nostarted]
[--nodeclined] [--width CAL_WIDTH] [--military]
[--override-color]
[start] [end]
gcalcli agenda: error: argument start: invalid get_time_from_str value: 'Vera'
2019.05.11 23:07:03 1: ERROR evaluating {GCALVIEW_DoEnd('CAL_Vera||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 648.
Hmm komisch. Setz mal bitte das Attribut calendarDays auf z.b. 30. Eigentlich sollte der Aufruf aber auch ohne das setzen des Attributes gehen, so hatte ich das damals jedenfalls getestet. 5 Tage war glaube ich der default, den gcalcli verwendet hatte. Da muss ich wohl zur Sicherheit selbst einen default Wert setzen.
Ich habe eine Änderung eingecheckt, bei dem ein default von 14 Tagen gesetzt wird, wenn das Attribut nicht vorhanden ist.
Stimmt wenn man das Attribut setzt, funktioniert es. Die Kalender bei denen es schon vorher funktionierte, waren die Attribute schon gesetzt.
Hallo
Nach dem letzten Update funktioniert der Kalender nicht mehr bei mir bekomme folgende Fehlermeldung.
Kalender: export PYTHONIOENCODING=utf8 && gcalcli agenda 05/17/2019 06/17/2019 --config-folder /opt/fhem --calendar "...........@gmail.com" --calendar "Familie" --calendar "Contacts" --details calendar --details longurl --details location --details description --details email --tsv
2019.05.17 08:42:33 3: Kalender: something went wrong (check your parameters) - /usr/local/lib/python3.5/dist-packages/oauth2client-4.1.3-py3.5.egg/oauth2client/_helpers.py:255: UserWarning: Cannot access /opt/fhem/oauth: No such file or directory
Failed to start a local webserver listening on either port 8080
or port 8090. 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/.................................
Enter verification code: Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 11, in <module>
load_entry_point('gcalcli==4.0.4', 'console_scripts', 'gcalcli')()
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/cli.py", line 147, in main
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 67, in __init__
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 204, in _get_cached
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 159, in get_cal_service
File "/usr/local/lib/python3.5/dist-packages/gcalcli-4.0.4-py3.5.egg/gcalcli/gcal.py", line 148, in _google_auth
File "/usr/local/lib/python3.5/dist-packages/oauth2client-4.1.3-py3.5.egg/oauth2client/_helpers.py", line 133, in positional_wrapper
File "/usr/local/lib/python3.5/dist-packages/oauth2client-4.1.3-py3.5.egg/oauth2client/tools.py", line 240, in run_flow
EOFError: EOF when reading a line
2019.05.17 08:42:33 1: ERROR evaluating {GCALVIEW_DoEnd('Kalender||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 662.
Es scheint so zu sein das im falschen Verzeichnis gesucht wird /opt/fhem/oauth
.
Wenn ich das Attribut configfolder setze in FHEM mit att Kalender configfolder /opt/fhem
bekomme ich den Fehler immer noch.
Mit dem Befehl {qx(gcalcli list);;}
bekomme ich alle Kalender angezeigt.
Mit {qx(gcalcli list --configFolder /opt/fhem);;}
nicht.
Mit der Version 1.0.5 von dem Modul läuft der Kalender, allerdings nur wenn ich das Attribut configfolder wieder lösche.
Über eine kleine Hilfestellung wäre ich sehr dankbar.
Gruß Alex
Hallo,
an der Stelle habe ich seit Ewigkeiten nichts gemacht eigentlich.
1.) Welche gcalcli Version hast du?
2.) Welche GCALVIEW Version hattest du vor dem Update und welche jetzt?
3.) Hattest du den configFolder schon immer gesetzt und musstest ihn jetzt löschen, damit es weiterhin funktioniert oder hast du das erst jetzt mal ausprobiert?
4.) Warum musst du das Attribut löschen, wenn du eine alte Version verwendest? Wenn es vorher damit funktioniert hat, dann sollte es doch jetzt ebenfalls damit funktionieren. Was hat sich ansonsten geändert?
5.) Befinden sich in dem besagten Verzeichnis die entsprechenden .gcalcli... Verzeichnisse und sind die Rechte richtig gesetzt?
Wenn aber alles ohne das Attribut funktioniert, dann solltest du das so lassen. Das Attribut gibt es eigentlich nur zur Sicherheit, falls man manuell eingreifen muss.
1.) Welche gcalcli Version hast du? 1.0.5
2.) Welche GCALVIEW Version hattest du vor dem Update und welche jetzt? Vordem Update 1.0.5 nach dem Update die 1.0.7
3.) Hattest du den configFolder schon immer gesetzt und musstest ihn jetzt löschen, damit es weiterhin funktioniert oder hast du das erst jetzt mal ausprobiert? Nein hatte den mit der neuen Version gesetzt um zu gucken ob es da dran liegt
4.) Warum musst du das Attribut löschen, wenn du eine alte Version verwendest? Wenn es vorher damit funktioniert hat, dann sollte es doch jetzt ebenfalls damit funktionieren. Was hat sich ansonsten geändert? musste den Ordner löschen wenn ich die 1.0.5 verwende. Sonst hat sich eigentlich nichts geändert.
5.) Befinden sich in dem besagten Verzeichnis die entsprechenden .gcalcli... Verzeichnisse und sind die Rechte richtig gesetzt? Nein das Verzeichnis /opt/fhem/oauth existiert nicht die .gcalcli Dateien liegen im Verzeichnis /opt/fhem mit den entsprechenden Rechten
Frag mich jetzt nicht wo dran es lag, habe die 57_GCALVIEW jetzt noch einmal aktualisiert nach dem ich ja wieder auf der Version 1.0.5 war und nun geht wieder alles.
Danke für deine schnelle Antwort.
Gruß Alex
Wie ich gerade feststellte, bekomme ich seit einiger Zeit keine Updates mehr zu diesem Modul:
gcalview
http://raw.githubusercontent.com/mumpitzstuff/fhem-GCALVIEW/master/controls_gcalview.txt: Too many redirects
Was will mir dieser Fehler sagen?
Was passiert denn wenn du die Adresse im Browser eingibst?
Der Browser sowie (lokal auf dem FHEM-Raspi wget) liefern mir
DIR FHEM
UPD 2019-05-12_00:26:00 36775 FHEM/57_GCALVIEW.pm
Ich glaube ehrlich gesagt nicht, dass das was mit dem Modul zu tun hat oder der Ablage auf github. Ich schau heute Abend aber noch mal nach ob es bei mir geht. Ansonsten bleibt dir leider nur der Weg, das Modul manuell zu updaten.
Zitat von: mumpitzstuff am 11 Mai 2019, 22:17:13
Kannst du der Einfachheit halber probieren das bei dir lokal selbst zu ändern? Dazu musst du die Datei öffnen:
sudo nano /opt/fhem/FHEM/57_GCALVIEW.pm
In den Zeilen 387 und 391 findest du sowas hier:
--details longurl
Dort löschst du einfach das long, so das daraus das wird:
--details url
Damit sollte es dann eigentlich gehen. Abspeichern und in FHEm das nicht vergessen:
shutdown restart
Hallo
Ich bin gerade dabei mein FHEM in einen Docker Container zupacken.
Dabei habe ich nach der Konfiguration von gcalcli im FHEM bei meine vorhanden Kalendern folgende Fehlermeldung bekommen.
2019.07.15 12:35:25 3: Geburtstage: export PYTHONIOENCODING=utf8 && gcalcli agenda 07/15/2019 07/14/2020 --calendar "Geburtstage" --details calendar --details longurl --details location --details description --details email --tsv
2019.07.15 12:35:25 3: Geburtstage: something went wrong (check your parameters) - usage: gcalcli agenda [-h]
[--details {calendar,location,length,reminders,description,url,attendees,email,attachments,all}]
[--color-owner COLOR_OWNER]
[--color-writer COLOR_WRITER]
[--color-reader COLOR_READER]
[--color-freebusy COLOR_FREEBUSY]
[--color-date COLOR_DATE]
[--color-now-marker COLOR_NOW_MARKER]
[--color-border COLOR_BORDER]
[--color-title COLOR_TITLE] [--tsv] [--nostarted]
[--nodeclined] [--width CAL_WIDTH] [--military]
[--override-color]
[start] [end]
gcalcli agenda: error: argument --details: invalid choice: 'longurl' (choose from 'calendar', 'location', 'length', 'reminders', 'description', 'url', 'attendees', 'email', 'attachments', 'all')
2019.07.15 12:35:25 1: ERROR evaluating {GCALVIEW_DoEnd('Geburtstage||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 662.
Nachdem ich in der 57_GCALVIEW die Zeilen 393 und 404 von
--details longurl
in
--details url
geändert haben läuft es wieder.
System ist offizielles FEHM Docker Image mit zusätzlich installierten gcalcli
gcalcli v4.0.4 (Eric Davis, Brian Hartvigsen, Joshua Crowgey)
und benötigten Pakete. Das FHEM Image ist Debian Buster.
Gruß Alex
Ich habe auch 4.0.4 installiert und da kommt dieser Fehler nicht. In der API hatten die aber einen Bug drin den ich reportet habe. Da haben sie erwähnt, das aus longurl url werden soll. Allerdings dachte ich, dass sie dann auch die Version irgendwie anheben würden. Das ist irgendwie ziemlicher Mist. Jetzt gibt es anscheind 2 4.0.4 Versionen mit und ohne longurl.
Habe eben noch mal nachgesehen ich habe 4.0.4 und unterstützt wird url, longurl und shorturl. Leider gibt url in dieser Version Bullshit aus und ich musste deshalb auf longurl gehen. Vielleicht gehe ich jetzt wieder zurück auf url und falls jemand eine zwischenversion verwendet, dann muss derjenige ein update machen.
Wow - hab mich tagelang blöd gesucht woran dieser Fehler liegt...
Ich kann bestätigen dass die Lösung von Alex hinhaut um den line 662 Fehler wegzubekommen.
Habe allerdings folgende Version
.../fhem/FHEM$ gcalcli --version
gcalcli v4.1.1 (Eric Davis, Brian Hartvigsen, Joshua Crowgey)
1000 Dank dafür.
LG Bernhard ;D
Zitat
... Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 662.
Nachdem ich in der 57_GCALVIEW die Zeilen 393 und 404 von --details longurl
in --details url
geändert haben läuft es wieder.
Hallo zusammen,
ich hab diesen Beitrag gefunden, da ich FTUI mit einem Abfallkalender füttern möchte.
Was ich bereits gebastelt habe klappt und das sogar als Linux-Noob ;D ;D ;D
Bei der Installation auf meinem zuvor aktualisierten Raspi3 mit laufendem FHEM habe ich wie in der Anleitung
erst die Version gecheckt (gcalcli v3.4.0 (Eric Davis, Brian Hartvigsen)
) und danach sudo -u fhem gcalcli --noauth_local_webserver list
eingegeben.
Mein Raspi antwortet mir mit
Unknown command line flag 'noauth_local_webserver'
Da es also erst einmal nicht weitergeht hoffe ich, dass sich jemand bei Euch auskennt und mir helfen kann :-[
Grüßle!!!
sudo -u fhem gcalcli list --noauth_local_webserver
Geht vielleicht das?
Zitat von: mumpitzstuff am 01 September 2019, 21:52:40
sudo -u fhem gcalcli list --noauth_local_webserver
Geht vielleicht das?
Hallo mumpitzstuff - ganz lieben Dank für Deine Reaktion.
Eben hab ich es noch gelesen und gleich noch ausprobiert. Die Antwort vom Raspi ist:
option -n not recognized
Ich hab ganz sicher EXAKT den Code verwendet. Nur woher jetzt die Fehlermeldung kommt, dass -n nicht bekannt wäre? Ich hab kein "n" gesehen ::)
Die Termine hab ich alle im Google-Kalender hinterlegen können. Alleine, dass ein "PC" benötigt wird, mein Raspi aber nicht als PC (an)erkannt wird - ich bin ja froh, dass ich noch so altmodisch bin :D
Grüßle und gute Nacht für heute!
Ich bin erst in ein paar Tagen wieder aus dem Urlaub zurück, dann kann ich noch mal schauen.
Keinen Stress [emoji16] ich bin gerade dabei zu lernen wie ich meine Sonoff-Devices flashe. Einen Versuch ohne Fehlermeldung gab es sogar schon... hab aber erstmal 2 Basic gekauft die schon geflasht sind, damit ich die originalen austauschen kann, wenn die anderen funktionieren. Sonst funktioniert gar nix mehr.
Ach ja, hatte ich gestern... FHEM 100% CPU- Auslastung auf meinem Raspi. Erstmal mosquitto deinstalliert und MQTT2_Server in Fhem nach Anleitung definiert usw... ohne autocreate hätte ich es nicht geschafft [emoji41] bin froh die Chinacloud verlassen zu können
Gesendet von meinem SM-G930F mit Tapatalk
Kannst du vielleicht die Version 3.4.0 durch eine neuere Version ersetzen, bevor wir etwas anderes probieren? Dazu musst du folgendes machen:
sudo apt remove gcalcli
Danach solltest du mit pip eine neue Version installieren können, also z.b. so:
sudo pip3 install gcalcli
Wenn das klappt und alles installiert ist, versuch mal ob du die Kalender von der Linux Shell aus sehen kannst. Dazu musst du hier ebenfalls diese Authentifizierung durchführen und kannst mit gcalcli list die Kalender sehen. Wenn das geht, dann Versuch die Prozedur für fhem bitte noch einmal. Klappt das auch nicht, dann musst du kurz die Shell für den fhem User aktivieren und das über die fhem Shell machen. Das erkläre ich dann dir dann aber noch mal. Vielleicht klappt's ja schon nach dem Update.
Hallo Mumpitzstuff :)
Die Installation hat funktioniert - ich hab auch mit "update" und "upgrade" alles aktualisiert.
Wenn ich die Version gemäß Anleitung ab Punkt 2 prüfen möchte
gcalcli --version
dann erhalte ich das Ergebnis
bash: gcalcli: Kommando nicht gefunden
Ich hab dann noch versucht weiterzumachen mit
sudo -u fhem gcalcli --noauth_local_webserver list
ob ich zumindest nach der Neuinstallation hier weiterkomme, erhalte aber leider
sudo: gcalcli: Befehl nicht gefunden
Schade, aber ich hab es versucht ::)
Kannst du mir den Output der Installation zeigen? Irgendwas muss ja schief gelaufen sein.
Ansonsten schau mal auf Seite 22, da sind andere Methoden beschrieben das zu installieren. Man findet dort auch einen Link zur alten Anleitung für die v3.4.0, die man mit apt installieren kann.
Zitat von: mumpitzstuff am 14 September 2019, 00:56:25
Kannst du mir den Output der Installation zeigen? Irgendwas muss ja schief gelaufen sein.
Wenn Du mir sagst wie das geht... also nachträglich? Naja, es war nach der Installation viel in roter Schrift. Das ist gut, oder schlecht? :-\
Okay, ich probiere auch mal das auf Seite 22 - hab gelernt bei Linux VIEL Geduld zu haben ;D ::)
Au weia, jetzt habe ich das mit
sudo pip3 install gcalcli
installierte gcalcli
zunächst mit
sudo apt remove gcalcli
entfernen wollen - das wurde mit
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Paket »gcalcli« ist nicht installiert, wird also auch nicht entfernt.
Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
gxmessage python-dateutil python-gflags python-googleapi python-httplib2
python-oauth2client python-parsedatetime python-pyasn1-modules python-pyicu
python-rsa python-uritemplate python-vobject
Verwenden Sie »sudo apt autoremove«, um sie zu entfernen.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
quittiert...
Das ich versuche schlau zu sein ::) hab ich es mit
sudo pip3 remove gcalcli
versucht. Die Antwort war
ERROR: unknown command "remove"
Jetzt weiß ich nicht, ob das nun installiert ist, oder nicht - zumindest nicht sicher. Ich vermute aber, dass nicht und versuche mein Glück mit der Seite 22 ;)
Na, es soll wohl spannend bleiben...
Ich hab mir die Seite 22 durchgelesen und zunächst das empfohlene Upgrade der Setupdateien mit
pip3 install --upgrade setuptools
gemacht.
Ergebnis:
Collecting setuptools
Downloading https://files.pythonhosted.org/packages/b2/86/095d2f7829badc207c893dd4ac767e871f6cd547145df797ea26baea4e2e/setuptools-41.2.0-py2.py3-none-any.whl (576kB)
100% |████████████████████████████████| 583kB 444kB/s
Installing collected packages: setuptools
Successfully installed setuptools-41.2.0
Dann hab ich als nächsten Schritt
pip3 install --upgrade setuptools
git clone https://github.com/insanum/gcalcli.git
cd gcalcli
python3 setup.py install
gcalcli --version
eingegeben und mit Python hat es dann gehakt.
gcalcli --version hat dann auch gleich eine Fehlermeldung ergeben, dass das Kommando nicht gefunden wurde.
Entsprechend habe ich mit sudo python3 setup.py install
dann womöglich einen Erfolg gehabt.
Warning: No long description generated.
/usr/lib/python3/dist-packages/setuptools/dist.py:333: UserWarning: Normalizing 'v4.1.1' to '4.1.1'
normalized_version,
running install
running bdist_egg
running egg_info
creating gcalcli.egg-info
writing dependency_links to gcalcli.egg-info/dependency_links.txt
writing top-level names to gcalcli.egg-info/top_level.txt
writing entry points to gcalcli.egg-info/entry_points.txt
writing requirements to gcalcli.egg-info/requires.txt
writing gcalcli.egg-info/PKG-INFO
writing manifest file 'gcalcli.egg-info/SOURCES.txt'
reading manifest file 'gcalcli.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'gcalcli.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/gcalcli
copying gcalcli/argparsers.py -> build/lib/gcalcli
copying gcalcli/validators.py -> build/lib/gcalcli
copying gcalcli/exceptions.py -> build/lib/gcalcli
copying gcalcli/utils.py -> build/lib/gcalcli
copying gcalcli/printer.py -> build/lib/gcalcli
copying gcalcli/deprecations.py -> build/lib/gcalcli
copying gcalcli/__init__.py -> build/lib/gcalcli
copying gcalcli/cli.py -> build/lib/gcalcli
copying gcalcli/gcal.py -> build/lib/gcalcli
creating build/bdist.linux-armv7l
creating build/bdist.linux-armv7l/egg
creating build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/argparsers.py -> build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/validators.py -> build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/exceptions.py -> build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/utils.py -> build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/printer.py -> build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/deprecations.py -> build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/__init__.py -> build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/cli.py -> build/bdist.linux-armv7l/egg/gcalcli
copying build/lib/gcalcli/gcal.py -> build/bdist.linux-armv7l/egg/gcalcli
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/argparsers.py to argparsers.cpython-35.pyc
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/validators.py to validators.cpython-35.pyc
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/exceptions.py to exceptions.cpython-35.pyc
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/utils.py to utils.cpython-35.pyc
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/printer.py to printer.cpython-35.pyc
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/deprecations.py to deprecations.cpython-35.pyc
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/__init__.py to __init__.cpython-35.pyc
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/cli.py to cli.cpython-35.pyc
byte-compiling build/bdist.linux-armv7l/egg/gcalcli/gcal.py to gcal.cpython-35.pyc
installing package data to build/bdist.linux-armv7l/egg
running install_data
creating build/bdist.linux-armv7l/egg/share
creating build/bdist.linux-armv7l/egg/share/man
creating build/bdist.linux-armv7l/egg/share/man/man1
copying docs/man1/gcalcli.1 -> build/bdist.linux-armv7l/egg/share/man/man1
creating build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/PKG-INFO -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/SOURCES.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/dependency_links.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/entry_points.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/requires.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/top_level.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/gcalcli-4.1.1-py3.5.egg' and adding 'build/bdist.linux-armv7l/egg' to it
removing 'build/bdist.linux-armv7l/egg' (and everything under it)
Processing gcalcli-4.1.1-py3.5.egg
Copying gcalcli-4.1.1-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding gcalcli 4.1.1 to easy-install.pth file
Installing gcalcli script to /usr/local/bin
Installed /usr/local/lib/python3.5/dist-packages/gcalcli-4.1.1-py3.5.egg
Processing dependencies for gcalcli==4.1.1
Searching for python-dateutil
Reading https://pypi.python.org/simple/python-dateutil/
Downloading https://files.pythonhosted.org/packages/ad/99/5b2e99737edeb28c71bcbec5b5dda19d0d9ef3ca3e92e3e925e7c0bb364c/python-dateutil-2.8.0.tar.gz#sha256=c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e
Best match: python-dateutil 2.8.0
Processing python-dateutil-2.8.0.tar.gz
Writing /tmp/easy_install-pncojbl8/python-dateutil-2.8.0/setup.cfg
Running python-dateutil-2.8.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-pncojbl8/python-dateutil-2.8.0/egg-dist-tmp-selom_8p
/usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type'
warnings.warn(msg)
warning: no previously-included files matching '__pycache__' found anywhere in distribution
warning: no previously-included files matching '*.py[co]' found anywhere in distribution
Moving python_dateutil-2.8.0-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding python-dateutil 2.8.0 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/python_dateutil-2.8.0-py3.5.egg
Searching for parsedatetime
Reading https://pypi.python.org/simple/parsedatetime/
Downloading https://files.pythonhosted.org/packages/e3/b3/02385db13f1f25f04ad7895f35e9fe3960a4b9d53112775a6f7d63f264b6/parsedatetime-2.4.tar.gz#sha256=3d817c58fb9570d1eec1dd46fa9448cd644eeed4fb612684b02dfda3a79cb84b
Best match: parsedatetime 2.4
Processing parsedatetime-2.4.tar.gz
Writing /tmp/easy_install-9rcpeo21/parsedatetime-2.4/setup.cfg
Running parsedatetime-2.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-9rcpeo21/parsedatetime-2.4/egg-dist-tmp-5_bwhd6d
no previously-included directories found matching '.DS_Store'
zip_safe flag not set; analyzing archive contents...
Moving parsedatetime-2.4-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding parsedatetime 2.4 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/parsedatetime-2.4-py3.5.egg
Searching for oauth2client
Reading https://pypi.python.org/simple/oauth2client/
Downloading https://files.pythonhosted.org/packages/a6/7b/17244b1083e8e604bf154cf9b716aecd6388acd656dd01893d0d244c94d9/oauth2client-4.1.3.tar.gz#sha256=d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6
Best match: oauth2client 4.1.3
Processing oauth2client-4.1.3.tar.gz
Writing /tmp/easy_install-15m7smot/oauth2client-4.1.3/setup.cfg
Running oauth2client-4.1.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-15m7smot/oauth2client-4.1.3/egg-dist-tmp-ymp2r2qf
zip_safe flag not set; analyzing archive contents...
Moving oauth2client-4.1.3-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding oauth2client 4.1.3 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/oauth2client-4.1.3-py3.5.egg
Searching for httplib2
Reading https://pypi.python.org/simple/httplib2/
Downloading https://files.pythonhosted.org/packages/78/23/bb9606e87a66fd8c72a2b1a75b049d3859a122bc2648915be845bc44e04f/httplib2-0.13.1.tar.gz#sha256=6901c8c0ffcf721f9ce270ad86da37bc2b4d32b8802d4a9cec38274898a64044
Best match: httplib2 0.13.1
Processing httplib2-0.13.1.tar.gz
Writing /tmp/easy_install-pt5htbxr/httplib2-0.13.1/setup.cfg
Running httplib2-0.13.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-pt5htbxr/httplib2-0.13.1/egg-dist-tmp-yr5xj0tx
zip_safe flag not set; analyzing archive contents...
httplib2.__pycache__.certs.cpython-35: module references __file__
creating /usr/local/lib/python3.5/dist-packages/httplib2-0.13.1-py3.5.egg
Extracting httplib2-0.13.1-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding httplib2 0.13.1 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/httplib2-0.13.1-py3.5.egg
Searching for google-api-python-client>=1.4
Reading https://pypi.python.org/simple/google-api-python-client/
Downloading https://files.pythonhosted.org/packages/5e/19/9fd511734c0dee8fa3d49f4109c75e7f95d3c31ed76c0e4a93fbba147807/google-api-python-client-1.7.11.tar.gz#sha256=a8a88174f66d92aed7ebbd73744c2c319b4b1ce828e565f9ec721352d2e2fb8c
Best match: google-api-python-client 1.7.11
Processing google-api-python-client-1.7.11.tar.gz
Writing /tmp/easy_install-rlxe98ut/google-api-python-client-1.7.11/setup.cfg
Running google-api-python-client-1.7.11/setup.py -q bdist_egg --dist-dir /tmp/easy_install-rlxe98ut/google-api-python-client-1.7.11/egg-dist-tmp-nilrzw1m
warning: no files found matching '*.json' under directory 'apiclient'
warning: no files found matching 'README'
warning: no files found matching 'FAQ'
warning: no files found matching 'setpath.sh'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '__pycache__' found anywhere in distribution
zip_safe flag not set; analyzing archive contents...
Moving google_api_python_client-1.7.11-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding google-api-python-client 1.7.11 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/google_api_python_client-1.7.11-py3.5.egg
Searching for future
Reading https://pypi.python.org/simple/future/
Downloading https://files.pythonhosted.org/packages/90/52/e20466b85000a181e1e144fd8305caf2cf475e2f9674e797b222f8105f5f/future-0.17.1.tar.gz#sha256=67045236dcfd6816dc439556d009594abf643e5eb48992e36beac09c2ca659b8
Best match: future 0.17.1
Processing future-0.17.1.tar.gz
Writing /tmp/easy_install-u4dmxs86/future-0.17.1/setup.cfg
Running future-0.17.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-u4dmxs86/future-0.17.1/egg-dist-tmp-ank6w8v8
warning: no files found matching '*.au' under directory 'tests'
warning: no files found matching '*.gif' under directory 'tests'
warning: no files found matching '*.txt' under directory 'tests'
zip_safe flag not set; analyzing archive contents...
future.standard_library.__pycache__.__init__.cpython-35: module references __file__
future.standard_library.__pycache__.__init__.cpython-35: module references __path__
future.backports.test.__pycache__.support.cpython-35: module references __file__
future.backports.test.__pycache__.ssl_servers.cpython-35: module references __file__
future.utils.__pycache__.__init__.cpython-35: module MAY be using inspect.stack
past.builtins.__pycache__.misc.cpython-35: module MAY be using inspect.stack
past.translation.__pycache__.__init__.cpython-35: module references __file__
past.translation.__pycache__.__init__.cpython-35: module references __path__
creating /usr/local/lib/python3.5/dist-packages/future-0.17.1-py3.5.egg
Extracting future-0.17.1-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding future 0.17.1 to easy-install.pth file
Installing pasteurize script to /usr/local/bin
Installing futurize script to /usr/local/bin
Installed /usr/local/lib/python3.5/dist-packages/future-0.17.1-py3.5.egg
Searching for rsa>=3.1.4
Reading https://pypi.python.org/simple/rsa/
Downloading https://files.pythonhosted.org/packages/cb/d0/8f99b91432a60ca4b1cd478fd0bdf28c1901c58e3a9f14f4ba3dba86b57f/rsa-4.0.tar.gz#sha256=1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487
Best match: rsa 4.0
Processing rsa-4.0.tar.gz
Writing /tmp/easy_install-25ssjsp7/rsa-4.0/setup.cfg
Running rsa-4.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-25ssjsp7/rsa-4.0/egg-dist-tmp-jddx771c
/usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type'
warnings.warn(msg)
zip_safe flag not set; analyzing archive contents...
Moving rsa-4.0-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding rsa 4.0 to easy-install.pth file
Installing pyrsa-decrypt script to /usr/local/bin
Installing pyrsa-keygen script to /usr/local/bin
Installing pyrsa-priv2pub script to /usr/local/bin
Installing pyrsa-verify script to /usr/local/bin
Installing pyrsa-encrypt script to /usr/local/bin
Installing pyrsa-sign script to /usr/local/bin
Installed /usr/local/lib/python3.5/dist-packages/rsa-4.0-py3.5.egg
Searching for pyasn1-modules>=0.0.5
Reading https://pypi.python.org/simple/pyasn1-modules/
Downloading https://files.pythonhosted.org/packages/0a/b6/972a1560b4adde5754169305530075f610983b367b9bc49b89551810c70f/pyasn1_modules-0.2.6-py3.5.egg#sha256=a480489471e67c579f49057a10879cc9a787b64a84af00ed2ed3f68a652b0197
Best match: pyasn1-modules 0.2.6
Processing pyasn1_modules-0.2.6-py3.5.egg
Moving pyasn1_modules-0.2.6-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding pyasn1-modules 0.2.6 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/pyasn1_modules-0.2.6-py3.5.egg
Searching for uritemplate<4dev,>=3.0.0
Reading https://pypi.python.org/simple/uritemplate/
Downloading https://files.pythonhosted.org/packages/cd/db/f7b98cdc3f81513fb25d3cbe2501d621882ee81150b745cdd1363278c10a/uritemplate-3.0.0.tar.gz#sha256=c02643cebe23fc8adb5e6becffe201185bf06c40bda5c0b4028a93f1527d011d
Best match: uritemplate 3.0.0
Processing uritemplate-3.0.0.tar.gz
Writing /tmp/easy_install-l6e_fs_e/uritemplate-3.0.0/setup.cfg
Running uritemplate-3.0.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-l6e_fs_e/uritemplate-3.0.0/egg-dist-tmp-tm211vqb
no previously-included directories found matching 'docs/_build'
warning: no previously-included files matching '*.py[cdo]' found anywhere in distribution
warning: no previously-included files matching '__pycache__' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
warning: no previously-included files matching '*.pyd' found anywhere in distribution
zip_safe flag not set; analyzing archive contents...
Moving uritemplate-3.0.0-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding uritemplate 3.0.0 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/uritemplate-3.0.0-py3.5.egg
Searching for google-auth>=1.4.1
Reading https://pypi.python.org/simple/google-auth/
Downloading https://files.pythonhosted.org/packages/ef/77/eb1d3288dbe2ba6f4fe50b9bb41770bac514cd2eb91466b56d44a99e2f8d/google-auth-1.6.3.tar.gz#sha256=0f7c6a64927d34c1a474da92cfc59e552a5d3b940d3266606c6a28b72888b9e4
Best match: google-auth 1.6.3
Processing google-auth-1.6.3.tar.gz
Writing /tmp/easy_install-injphfso/google-auth-1.6.3/setup.cfg
Running google-auth-1.6.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-injphfso/google-auth-1.6.3/egg-dist-tmp-y1hktc0z
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '__pycache__' found anywhere in distribution
zip_safe flag not set; analyzing archive contents...
google.__pycache__.__init__.cpython-35: module references __path__
creating /usr/local/lib/python3.5/dist-packages/google_auth-1.6.3-py3.5.egg
Extracting google_auth-1.6.3-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding google-auth 1.6.3 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/google_auth-1.6.3-py3.5.egg
Searching for google-auth-httplib2>=0.0.3
Reading https://pypi.python.org/simple/google-auth-httplib2/
Downloading https://files.pythonhosted.org/packages/e7/32/ac7f30b742276b4911a1439c5291abab1b797ccfd30bc923c5ad67892b13/google-auth-httplib2-0.0.3.tar.gz#sha256=098fade613c25b4527b2c08fa42d11f3c2037dda8995d86de0745228e965d445
Best match: google-auth-httplib2 0.0.3
Processing google-auth-httplib2-0.0.3.tar.gz
Writing /tmp/easy_install-q_i7eqy5/google-auth-httplib2-0.0.3/setup.cfg
Running google-auth-httplib2-0.0.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-q_i7eqy5/google-auth-httplib2-0.0.3/egg-dist-tmp-w2s__reu
zip_safe flag not set; analyzing archive contents...
Moving google_auth_httplib2-0.0.3-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding google-auth-httplib2 0.0.3 to easy-install.pth file
Installed /usr/local/lib/python3.5/dist-packages/google_auth_httplib2-0.0.3-py3.5.egg
error: pyasn1 0.1.9 is installed but pyasn1<0.5.0,>=0.4.6 is required by {'pyasn1-modules'}
Mit gcalcli --version
habe ich dann folgende Infos erhalten
Traceback (most recent call last):
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 583, in _build_master
ws.require(__requires__)
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 900, in require
needed = self.resolve(parse_requirements(requirements))
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 791, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pyasn1 0.1.9 (/usr/lib/python3/dist-packages), Requirement.parse('pyasn1<0.5.0,>=0.4.6'), {'pyasn1-modules'})
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 6, in <module>
from pkg_resources import load_entry_point
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3250, in <module>
@_call_aside
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3234, in _call_aside
f(*args, **kwargs)
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 3263, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 585, in _build_master
return cls._build_from_requirements(__requires__)
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 598, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/home/pi/.local/lib/python3.5/site-packages/pkg_resources/__init__.py", line 791, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pyasn1 0.1.9 (/usr/lib/python3/dist-packages), Requirement.parse('pyasn1<0.5.0,>=0.4.6'), {'pyasn1-modules'})
Ich bitte um Entschuldigung, falls das zuviel Infos sind, aber ich kann nicht einordnen was davon wichtig ist oder nicht... jedenfalls bin ich erstmal wieder offline.
Zitat von: mumpitzstuff am 04 Oktober 2017, 00:02:11
3.) Jetzt das folgende Kommando eingeben:
sudo -u fhem gcalcli --noauth_local_webserver list
Die angezeigte URL muss kopiert und mit einem Browser aufgerufen werden. Dort muss man die Verknüpfung mit dem Google Konto bestätigen und erhält dann ein OAuth Token angezeigt. Das kopiert man wieder und kopiert es in die Konsole des Users fhem und bestätigt die Eingabe. Nun kann gcalcli auf den Google Kalender zugreifen! Um das zu prüfen kann man folgendes eingeben und erhält dann eine
Ich wollte gerade mal dein Modul einrichten und bin auf folgendes Problem gestoßen, ich meine bis hierhin hat alles geklappt von der Installation her. Nun kommt aber anstatt eine URL folgender Fehler.
Zitatsudo -u fhem gcalcli --noauth_local_webserver list
Unknown command line flag 'noauth_local_webserver'
Wo liegt hier mein Fehler ?
@moonlightkid: pyasn1 ist bei dir zu alt. Versuch mal bitte ein Upgrade.
sudo pip3 install pyasn1 --upgrade
Zitat von: D3ltorohd am 15 September 2019, 14:51:26
Ich wollte gerade mal dein Modul einrichten und bin auf folgendes Problem gestoßen, ich meine bis hierhin hat alles geklappt von der Installation her. Nun kommt aber anstatt eine URL folgender Fehler.
Wo liegt hier mein Fehler ?
Welche Version von gcalcli läuft bei dir?
Dreh bitte mal das Kommando um:
sudo -u fhem gcalcli list --noauth_local_webserver
Ansonsten findet ihr die alte Anleitung hier:
https://github.com/mumpitzstuff/fhem-GCALVIEW/commit/0e7cd81947127dac8463165755dc45c6eccb19aa (https://github.com/mumpitzstuff/fhem-GCALVIEW/commit/0e7cd81947127dac8463165755dc45c6eccb19aa)
Befolgt hier die roten Schritte anstatt der grün hinterlegten. Damit sollte es auch mit alten Versionen klappen.
Es läuft die 3.4.0 nachdem ich die Version abgefragt hab.
Ich versuchen es später mit der neuen Befehlszeile. Danke mal.
Zitat von: mumpitzstuff am 16 September 2019, 20:09:30
Welche Version von gcalcli läuft bei dir?
Dreh bitte mal das Kommando um:
sudo -u fhem gcalcli list --noauth_local_webserver
Hat leider nichts gebracht und es kommt die gleiche Fehlermeldung.
ZitatUnknown command line flag 'noauth_local_webserver'
Usage:
/usr/bin/gcalcli [options] command [command args or options]
Commands:
list list all calendars
Versuchs mal mit folgenden Schritten nach der alten Anleitung:
sudo su - fhem
(be sure that the user is really activated!)
If it is not possible to open a bash, try the following:
sudo nano /etc/passwd
search for fhem and replace /bin/false with /bin/bash (just needed temporary and can be reverted afterwards. now again:
sudo su - fhem
gcalcli list --noauth_local_webserver
Das Tool spinnt leider ziemlich rum bei der Authentifizierung. Aber wenns dann mal läuft, dann läuft es problemlos über Monate.
Zitat von: mumpitzstuff am 16 September 2019, 20:06:26
@moonlightkid: pyasn1 ist bei dir zu alt. Versuch mal bitte ein Upgrade.
sudo pip3 install pyasn1 --upgrade
Hallo Mumpitzstuff...
ich hab jetzt ein Ergebnis:
/gcalcli $ gcalcli --version
gcalcli v4.1.1 (Eric Davis, Brian Hartvigsen, Joshua Crowgey)
Vielen lieben Dank! Jetzt kann ich weitermachen [emoji3][emoji1303]
Gesendet von meinem SM-G930F mit Tapatalk
Wenn du mit der Version auch die Probleme bei der Authentifizierung hast, dann Versuch mal den Weg 2 Beiträge vorher Hier muss man die Bash Shell für den User fhem kurz freischalten und sich dann mit dem User anmelden. Danach sollte die Authentifizierung klappen.
Zitat von: mumpitzstuff am 23 September 2019, 19:04:23
Wenn du mit der Version auch die Probleme bei der Authentifizierung hast, dann Versuch mal den Weg 2 Beiträge vorher Hier muss man die Bash Shell für den User fhem kurz freischalten und sich dann mit dem User anmelden. Danach sollte die Authentifizierung klappen.
Die Athentifizierung hat geklappt und ich... tadaaaaa ... habe ein Kalendermodul [emoji1303]
Jetzt muss ich das NUR noch im TabletUI angezeigt bekommen und bin glücklich [emoji1]
Gesendet von meinem SM-G930F mit Tapatalk
Zitat von: Moonlightkid am 23 September 2019, 18:21:03
Hallo Mumpitzstuff...
ich hab jetzt ein Ergebnis:
/gcalcli $ gcalcli --version
gcalcli v4.1.1 (Eric Davis, Brian Hartvigsen, Joshua Crowgey)
Vielen lieben Dank! Jetzt kann ich weitermachen [emoji3][emoji1303]
Gesendet von meinem SM-G930F mit Tapatalk
Wie bist du zur neueren Version gekommen, wenn ich nach Anleitung vom ersten Post vorgehe, komme ich auf die Version 3.4
Zitat von: D3ltorohd am 23 September 2019, 19:48:34
Wie bist du zur neueren Version gekommen, wenn ich nach Anleitung vom ersten Post vorgehe, komme ich auf die Version 3.4
Hi, vermutlich mit dem Komplettpaket:
pip3 install --upgrade setuptools
git clone https://github.com/insanum/gcalcli.git
cd gcalcli
python3 setup.py install
gcalcli --version
also via der URL...?
Gesendet von meinem SM-G930F mit Tapatalk
Zitat von: mumpitzstuff am 23 September 2019, 17:59:35
Versuchs mal mit folgenden Schritten nach der alten Anleitung:
sudo su - fhem
(be sure that the user is really activated!)
If it is not possible to open a bash, try the following:
sudo nano /etc/passwd
search for fhem and replace /bin/false with /bin/bash (just needed temporary and can be reverted afterwards. now again:
sudo su - fhem
gcalcli list --noauth_local_webserver
Falls das für mich war, leider wieder das selbe...
Zitat[19:52:30] fhem@Smarthome-Zentrale:~$ gcalcli list --noauth_local_webserver
Unknown command line flag 'noauth_local_webserver'
Usage:
/usr/bin/gcalcli [options] command [command args or options]
Commands:
list list all calendars
search <text> [start] [end]
Hab auch in der etc von false auf bash gewechselt. Liegt das vllt an der Versoin 3.4.0 ?
Hast Du zuvor ein apt update und apt upgrade gemacht? Dann mal den Mehrzeiler wie ich ihn ausprobiert habe... sonst halte ich mich lieber heraus [emoji28]
Gesendet von meinem SM-G930F mit Tapatalk
Du bist dann auch als user fhem angemeldet?
Wenn alles nichts hilft, dann liegts an der alten Version und du must über pip eine neuere Version installieren. Das es hier vom Tool Probleme gibt kann man hier auch nachlesen:
https://github.com/insanum/gcalcli/issues/279 (https://github.com/insanum/gcalcli/issues/279)
Also war mit User FHEM angemeldet, hat nichts gebracht. Hatte dann nur mal
Zitatgcalcli list
dann kam ein Link, den im Browser geöffnet und für meinen Account calcli freigegeben. Danach kommt aber nichts mehr. Wahrscheinlich weil es eben nicht der gleiche Rechner ist.
Hab jetzt gcalcli deinstalliert und das so gemacht wie Moonlightkind geschrieben hat versucht. Er macht da irgendwas und dann kommt folgendes.
ZitatUsing /usr/local/lib/python2.7/dist-packages
Finished processing dependencies for gcalcli==4.2.0
[20:33:57] smarthome@Smarthome-Zentrale:~$ gcalcli --version
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 11, in <module>
load_entry_point('gcalcli==4.2.0', 'console_scripts', 'gcalcli')()
File "/home/smarthome/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/home/smarthome/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
return ep.load()
File "/home/smarthome/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2443, in load
return self.resolve()
File "/home/smarthome/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2449, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/home/smarthome/.local/lib/python2.7/site-packages/gcalcli/cli.py", line 30, in <module>
from gcalcli.argparsers import get_argument_parser, handle_unparsed
File "/home/smarthome/.local/lib/python2.7/site-packages/gcalcli/argparsers.py", line 8, in <module>
from shutil import get_terminal_size
ImportError: cannot import name get_terminal_size
Bei mir geht auch nicht pip3 sondern nur pip oder python, python3 geht auch nicht. Müsste ich hier noch was updaten auf die 3er, hab glaub die 2.7 hab ich vorher gesehen.
Jetzt hab ich mir hier glaub alles vermüllt.
Ich würde vermuten, das es nur mit python3 geht, obwohl auf der Webseite noch was von Python 2.7 steht.
Deinstallier das erst mal wieder bei dir:
sudo pip uninstall gcalcli
Dann installier dir mal Python 3 mit:
sudo apt-get install python3
und jetzt pip3 mit:
sudo apt-get install python3-pip
und dann mit pip3 arbeiten.
Zitat von: mumpitzstuff am 23 September 2019, 20:57:07
Ich würde vermuten, das es nur mit python3 geht, obwohl auf der Webseite noch was von Python 2.7 steht.
Deinstallier das erst mal wieder bei dir:
sudo pip uninstall gcalcli
Dann installier dir mal Python 3 mit:
sudo apt-get install python3
und jetzt pip3 mit:
sudo apt-get install python3-pip
und dann mit pip3 arbeiten.
So bin nun schon mal etwas weiter, die Version 4.2. wird jetzt angezeigt. Aber es kommt nun leider ein neues Problem.
Zitatfhem@Smarthome-Zentrale:~$ gcalcli list --noauth_local_webserver
usage: gcalcli [-h] [--locale LOCALE] [--lineart {fancy,unicode,ascii}]
[--nocache] [--conky] [--refresh] [--client-id CLIENT_ID]
[--calendar CALENDAR] [--config-folder CONFIG_FOLDER]
[--client-secret CLIENT_SECRET] [--nocolor] [--noincluderc]
[--default-calendar DEFAULTCALENDAR]
gcalcli: error: unrecognized arguments: --noauth_local_webserver
Das hatte ich jetzt noch so gemacht.
Zitatsudo nano /etc/passwd
search for fhem and replace /bin/false with /bin/bash (just needed temporary and can be reverted afterwards. now again:
Code: [Auswählen]
sudo su - fhem
Code: [Auswählen]
gcalcli list --noauth_local_webserver
gcalcli --noauth_local_webserver list
Ich hab's eben noch mal probiert (list muss hinten stehen!). Mit diesem Befehl erscheint ein Link. Den kopierst du in einen Browser und den Code den du bekommst, gibst du dann wieder ein. Das muss aber unbedingt als User fhem gemacht werden. Zum üben probier es aber erst mal einfach so und schau das du die Kalender mit deinem Standard User rein bekommst.
sudo -u fhem gcalcli --noauth_local_webserver list
oder über den langen Weg den ich beschrieben hatte.
Hm wollte das nun mal testen, ich komm erst gar nicht soweit.Irgendwas ging da wohl gestern schief.
Weiß einer Rat ?
Zitatsudo: Unbekannter Benutzer: root
sudo: Regelwerks-Plugin konnte nicht initialisiert werden
Du hast deine /etc/passwd zerstört. Das ist richtig scheisse, da du jetzt mit einem externen Linux auf die Partition zugreifen musst, um sie zu reparieren.
Ich hasse Linux, bin einfach zu blöd dafür :o
Ich muss der Datei irgendwie den User gcalcli als Owner gegeben haben. Ich habe noch nen Clone Image, dann muss ich aber erst noch Sachen aus FHEM sichern. Was ich seither angelegt habe und wahrscheinlich die ganzen Installs noch mal neu machen.
Wenn das eine sd karte ist, dann kannst du mit eine liveboot CD das Ding mounten und den User anpassen. Du darfst niemals mit scp etwas downloaden, ändern und dann wieder hochladen, schon gar nicht so superwichtige Dateien wie die passwortdatei.
Hm an der Datei habe ich mit SCP eigentlich nichts gemacht, nur mal eben geschaut was da los ist. Ich hatte das gestern nur im Nano gemacht, aber wohl irgendwie dabei nen anderen User vergeben. Ne is ne SSD drin.
So hab alles gerettet bekommen, hab halt nen Image von meiner SSD über Clonezilla eingespielt, da kam ich Gott sei Dank nach dem Reboot ran, per Monitor und Tastatur.
So jetzt mach ich hier noch mal Schritt für Schritt die Sachen von den letzten beiden Seiten. Mal sehen, aber warum, es mir die passwd zerhauen hat oder viel mehr auf einmal der Google als User war...
Is halt einfach nix wenn man sich mit Linux nicht auskennt.
Wenn man mit "sudo nano datei" arbeitet, wird der User eigentlich nicht verändert. Sicherer ist es halt ohne die passwd Fummelei. Mit der Version 4.2.0 sollte das hoffentlich gehen, so wie es im ersten Beitrag steht.
WOW, ich hab's bis hier hin schon mal geschafft.
ZitatAuthentication successful.
Access Title
------ -----
owner Events
reader Contacts
reader Feiertage in Deutschland
reader Week Numbers
Vielen Dank für eure Unterstützung.
In fhem sieht es auch so aus, passt ? Hier steht was mit configfolder, brauchte ich jetzt aber nicht. Es sei denn es müsste anders aussehen...
Wird danach der Task neu gestartet ?
Zitatdefine <name> GCALVIEW <timeout>
timeout ist hier ein Timeout in Sekunden für den Backgroundtask. Wenn dieses Timeout überschritten wird, dann wird der Task gekillt.
Was sollte man hier so eingeben, Standardwert ?
Sollte passen. Bei mir steht der Wert auf 30. Ich kann grad nicht sagen ob das dem default entspricht.
Dürfte ich hier noch Fragen, wie ich das in meine FTUI einbaue ?
So sieht das aus, aber dort werden andere Module genutzt richtig ? Wie kann ich das mit deinem erledigen ?
<section>
<div class="big">Info
</div>
<div style="display:inline-block;height:1px;width:80%;background-color:#0088CC;"></div>
<table>
<tr>
<td>
<div data-type="switch"
data-device="myAbfall"
data-get="Restmuell_tage"
data-set="Restmuell_tage"
data-warn="Restmuell_tage"
data-warn-on="([0-9]|[1][0-9]|off)"
data-states='["off","0","1","([2-9]|[1][0-9])"]'
data-set-states='["off","off","off","off"]'
data-cmd="setreading"
data-icons='["fa-trash-o","fa-trash-o fa-spin","fa-trash-o fa-blink","fa-trash-o"]'
data-background-icons='["none","none","none","none"]'
data-colors='["#888","#888","#888","#888"]'
class="">
</div>
</td>
<td>
<div data-type="switch"
data-device="myAbfall"
data-get="Papier_tage"
data-set="Papier_tage"
data-warn="Papier_tage"
data-warn-on="([0-9]|[1][0-9]|off)"
data-states='["off","0","1","([2-9]|[1][0-9])"]'
data-set-states='["off","off","off","off"]'
data-cmd="setreading"
data-icons='["fa-trash-o","fa-trash-o fa-spin","fa-trash-o fa-blink","fa-trash-o"]'
data-background-icons='["none","none","none","none"]'
data-colors='["#0088CC","#0088CC","#0088CC","#0088CC"]'
class="">
</div>
</td>
<td>
<div data-type="switch"
data-device="myAbfall"
data-get="Plastik_tage"
data-set="Plastik_tage"
data-warn="Plastik_tage"
data-warn-on="([0-9]|[1][0-9]|off)"
data-states='["off","0","1","([2-9]|[1][0-9])"]'
data-set-states='["off","off","off","off"]'
data-cmd="setreading"
data-icons='["fs-bag","fs-bag fa-spin","fs-bag fa-blink","fs-bag"]'
data-background-icons='["none","none","none","none"]'
data-colors='["yellow","yellow","yellow","yellow"]'
class="">
</div>
</td>
<td>
<div data-type="symbol"
data-device="myGeburtstage"
data-get="c-today"
data-states='["1","0","([2-9])"]'
data-icons='["fa-birthday-cake","fa-birthday-cake","fa-birthday-cake warn"]'
data-colors='["#0088CC","#888","#0088CC"]'
class="">
</div>
</td>
data-device="Kalender" müsste es bei mir heißen richtig ?
So sieht mein Device aus,
DEVICEOVERVIEW
Kalender
t: 8 td: 1 tm: 0
Kalender INTERNALS
CFGFN
DEF
30
FUUID
5d8e20e2-f33f-fc62-2b87-7596fc6bfc9e1a36
NAME
Kalender
NOTIFYDEV
global
NR
205
NTFY_ORDER
50-Kalender
STATE
t: 8 td: 1 tm: 0
TIMEOUT
30
TYPE
GCALVIEW
VERSION
1.0.8
Des weiteren heißt das bei mir so im Kalender.
t_005_bdate
04.10.2019
2019-09-28 16:02:22
t_005_btime
16:49
2019-09-28 16:02:22
t_005_daysleft
6
2019-09-28 16:02:22
t_005_daysleftLong
in 6 days
2019-09-28 16:02:22
t_005_description
Restmüllcontainer (wöchentlich, 1100 l) nicht vergessen!
2019-09-28 16:02:22
t_005_edate
05.10.2019
2019-09-28 16:02:22
t_005_etime
16:49
2019-09-28 16:02:22
t_005_location
Birkenweg, Mengen
2019-09-28 16:02:22
t_005_source
Events
2019-09-28 16:02:22
t_005_sourcecolor
white
2019-09-28 16:02:22
t_005_summary
Restmüllcontainer (wöchentlich, 1100 l)
2019-09-28 16:02:22
t_005_timeshort
16:49 - 16:49
2019-09-28 16:02:22
t_005_url
link
2019-09-28 16:02:22
t_005_weekday
Friday
Ich verwende diese Oberfläche leider nicht, sondern nur die Dinge, welche ich im ersten Beitrag gepostet habe.
Ok, dann muss ich mal schauen, ob das einer hinbekommen hat.
Aber bei mir läuft das alles noch nicht so ganz Rund.
Das steht unten:
Zitat
calendarFilter:multiple-strict,Events,Contacts,Feiertage#in#Deutschland,Week#Numbers calendarIncludeStarted:multiple-strict,Events,Contacts,Feiertage#in#Deutschland,Week#Numbers
Da fehlen aber noch Kalender, habe einen für Geburtstage und einen für Abfall. Die kommen dort aber nicht vor. Auch steht bei mir nur t001 und 002, tomorrow 001.
Anzahl Tage steht auf 7. Sollte hier nicht mehr stehen ?
Mit t_0xx fangen die Termine an und tomorrow_001 ist der erste Termin von morgen. Verwende mal die readingsgroup aus dem ersten Beitrag, dann siehst du alles anschaulich aufbereitet.
Wenn man einen kalender auf google neu erstellt, wird dieser nicht angezeigt, wenn man die Authentifizierung nicht neu macht. Wenn das bei dir der Fall ist, kann ich dir eine Schritt für Schritt Anleitung geben.
Zur Not poste mal einen Screenshot shot und schwärz darin alles kritische, dann kann ich mir ein besseres Bild machen.
Zitat von: mumpitzstuff am 29 September 2019, 18:19:01
Wenn man einen kalender auf google neu erstellt, wird dieser nicht angezeigt, wenn man die Authentifizierung nicht neu macht. Wenn das bei dir der Fall ist, kann ich dir eine Schritt für Schritt Anleitung geben.
Dann liegt das daran. Ich wollte das etwas sauber trennen, damit ich das in Google schon mal schön einpflegen kann, indem Fall ist das alles danach dazu gekommen. Also bräuchte ich wohl mal deine Schritt für Schritt Anleitung.
Die ReadingsGroup copy & past in die Befehlszeile von FHEM, wo wird das dann hinzugefügt ? Zu meinem Kalender Device ? Muss ich da irgendwas anpassen ? Ich hab das mal so oben rein geschrieben, aber unter meinem Kalender hat sich nichts geändert.
Okay dann versuch erst mal die Readingsgroup. Dazu öffnest du dein Kalenderdevice und scrollst ganz nach unten. Dort siehst du den Text "Raw Definition". Das klickst du an und löschst den gesamten Text der dort steht. Bitte wirklich alles löschen! Dann kopierst du du die Readingsgroup Definition aus dem ersten Beitrag da rein und ersetzt ALLE Vorkommen von KALENDER_VIEW durch deinen Device Namen und drückst danach den Button: "Execute commands", der sich ganz unten links befindet. Danach sollte die Readingsgroup angelegt sein. Falls die Readingsgroup die Attribute nicht richtig gesetzt haben sollte, melde dich noch mal, dann muss man da nacharbeiten und das manuell machen. Ich poste dann noch mal wie.
Wie man die geänderten Kalender neu bekommt erkläre ich lieber danach, sonst geht alles durcheinander und es geht wieder gar nichts mehr.
Ich danke dir vielmals. Indem Fall steht das rg für ReadingsGroup und damit wird dann dieses spezielle Ansicht angelegt ?
So ich glaube das hat funktioniert, siehe Screen.
Nun müsste man mein Kalender so einstellen, das er wirklich alles zeigt.
Hmm du hast nur 1 Termin in deinem Kalender? Stell mal das Attribut calendarDays auf einen höheren Wert wie z.B. 60, dann sollten mehr Termine sichtbar sein. Aber der eine Termin müsste auch angezeigt werden, was bei dir nicht der Fall ist. Das müsste dann so aussehen wie auf meinem Bild.
Mach mal bitte ein list von deiner Readingsgroup und poste mir das, ich vermute die Attribute wurden nicht übernommen.
list RG_KALENDER
Um jetzt auch deine neuen Kalender verfügbar zu haben musst du folgendes machen:
cd /opt/fhem
ls -all
Dort siehst du 2 Dateien: .gcalcli_cache und .gcalcli_oauth. Diese löschst du mit:
sudo rm .gcalcli_cache
sudo rm .gcalcli_oauth
Danach führst du noch einmal die Authentifizierung durch und die neuen Kalender sind dann sichtbar. Das musst du jedes Mal machen wenn du einen neuen Kalender erzeugst oder einen bestehenden umbenennst!
Zitat von: mumpitzstuff am 30 September 2019, 23:46:52
Hmm du hast nur 1 Termin in deinem Kalender? Stell mal das Attribut calendarDays auf einen höheren Wert wie z.B. 60, dann sollten mehr Termine sichtbar sein. Aber der eine Termin müsste auch angezeigt werden, was bei dir nicht der Fall ist. Das müsste dann so aussehen wie auf meinem Bild.
Mach mal bitte ein list von deiner Readingsgroup und poste mir das, ich vermute die Attribute wurden nicht übernommen.
list RG_KALENDER
So hier mal das List von der RG
Wegen dem RG, ich glaube ich muss nur die Schriftfarbe ändern, von weiß in schwarz oder so, dann sieht man's auch siehe Screen. Hab jetzt mal
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';
durch
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "black").'"';
ersetzt. Also white gegen black, aber hat leider nichts geholfen.
EDIT::
Ich glaube das liegt an t_001_sourcecolor white ? Kann das sein ? Wer bestimmt sourcecolor ? In Google ist die Gruppe ja Mischung aus Gelb/Grün.
Internals:
DEF <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>
Kalender:t_001_bdate,t_001_weekday,t_001_timeshort,t_001_summary,t_001_location
Kalender:t_002_bdate,t_002_weekday,t_002_timeshort,t_002_summary,t_002_location
Kalender:t_003_bdate,t_003_weekday,t_003_timeshort,t_003_summary,t_003_location
Kalender:t_004_bdate,t_004_weekday,t_004_timeshort,t_004_summary,t_004_location
Kalender:t_005_bdate,t_005_weekday,t_005_timeshort,t_005_summary,t_005_location
Kalender:t_006_bdate,t_006_weekday,t_006_timeshort,t_006_summary,t_006_location
Kalender:t_007_bdate,t_007_weekday,t_007_timeshort,t_007_summary,t_007_location
Kalender:t_008_bdate,t_008_weekday,t_008_timeshort,t_008_summary,t_008_location
Kalender:t_009_bdate,t_009_weekday,t_009_timeshort,t_009_summary,t_009_location
Kalender:t_010_bdate,t_010_weekday,t_010_timeshort,t_010_summary,t_010_location
Kalender:t_011_bdate,t_011_weekday,t_011_timeshort,t_011_summary,t_011_location
Kalender:t_012_bdate,t_012_weekday,t_012_timeshort,t_012_summary,t_012_location
Kalender:t_013_bdate,t_013_weekday,t_013_timeshort,t_013_summary,t_013_location
Kalender:t_014_bdate,t_014_weekday,t_014_timeshort,t_014_summary,t_014_location
Kalender:t_015_bdate,t_015_weekday,t_015_timeshort,t_015_summary,t_015_location
Kalender:t_016_bdate,t_016_weekday,t_016_timeshort,t_016_summary,t_016_location
Kalender:t_017_bdate,t_017_weekday,t_017_timeshort,t_017_summary,t_017_location
Kalender:t_018_bdate,t_018_weekday,t_018_timeshort,t_018_summary,t_018_location
Kalender:t_019_bdate,t_019_weekday,t_019_timeshort,t_019_summary,t_019_location
Kalender:t_020_bdate,t_020_weekday,t_020_timeshort,t_020_summary,t_020_location
FUUID 5d9233ea-f33f-fc62-40ad-46c8181635eafb1a
NAME rg_KALENDER
NR 69
NTFY_ORDER 50-rg_KALENDER
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CONTENT:
Kalender 1
CONTENT2:
DEVICES:
ARRAY(0x563bc5fa3378)
ARRAY(0x563bc61341d8)
ARRAY(0x563bc3f05790)
ARRAY(0x563bc4804e78)
ARRAY(0x563bc4805460)
ARRAY(0x563bc6bf05d0)
ARRAY(0x563bc6134c10)
ARRAY(0x563bc5cc4680)
ARRAY(0x563bc5cc45a8)
ARRAY(0x563bc6102ca0)
ARRAY(0x563bc60d3420)
ARRAY(0x563bc3f054a8)
ARRAY(0x563bc6cdb970)
ARRAY(0x563bc6cdb988)
ARRAY(0x563bc6ceebe0)
ARRAY(0x563bc6ceebf8)
ARRAY(0x563bc3f03928)
ARRAY(0x563bc6bf04b0)
ARRAY(0x563bc6b68518)
ARRAY(0x563bc5cc3a08)
ARRAY(0x563bc5cc3a98)
fhem:
lastDefChange 3
last_update 1569955758.93315
helper:
DEF
nameStyle style="font-weight:bold;text-decoration:underline;"
valueFormat {
if ($READING =~ /bdate$/)
{
my $readingStart = $READING;
$readingStart =~ s/bdate$//;
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Heute";
}
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Morgen";
}
else
{
# the follwoing line strips the year of the date (remove it if needed)
substr($VALUE, 0, 5);
}
}
elsif ($READING =~ /weekday$/)
{
my $readingStart = $READING;
$readingStart =~ s/weekday$//;
# the follwoing line strips the weekday down to 3 chars (remove it if needed)
substr($VALUE, 0, 3);
}
elsif ($READING =~ /summary$/)
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';
if (defined($age))
{
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;
}
else
{
$link =~ s/\>link\</ $style\>$VALUE\</;
}
$link;
}
}
valueStyle {
my $readingStart = $READING;
$readingStart =~ s/(t_\d+_).+/$1/;
'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"'
}
positions:
Kalender.t_001_bdate 2:1
Kalender.t_001_location 2:5
Kalender.t_001_summary 2:4
Kalender.t_001_timeshort 2:3
Kalender.t_001_weekday 2:2
Kalender.t_002_bdate 3:1
Kalender.t_002_location 3:5
Kalender.t_002_summary 3:4
Kalender.t_002_timeshort 3:3
Kalender.t_002_weekday 3:2
values:
formated:
undef
ARRAY(0x563bc6cdaf38)
ARRAY(0x563bc6cc3a38)
ARRAY(0x563bc6905358)
ARRAY(0x563bc6d9e050)
ARRAY(0x563bc6e55ad0)
orig:
undef
ARRAY(0x563bc6e55650)
ARRAY(0x563bc6daaad0)
ARRAY(0x563bc6e55a28)
ARRAY(0x563bc6e55818)
ARRAY(0x563bc6e555a8)
prefixsuffix:
undef
ARRAY(0x563bc6db7488)
ARRAY(0x563bc6e4cd30)
ARRAY(0x563bc6daa308)
ARRAY(0x563bc6e5a798)
ARRAY(0x563bc6e48450)
Attributes:
nameStyle style="font-weight:bold;text-decoration:underline;"
nonames 1
notime 1
room Kalender
valueFormat {
if ($READING =~ /bdate$/)
{
my $readingStart = $READING;
$readingStart =~ s/bdate$//;
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Heute";
}
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Morgen";
}
else
{
# the follwoing line strips the year of the date (remove it if needed)
substr($VALUE, 0, 5);
}
}
elsif ($READING =~ /weekday$/)
{
my $readingStart = $READING;
$readingStart =~ s/weekday$//;
# the follwoing line strips the weekday down to 3 chars (remove it if needed)
substr($VALUE, 0, 3);
}
elsif ($READING =~ /summary$/)
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';
if (defined($age))
{
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;
}
else
{
$link =~ s/\>link\</ $style\>$VALUE\</;
}
$link;
}
}
valueStyle {
my $readingStart = $READING;
$readingStart =~ s/(t_\d+_).+/$1/;
'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"'
}
Also hab das ganze neu authentifiziert, das kam dabei raus, eigentlich ganz in Ordnung, nun fehlen aber noch Geburtstag, Erinnerungen:
Access Title
------ -----
owner Events
owner Abfallentsorgung
reader Contacts
reader Feiertage in Deutschland
reader Week Numbers
Week Numbers und Contacts kann man doch ausfiltern, braucht man nicht wirklich in Fhem oder ?
Das was du bei Google als Geburtstage und Erinnerungen siehst sind keine echten Kalender. Diese Dinge verwaltet Google ausschließlich selbst und du kannst dort auf direktem Wege auch nichts ändern oder hinzufügen. Gcalcli hat drauf jedenfalls keinen Zugriff. Ich musste mir daher einen extra Kalender für die Geburtstage erstellen.
Das was du geändert hast war nur der defaultwert, der verwendet wird, wenn kein sourcecolor verwendet wird. Das solltest du nicht verändern müssen. Im kalenderdevice selbst kannst du aber einem Kalender eine Farbe zuordnen und alle Termine dieses Kalenders haben dann diese Farbe in der Readingsgroup.
attr DIENSTPLAN_VIEW sourceColor Müllabfuhr:orange,Contacts:red
Alle Müllabfuhrtermine werden orange und alles was in contacts steht wird rot.
Dein Tool stellt ja den die Informationen aus dem Kalender bereit, eigentlich gleich wie das Calendar Modul richtig ? Könnte ich hier nicht mit dem MyAbfall Modul die Daten anstatt vom Calender Modul von deinem Abgreifen, dieses MyAbfall Modul wandelt die Daten passend um und man kann das dann so in FTUI nutzen.
Nein. Wenn du das Abfall Modul verwenden möchtest, dann ist dafür zwingend das Calendar Modul notwendig. Zusammen mit dem CALVIEW Modul sollte dann vielleicht auch was mit FTUI funktionieren. Mein Modul hat sich aber zu großen Teilennan CALVIEW und dem Abfall Modul orientiert und sollte sich daher ähnlich an FTUI anbinden lassen. Hierbei kann ich Mangels Wissen aber nicht unterstützen.
So sieht die Abfall Anzeige bei mir aus.
Vielleicht eine interessante Info / Randnotiz
Ich hatte seit einigen Tagen, das Problem, dass mein Google-Kalender nicht mehr aktualisiert wurde und somit die letzten (gecachten Einträge am Tablet stehen blieben..)
Im Log zeigte sich die "beliebte" Meldung
ERROR evaluating {GCALVIEW_DoEnd('Kalender|kjsdkhfkds|')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 648.
Soweit ich mich hier im Forum einlesen konnte, gibt es dazu Meldungen von ungültigen Terminen oder notwendigen Änderungen in der PM Datei.
Bei mir lag der Hund aber wo ganz anderes begraben.
Ich betreibe einen eigenen DNS "Server" als Filter (pihole)
Und dieser hatte, nach einem Update, "www.googleapis.com" auf der Blacklist.
Ich kenne die hintergründigen Funktionen von GCALVIEW nicht, aber nach dem whitelistening der URL konnte der Kalender wieder abgerufen werden.
Will heißen, der Fehler kann im Grunde auch auf eine nicht vorhandene / defekte Internetverbindung hin deuten.
Grüße,
Kharim
Hallo Alle,
ich nutze dieses tolle Modul seit ca. einem Jahr und steuere abhängig von meinen Kalendereinträgen z.B. Heizung und Rollladen.
Seit einiger Zeit funktioniert es leider nicht mehr. Es werden keine Kalendereinträge mehr abgerufen.
Im Logfile steht:
2019.11.02 09:27:47 3: gCal blocking call already running
2019.11.02 09:27:53 3: gCal: export PYTHONIOENCODING=utf8 && gcalcli agenda 11/02/2019 11/17/2019 --calendar "Jan" --calendar "work" --calendar "FlexR" --details calendar --details url --details location --details description --details email --tsv
2019.11.02 09:27:53 3: gCal: something went wrong (check your parameters) - Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 9, in <module>
load_entry_point('gcalcli==4.0.4', 'console_scripts', 'gcalcli')()
File "build/bdist.linux-armv7l/egg/gcalcli/cli.py", line 155, in main
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 1200, in AgendaQuery
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 1182, in _display_queried_events
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 625, in _tsv
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 233, in _shorten_url
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 168, in get_url_service
File "/usr/local/lib/python2.7/dist-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/googleapiclient/discovery.py", line 235, in build
"name: %s version: %s" % (serviceName, version))
googleapiclient.errors.UnknownApiNameOrVersion: name: urlshortener version: v1
2019.11.02 09:27:53 1: ERROR evaluating {GCALVIEW_DoEnd('gCal||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 662.
Ich hab natürlich zuvor ein bisschen hier im Forum gesucht, aber für meinen konkreten Fall leider nichts gefunden.
Ich hab die .gcalcli_cache und .gcalcli_oauth bereits ein Mal gelöscht und neu authentifiziert.
Auch ein Disable -> reboot -> enable habe ich zwischenzeitlich versucht..
Nun weiß ich nicht mehr weiter.
FHEM hab ich letzte Woche aktualisiert.
gcalcli Version:
pi@raspberrypi:/opt/fhem $ sudo -u fhem gcalcli --version
gcalcli v4.0.4 (Eric Davis, Brian Hartvigsen, Joshua Crowgey)
gcalcli list liefert alle Kalender:
pi@raspberrypi:/opt/fhem $ sudo -u fhem gcalcli list
Access Title
------ -----
owner Jan
owner work
reader FlexR
reader Contacts
reader Week Numbers
Wenn ich nur den Agenda-Befehl aufrufe bekomme ich auch einen Fehler:
pi@raspberrypi:/opt/fhem $ sudo -u fhem gcalcli agenda 11/02/2019 11/17/2019 --calendar "Jan" --calendar "work" --calendar "FlexR" --details calendar --details url --details location --details description --details email --tsv
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 9, in <module>
load_entry_point('gcalcli==4.0.4', 'console_scripts', 'gcalcli')()
File "build/bdist.linux-armv7l/egg/gcalcli/cli.py", line 155, in main
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 1200, in AgendaQuery
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 1182, in _display_queried_events
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 625, in _tsv
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 233, in _shorten_url
File "build/bdist.linux-armv7l/egg/gcalcli/gcal.py", line 168, in get_url_service
File "/usr/local/lib/python2.7/dist-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/googleapiclient/discovery.py", line 235, in build
"name: %s version: %s" % (serviceName, version))
googleapiclient.errors.UnknownApiNameOrVersion: name: urlshortener version: v1
Wenn ich den Parameter ,, —details url" weg lasse, bekomme ich Ergebnisse.
Was muss ich machen, daß es in FHEM wieder funktioniert?
Bin über jede Hilfe dankbar ;-)
Viele Grüße
Okay, hab's nun..
Hab mal den Source überflogen und gesehen, daß an vielen Stellen zwischen gcalcli Version < 4 bzw >= 4 unterschieden wird, was aber scheinbar überall / meistens noch auskommentiert ist und die < 4 Version zieht..
Ich hab den Agenda-Befehlaufruf Mal für die 4er Version Einkommentiert und nun funktioniert es wieder.
Vermutlich wird das Modul gerade dahingehend erweitert oder?
Ich kann leider nicht ganz folgen. Es gab mal eine Zwischenversion von gcalcli, in der ein anderer Befehl notwendig war z.B. wurde dort longurl anstatt url verwendet. Das war aber schnell wieder obsolet und ich habe es daher entfernt. Dein Problem sollte demnach durch ein Update von gcalcli behoben werden können.
Hallo,
Nicht ganz: in der (vermutlich) aktuellen Version von gcalcli heißt ein Parameter config-folder, der in Version 3 noch configFolder hieß - ich musste daher gestern auch die Version im Quellcode auf 4 stellen...
Ronny
Gesendet von meinem LYA-L29 mit Tapatalk
Dazu habe ich schon am 27.September auf github einen issue aufgemacht.
Habe es dann bei mir im Modul geändert und vom update ausgeschlossen.
Gruß
Carlos
Ah stimmt da war was. Okay ich ändere das.
Habs mal eingecheckt. Ich hatte wohl einfach zu viel auskommentiert wie es scheint. Der Code selbst war tatsächlich bereits vorhanden. Wäre schön, wenn ihr es kurz verifizieren könntet.
Ich habe heute einen neuen Kalender in Google angelegt um ihn dann in Fhem zu nutzen bzw angezeigt zu bekommen habe ich die gcalcli_cache und gcalcli_oauth gelöscht und dann mittels
sudo -u fhem gcalcli --noauth_local_webserver list
die erhaltene URL habe ich in dem Browser eingegeben da bekam ich die Meldung
"Die Anmeldung mit Google ist für diese App vorübergehend deaktiviert
Die Verwendung von Google Log-in wurde für diese App noch nicht bestätigt."
Ist das Problem bekannt?
Gruß BlasterX
Nein sry. Hilft dir was davon weiter?
https://support.google.com/accounts/answer/6010255?hl=de (https://support.google.com/accounts/answer/6010255?hl=de)
Nein leider nicht. Das Problem scheint bei mehreren Programmen aufzutreten :(
Gruß BlasterX
Hallo,
allen eine frohe Weihnacht!!
Ich habe das Problem seit gestern auch nach einer neuen Authentifizierung. Aber etwas anders als blasterx.
ZitatIch habe heute einen neuen Kalender in Google angelegt um ihn dann in Fhem zu nutzen bzw angezeigt zu bekommen habe ich die gcalcli_cache und gcalcli_oauth gelöscht und dann mittels
Code: [Auswählen]
sudo -u fhem gcalcli --noauth_local_webserver list
Danach bekam ich den Verification Code von Google. Habe den in die Konsole eingegeben. Auth successful. Wenn ich dann im FHEM den Kalender updaten will kommt im Log die Meldung:
2019.12.25 10:42:56.423 3: Muellkalender blocking call already running
2019.12.25 10:42:59.871 3: Muellkalender: export PYTHONIOENCODING=utf8 && gcalcli agenda 12/25/2019 01/24/2020 --configFolder /opt/fhem --calendar "Müll" --details calendar --details url --details location --details description --details email --tsv
2019.12.25 10:42:59.872 3: Muellkalender: 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/<link skipped>
Enter verification code: Traceback (most recent call last):
File "/usr/bin/gcalcli", line 2649, in <module>
BowChickaWowWow()
File "/usr/bin/gcalcli", line 2495, in BowChickaWowWow
gcal.AgendaQuery(startText=args[1], endText=args[2])
File "/usr/bin/gcalcli", line 1732, in AgendaQuery
eventList = self._SearchForCalEvents(start, end, None)
File "/usr/bin/gcalcli", line 1631, in _SearchForCalEvents
work = self._CalService().events().\
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
Das habe ich doch aber schon gemacht? Hat jemand einen Tipp?
Vermutlich nicht für den fhem User sondern z.b. für den Pi User? Schau doch mal ob das oauth Verzeichnis neu unter /opt/fhem erstellt wurde und die Rechte stimmen.
Was passiert, wenn du das in einer Shell machst:
sudo -u fhem gcalcli list
Zitat von: mumpitzstuff am 25 Dezember 2019, 22:10:58
Schau doch mal ob das oauth Verzeichnis neu unter /opt/fhem erstellt wurde und die Rechte stimmen.
Wurde nicht erstellt. War aber auch kein Verzeichnis, sondern eine Datei.
Zitat
Was passiert, wenn du das in einer Shell machst:
sudo -u fhem gcalcli list
Als Ausgabe kommt diese Meldung:
root@cubietruck:/opt/fhem# sudo -u fhem gcalcli list
Access Title
------ -----
owner Müll
owner xxxxx@gmail.com
reader Feiertage in Deutschland
reader Week Numbers
Du gibst als configFolder /opt/fhem an, aber hier befindet sich anscheinend nicht die benötigte Datei. Irgendwo anders muss sie aber existieren, sonst würden ja die Kalender nicht ausgegeben werden können. Kannst du mal das configFolder aus deinem Device entfernen?
Na super, wenn ich configFolder entferne, gehts...
Ich habe in der geamten Ordnerstruktur auf dem Cubie keine Datei oder einen Ordner mit dem Namen "oauth" gefunden.
Zitat von: blasterx am 01 Dezember 2019, 20:10:05
Ich habe heute einen neuen Kalender in Google angelegt um ihn dann in Fhem zu nutzen bzw angezeigt zu bekommen habe ich die gcalcli_cache und gcalcli_oauth gelöscht und dann mittels
sudo -u fhem gcalcli --noauth_local_webserver list
die erhaltene URL habe ich in dem Browser eingegeben da bekam ich die Meldung
"Die Anmeldung mit Google ist für diese App vorübergehend deaktiviert
Die Verwendung von Google Log-in wurde für diese App noch nicht bestätigt."
Ist das Problem bekannt?
Gruß BlasterX
Hallo Alle,
gibts hierfür eigentlich schon einen Lösungsansatz?
Ich habe ein paar Sachen aktualisiert und bekomme nun seit ein paar Tagen den selben Fehler.
gcalcli Version 4.0.4
in /opt/fhem liegen nach wie vor die .gcalcli_cache und .gcalcli_oauth Dateien.
Führe ich den List - Befehl aus, kommen alle Kalender fehlerfrei raus.
pi@raspberrypi:/opt/fhem $ sudo -u fhem gcalcli list
Access Title
------ -----
owner xxxxxx
owner work
reader FlexR
reader Contacts
reader Feiertage in Deutschland
reader Week Numbers
pi@raspberrypi:/opt/fhem $
Führe ich jedoch den Agenda-Befehl aus, kommt, daß ich mich (neu?) authentifizieren muss:
pi@raspberrypi:/opt/fhem $ sudo -u fhem gcalcli --noauth_local_webserver agenda
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/v2/auth? ..... .googleusercontent.com&access_type=offline
Enter verification code:
Wenn ich auf den Link klicke und mit bei Google einlogge, bekomme ich den bereits zitierten Fehler ,, Die Anmeldung mit Google ist für diese App vorübergehend deaktiviert
Die Verwendung von Google Log-in wurde für diese App noch nicht bestätigt."
Hat jemand eine Idee was ich probieren könnte oder woran es liegt?
Bis vor kurzem hat es eigentlich wunderbar funktioniert.
Danke!
Taucht in deinem Google Account gcalcli bei den Drittanbieter Apps mit Kontozugriff auf? Was passiert, wenn du nur das aufrufst?
sudo -u fhem gcalcli agenda
Ja, im Google Konto tauchte es auf. Hab es heute morgen mal zum Testen entfernt, dachte vielleicht liegt es daran. Jetzt ist es nicht mehr da :(
Aber sowohl gestern Abend, als gcalcli noch in meinem Google Konto aufgeführt war, sowie jetzt wo es nicht mehr da ist, kommen die selben Fehlermeldungen.
Hier der Agenda ohne —noauth..
pi@raspberrypi:/opt/fhem $ sudo -u fhem gcalcli agenda
Your browser has been opened to visit:
https://accounts.google.com/o/oauth2/v2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar&redirect_uri=ht.... .apps.googleusercontent.com&access_type=offline
If your browser is on a different machine then exit and re-run this
application with the command-line parameter
--noauth_local_webserver
Komischerweise geht der List Befehl aktuell immernoch obwohl ich im Google Account den gcalcli entfernt habe.
Habe auch mal zwischenzeitlich die .gcalcli_cache und .gcalcli_oauth umbenannt.
List geht dann natürlich auch nicht mehr, aber Google erlaubt die Authentifizierung leider dennoch nicht..
Schwierig. Im Internet findet man ziemlich viele, die ebenfalls ein solches Problem haben. Leider hat keiner eine Lösung dafür...
Schau mal auf der gcalcli Seite nach den Python Bibliotheken und prüf mal, ob du die bei dir aktualisieren kannst.
https://github.com/insanum/gcalcli (https://github.com/insanum/gcalcli)
Ansonsten ist auf der Seite auch noch ein anderer Weg beschrieben die Authentifizierung durchzuführen. Vielleicht führt die ja zum Erfolg.
Was passiert, wenn du als Pi User die Authentifizierung durchzuführen versuchst?
Oh danke für den Tipp, hab es nun hinbekommen.
Vorweg: das Problem dürften tatsächlich alle bekommen, die eine Änderung an den Kalendern oder an der Verbindung machen, z.B. Neu-Installation oder Upgrade (wie bei mir)..
Denn offensichtlich zertifiziert Google nach und nach sämtliche Applikationen die auf den Google-Login zurückgreifen. Dafür muss der App-Entwickler (hier von gcalcli) bei Google einen entsprechenden Zertifizierungsantrag stellen. Nach positiver Prüfung von Google wird die App dann (wieder) zugelassen.
Der gcalcli-Entwickler schreibt zu einem entsprechendem Git-Issue, daß er dies bereits Mitte Nov.2019 eingereicht hat, allerdings kann es lt. Google einige Wochen dauern, bis das geprüft ist. Siehe hier: https://github.com/insanum/gcalcli/issues/497#issuecomment-554433146 (https://github.com/insanum/gcalcli/issues/497#issuecomment-554433146)
Als ,,Workaround" kann man solange bei Google eine eigene App in der Developer Console anmelden, dafür dann eine Client-Id und ein Client-Secret erstellen und im file .gcalclirc hinterlegen.
Danach Authentifizierung wie gewohnt. Dabei wird dann die Authentifizierung nicht für gcalcli sondern die ,,eigene App" gemacht, wo man bei der Meldung ,,App nicht von Google zertifiziert" eine Ausnahme Regel quittieren kann.
Solange wie gcalcli nicht offiziell von Google zertifiziert ist, scheint dies der einzige Weg zu sein.
Mit ,,eigene App anmelden" hört sich erstmal kompliziert an, ist aber sehr schnell erledigt.
Hier ist eine detaillierte Anleitung dazu. Hat bei mir nur 5 min gedauert..
https://github.com/insanum/gcalcli#login-information (https://github.com/insanum/gcalcli#login-information)
Viele Grüße
Wow super! Vielen Dank für die detaillierte Analyse!
Hello zusammen,
nun bin ich also auch betroffen... das Modul zeigt nach Update von FHEM und Raspi nichts mehr, der "WAF" im Eimer.
Wenn ich all die schönen Dinge hier befolge, habe ich dasselbe Problem "die App wurde vorübergehend deaktiviert".
Habe dann, wie in dem Post von jle eine neue Applikation über Google-API angelegt. Diese wird angezeigt, API, Auth usw. angelegt. Unsicheren Zugriff zugelassen.
Dann habe ich .gcal_oauth und die cache gelöscht, und jetzt macht mir der Raspi keine neue Datei für die Authentifizierung mehr. Nach Updates von Python kommt jetzt sogar noch eine zusätzliche Fehlermeldung, die ich vorher nicht hatte.
pi@master:/opt/fhem $ sudo -u fhem gcalcli --noauth_local_webserver list --config-folder /opt/fhem
Traceback (most recent call last):
File "/usr/local/bin/gcalcli", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/dist-packages/gcalcli/cli.py", line 147, in main
cal_names=cal_names, printer=printer, **vars(parsed_args)
File "/usr/local/lib/python3.5/dist-packages/gcalcli/gcal.py", line 67, in __init__
self._get_cached()
File "/usr/local/lib/python3.5/dist-packages/gcalcli/gcal.py", line 186, in _get_cached
self.all_cals = self.cache['all_cals']
KeyError: 'all_cals'
Der Fehler ist derselbe, auch wenn ich den config-folder weglasse. Auf dem Raspi gibt es scheinbar keine andere .gcalcli_oauth oder ähnliche Datei mehr.
Any ideas?
lg Shamal
Was passiert wenn du das machst?
sudo -u fhem gcalcli list --client_id=xxxxxxxxxxxxxxx.apps.googleusercontent.com --client_secret=xxxxxxxxxxxxxxxxx
Hallo Mumpitzstuff,
das wird noch spannender: (und zwar sowohl mit dem neuen (heute in der console erstellten, als auch mit dem bestehenden Kalender):
gcalcli: error: unrecognized arguments: --client_id=xxxx.apps.googleusercontent.com --client_secret=-xxx
(die richtigen Werte habe hier nur ausge-X-t).
Seit dem Update vorige Woche spinnt das FHEM überhaupt nur mehr, ständige Abstürze mit cannot fork (alle presence-pings mittlerweile abgedreht)... die Verzweiflung wächst...
lg Shamal
Was für eine Version von gcalcli hast du? Vermutlich eine sehr alte?!?
Hallo,
sorry, leider nicht - 4.2.0
EDIT: bin jetzt draufgekommen, dass --client_id und --client_secret durch --client-id und --client-secret ersetzt wurden.
Jetzt ist die Autorisierung erfolgreich durchgegangen.
Ebenso habe ich einen Zustimmungsbildschirm erstellt und dem User in der Google-Dev-Console die Zugriffe auf den Kalender gewährt. Nach dem Durchklicken im Browser habe ich dann endlich einen Auth-Code bekommen, der funktioniert hat und die Files wurden erstellt.
Jetzt funktioniert das Teil wieder... lediglich das FHEM-Device muss ich nochmal anlegen, das hatte ich in der Zwischenzeit gelöscht :'(
lg Shamal
Das die da immer an den Parametern rum machen müssen. Schrecklich. Aber super das es geklappt hat.
Hallo Mumpitzstuff,
ich hab nach langer Zeit mich wieder hingesetzt, um meinen Abfallkalender endlich zum Laufen zu bringen.
Aus welchem Grund auch immer wurde mein Google-Kalender nicht ausgelesen. Heute hat es auf Anhieb funktioniert.
UND ICH HAB KEINE AHNUNG WARUM ;D
Von mir ein herzliches Dankeschön! Endlich kann ich das fürs Tablet-UI verwenden...
Kann mir bitte jemand auf die Sprünge helfen?
Bekomme (durch Neuinstallation) meinen Google-Kalender nicht mehr zum laufen.
Soweit ich es aus den letzten Posts heraus gelesen habe, habe ich folgendes getan.
- gcalcli installiert -> gcalcli v4.0.4 (Eric Davis, Brian Hartvigsen, Joshua Crowgey)
(Auch ein Git Clone bringt nur diese Version)
- Diese Google-Developer Geschichte um ID und Secret zu erhalten
-sudo -u fhem gcalcli list --client-id=xxxxxxxxxxxxxxx.apps.googleusercontent.com --client-secret=xxxxxxxxxxxxxxxxx
- den gezeigten Link in den Browser kopiert.
Hier meldet google nun
Error: invalid_client
The OAuth client was not found.
Request Details
client_id=xxx
redirect_uri=urn:ietf:wg:oauth:2.0:oob
scope=https://www.googleapis.com/auth/calendar
access_type=offline
response_type=code
Was mache ich falsch?
Bei mir wird python-gdata nicht installiert :
root@T620-FHEM:~# sudo apt-get install python-gdata
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Paket python-gdata ist nicht verfügbar, wird aber von einem anderen Paket
referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst
wurde oder nur aus einer anderen Quelle verfügbar ist.
E: Für Paket »python-gdata« existiert kein Installationskandidat.
root@T620-FHEM:~#
Kennt jemand Abhilfe ?
Hello,
ich bin jetzt langsam nicht nur am Verzweifeln, ich pfeif bald auf den ganzen Mist. Nach einer Übersiedlung des FHEM auf den Raspi4 mit Buster ( hat die auth wieder nicht funktioniert (wurde wieder von Google gesperrt). Sämtliche Versuche das Zeug neu aufzusetzen haben lediglich dazu geführt, dass offensichtlich durch ein python2.7 (welches plötzlich als default aktiv war, weiss der Geier warum) die ganze gcalcli so dermassen zerschossen war, das nun gar nix mehr geht.
für Buster-User:
kommt bloß nicht auf die Idee (auch nach einem remove der apt-get gcalcli mit autoremove, update,reboot,etc.) die gcalcli aus dem github aufzusetzen. Danach spinnt sich das gesamte Teil aus und produziert jede Menge Fehler, die ihr auch im google nicht findet.
Ich werde jetzt ein Backup von FHEM machen, dann den ganzen Raspi komplett neu aufsetzen, und falls das Teil dann wieder nicht tut, such ich mir endgültig ein anderes Home-System.
frust off,
Shamal
gcalcli hat Probleme mit dem Google Login. Ob sich daran jemals etwas ändern wird, kann ich nicht sagen. Ich kann hier leider diesbezüglich auch keine Experimente machen, da es bei mir dann eventuell auch nicht mehr geht.
Wenn es partout nicht geht, dann könnt ihr auf das Calendar Modul ausweichen.
Ansonsten gibt es hier noch eine Beschreibung ganz unten:
https://github.com/insanum/gcalcli/issues/497 (https://github.com/insanum/gcalcli/issues/497)
Die Google Calendar API könnt ihr hier aktivieren und dann die notwendigen OAuth Daten erzeugen:
https://console.developers.google.com/?hl=de (https://console.developers.google.com/?hl=de)
Hallo Zusammen,
dieses Modul beschert mir ganz schön graue Haare. Nachdem ich mein Python (beim Updateversuch) zerschossen habe, habe ich alles komplett neu aufgesetzt und auf ein frisches FHEM gcalcli installieren können. und GCALVIEW spuckt mir Ergebnisse für die nächsten 2 Wochen aus.
Allerdings komm ich mit den Readingsgprs nicht klar. Ich hätte zuerst versucht deines für den allgemeinen Kalender zu übernehmen. Mit Copy und Paste gehts leider nicht. Dann habe ich versucht es händisch nach zu basteln, geht auch nicht. Sieht nun wie folgt aus:
Internals:
CFGFN
DEF <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>\ KALENDER_VIEW:t_001_bdate,t_001_weekday,t_001_timeshort,t_001_summary,t_001_location\ KALENDER_VIEW:t_002_bdate,t_002_weekday,t_002_timeshort,t_002_summary,t_002_location\ KALENDER_VIEW:t_003_bdate,t_003_weekday,t_003_timeshort,t_003_summary,t_003_location\ KALENDER_VIEW:t_004_bdate,t_004_weekday,t_004_timeshort,t_004_summary,t_004_location\ KALENDER_VIEW:t_005_bdate,t_005_weekday,t_005_timeshort,t_005_summary,t_005_location\ KALENDER_VIEW:t_006_bdate,t_006_weekday,t_006_timeshort,t_006_summary,t_006_location\ KALENDER_VIEW:t_007_bdate,t_007_weekday,t_007_timeshort,t_007_summary,t_007_location\ KALENDER_VIEW:t_008_bdate,t_008_weekday,t_008_timeshort,t_008_summary,t_008_location\ KALENDER_VIEW:t_009_bdate,t_009_weekday,t_009_timeshort,t_009_summary,t_009_location\ KALENDER_VIEW:t_010_bdate,t_010_weekday,t_010_timeshort,t_010_summary,t_010_location\ KALENDER_VIEW:t_011_bdate,t_011_weekday,t_011_timeshort,t_011_summary,t_011_location\ KALENDER_VIEW:t_012_bdate,t_012_weekday,t_012_timeshort,t_012_summary,t_012_location\ KALENDER_VIEW:t_013_bdate,t_013_weekday,t_013_timeshort,t_013_summary,t_013_location\ KALENDER_VIEW:t_014_bdate,t_014_weekday,t_014_timeshort,t_014_summary,t_014_location\ KALENDER_VIEW:t_015_bdate,t_015_weekday,t_015_timeshort,t_015_summary,t_015_location\ KALENDER_VIEW:t_016_bdate,t_016_weekday,t_016_timeshort,t_016_summary,t_016_location\ KALENDER_VIEW:t_017_bdate,t_017_weekday,t_017_timeshort,t_017_summary,t_017_location\ KALENDER_VIEW:t_018_bdate,t_018_weekday,t_018_timeshort,t_018_summary,t_018_location\ KALENDER_VIEW:t_019_bdate,t_019_weekday,t_019_timeshort,t_019_summary,t_019_location\ KALENDER_VIEW:t_020_bdate,t_020_weekday,t_020_timeshort,t_020_summary,t_020_location
FUUID 5e524426-f33f-91fb-5ce4-fab8d56c0807ff1c
NAME rg_KALENDER
NR 313
NTFY_ORDER 50-rg_KALENDER
STATE Initialized
TYPE readingsGroup
changed 0
mayBeVisible 1
CONTENT:
CONTENT2:
DEVICES:
fhem:
lastDefChange 27
last_update 1582450015.7302
helper:
DEF
nameStyle style="font-weight:bold;text-decoration:underline;"
valueFormat if ($READING =~ /bdate$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/bdate$//;;\
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Heute";;\
}\
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Morgen";;\
}\
else\
{\
# the follwoing line strips the year of the date (remove it if needed)\
substr($VALUE, 0, 5);;\
}\
}\
elsif ($READING =~ /weekday$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/weekday$//;;\
\
# the follwoing line strips the weekday down to 3 chars (remove it if needed)\
substr($VALUE, 0, 3);;\
}\
elsif ($READING =~ /summary$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/summary$//;;\
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');;\
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);;\
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';;\
if (defined($age))\
{\
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;;\
}\
else\
{\
$link =~ s/\>link\</ $style\>$VALUE\</;;\
}\
$link;;\
}
Attributes:
nameStyle style="font-weight:bold;text-decoration:underline;"
nonames 1
notime 1
room KALENDER
valueFormat if ($READING =~ /bdate$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/bdate$//;;\
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Heute";;\
}\
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Morgen";;\
}\
else\
{\
# the follwoing line strips the year of the date (remove it if needed)\
substr($VALUE, 0, 5);;\
}\
}\
elsif ($READING =~ /weekday$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/weekday$//;;\
\
# the follwoing line strips the weekday down to 3 chars (remove it if needed)\
substr($VALUE, 0, 3);;\
}\
elsif ($READING =~ /summary$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/summary$//;;\
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');;\
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);;\
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';;\
if (defined($age))\
{\
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;;\
}\
else\
{\
$link =~ s/\>link\</ $style\>$VALUE\</;;\
}\
$link;;\
}
Meine 99_myutils sieht so aus:
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
sub recyclebinCounter($$)
{
my ($device, $reading) = @_;
my $days = ReadingsVal($device, $reading.'days', 'na');
my $daysnext = ReadingsVal($device, $reading.'daysnext', 'na');
my $color_days = ('1' eq $days ? 'red' : '2' eq $days ? 'darkorange' : 'green');
return '<div style="width:16px;height:14px;border-radius:14px;color:white;background-color:'.
$color_days.
';font-size:10px;font-weight:700;text-align:center;position:relative;padding-top:1%;'.
'left:-29px;top:-4px;">'.$days.'</div>'.
'<div style="width:16px;height:14px;border-radius:14px;color:white;'.
'border:1px solid white;'.
'font-size:10px;font-weight:700;text-align:center;position:relative;padding-top:1%;'.
'left:-11px;top:-19px;">'.$daysnext.'</div>';
}
1;
Wo hab ich den Fehler gemacht?
Viele Grüße
Die ganzen Backslashes in deiner Readinggroup sind falsch. Was ich dort im ersten Beitrag gepostet habe, lässt sich nur per RAW Import 1:1 importieren.
Mach mal ein beliebiges Device auf, so das du Internals/Readings sehen kannst. Dann scrollst du gaaaannnzz nach unten und klickst Raw definition an (dritte von links). Dort löschst du alles raus und fügst das was ich gepostet habe ein. Dann noch Execute drücken und fertig. Das bereits existieren rg_KALENDER vorher noch löschen!
Hilft dir das weiter?
Hallo, danke und sorry für die späte Antwort.
Geht ein wenig drunter und drüber im Moment.
Irgendwo ist der Hund drinnen. Es werden mir leider keine Termine angezeigt. Ich kann aber den Fehler nicht finden.
Internals:
DEF <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>
KALENDER_VIEW:t_001_bdate,t_001_weekday,t_001_timeshort,t_001_summary,t_001_location
KALENDER_VIEW:t_002_bdate,t_002_weekday,t_002_timeshort,t_002_summary,t_002_location
KALENDER_VIEW:t_003_bdate,t_003_weekday,t_003_timeshort,t_003_summary,t_003_location
KALENDER_VIEW:t_004_bdate,t_004_weekday,t_004_timeshort,t_004_summary,t_004_location
KALENDER_VIEW:t_005_bdate,t_005_weekday,t_005_timeshort,t_005_summary,t_005_location
KALENDER_VIEW:t_006_bdate,t_006_weekday,t_006_timeshort,t_006_summary,t_006_location
KALENDER_VIEW:t_007_bdate,t_007_weekday,t_007_timeshort,t_007_summary,t_007_location
KALENDER_VIEW:t_008_bdate,t_008_weekday,t_008_timeshort,t_008_summary,t_008_location
KALENDER_VIEW:t_009_bdate,t_009_weekday,t_009_timeshort,t_009_summary,t_009_location
KALENDER_VIEW:t_010_bdate,t_010_weekday,t_010_timeshort,t_010_summary,t_010_location
KALENDER_VIEW:t_011_bdate,t_011_weekday,t_011_timeshort,t_011_summary,t_011_location
KALENDER_VIEW:t_012_bdate,t_012_weekday,t_012_timeshort,t_012_summary,t_012_location
KALENDER_VIEW:t_013_bdate,t_013_weekday,t_013_timeshort,t_013_summary,t_013_location
KALENDER_VIEW:t_014_bdate,t_014_weekday,t_014_timeshort,t_014_summary,t_014_location
KALENDER_VIEW:t_015_bdate,t_015_weekday,t_015_timeshort,t_015_summary,t_015_location
KALENDER_VIEW:t_016_bdate,t_016_weekday,t_016_timeshort,t_016_summary,t_016_location
KALENDER_VIEW:t_017_bdate,t_017_weekday,t_017_timeshort,t_017_summary,t_017_location
KALENDER_VIEW:t_018_bdate,t_018_weekday,t_018_timeshort,t_018_summary,t_018_location
KALENDER_VIEW:t_019_bdate,t_019_weekday,t_019_timeshort,t_019_summary,t_019_location
KALENDER_VIEW:t_020_bdate,t_020_weekday,t_020_timeshort,t_020_summary,t_020_location
FUUID 5e530c63-f33f-91fb-9f48-6efec69db95566fd
NAME rg_KALENDER
NR 15
NTFY_ORDER 50-rg_KALENDER
STATE Initialized
TYPE readingsGroup
changed 0
mayBeVisible 1
CONTENT:
CONTENT2:
DEVICES:
ARRAY(0x2189f20)
fhem:
lastDefChange 1
last_update 1583369133.39386
helper:
DEF
nameStyle style="font-weight:bold;text-decoration:underline;"
valueFormat {
if ($READING =~ /bdate$/)
{
my $readingStart = $READING;
$readingStart =~ s/bdate$//;
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Heute";
}
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Morgen";
}
else
{
# the follwoing line strips the year of the date (remove it if needed)
substr($VALUE, 0, 5);
}
}
elsif ($READING =~ /weekday$/)
{
my $readingStart = $READING;
$readingStart =~ s/weekday$//;
# the follwoing line strips the weekday down to 3 chars (remove it if needed)
substr($VALUE, 0, 3);
}
elsif ($READING =~ /summary$/)
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';
if (defined($age))
{
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;
}
else
{
$link =~ s/\>link\</ $style\>$VALUE\</;
}
$link;
}
}
valueStyle {
my $readingStart = $READING;
$readingStart =~ s/(t_\d+_).+/$1/;
'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"'
}
Attributes:
nameStyle style="font-weight:bold;text-decoration:underline;"
nonames 1
notime 1
room KALENDER
valueFormat {
if ($READING =~ /bdate$/)
{
my $readingStart = $READING;
$readingStart =~ s/bdate$//;
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Heute";
}
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Morgen";
}
else
{
# the follwoing line strips the year of the date (remove it if needed)
substr($VALUE, 0, 5);
}
}
elsif ($READING =~ /weekday$/)
{
my $readingStart = $READING;
$readingStart =~ s/weekday$//;
# the follwoing line strips the weekday down to 3 chars (remove it if needed)
substr($VALUE, 0, 3);
}
elsif ($READING =~ /summary$/)
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';
if (defined($age))
{
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;
}
else
{
$link =~ s/\>link\</ $style\>$VALUE\</;
}
$link;
}
}
valueStyle {
my $readingStart = $READING;
$readingStart =~ s/(t_\d+_).+/$1/;
'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"'
}
Der Kalender von Gcalview ist voll mit Einträgen aus dem Kalender.
Zitat von: shamal2008 am 21 Januar 2020, 18:32:20
Hallo,
sorry, leider nicht - 4.2.0
EDIT: bin jetzt draufgekommen, dass --client_id und --client_secret durch --client-id und --client-secret ersetzt wurden.
Jetzt ist die Autorisierung erfolgreich durchgegangen.
Ebenso habe ich einen Zustimmungsbildschirm erstellt und dem User in der Google-Dev-Console die Zugriffe auf den Kalender gewährt. Nach dem Durchklicken im Browser habe ich dann endlich einen Auth-Code bekommen, der funktioniert hat und die Files wurden erstellt.
Jetzt funktioniert das Teil wieder... lediglich das FHEM-Device muss ich nochmal anlegen, das hatte ich in der Zwischenzeit gelöscht :'(
lg Shamal
@shamal2008 Kannst du vielleicht ein bisschen darauf eingehen was du in der Google-Dev-Console bei dem Zustimmungsbildschirm angegeben hast. Ich befürchte ich komm an der Stelle nicht weiter. Ich habe da zwar was angegeben, aber der Zugriff auf meine Kalender funktioniert dennoch nicht. Für ein paar Tipps wäre ich dankbar. Der Tipp mit der Schreibweise im Link war auch schon super!
Zitat von: xeenon am 05 März 2020, 01:49:20
Hallo, danke und sorry für die späte Antwort.
Geht ein wenig drunter und drüber im Moment.
Irgendwo ist der Hund drinnen. Es werden mir leider keine Termine angezeigt. Ich kann aber den Fehler nicht finden.
Internals:
DEF <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>
KALENDER_VIEW:t_001_bdate,t_001_weekday,t_001_timeshort,t_001_summary,t_001_location
KALENDER_VIEW:t_002_bdate,t_002_weekday,t_002_timeshort,t_002_summary,t_002_location
KALENDER_VIEW:t_003_bdate,t_003_weekday,t_003_timeshort,t_003_summary,t_003_location
KALENDER_VIEW:t_004_bdate,t_004_weekday,t_004_timeshort,t_004_summary,t_004_location
KALENDER_VIEW:t_005_bdate,t_005_weekday,t_005_timeshort,t_005_summary,t_005_location
KALENDER_VIEW:t_006_bdate,t_006_weekday,t_006_timeshort,t_006_summary,t_006_location
KALENDER_VIEW:t_007_bdate,t_007_weekday,t_007_timeshort,t_007_summary,t_007_location
KALENDER_VIEW:t_008_bdate,t_008_weekday,t_008_timeshort,t_008_summary,t_008_location
KALENDER_VIEW:t_009_bdate,t_009_weekday,t_009_timeshort,t_009_summary,t_009_location
KALENDER_VIEW:t_010_bdate,t_010_weekday,t_010_timeshort,t_010_summary,t_010_location
KALENDER_VIEW:t_011_bdate,t_011_weekday,t_011_timeshort,t_011_summary,t_011_location
KALENDER_VIEW:t_012_bdate,t_012_weekday,t_012_timeshort,t_012_summary,t_012_location
KALENDER_VIEW:t_013_bdate,t_013_weekday,t_013_timeshort,t_013_summary,t_013_location
KALENDER_VIEW:t_014_bdate,t_014_weekday,t_014_timeshort,t_014_summary,t_014_location
KALENDER_VIEW:t_015_bdate,t_015_weekday,t_015_timeshort,t_015_summary,t_015_location
KALENDER_VIEW:t_016_bdate,t_016_weekday,t_016_timeshort,t_016_summary,t_016_location
KALENDER_VIEW:t_017_bdate,t_017_weekday,t_017_timeshort,t_017_summary,t_017_location
KALENDER_VIEW:t_018_bdate,t_018_weekday,t_018_timeshort,t_018_summary,t_018_location
KALENDER_VIEW:t_019_bdate,t_019_weekday,t_019_timeshort,t_019_summary,t_019_location
KALENDER_VIEW:t_020_bdate,t_020_weekday,t_020_timeshort,t_020_summary,t_020_location
FUUID 5e530c63-f33f-91fb-9f48-6efec69db95566fd
NAME rg_KALENDER
NR 15
NTFY_ORDER 50-rg_KALENDER
STATE Initialized
TYPE readingsGroup
changed 0
mayBeVisible 1
CONTENT:
CONTENT2:
DEVICES:
ARRAY(0x2189f20)
fhem:
lastDefChange 1
last_update 1583369133.39386
helper:
DEF
nameStyle style="font-weight:bold;text-decoration:underline;"
valueFormat {
if ($READING =~ /bdate$/)
{
my $readingStart = $READING;
$readingStart =~ s/bdate$//;
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Heute";
}
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Morgen";
}
else
{
# the follwoing line strips the year of the date (remove it if needed)
substr($VALUE, 0, 5);
}
}
elsif ($READING =~ /weekday$/)
{
my $readingStart = $READING;
$readingStart =~ s/weekday$//;
# the follwoing line strips the weekday down to 3 chars (remove it if needed)
substr($VALUE, 0, 3);
}
elsif ($READING =~ /summary$/)
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';
if (defined($age))
{
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;
}
else
{
$link =~ s/\>link\</ $style\>$VALUE\</;
}
$link;
}
}
valueStyle {
my $readingStart = $READING;
$readingStart =~ s/(t_\d+_).+/$1/;
'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"'
}
Attributes:
nameStyle style="font-weight:bold;text-decoration:underline;"
nonames 1
notime 1
room KALENDER
valueFormat {
if ($READING =~ /bdate$/)
{
my $readingStart = $READING;
$readingStart =~ s/bdate$//;
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Heute";
}
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))
{
"Morgen";
}
else
{
# the follwoing line strips the year of the date (remove it if needed)
substr($VALUE, 0, 5);
}
}
elsif ($READING =~ /weekday$/)
{
my $readingStart = $READING;
$readingStart =~ s/weekday$//;
# the follwoing line strips the weekday down to 3 chars (remove it if needed)
substr($VALUE, 0, 3);
}
elsif ($READING =~ /summary$/)
{
my $readingStart = $READING;
$readingStart =~ s/summary$//;
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"';
if (defined($age))
{
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;
}
else
{
$link =~ s/\>link\</ $style\>$VALUE\</;
}
$link;
}
}
valueStyle {
my $readingStart = $READING;
$readingStart =~ s/(t_\d+_).+/$1/;
'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "white").'"'
}
Der Kalender von Gcalview ist voll mit Einträgen aus dem Kalender.
Wie heisst denn dein Kalender Device?
Alles klar, danke.. ich konnte l und I nicht auseinander halten...
Nur noch schauen wie ich das vernünftig in FTUI bekomme, dann bin ich zufrieden
Zitat von: trinitywhm am 05 März 2020, 07:53:01
@shamal2008 Kannst du vielleicht ein bisschen darauf eingehen was du in der Google-Dev-Console bei dem Zustimmungsbildschirm angegeben hast. Ich befürchte ich komm an der Stelle nicht weiter. Ich habe da zwar was angegeben, aber der Zugriff auf meine Kalender funktioniert dennoch nicht. Für ein paar Tipps wäre ich dankbar. Der Tipp mit der Schreibweise im Link war auch schon super!
Ok, an der Stelle in der Google-Dev-Console bin ich glaube ich weiter gekommen. Ich hätte Punkt 8 und 9 in dieser Anleitung genauer lesen und befolgen sollen: https://github.com/insanum/gcalcli/issues/497
Aber nichtsdestotrotz funktioniert es immernoch nicht. Ich bekomme eine Fehlermeldung im Log (beim update des Devices oder reboot von FHEM)
ERROR evaluating {GCALVIEW_DoEnd('CAL_Hausarbeit||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 662.
Weiß jemand woran es denn jetzt noch liegt?
Was für eine Gcalcli Version hast du denn? Wenn du verbose auf 5 stellst, dann bekommst du erweiterte Meldungen im Log. Vielleicht gibt das etwas her.
Version ist 4.0.4.
Mit verbose 5 kam im Log noch eine andere Meldungen (ist ja klar...), aber unter anderem auch ein Link unter dem ich die Google Kalender API noch aktivieren musste. Das war wohl bisher nicht nötig, aber jetzt ist es das wohl schon. Denn kaum hatte ich diese aktiviert und ca. 5 Minuten gewartet, funktionieren alle meine Kalender wieder. Also wer das Problem auch hat, verbose 5 einschalten, Link aus Log öffnen und Kalender API aktivieren. Schon läufts wieder... Mal sehen wie lange bis das nächste Mal wieder was geändert wird. ;)
Hallo Mumpitzstuff,
mir ist aufgefallen, das obwohl "attr GoogleCalendar event-on-change-reading .." gesetzt ist, bei jedem "set GoogleCalendar update",
für existierende readings jedesmal wieder neue events generiert werden. Ist das beabsichtigt?
Hier das listing und der Auszug aus dem Eventmonitor.
Internals:
DEF 900
FUUID dadaadad
NAME GoogleCalendar
NOTIFYDEV global
NR 2588
NTFY_ORDER 50-GoogleCalendar
STATE t: 4 td: 0 tm: 4
TIMEOUT 900
TYPE GCALVIEW
VERSION 1.0.9
READINGS:
2020-03-21 19:35:25 c-term 4
2020-03-21 19:35:25 c-today 0
2020-03-21 19:35:25 c-tomorrow 4
2020-03-21 19:35:25 state t: 4 td: 0 tm: 4
2020-03-21 19:35:25 t_001_age 1
2020-03-21 19:35:25 t_001_author abc.def@gmail.com
2020-03-21 19:35:25 t_001_bdate 22.03.2020
2020-03-21 19:35:25 t_001_btime 00:00
2020-03-21 19:35:25 t_001_daysleft 1
2020-03-21 19:35:25 t_001_daysleftLong tomorrow
2020-03-21 19:35:25 t_001_description
2020-03-21 19:35:25 t_001_edate 23.03.2020
2020-03-21 19:35:25 t_001_etime 00:00
2020-03-21 19:35:25 t_001_location 1.1.2019
2020-03-21 19:35:25 t_001_source Geburtstage
2020-03-21 19:35:25 t_001_sourcecolor green
2020-03-21 19:35:25 t_001_summary Alfred
2020-03-21 19:35:25 t_001_timeshort all-day
2020-03-21 19:35:25 t_001_url <html><a href="https://www.google.com/calendar/event?eid=aaaaaaa" target="_blank">link</a></html>
2020-03-21 19:35:25 t_001_weekday Sunday
2020-03-21 19:35:25 t_002_age 2
2020-03-21 19:35:25 t_002_author abc.def@gmail.com
2020-03-21 19:35:25 t_002_bdate 22.03.2020
2020-03-21 19:35:25 t_002_btime 00:00
2020-03-21 19:35:25 t_002_daysleft 1
2020-03-21 19:35:25 t_002_daysleftLong tomorrow
2020-03-21 19:35:25 t_002_description
2020-03-21 19:35:25 t_002_edate 23.03.2020
2020-03-21 19:35:25 t_002_etime 00:00
2020-03-21 19:35:25 t_002_location 1.1.2018
2020-03-21 19:35:25 t_002_source Geburtstage
2020-03-21 19:35:25 t_002_sourcecolor green
2020-03-21 19:35:25 t_002_summary abc
2020-03-21 19:35:25 t_002_timeshort all-day
2020-03-21 19:35:25 t_002_url <html><a href="https://www.google.com/calendar/event?eid=aaaaaaa" target="_blank">link</a></html>
2020-03-21 19:35:25 t_002_weekday Sunday
2020-03-21 19:35:25 t_003_age 57
2020-03-21 19:35:25 t_003_author abc.def@gmail.com
2020-03-21 19:35:25 t_003_bdate 22.03.2020
2020-03-21 19:35:25 t_003_btime 00:00
2020-03-21 19:35:25 t_003_daysleft 1
2020-03-21 19:35:25 t_003_daysleftLong tomorrow
2020-03-21 19:35:25 t_003_description
2020-03-21 19:35:25 t_003_edate 23.03.2020
2020-03-21 19:35:25 t_003_etime 00:00
2020-03-21 19:35:25 t_003_location 1.1.1963
2020-03-21 19:35:25 t_003_source Geburtstage
2020-03-21 19:35:25 t_003_sourcecolor green
2020-03-21 19:35:25 t_003_summary test
2020-03-21 19:35:25 t_003_timeshort all-day
2020-03-21 19:35:25 t_003_url <html><a href="https://www.google.com/calendar/event?eid=aaa" target="_blank">link</a></html>
2020-03-21 19:35:25 t_003_weekday Sunday
2020-03-21 19:35:25 t_004_author abc.def@gmail.com
2020-03-21 19:35:25 t_004_bdate 22.03.2020
2020-03-21 19:35:25 t_004_btime 00:00
2020-03-21 19:35:25 t_004_daysleft 1
2020-03-21 19:35:25 t_004_daysleftLong tomorrow
2020-03-21 19:35:25 t_004_description
2020-03-21 19:35:25 t_004_edate 23.03.2020
2020-03-21 19:35:25 t_004_etime 00:00
2020-03-21 19:35:25 t_004_location MusselDusseel
2020-03-21 19:35:25 t_004_source abc.def@gmail.com
2020-03-21 19:35:25 t_004_sourcecolor brown
2020-03-21 19:35:25 t_004_summary Meet Moni in Müssing
2020-03-21 19:35:25 t_004_timeshort all-day
2020-03-21 19:35:25 t_004_url <html><a href="https://www.google.com/calendar/event?eid=aaa" target="_blank">link</a></html>
2020-03-21 19:35:25 t_004_weekday Sunday
2020-03-21 19:35:25 tomorrow_001_age 1
2020-03-21 19:35:25 tomorrow_001_author abc.def@gmail.com
2020-03-21 19:35:25 tomorrow_001_bdate 22.03.2020
2020-03-21 19:35:25 tomorrow_001_btime 00:00
2020-03-21 19:35:25 tomorrow_001_daysleft 1
2020-03-21 19:35:25 tomorrow_001_daysleftLong tomorrow
2020-03-21 19:35:25 tomorrow_001_description
2020-03-21 19:35:25 tomorrow_001_edate 23.03.2020
2020-03-21 19:35:25 tomorrow_001_etime 00:00
2020-03-21 19:35:25 tomorrow_001_location 1.1.2019
2020-03-21 19:35:25 tomorrow_001_source Geburtstage
2020-03-21 19:35:25 tomorrow_001_sourcecolor green
.......
2020-03-21 19:35:25 tomorrow_004_weekday Sunday
helper:
Attributes:
ageSource location
calendarDays 9
calendarFilter abc.def@gmail.com,Geburtstage,Reminders
calendarIncludeStarted Geburtstage
calendarType standard
comment userAttr
calendarFilter:multiple-strict,abc.def@gmail.com,Contacts,Geburtstage,Holidays#in#Germany
disable 0
event-on-change-reading to.*_00[1-9]_[be]time:.*
room Calendar
sendMyPush on
showAge 1
sourceColor abc.def@gmail.com:brown,Geburtstage:green,Reminders:#EE9A00
updateInterval 900
userattr sendMyPush:on,off calendarFilter:multiple-strict,abc.def@gmail.com,Geburtstage,Holidays#in#Germany,Reminders calendarIncludeStarted:multiple-strict,abc.def@gmail.com,Geburtstage,Holidays#in#Germany,Reminders
webCmd update
Auszug aus dem Eventmonitor, bei 2x "set GoogleCalendar update":
2020-03-21 19:49:01 GCALVIEW GoogleCalendar update
2020-03-21 19:49:03 GCALVIEW GoogleCalendar tomorrow_001_btime: 00:00
2020-03-21 19:49:03 GCALVIEW GoogleCalendar tomorrow_001_etime: 00:00
2020-03-21 19:49:03 GCALVIEW GoogleCalendar tomorrow_002_btime: 00:00
2020-03-21 19:49:03 GCALVIEW GoogleCalendar tomorrow_002_etime: 00:00
2020-03-21 19:49:03 GCALVIEW GoogleCalendar tomorrow_003_btime: 00:00
2020-03-21 19:49:03 GCALVIEW GoogleCalendar tomorrow_003_etime: 00:00
2020-03-21 19:49:03 GCALVIEW GoogleCalendar tomorrow_004_btime: 00:00
2020-03-21 19:49:03 GCALVIEW GoogleCalendar tomorrow_004_etime: 00:00
2020-03-21 19:49:04 FBDECT Schalter_DS213 power: 1.07 W
2020-03-21 19:49:04 FBDECT Schalter_iNUC power: 10.01 W
2020-03-21 19:49:04 FBDECT Schalter_PiZero temperature: 23.0 C (measured)
2020-03-21 19:49:10 GCALVIEW GoogleCalendar update
2020-03-21 19:49:11 GCALVIEW GoogleCalendar tomorrow_001_btime: 00:00
2020-03-21 19:49:11 GCALVIEW GoogleCalendar tomorrow_001_etime: 00:00
2020-03-21 19:49:11 GCALVIEW GoogleCalendar tomorrow_002_btime: 00:00
2020-03-21 19:49:11 GCALVIEW GoogleCalendar tomorrow_002_etime: 00:00
2020-03-21 19:49:11 GCALVIEW GoogleCalendar tomorrow_003_btime: 00:00
2020-03-21 19:49:11 GCALVIEW GoogleCalendar tomorrow_003_etime: 00:00
2020-03-21 19:49:11 GCALVIEW GoogleCalendar tomorrow_004_btime: 00:00
2020-03-21 19:49:11 GCALVIEW GoogleCalendar tomorrow_004_etime: 00:00
Ja das ist richtig. Es werden bei jedem Update alle Einträge gelöscht und neu angelegt. Eventuell könnte man das etwas besser gestalten, bisher hat sich dazu aber keine Notwendigkeit ergeben, da Kalender in der Regel nichts hochdynamisches sind.
ZitatAlso wer das Problem auch hat, verbose 5 einschalten, Link aus Log öffnen und Kalender API aktivieren. Schon läufts wieder...
Bei mir kommt da weiterhin
ZitatDie Anmeldung mit Google ist für diese App vorübergehend deaktiviert
ZitatJa das ist richtig. Es werden bei jedem Update alle Einträge gelöscht und neu angelegt. Eventuell könnte man das etwas besser gestalten, bisher hat sich dazu aber keine Notwendigkeit ergeben, da Kalender in der Regel nichts hochdynamisches sind.
Danke - dann muss ich das Intervall umstellen, und damit das zugehörige notify.
Zitat von: rabehd am 22 März 2020, 18:19:46
Bei mir kommt da weiterhin
Ich bekomme diese Meldung nun auch seit zwei Tagen. Ich bin nicht ganz sicher, befürchte aber, dass vor zwei Tagen ein Debian-Update mir eine neue Version von GCalcli untergejubelt hat. Ich habe GCalcli 4.1.1.
Muss ich downgraden? Oder gibt es eine Lösungsmöglichkeit mit dieser neueren GCalcli.Version. Mit verbose=5 bekomme ich
ERROR evaluating {GCALVIEW_DoEnd('kalender.gemeinsam||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 662.
Gruß
Christian
Ich verwende v4.2.0. Ich hoffe daran wird's nicht liegen ausschließen kann ich es aber auch nicht. Ansonsten schau mal ob einer der vor kurzem hinzugefügten Termine ein Semikolon enthält. Damit hat gcalcli leider Probleme, obwohl ich den Bug schon lange reportet habe.
Zitat von: mumpitzstuff am 23 Juli 2020, 22:47:55
Ich verwende v4.2.0. Ich hoffe daran wird's nicht liegen ausschließen kann ich es aber auch nicht. Ansonsten schau mal ob einer der vor kurzem hinzugefügten Termine ein Semikolon enthält. Damit hat gcalcli leider Probleme, obwohl ich den Bug schon lange reportet habe.
Das mit dem Semikolon kann ich ausschließen. Am Abfllkalender habe ich seit Januar nichts verändert. Der hat das gleiche Problem wie der Familenkalender, wo ich mir das Semikolon eher vorstellen könnte.
Beide Kalender haben zur gleichen Zeit das Problem bekommen. Ich habe mal die history.log von apt angeschaut. Darin finde ich vom 21. Juli (dürfte der Tag sein, ab dem ich keine Kalenderupdates mehr bekomme) Upgrades für folgende Pakete:
perl-base:armhf (5.24.1-3+deb9u6, 5.24.1-3+deb9u7)
libservlet3.1-java:armhf (8.5.54-0+deb9u1, 8.5.54-0+deb9u2)
libopenjp2-7:armhf (2.1.2-1.1+deb9u4, 2.1.2-1.1+deb9u5)
dbus-x11:armhf (1.10.28-0+deb9u1, 1.10.32-0+deb9u1)
glib-networking-services:armhf (2.50.0-1, 2.50.0-1+deb9u1)
libcups2:armhf (2.2.1-8+deb9u5, 2.2.1-8+deb9u6)
libdbus-1-3:armhf (1.10.28-0+deb9u1, 1.10.32-0+deb9u1)
rake:armhf (10.5.0-2, 10.5.0-2+deb9u1)
libgnutls-openssl27:armhf (3.5.8-5+deb9u4, 3.5.8-5+deb9u5)
erlang-base:armhf (1:19.2.1+dfsg-2+deb9u2, 1:19.2.1+dfsg-2+deb9u3)
glib-networking:armhf (2.50.0-1, 2.50.0-1+deb9u1)
erlang-syntax-tools:armhf (1:19.2.1+dfsg-2+deb9u2, 1:19.2.1+dfsg-2+deb9u3)
dbus:armhf (1.10.28-0+deb9u1, 1.10.32-0+deb9u1)
mariadb-common:armhf (10.1.44-0+deb9u1, 10.1.45-0+deb9u1)
perl-modules-5.24:armhf (5.24.1-3+deb9u6, 5.24.1-3+deb9u7)
nfs-kernel-server:armhf (1:1.3.4-2.1, 1:1.3.4-2.1+deb9u1)
libdbi1:armhf (0.9.0-4+deb9u1, 0.9.0-4+deb9u2)
mariadb-server-core-10.1:armhf (10.1.44-0+deb9u1, 10.1.45-0+deb9u1)
libpython3.5:armhf (3.5.3-1+deb9u1, 3.5.3-1+deb9u2)
python3.5:armhf (3.5.3-1+deb9u1, 3.5.3-1+deb9u2)
python3.5-minimal:armhf (3.5.3-1+deb9u1, 3.5.3-1+deb9u2)
xdg-utils:armhf (1.1.1-1+deb9u1, 1.1.1-1+deb9u2)
python3.5-dev:armhf (3.5.3-1+deb9u1, 3.5.3-1+deb9u2)
cups-common:armhf (2.2.1-8+deb9u5, 2.2.1-8+deb9u6)
glib-networking-common:armhf (2.50.0-1, 2.50.0-1+deb9u1)
mariadb-server-10.1:armhf (10.1.44-0+deb9u1, 10.1.45-0+deb9u1)
libperl5.24:armhf (5.24.1-3+deb9u6, 5.24.1-3+deb9u7)
libexif12:armhf (0.6.21-2+deb9u1, 0.6.21-2+deb9u4)
libneon27-gnutls:armhf (0.30.2-2, 0.30.2-2+deb9u1)
idle-python3.5:armhf (3.5.3-1+deb9u1, 3.5.3-1+deb9u2)
erlang-crypto:armhf (1:19.2.1+dfsg-2+deb9u2, 1:19.2.1+dfsg-2+deb9u3)
libpython3.5-dev:armhf (3.5.3-1+deb9u1, 3.5.3-1+deb9u2)
mariadb-client-10.1:armhf (10.1.44-0+deb9u1, 10.1.45-0+deb9u1)
mariadb-server:armhf (10.1.44-0+deb9u1, 10.1.45-0+deb9u1)
mariadb-client-core-10.1:armhf (10.1.44-0+deb9u1, 10.1.45-0+deb9u1)
libmariadbclient18:armhf (10.1.44-0+deb9u1, 10.1.45-0+deb9u1)
libgnutls30:armhf (3.5.8-5+deb9u4, 3.5.8-5+deb9u5)
perl:armhf (5.24.1-3+deb9u6, 5.24.1-3+deb9u7)
cups-bsd:armhf (2.2.1-8+deb9u5, 2.2.1-8+deb9u6)
libpython3.5-stdlib:armhf (3.5.3-1+deb9u1, 3.5.3-1+deb9u2)
libcupsimage2:armhf (2.2.1-8+deb9u5, 2.2.1-8+deb9u6)
libpython3.5-minimal:armhf (3.5.3-1+deb9u1, 3.5.3-1+deb9u2)
cups-client:armhf (2.2.1-8+deb9u5, 2.2.1-8+deb9u6)
nfs-common:armhf (1:1.3.4-2.1, 1:1.3.4-2.1+deb9u1)
tzdata:armhf (2019c-0+deb9u1, 2020a-0+deb9u1)
influxdb:armhf (1.8.0-1, 1.8.1-1)
Neben MariaDB haben Perl und Python Patches bekommen. Das ganze ist noch Debian 9 (Squeeze).
Was kommt den raus wenn du im terminal den Müllkalender abrufst?
gcalcli agenda 07/24/2020 08/24/2020 --calendar "dein kalender" --details calendar --details calendar --details url --details location --details description --details email --tsv
Zitat von: mumpitzstuff am 24 Juli 2020, 16:18:25
Was kommt den raus wenn du im terminal den Müllkalender abrufst?
gcalcli agenda 07/24/2020 08/24/2020 --calendar "dein kalender" --details calendar --details calendar --details url --details location --details description --details email --tsv
Wenn ich "dein kalender" durch den Namen des Abfallkalenders ("Abfallkalender", egal ob gequoted oder nicht) ersetze und den Befehl als FHEM-User (sudo -u fhem) ausführe, bekomme ich die Oauth-Login-Aufforderung von Google mit Aufforderung zur Eingabe des Verifikations-Token. Das ist soweit korrekt, da es keine .gcalcli_oauth-Datei (mehr) gibt.
Die Anmeldung bei Google scheitert dann mit der schon oben geschriebenen Meldung "Die Anmeldung mit Google ist für diese App vorübergehend deaktiviert. Die Verwendung von Google Log-in wurde für diese App noch nicht bestätigt.".
Dann ist das dein Problem. In den vorhergehenden Beiträgen wurde das Thema schon besprochen. Es ist gelinde gesagt bescheiden. Trotzdem kannst du versuchen es zu lösen. Wenn es misslingt, dann bleibt dir nur auf ein anderes Modul auszuweichen. Ich habe das Problem nicht selbst und kann auch nicht unterstützen, da ich mir meinen aktuell noch funktionierenden Zugriff nicht versauen möchte.
So, ich bin mit der Anleitung aus https://github.com/insanum/gcalcli#login-information einen Schritt weitergekommen und kann mit GCalcli nun wieder Termine abrufen - auf der Kommandozeile.
Das FHEM-Modul liefert mir bei bestehendem Login (getestet mit https://github.com/insanum/gcalcli#login-information
) nun (wieder) die Meldung, die ich vor ein paar Tagen hatte, bevor ich zur vermeintlichen Problemlösung den Login erneuert habe:
ERROR evaluating {GCALVIEW_DoEnd('kalender.abfall||')}: Can't use string ("") as an ARRAY ref while "strict refs" in use at ./FHEM/57_GCALVIEW.pm line 662.
Ich habe noch einmal geprüft: Ein Semikolon in einem Termin habe ich nicht gefunden. Die Termine im Abfallkalender heißen "Restmüll", "Gelber Sack", "Blaue Tonne" und "BioTonne".
Bist du sicher das du unter dem fhem User die Termine abrufen kannst? Wenn das z.b. als Pi User funktioniert, dann funktioniert es nicht zwangsläufig innerhalb von fhem. Manchmal war es notwendig den Pfad zur Konfiguration mit dem Attribut configFolder anzugeben.
Innerhalb von Fhem kannst du das mal so testen:
{qx(gcalcli list);;}
Zitat von: mumpitzstuff am 25 Juli 2020, 21:18:17
Bist du sicher das du unter dem fhem User die Termine abrufen kannst? Wenn das z.b. als Pi User funktioniert, dann funktioniert es nicht zwangsläufig innerhalb von fhem. Manchmal war es notwendig den Pfad zur Konfiguration mit dem Attribut configFolder anzugeben.
Innerhalb von Fhem kannst du das mal so testen:
{qx(gcalcli list);;}
Ein wiederholter Neustart von FHEM hat hier offenbar geholfen. Ich bekomme nun wieder Termine in FHEM angezeigt. Meine Beschreibung aus dem vorherigen Beitrag (https://github.com/insanum/gcalcli#login-information) ist damit die Lösung gewesen. Man braucht (zumindest zukünftig) die Client-ID und den Client-Key für neue Authentifizierungen und muss diese in der Datei .gcalclirc im Homeverzeichnis des FHEM-Users ablegen, bevor man den Verifikationstoken anfordert.
Stolperstein ist dann noch, dass diese Methode nicht bei allen API-Typen funktioniert. Es muss eine "native" API sein. Ich habe dafür noch ein altes Projekt vom Typ "andere" verwendet. Diesen Typ kann man aber mittlerweile auf der Google-Seite nicht mehr auswählen.
https://github.com/aristosv/google_auth/blob/master/README.md (https://github.com/aristosv/google_auth/blob/master/README.md)
Das hier hilft eventuell auch weiter.
Hallo zusammen ,
ich quäle mich gerade auch durch die blöde Verifizierung ....leider immer noch erfolglos !
OK, wenn ich mein eigenes Projekt anlege usw. dann erhalte ich die zwei keys ( Client ID und Client Secret )
wo hinterlege ich sie ? In welchem File und wie muss das von syntax her aussehen ....?
Wäre prima, wenn hier hier jemand weiter helfen könnte !
sudo -u fhem gcalcli list --client_id=xxxxxxxxxxxxxxx.apps.googleusercontent.com --client_secret=xxxxxxxxxxxxxxxxx
oder
sudo -u fhem gcalcli list --client-id=xxxxxxxxxxxxxxx.apps.googleusercontent.com --client-secret=xxxxxxxxxxxxxxxxx
Mit dem Standard Weg wie in Beitrag 1 beschrieben hast du es schon versucht? Ich hatte gehofft, das die das irgendwann noch mal in den Griff bekommen würden. Bei mir funktioniert alles immer noch, deshalb kann ich da nix rum fummeln.
Hallo und guten morgen :-)
Ja den Standardweg habe ich versucht ! Kam aber leider immer das die app nicht unterstützt wird ....
Habe nun mal meine client-id und client-secret probiert :
da kommt unter anderem folgende Fehlermeldung
/usr/lib/python3/dist-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access /home/fhem/.gcalcli_oauth: No such file or directory
warnings.warn(_MISSING_FILE_MESSAGE.format(filename))
und ein Link ...wenn ich den im Browser ausführe kommt:
Fehler 400: redirect_uri_mismatch
The redirect URI in the request, http://localhost:8090/, does not match the ones authorized for the OAuth client. To update the authorized redirect URIs, visit: https://console.developers.google.com/apis/credentials/oauthclient/${your_client_id}?project=${your_project_number}
was mich da am meisten verwirrt ist das http://localhost:8090 ???
/home/fhem... sieht schon mal komisch aus. In welchem Verzeichnis befindest du dich, wenn du den Befehl ausführst? Du solltest dich im FHEM Verzeichnis befinden, also dort wo auch die fhem.pl zu finden ist (/opt/fhem). Wenn es trotzdem nicht klappt, kannst du mal versuchen den config folder mit anzugeben:
--configFolder /opt/fhem
hinten an den Befehl dran hängen.
Hi @mumpitzstuff,
erstmal vielen Dank ,das du mithilfst ! :-)
Wollte heute morgen nur fix deinen Lösungsansatz ausprobieren ( war direkt nach der Nachtschicht ).
Also, meine normale Umgebung im Terminal nach dem einloggen als fhem User ist home/fhem dort befindet sich auch gcalcli
Mit dem Befehl
sudo -u fhem gcalcli list --client-id=xxxxxxxxxxx-2v7pnmc0ecptohtj0bmhgl2q35ti3a35.apps.googleusercontent.com --client-secret=x-xxxxxx_w8hQODL2H6mlazn
oder
sudo -u fhem gcalcli --config-Folder /opt/fhem list --client-id=xxxxxxxxxxx-2v7pnmc0ecptohtj0bmhgl2q35ti3a35.apps.googleusercontent.com --client-secret=x-xxxxxx_w8hQODL2H6mlazn
bekomme ich jeweils einen Link im Terminal erstellt, den ich dann im Browser nutze !
Zuerst bekomme ich eine Auswahl ,mein Googlekonto auszuwählen - das sieht richtig gut aus ...
Dann kommt folgende Meldung :
Diese App wurde nicht überprüft
Diese App wurde noch nicht von Google überprüft. Sie sollten nur fortfahren, wenn Sie den Entwickler als vertrauenswürdig ansehen.
Wenn Sie der Entwickler sind, reichen Sie eine Überprüfungsanfrage ein, um diesen Bildschirm entfernen zu lassen. Weitere Informationen
mit dem Button "erweitert" komme ich dann noch auf folgende Seite :
Diese App wurde noch nicht von Google überprüft, deshalb kann ihre Echtheit nicht bestätigt werden. Nicht überprüfte Apps können eine Gefahr für Ihre personenbezogenen Daten darstellen. Weitere Informationen
gcalcli öffnen (unsicher)
Also klicke ich den Button gcalcli öffnen ...
Jetzt sieht es echt so aus ,als wenn ich am Ziel wäre !!!
Es öffnet sich ein popup :
gcalcli Zugriff gewähren
Alle Kalender, die über Google Kalender verfügbar sind, aufrufen, bearbeiten, freigeben und endgültig löschen
Zulassen
Ablehnen
Natürlich bestätige ich mit zulassen ....
Auswahl bestätigen
renebartels212@gmail.com
Sie haben gcalcli folgende Berechtigungen erteilt:
Alle Kalender, die über Google Kalender verfügbar sind, aufrufen, bearbeiten, freigeben und endgültig löschen
gcalcli vertrauen?
Eventuell teilen Sie vertrauliche Informationen mit dieser Website oder App.In den Nutzungsbedingungen und der Datenschutzerklärung von gcalcli erfahren Sie alles zum Umgang mit Ihren Daten. In Ihrem Google-Konto können Sie die Zugriffsberechtigungen jederzeit einsehen oder entfernen.
Weitere Informationen zu den Risiken
Zulassen
Abbrechen
Deutsch
Auch das kann ich noch mit zulassen bestätigen !
Jetzt kommt leider die Ernüchterung :
Ich bekomme im Browser eine Fehlermeldung , das Safari keine Verbindung zum Server aufbauen kann .....grummel :-(
Safari kann die Seite ,,localhost:8090/?code=4/xxxxxxxxx-ydHjYut5quMhdDW1u-o3xxxxxxxmqT1Rac2lZCt-E&scope=https://www.googleapis.com/auth/calendar" nicht öffnen, da Safari keine Verbindung zum Server ,,localhost" aufbauen kann
( Code habe ich mal an ein paar Stellen ausgeXt )
Meine Fhem Installation läuft auf einem Intel NUC in meinem Netzwerk , so wie ich es verstehe , hat Google versucht die Freigabe zu setzten , kommt aber auf den NUC nicht drauf ....sry das mit dem Localhost:8090 raffe ich nicht :-(
--noauth_local_webserver
Häng das mal hinten dran bitte. Dadurch wird ein lokaler Webserver aufgebaut, vermutlich genau das womit Google eine Verbindung aufbauen möchte.
Danke ! Versuche ich direkt morgen früh ...hänge noch auf der Nachtschicht *heul
(Edit)
Guten Morgen :-)
kurze Rückmeldung :
einfach hinten dran ging nicht , aber es läuft davor :-) Danke für deine Hilfe ....rest teste ich nach dem pennen :-)
sudo -u fhem gcalcli --noauth_local_webserver list --client-id=xxxxxxxxx-e8ldsjh7xxxxxxxxx2lo9v5.apps.googleusercontent.com --client-secret=xxxxxxxxxxxxxx
Hallo zusammen ,
soweit rennt es nun auch bei mir :-)
Nun hätte ich aber direkt noch eine Frage :
Mit filterSource kann ich ja einen Match unterdrücken , gibt es auch eine Möglichkeit , mehrere zu unterdrücken ?
Mit Abfall,Schicht .... hatte ich probiert ....geht leider nicht
Das ist ein regex. Versuch mal:
Abfall|Schicht
Super Danke ! funzt :-)
Hallo zusammen ,
ich bastel mir gerade einen Schichtkalender ,der aus Früh,Frei,Spät und Nachtschichten besteht.
Das lasse ich mir auch in einer readingsgroup anzeigen ...
Leider kann ich ja nur eine Sourcecolor vergeben ,womit dann in der Readingsgroup z.b. nur die Farbe blau angezeigt wird :-(
Wie bekomme ich es hin , das in der Readingsgroup nur die Nachtschicht blau angezeigt wird und Frühschichten in gelb usw. ?
Hi, habe das Problem...wenn ich diesen Befehl eingebe
sudo -u fhem gcalcli --noauth_local_webserver list
und dann den Link kopiere und ich mich mit meinem Google Konto anmelden will komt die Meldung:
Die Anmeldung mit Google ist für diese App vorübergehend deaktiviert
Die Verwendung von Google Log-in wurde für diese App noch nicht bestätigt
Könnt Ihr mir sagen was ich da machen muss?
Danke
Zitat von: Aladin222 am 08 November 2020, 15:55:29
Hallo zusammen ,
ich bastel mir gerade einen Schichtkalender ,der aus Früh,Frei,Spät und Nachtschichten besteht.
Das lasse ich mir auch in einer readingsgroup anzeigen ...
Leider kann ich ja nur eine Sourcecolor vergeben ,womit dann in der Readingsgroup z.b. nur die Farbe blau angezeigt wird :-(
Wie bekomme ich es hin , das in der Readingsgroup nur die Nachtschicht blau angezeigt wird und Frühschichten in gelb usw. ?
Die ReadingGroup hat einen valueStyle, damit könnte das gehen. Dort müsstest du in Abhängigkeit vom Inhalt oder ähnlichem die entsprechend Farbe setzen können.
Zitat von: Kusselin am 14 November 2020, 12:03:26
Hi, habe das Problem...wenn ich diesen Befehl eingebe
sudo -u fhem gcalcli --noauth_local_webserver list
und dann den Link kopiere und ich mich mit meinem Google Konto anmelden will komt die Meldung:
Die Anmeldung mit Google ist für diese App vorübergehend deaktiviert
Die Verwendung von Google Log-in wurde für diese App noch nicht bestätigt
Könnt Ihr mir sagen was ich da machen muss?
Danke
Das ist leider ziemlich bescheiden... Schau mal bitte hier nach, das scheint aktuell die einzige Möglichkeit zu sein gcalcli noch zu verwenden:
https://forum.fhem.de/index.php/topic,77502.msg1023613.html#msg1023613 (https://forum.fhem.de/index.php/topic,77502.msg1023613.html#msg1023613)
Zitat von: mumpitzstuff am 14 November 2020, 20:21:28
Das ist leider ziemlich bescheiden... Schau mal bitte hier nach, das scheint aktuell die einzige Möglichkeit zu sein gcalcli noch zu verwenden:
https://forum.fhem.de/index.php/topic,77502.msg1023613.html#msg1023613 (https://forum.fhem.de/index.php/topic,77502.msg1023613.html#msg1023613)
ne, geht bei mir nicht....
Was geht denn nicht?
ZitatSchau mal bitte hier nach, das scheint aktuell die einzige Möglichkeit zu sein gcalcli noch zu verwenden:
Habs gerade probiert,
gcalcli geht nach der genauen Anleitung von Aurisnoctis, https://github.com/insanum/gcalcli/issues/580, -> Steps, loosely following comment #497 (comment)
Moin.
Ich hab mich heute mit dem Modul beschäftigt, durch die Google-"Umgehung" gekämpft und auch Device inkl Readings im FHEM vorhanden. Um so mehr ärgere ich mich, dass ich offenbar einen Fehler in der ReadingsGroup übersehe.
Ich hab das Beispiel aus dem Eingangsposting gewählt und bekomme auch die Tabelle funktional angezeigt, inkl benutzerdefinierten Farben und Co. Trotzdem bekomme ich über der Liste weiterhin die Ausgabe der einzelnen Rohdaten der Termine untereinander weg angezeigt...
Sprich: erst die ganzen "Rohdaten" und dann das Listenelement der ReadingsGroup. Und mir will partout der Fehler nicht auffallen.
defmod rg_KALENDER readingsGroup GoogleCal <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>\
GoogleCal:t_001_bdate,t_001_weekday,t_001_timeshort,t_001_summary,t_001_location\
GoogleCal:t_002_bdate,t_002_weekday,t_002_timeshort,t_002_summary,t_002_location\
GoogleCal:t_003_bdate,t_003_weekday,t_003_timeshort,t_003_summary,t_003_location\
GoogleCal:t_004_bdate,t_004_weekday,t_004_timeshort,t_004_summary,t_004_location\
GoogleCal:t_005_bdate,t_005_weekday,t_005_timeshort,t_005_summary,t_005_location\
GoogleCal:t_006_bdate,t_006_weekday,t_006_timeshort,t_006_summary,t_006_location\
GoogleCal:t_007_bdate,t_007_weekday,t_007_timeshort,t_007_summary,t_007_location\
GoogleCal:t_008_bdate,t_008_weekday,t_008_timeshort,t_008_summary,t_008_location\
GoogleCal:t_009_bdate,t_009_weekday,t_009_timeshort,t_009_summary,t_009_location\
GoogleCal:t_010_bdate,t_010_weekday,t_010_timeshort,t_010_summary,t_010_location\
GoogleCal:t_011_bdate,t_011_weekday,t_011_timeshort,t_011_summary,t_011_location\
GoogleCal:t_012_bdate,t_012_weekday,t_012_timeshort,t_012_summary,t_012_location\
GoogleCal:t_013_bdate,t_013_weekday,t_013_timeshort,t_013_summary,t_013_location\
GoogleCal:t_014_bdate,t_014_weekday,t_014_timeshort,t_014_summary,t_014_location\
GoogleCal:t_015_bdate,t_015_weekday,t_015_timeshort,t_015_summary,t_015_location\
GoogleCal:t_016_bdate,t_016_weekday,t_016_timeshort,t_016_summary,t_016_location\
GoogleCal:t_017_bdate,t_017_weekday,t_017_timeshort,t_017_summary,t_017_location\
GoogleCal:t_018_bdate,t_018_weekday,t_018_timeshort,t_018_summary,t_018_location\
GoogleCal:t_019_bdate,t_019_weekday,t_019_timeshort,t_019_summary,t_019_location\
GoogleCal:t_020_bdate,t_020_weekday,t_020_timeshort,t_020_summary,t_020_location
attr rg_KALENDER nameStyle style="font-weight:bold;;text-decoration:underline;;"
attr rg_KALENDER nonames 1
attr rg_KALENDER notime 1
attr rg_KALENDER room Kalender
attr rg_KALENDER valueFormat {\
if ($READING =~ /bdate$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/bdate$//;;\
if (0 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Heute";;\
}\
elsif (1 == ReadingsVal($DEVICE, $readingStart.'daysleft', -1))\
{\
"Morgen";;\
}\
else\
{\
# the follwoing line strips the year of the date (remove it if needed)\
substr($VALUE, 0, 5);;\
}\
}\
elsif ($READING =~ /weekday$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/weekday$//;;\
\
# the follwoing line strips the weekday down to 3 chars (remove it if needed)\
substr($VALUE, 0, 3);;\
}\
elsif ($READING =~ /summary$/)\
{\
my $readingStart = $READING;;\
$readingStart =~ s/summary$//;;\
my $link = ReadingsVal($DEVICE, $readingStart.'url', '');;\
my $age = ReadingsVal($DEVICE, $readingStart.'age', undef);;\
my $style = 'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "blue").'"';;\
if (defined($age))\
{\
$link =~ s/\>link\</ $style\>$VALUE \($age\)\</;;\
}\
else\
{\
$link =~ s/\>link\</ $style\>$VALUE\</;;\
}\
$link;;\
}\
}
attr rg_KALENDER valueStyle {\
my $readingStart = $READING;;\
$readingStart =~ s/(t_\d+_).+/$1/;;\
'style="color:'.ReadingsVal($DEVICE, $readingStart."sourcecolor", "green").'"'\
}
... vllt erbarmt sich ja jemand und stößt mich mit der Nase auf das fehlende Komma, o.ä. ....
Danke.
Thuri
Bei mir sieht die erste Zeile so aus:
defmod rg_Dienstplan readingsGroup <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>\
ich würde daher vermuten, das "GoogleCal" nicht dahin gehört, also es so aussehen müsste:
defmod rg_KALENDER readingsGroup <Datum>,<Tag>,<Zeit>,<Termin>,<Ort>\
Ich wusste, es ist irgendein "Unsinn" ... ::)
Statt das Device mit GoogleCal als Bezug zu definieren, so wie ich dachte, hab ich da das Device nochmal ausgelesen. Daher das Reading nochmal.
Oh man, danke sehr.
Mit der genauen Anleitung von Aurisnoctis, https://github.com/insanum/gcalcli/issues/580, -> nach "Steps, loosely following comment #497 (comment)", kann man den googlecalender mit diesem modul ( gcalcli ) weiter verwenden, allerdings muss man den Token jede Woche oder nach 10 Tage erneuern.
Kennt da jemand Abhilfe? Ich bekomme immer folgenden Fehler, und muss dann die Authentifizierung erneuern.
Zitatoauth2client.client.HttpAccessTokenRefreshError: invalid_grant: Token has been expired or revoked.
nicht mewhr funktioniert.
Ich bekomme aber beiu Punkt 3 der Anleitung aus dem ersten Post folgende Fehlermeldung:
Diese App ist blockiert
Diese App hat versucht, auf vertrauliche Daten in Ihrem Google-Konto zuzugreifen. Zum Schutz Ihres Kontos haben wir den Zugriff blockiert.
Bei der Paketinstllation verlief alles folgendermassen:
sudo apt-get install gcalcli
Ergebnis: gcalcli ist schon die neueste Version (4.3.0-1)
Ich weiss nicht, ob das notwendig ist, weil es nicht erläutert wurde, aber ich habes versucht:
sudo apt-get install git python-pip python-gdata python-dateutil python-gflags python-vobject python-parsedatetime
Ergebni:
Paket python-pip ist nicht verfügbar, wird aber von einem anderen Paket
referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst
wurde oder nur aus einer anderen Quelle verfügbar ist.
Doch die folgenden Pakete ersetzen es:
python3-pip
E: Für Paket »python-pip« existiert kein Installationskandidat.
E: Paket python-gdata kann nicht gefunden werden.
E: Paket python-dateutil kann nicht gefunden werden.
E: Paket python-gflags kann nicht gefunden werden.
E: Paket python-vobject kann nicht gefunden werden.
E: Paket python-parsedatetime kann nicht gefunden werden.
gcalcli --version
Ergebnis: gcalcli v4.3.0 (Eric Davis, Brian Hartvigsen, Joshua Crowgey)
sudo -u fhem gcalcli --noauth_local_webserver list
Ich habe den Code in den Browsedr kopiert. nun kommt nach der Auswahl des Googlekontos die folgende Fehlermeldung im Browser:
Diese App ist blockiert
Diese App hat versucht, auf vertrauliche Daten in Ihrem Google-Konto zuzugreifen. Zum Schutz Ihres Kontos haben wir den Zugriff blockiert.
Was kann/muss ich tun?
Bei Google wird gcalview als erlaubt gelistet.
DAnke im Voraus für die Hilfe.
https://github.com/insanum/gcalcli/issues/598 (https://github.com/insanum/gcalcli/issues/598)
DAnke.
Ist das denn nötig? Ich habe einen Key. Den kann man aber nicht in Putty eingeben. Leider auch nicht in gcalview in fhem.
Kann ich denn den bestehenden Schlüssel nicht verwenden?
Wenn Google sagt das der Zugang geblockt wird kaum. Anscheinend wird ja der generierte Code schon geschickt, wird aber von Google dann abgelehnt wenn ich das richtig verstanden habe. In dem Ticket meinte noch jemand, das es vielleicht mit einem anderen Browser geht. Hast du das mal probiert?
Ich habe noch einmal mein altes System angeschlossen. Dort funktioniert nach wie vor alles korrekt.
Ich traue mich nicht, den Weg im Link zu gehen, da dann vielleicht gar keine Version mehr funktioniert.
Verschidene Browser haben auch nichts gebracht.
Ich werde wohl mein altes System wieder verwenden, da ich keine Lösung finden kann.
Dann erstmal vielen Dank.
Such doch mal auf deinem alten System das versteckte Verzeichnis .gcalcli_oauth und .gcalcli_cache. Kannst du die beiden Verzeichnisse + Inhalt auf das neue System übertragen? Vergiss nicht die Rechte richtig zu setzen. Eventuell musst du auch im neuen System das Verzeichnis als Attribut konfigurieren. Ich glaube configFolder oder sowas war das.
Die daten liegen bei mir im fhem-Ordner. Configfolder ist da nicht nötig, war im alten System auch nicht.
Die Daten habe ich kopiert und die Rechte zugewiesen. Hat leider auch nichts gebracht.
Ich brauche dann zwar keinen Google-code mehr, aber fhem meckert.
Was genau sagt fhem denn? Werden die Ordner überhaupt gefunden und verwendet?
Das kann ich dir nicht mehr sagen. Ich habe bereits die Installation archiviert und nutze die alte Installation weiter. Ich hatte noch einmal mit einem frisch installierten Bulleye und fhem probiert, ohne Rücksicherungen. aber das hat ebenfalls diesen Fehler hervorgerufen. Ich habe dann versucht, die Anleitung im Link zu befolgen, aber das funktioniert nicht. Meine Englischkenntnisse sind zu schlecht und die ganzen Abbildungen entsprechen nicht dem aktuellen Stand. Auch mit Englisch kann man dieser Anleitung ohne Vorkenntnisse nicht befolgen.
Ich werde mir wohl kein Backup mehr erstellen, da das Rückspielen nicht richtig funktioniert. Es sind zu viele Fallen. Ich mache künftig wieder ein Image von der ssd. Das kann ich zuverlässig zurückspielen und alles läuft. Ein neues Betriebssystem bekomme ich so natürlich nicht.
Solle aber trotzdem jemand noch eine zündende Idee haben, spiele ich das Image wieder auf. Ist kein Problem.
Danke für deine Unterstützung.
Hallo in die Runde,
gibt es irgendwelchen neuen Erkenntnisse? - ich bekomme, egal wie oft ich neue Apps anlege und/oder nach Thread #497 ff. versuche einzurichten, immer "Die App wurde von Google geblockt".
Habt ihr zwischenzeitlich einen Erfolg gelandet?
Danke,
Shamal
Vielleicht hilft Dir das:
"Die App wurde von Google geblockt" habe ich, wenn ich mit GCALVIEW ein update mache, der dann fehlschlägt, und ich den den google link "Go to the following link in your browser:" mit dem falschen User generiere.
Also "export PYTHONIOENCODING=utf8 && gcalcli agenda ..." muss als user fhem ausgeführt werden, dann läufts bei mir durch. Schlecht erklärt, vielleicht hilft Dir das trotzdem.
Also "su - fhem" -> "export PYTHONIOENCODING=utf8 && gcalcli agenda ..." -> als user fhem -> Go to the following link in your browser: "https://accounts.google.com/o/oauth2/v2/auth..." -> dann kannst Du im google Browser den Verification code generieren, und bei "Enter verification code:" eingeben.
Hallo zusammen,
ich habe seit langen folgende Fehlermeldungen täglich im Log.
Verbose ist auf 1 in global gesetzt. Im Modul selber nicht.
2022.08.20 23:34:47.098 1: PERL WARNING: Argument "'59" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 536, <GEN4143793> line 1.
2022.08.20 23:34:47.098 1: PERL WARNING: Argument "23:59" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 536, <GEN4143793> line 1.
2022.08.21 00:00:00.153 1: PERL WARNING: Argument "'59" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 536, <GEN4145791> line 1.
2022.08.21 00:00:00.154 1: PERL WARNING: Argument "23:59" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 536, <GEN4145791> line 1.
2022.08.21 05:34:47.283 1: PERL WARNING: Argument "'59" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 536, <GEN4172446> line 1.
2022.08.21 05:34:47.284 1: PERL WARNING: Argument "23:59" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 536, <GEN4172446> line 1.
2022.08.21 11:34:47.432 1: PERL WARNING: Argument "'59" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 536, <GEN4202161> line 1.
2022.08.21 11:34:47.433 1: PERL WARNING: Argument "23:59" isn't numeric in addition (+) at ./FHEM/57_Calendar.pm line 536, <GEN4202161> line 1.
könnt ihr mir sagen was dies bedeutet und ob ich diese Meldungen ingnorieren kann?
Wie bekomme ich sie weg?
Vielen Dnak im Voraus.
Gruß Thomas
Das wäre doch ein anderes Modul.
Zitat von: rabehd am 22 August 2022, 11:02:52
Das wäre doch ein anderes Modul.
oh tut mir leid, falscher Bereich
Hallo zusammen,
ich versuche das Modul bei mir zum Laufen zu bringen. Leider kommt bei der Anmeldung beim Google Konto
die Fehlermeldung:
"Zugriff blockiert: Die Anfrage von gcalcli ist ungültig".
Der Versuch, wie im Post #485 beschrieben geht auch nicht.
Gibt es eine andere Lösung, die ich versuchen könnte?
https://forum.fhem.de/index.php/topic,77502.msg1232222.html#msg1232222
Hattest du das auch schon probiert? Ich kann leider nicht weiter helfen, da es sonst bei mir eventuell auch nicht mehr funktioniert und das möchte ich nicht riskieren.
Wenn das auch fehl schlägt, könntest du noch auf das andere Kalender Modul ausweichen, aber damit kenne ich mich leider gar nicht aus.
Ja, das hatte ich schon probiert. Ohne Erfolg. Das andere Kalender Modul
habe ich auch, ist aber für meine Zwecke nicht so komfortabel.
Vielleicht hat noch jemand einen Tipp für mich.
Hast Du das auch gemacht?
https://forum.fhem.de/index.php/topic,77502.msg1128191.html#msg1128191
Damit läufts bei mir, aber ich muss alle 8 Tage neu verifizieren, weil die App bei google bei mir nur als developer-app eingetragen ist..
Ich habe grad nochmal geschaut, aber in der Developer Konsole habe ich eine App mit dem Namen gcalcli erstellt und die Google Calendar API hinzugefügt und bei meinem Google Account sehe ich das was ich angehangen habe.