Abfrage Google Kalender funktioniert nicht

Begonnen von Christian72D, 19 Dezember 2015, 18:29:28

Vorheriges Thema - Nächstes Thema

Ellert

ZitatSo sahen die Einträge vom 19. aus:
Wobei sich die Frage stellt, ob die Einträge am 19. in FHEM bereits synchronisiert waren.

Christian72D

Also wenn ich das um etwa 8 Uhr morgens anlege dann denke ich daß es bis 18 Uhr drin war.

Puschel74

Es kommt drauf an wann der Kalender eingelesen wird.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Ellert

ZitatDEF        ical url https://calendar.google.com/calendar/ical/christian...................ics 14400

Bei einer Aktualisierung alle 4 h hat es vermutlich geklappt und falls die Synchronisation mit dem Eingabegerät stattgefunden hat.

snickers2k

#19
Hey.
Ich habe leider exakt das gleiche Problem.
Und ich bin auch 1:1 nach dem Wiki gegangen. Bei mir wird genauso erkannt, dass "Urlaub" startet und endet. Aber die Dummys werden nicht geschaltet.
Das grenzt dass Problem ja ziemlich ein. Ich gehe davon aus, wenn zwei Leute das absolut gleiche Problem haben, dass etwas mit dem Wiki nicht stimmt. Evtl veraltet? Könnte das bitte jemand verifizieren?

Vielen Dank.

Ellert

ZitatKönnte das bitte jemand verifizieren?
Wie wär's, wenn Du es selbst machst und $Event und $Kalendertext logst?

snickers2k

#21
Das würde ich gerne tun. Wenn ich wüsste wie das geht  :/
Google spuckt nichts aus zu "fhem log $Event". Bin ziemlich frisch in FHEM, sorry.

Bei "Log 3, $EVENT;" wie aus dem anderen Posting führt (natürlich) zu unknown command ..

Aber wenn ich mir das ganze so anschaue, denke ich auch nicht, dass es funktionieren kann. Schließlich ist nirgendwo ein verweis auf die dummys, oder anders herum. Es wird keine Assoziation zwischen den dummys und den kalendar-"devices" angezeigt.

Es muss doch einen simplen weg geben, die dummys zu aktivieren, sobald die kalender ein aktiv anzeigen - was scheinbar nicht passiert.
Irgendwie scheint mir das script, was in die myUtiles zu legen ist, nicht zu funktionieren. Kann man das nicht auch einfach umgehen?
ZitatUm nicht für verschiedene Dummies immer einzelne Notifys zu bauen, wird hier bei mir je eine Funktion aus meiner 99_MyUtils.pm 99 myUtils anlegen aufgerufen und das Event als Parameter übergeben.
Würde mich nicht weiter stören - schließlich will ich nur zwei dummys anlegen?!

Ein Königreich für ein Modul :( ^^
Mal ehrlich - wäre das nicht sinnvoll? Könnte mir kaum ein Modul vorstellen, dass ich mehr vermisse :/

Danke.

Ellert

ZitatWenn ich wüsste wie das geht

Wenn Du Dir dein FHEM startest und das Menü siehst, welcher Link könnte wohl die meisten Informationen offenbaren?

Bei Google versuch mal "perl einsteiger". Das ist der erste Schritt zum eigenen Modul.

Amenophis86

Leute mal ganz im Ernst, ich habe es zu Beginn schon mal gesagt und sage es einfach nochmal. Es ist ein reines Glaskugel lesen, wenn ihr nicht euren Code/eure Codes postet. Und die Aussage, dass ihr ihn von irgendwo kopiert oder übernommen habt, bringt rein gar nichts. Auch hier können Fehler entstehen, welche wir nicht nachvollziehen können, wenn wir nicht eure relevanten Codes sehen. Also poste doch bitte mal deine Codes, welche du hast und dazu noch der Kalendereintrag, welcher dazu führen soll, dass ein Dummy gesetzt werden soll und dann sehen wir weiter. Es kann doch nicht so schwer sein! Und vor allem haben wir keine Lust irgendwo einem Link zu folgen um eure Fehler zu finden. Wir helfen echt alle gerne, aber bissi was müsst ihr halt auch schon machen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

crissiloop

Zitat von: snickers2k am 23 Dezember 2015, 04:38:36
Aber wenn ich mir das ganze so anschaue, denke ich auch nicht, dass es funktionieren kann. Schließlich ist nirgendwo ein verweis auf die dummys, oder anders herum. Es wird keine Assoziation zwischen den dummys und den kalendar-"devices" angezeigt.

Hallo snickers2k,

bevor du solche Aussage tätigst, solltest du zumindest versuchen zu verstehen, was bei den Codeschnipseln aus dem Wiki passiert. Es ist sehr wohl eine Verbindung vorhanden!
Und auch wenn ich nicht auf dem aktuellen Stand der einzelnen Module bin, habe ich es gerade bei mir wieder getest: und es funktioniert weiterhin so wie ich es im Wiki beschrieben habe! Allerdings keine Gewähr dafür, dass mit dem aktuellen Kalendermodul etwas komplett anders ist.

Hilfreich ist wie bereits gesagt die Definitionen des Calendar-Devices, und der Dummies sowie der beiden Notifies. Dann ein List des Kalenderdevices mit einem zu diesem Zeitpunkt gültigen Kalendereintrag, welcher auch im modeStarted erscheint. Denn nur darauf prüft das Notify!

Wenn du ein neuen Eintrag im Google Kalender anlegst bekommst du diesen mit dem Update Kommando im Kalenderdevice auch nach FHEM. Dann müsste unter modeStarted eine UID stehen. Diese kannst du mit get summary UID auslesen. Dann siehst du den Inhalt, welchen auch die Funktion überprüft.
Wenn beim Update ein Eintrag bei modeStarted vorhanden ist, schlägt auch das Notify an und wenn Regexp matched, dann wird auch der Status des Dummies gesetzt.

Gruß
crissiloop
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

Christian72D

Ich dachte zwar es wäre einfacher wenn ich NICHT den Code den ich 1:1 per Copy/Paste übernommen habe hier posten müsste, aber wenn es so gewünscht wird...

in fhem.cfg:

define Urlaub_dummy dummy
attr Urlaub_dummy room Kalender
attr Urlaub_dummy setList ja nein
attr Urlaub_dummy webCmd ja:nein
define Gast_dummy dummy
attr Gast_dummy room Kalender
attr Gast_dummy setList ja nein
attr Gast_dummy webCmd ja:nein

define Kalender_Christian_Start notify Kalender_Christian:modeStarted.*googlecom.* {\Kalenderstart("$EVENT");;\}
define Kalender_Christian_Ende notify Kalender_Christian:modeEnded.*googlecom.* {\Kalenderende("$EVENT");;\}


Und in 99_MyUtils.pm steht:

sub
Kalenderstart ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Kalender_Christian summary $uid");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Urlaub_dummy ja");
};
if ($Kalendertext =~ /Besuch/) {
fhem("set Gast_dummy ja");
};
};
}
sub Kalenderende ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Kalender_Christian summary $uid");
if ($Kalendertext =~ /Urlaub/) {
fhem("set Urlaub_dummy nein");
};
if ($Kalendertext =~ /Besuch/) {
fhem("set Gast_dummy nein");
};
};
}

Ellert

Zitat von: Ellert am 21 Dezember 2015, 20:26:55
Dann würde ich die Kalenderereignisse in den Notifys mal ins Logfile schreiben lassen Log 3, $EVENT;und in den Subs die Variable $KalendertextLog 3, $Kalendertext;. Und dann schauen ob "Besuch" am 22. auftaucht.

Und jetzt nochmal mitloggen was passiert und die Einträge posten.

snickers2k

#27
Ihr habt natürlich recht. Ich war etwas zu forsch mit meiner Aussage. Und unrecht hatte ich natürlich auch :/
Die Abfrage findet ja in der myUtils statt. Vermutlich wird desshalb keine assoziation im Device angezeigt. Mein Fehler.

Ich denke, ich habe den Fehler gefunden.. Jedenfalls funktioniert es jetzt. Ich sollte mir dringend angewöhnen den "DEF-Editor" (heißt der so?) zum eintragen von Funktionen zu nutzen.
Nachdem ich die Funktion aus dem Wiki direkt in den DEF geschrieben habe, also mit richtiger Zeilensetzung, hat es funktioniert

Dadurch ergibt sich auch in der fhem.cfg ein anderes Bild


define Kalender_Markus Calendar ical url https://calendar.google.com/calendar/ical/s8odvj1pojldkZENSIERTgv4o62g0%40group.calendar.goo$
attr Kalender_Markus group Kalender
attr Kalender_Markus room Administration
define Gast_dummy dummy
attr Gast_dummy group Kalender
attr Gast_dummy room Administration
attr Gast_dummy setList ja nein
attr Gast_dummy webCmd ja:nein
define Kalender_Markus_Start notify Kalender_Markus:modeStarted.*googlecom.* {\\
Kalenderstart("$EVENT");;;;\\
}
attr Kalender_Markus_Start group Kalender
attr Kalender_Markus_Start room Administration
define Kalender_Markus_Ende notify Kalender_Markus:modeEnded.*googlecom.* {\\
Kalenderende("$EVENT");;;;\\
}


Hoffe das hilft auch dir, Christian72D

d0m2011

#28
Hallo zusammen,

ich weiß, dass das Thema schon älter ist aber ich komme nicht weiter.

Den Kalender über Google habe ich eingerichtet und ich kann alle Events abrufen.
Wenn ich einen list auf den Kalender mache, kommt folgendes: Ich habe ein Event exemplarisch rauskopiert.

SUMMARY:Homeoffice
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20240107
DTEND;VALUE=DATE:20240108
DTSTAMP:20240107T193109Z
UID:7A727BCF-FA58-4201-B6C0-E0219C4CB2DA
CREATED:20240107T152724Z
LAST-MODIFIED:20240107T152724Z
SEQUENCE:0
STATUS:CONFIRMED

Bisher scheint soweit alles zu funktionieren.


Nun habe ich folgenden Eintrag in der 99_myUtils.pm:

sub
Kalenderstart ($)
{
    my ($Ereignis) = @_;
    my @Ereignisarray = split(/.*:\s/,$Ereignis);
    my $Ereignisteil1 = $Ereignisarray[1];
    my @uids = split(/;/,$Ereignisteil1);
    foreach my $uid (@uids) {
        my $Kalendertext = fhem("get Kalender summary uid=$uid 1");
        if ($Kalendertext =~ /Urlaub/) {
            fhem("set Urlaub ja");
        }
        if ($Kalendertext =~ /Homeoffice/) {
            fhem("set Homeoffice ja");
        }
    }
}
sub Kalenderende ($) {
    my ($Ereignis) = @_;
    my @Ereignisarray = split(/.*:\s/,$Ereignis);
    my $Ereignisteil1 = $Ereignisarray[1];
    my @uids = split(/;/,$Ereignisteil1);
    foreach my $uid (@uids) {
        my $Kalendertext = fhem("get Kalender summary uid=$uid 1");
        if ($Kalendertext =~ /Urlaub/) {
            fhem("set Urlaub nein");
        }
        if ($Kalendertext =~ /Homeoffice/) {
            fhem("set Homeoffice nein");
        }
    }
}

Problem Nr. 1: Wenn ich nun "get Kalender summary uid=$uid 1" ausführe, kommt nichts! Das Dialogfenster ist einfach leer. Hier scheint ein Fehler zu sein warum es in Summe nicht funktioniert.

Zudem habe ich folgende Notifies:
Kalender:start:.*googlecom.* {Kalenderstart("$EVENT")}
Kalender:end:.*googlecom.* {Kalenderende("$EVENT")}
Problem Nr.2: Wenn ich nun den Notify folgerndermaße anpasse, wie oben beschrieben, bekomme ich einen Syntax Error:

Kalender:modeStarted.*googlecom.* {\\
Kalenderstart("$EVENT");;;;\\
}

Syntax Error:
syntax error at (eval 3248483) line 1, at EOF

Jetzt komme ich nicht weiter - vielleicht könnt ihr mir helfen.

betateilchen

Abgesehen davon, dass der Thread tatsächlich schon über 8 Jahre lang in der Versenkung verschwunden war und Du beim Schreiben die rote Warnung ignoriert hast, bist Du mit Deiner Frage auch noch komplett im falschen Forumbereich unterwegs.

Was Du da in Deiner 99_myUtils.pm versuchst, ist uralte Syntax die schon lange nicht mehr aktuell ist. Wo hast Du das abgeschrieben?

Schau mal hier -  im richtigen Unterforum zu Calendar: https://forum.fhem.de/index.php?topic=87895.0

Da hatte ich schon vor fast 6 Jahren die Anwendung der neuen Syntax mit Beispielen beschrieben.
Ansonsten hilft auch ein Blick in die commandref weiter.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!