FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: wkarl am 04 August 2014, 07:34:27

Titel: (naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: wkarl am 04 August 2014, 07:34:27
Hallo,

ich habe hier folgendes Phänomen:
Hat jemand schon ähnliche Erfahrungen gemacht?
Danke und ciao
walter
Titel: Antw:Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: betateilchen am 04 August 2014, 09:41:25
Ganztägige Ereignisse und das fhem Kalendermodul waren noch nie beste Freunde - und werden es wohl auch nie werden.

Titel: Antw:Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: wkarl am 04 August 2014, 09:55:39
Stimmt. Kann ich nach etlichen Tests bestätigen  :-\

Ganztägige Termine liefern mit get ... text all nicht nachvollziehbare, wirre Ergebnisse. Gezeitete Termine werden korrekt ausgewertet.

Tja, hätte ich das vorher gewusst  :o

ciao walter
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: betateilchen am 04 August 2014, 10:00:43
Müllkalender binde ich über das holiday Modul ein, das geht viel einfache :)

Ausserdem kannst Du ja die Termine einfach ändern. Anstatt als ganztägiges Ereignis einfach als Ereignis von 00:01 bis 23:59 Uhr definieren.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: wkarl am 04 August 2014, 10:04:24
Habe jetzt die Termine auf gezeitet umgestellt. Das mit holiday sehe ich mir noch an.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: wkarl am 04 August 2014, 11:40:03
Ergänzend: sobald ein Termin vor 02:00 startet lieferte er den gleichen Blödsinn wie Ganztagstermine. Termin ab 02:00 funktionieren wie erwartet.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: betateilchen am 04 August 2014, 12:04:13
Hängt wohl mit der Zeitzone und der Sommerzeit zusammen ;)

Ab November funktionieren dann auch die Termine ab 01:00 Uhr wieder richtig  :P
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: wkarl am 04 August 2014, 12:30:21
uuuund noch was: nimmt man einen Termin aus den Wiederholungen und plant ihn auf ein anderes Datum (wg Feiertag), interessiert das Calendar aber sowas von gar nicht.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: wkarl am 04 August 2014, 12:53:30
Ich meinen das Problem sind nicht die Ganztagtermine. Habe etliche eingetragen und diese werden sauber erkannt. Vermutlich liegt das Problem an den sich wiederholenden Terminen.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: chris1284 am 04 August 2014, 13:03:53
Also bei mir sind es auf jeden Fall die Wiederholungen die Probleme machen (sind auch noch nicht alle Arten die der Klalender bietet in in das Modul eingbaut , werden wohl auch nicht mehr vom Autor). Aus diesem Grund laufen diese Art der Termine (zb Müll Tag x alle 2 Wochen) über das Holiday-Modul und der Calendar ist ganz rausgeflogen.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: betateilchen am 04 August 2014, 13:49:18
Zitat von: chris1284 am 04 August 2014, 13:03:53
Aus diesem Grund laufen diese Art der Termine (zb Müll Tag x alle 2 Wochen)

exakt solche Termine laufen bei mir aber absolut problemlos - allerdings sind das bei mir keine Ganztagstermine.

(http://up.picr.de/19112216yj.png)

Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: chris1284 am 04 August 2014, 13:52:45
Bei mir sind es Ganztagestermine... Werd ich wohl doch nochmal das Calendardmodul einbinden und testen
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: Dr. Boris Neubert am 04 August 2014, 22:13:18
Zitat von: chris1284 am 04 August 2014, 13:03:53
sind auch noch nicht alle Arten die der Klalender bietet in in das Modul eingbaut , werden wohl auch nicht mehr vom Autor

Korrekt ist, dass ich die erforderlichen Änderungen nicht selbst vornehmen mag, weil mir der Aufwand zu hoch ist, und dass ich Patches entgegennehme und jeden, der sich an der Weiterentwicklung der Behandlung wiederkehrender Termine versuchen will, gerne mit meinem Know-how unterstütze.

Grüße
Boris

Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: betateilchen am 05 August 2014, 07:06:31
Das Kalendermodul ist "schwierig" weil ich auch nach vielen Stunden Code-Lesen an vielen Stellen immer noch nicht durchschaue, was der Künstler sich dabei gedacht hat. Und das passiert mir eigentlich recht selten.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: kohlenmacher am 19 August 2014, 13:03:40
Hallo,

da ich meinen Geburtstagskalender in FHEM einbinden wollte, bin ich auch über die verschobenen ganztages Termine gestolpert. Darauf hin habe ich mir das Calendar Modul mal genauer angeschaut und bin auf die Funktionen fhemTimeLocal() und localtime() gestoßen. localtime() ist eine Perl Funktion und das Gegenstück von timelocal(), was das gleiche macht soll wie fhemTimeLocal(). Dann habe ich mehrere Daten über timelocal() und fhemTimeLocal konvertiert und anschließen mit localtime() zurück konvertiert.
Hier die Ergebnisse. (Achtung:Monate beginnen bei 0)
1.0.70 0:0:0 -> perl:-3600 ; fhem:-3600 -> perl:Thu Jan  1 00:00:00 1970 ; fhem:Thu Jan  1 00:00:00 1970
1.0.0 0:0:0 -> perl:946681200  fhem:-2208906000 -> perl:Sat Jan  1 00:00:00 2000 ; fhem:Tue Jan  2 00:00:00 1900
6.6.66 0:0:0 -> perl:-110167200  fhem:-110080800 -> perl:Wed Jul  6 00:00:00 1966 ; fhem:Thu Jul  7 00:00:00 1966
8.8.88 0:0:0 -> perl:589672800  fhem:589759200 -> perl:Thu Sep  8 00:00:00 1988 ; fhem:Fri Sep  9 00:00:00 1988
11.11.04 0:0:0 -> perl:1102719600  fhem:-2052867600 -> perl:Sat Dec 11 00:00:00 2004 ; fhem:Tue Dec 13 00:00:00 1904
11.11.1904 0:0:0 -> perl:-2053040400  fhem:57905276400 -> perl:Sun Dec 11 00:00:00 1904 ; fhem:Wed Dec 12 00:00:00 3804
11.11.2004 0:0:0 -> perl:1102719600  fhem:61060950000 -> perl:Sat Dec 11 00:00:00 2004 ; fhem:Mon Dec 12 00:00:00 3904

Aus dieser Erkenntnis habe ich fhemTimelocal() durch timelocal() ersetzt und das Jahr 4-stellig belassen.

Jetzt werden die wiederholenden ganztages Termine korrekt berechnet.

Da ich mit Notepad++ arbeite und nicht weis wie ich eine patch-Datei erzeuge, habe ich die  komplette Datei angehängt zum Testen.

Ich hoffe ich konnte helfen.

Gruß
kohlenmacher
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: Dr. Boris Neubert am 20 August 2014, 20:46:06
Danke, kohlenmacher, für die Analyse und den Umbau.

Ich bin derzeit noch mit der Beseitigung eines Überspannungsschadens beschäftigt und werde dann zu gegebener Zeit hierauf zurückkommen.

Viele Grüße
Boris
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: Dr. Boris Neubert am 31 August 2014, 19:07:56
Hallo,

wir sehen hier zwei Phänomene:
- blau und 1.1.0: fhemTimeLocal zählt die Jahre immer ab 1900. Die Interpretation der Jahreszahlen gemäß http://perldoc.perl.org/Time/Local.html#Year-Value-Interpretation findet nicht statt. Solange wir in FHEM konsistent mit der Perl-Notation arbeiten (Jahre ab 1900 zählen), sollte uns das nicht beißen.
- rot: hier gibt es die Verschiebung von einem Tag. Das werde ich näher analysieren.

Zum Verständnis: im ICAL-Format werden u.U. Zulu-Zeiten (UTC) verwendet. Diese werden mit fhemTimeGm in die Anzahl Sekunden seit der Epoche umgerechnet. Andere Zeiten werden mit fhemTimeLocal in die Anzahl Sekunden umgerechnet, wobei auf fhemTimeGm zurückgegriffen wird und lediglich um den Zeitzonenoffset adjustiert wird.

Viele Grüße
Boris
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: Dr. Boris Neubert am 01 September 2014, 12:38:12
Hallo,

Rudi hat gerade meinen Fix für fhemTimeGm() eingecheckt. Ich meine, dass damit die Berechnung der Tagestermine grundsätzlich funktionieren sollte.

Könnte das bitte jemand ab morgen testen?

Viele Grüße
Boris
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: kohlenmacher am 02 September 2014, 12:37:38
Hallo Boris,

ich habe jetzt nochmal meinen Test laufen lassen.
Hier die Ergebnisse:

1.0.70 0:0:0 -> perl:-3600 ; fhem:-3600 -> perl:Thu Jan  1 00:00:00 1970 ; fhem:Thu Jan  1 00:00:00 1970
1.0.0 0:0:0 -> perl:946681200  fhem:-2208992400 -> perl:Sat Jan  1 00:00:00 2000 ; fhem:Tue Jan  1 00:00:00 1900
6.6.66 0:0:0 -> perl:-110167200  fhem:-110080800 -> perl:Wed Jul  6 00:00:00 1966 ; fhem:Thu Jul  7 00:00:00 1966
8.8.88 0:0:0 -> perl:589672800  fhem:589672800 -> perl:Thu Sep  8 00:00:00 1988 ; fhem:Fri Sep  8 00:00:00 1988
11.11.04 0:0:0 -> perl:1102719600  fhem:-2052954000 -> perl:Sat Dec 11 00:00:00 2004 ; fhem:Tue Dec 12 00:00:00 1904
11.11.1904 0:0:0 -> perl:-2053040400  fhem:57905190000 -> perl:Sun Dec 11 00:00:00 1904 ; fhem:Wed Dec 11 00:00:00 3804
11.11.2004 0:0:0 -> perl:1102719600  fhem:61060863600 -> perl:Sat Dec 11 00:00:00 2004 ; fhem:Mon Dec 11 00:00:00 3904

Termine vor dem 1.1.1970 scheinen noch Probleme zu machen.

Darauf habe ich den angehängten Kalender erzeugt und mit "get Geburtstage text all" kommt folgendes raus:
Datum Startzeit Beschreibung
09.09.14 00:00 9.9.1999
10.10.14 00:00 10.10.2000
11.11.14 00:00 11.11.2011
01.01.15 00:00 31.12.1968
01.01.15 00:00 1.1.1970
01.01.15 00:00 1.1.1969
10.03.15 00:00 2.2.1922
30.03.15 00:00 3.3.1933
23.04.15 00:00 4.4.1944
16.05.15 00:00 5.5.1955
09.06.15 00:00 6.6.1966
07.07.15 00:00 7.7.1977
08.08.15 00:00 8.8.1988

Termine vor dem 1.1.1969 sind noch nicht korrekt.

Ich hoffe Du kannst den Fehler noch finden.

Gruß
kohlenmacher

PS: ich habe dein Modul noch um eine Web Ausgabe erweitert, falls Du es testen und einbauen möchtest sag mir bescheid.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: Dr. Boris Neubert am 02 September 2014, 13:52:42
Hallo,

Danke für den Test.

Termine vor 1970 hielt ich nicht für relevant und funktionieren auch nicht - das ist dennoch POSIX-konform. Aber ich sehe, dass Du Geburtstage als Geburtstermin eingibst und dann jährlich rollieren lässt. Wenn Du die Geburtstage danach starten lässt, z.B. ab 2014, wird es funktionieren. Ist auch energetisch günstiger, weil das Kalendermodul sonst jedesmal z.B. erst ab 1922 jahresweise bis heute vorrollen muss, um den aktuellen Geburtstagstermin zu ermitteln.

Jahre vor 1970 erfordern eine andere Korrekturberechnung für die einzurechnenden Schaltjahre als Jahre ab 1970. Du kannst Dir ja mal fhemTimeGm() in fhem.pl daraufhin ansehen ($leapyears).

Bei Deinem Test ist außerdem der Effekt überlagert, dass timegm() Jahre interpretiert (siehe mein Zitat aus einem vorigen Post), während fhemTimeGm() die Jahreszahl strikt als Jahre ab 1900 interpretiert.


Was hat es mit der Webausgabe auf sich?

Viele Grüße
Boris
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: kohlenmacher am 02 September 2014, 15:11:25
Hallo Boris,

die Geburtstage habe ich als Geburtstermin eingegeben, damit ich gleich das Geburtsjahr mit vermerkt habe. Und ich habe bei einem Kalender mal gesehen, das er dann gleich das Alter mit angegeben hat. Ansonsten sind Termine die über 44 Jahre alt sind natürlich nicht so oft vorhanden. ;)

Zur Webansicht:
Ich wollte die Termine im FHEM anzeigen lassen. Habe dazu das CALVIEW Modul zuerst verwendet. Nachteil ist, das es readingsGroup verwendet um die Termine anzuzeigen. Die Termine werden bei deutschem Datumsformat dann nicht in der richtigen Reihenfolge angezeigt. Außerdem finde ich drei Module zu verwenden für eine Sache etwas zu viel. Da bin ich nun mal Minimalist. Ich habe mir das im readingsGroup Modul angeschaut und in mein Calendar2 Modul eingebaut. Sieht dann wie im Anhang aus.

Gruß
kohlenmacher
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: Toto1973 am 17 Februar 2015, 12:11:25
Hallo!
Da ich aktuell auch ein Problem mit dem Calendar-Modul habe, das mir fhem alte Einträge aus meinen Google Kalender läd, wollte ich mal fragen, ob das funktionierende Modul ins FHEM Update eingepflegt ist oder ob ich es manuell updaten sollte.
Ja und wenn manuell, wo ich das her bekomme.
Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: Dr. Boris Neubert am 17 Februar 2015, 20:36:44
Hallo,

das Update liefert (natürlich ;-) ein funktionierendes Calendar-Modul aus.

Ich habe allerdings nicht verstanden, welches Problem Du mit einem Update lösen möchtest, dass es nie gab.

Viele Grüße
Boris

Titel: Antw:(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen
Beitrag von: Toto1973 am 03 März 2015, 18:24:21
Das mit dem Calendar hatte ich recht schnell wieder gesteckt, da ich immer Einträge aus vergangenen Jahren als aktuell angezeigt bekommen habe.
Die Aufgaben, die aus dem Kalender heraus hätten gesteuert werden sollen, hab ich nun anders gelöst!