(naja, gelöst) Google-Kalender/Calendar liefert falsche Informationen

Begonnen von wkarl, 04 August 2014, 07:34:27

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

kohlenmacher

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.

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

kohlenmacher

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

Toto1973

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.
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

Dr. Boris Neubert

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

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Toto1973

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!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000