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

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

Vorheriges Thema - Nächstes Thema

wkarl

Hallo,

ich habe hier folgendes Phänomen:

  • der erste screenshot zeigt die Kalenderdefinitionen von heute ab (04.08.)
  • der zweite die Definition in fhem
  • der dritte die Informationen mit get ... text all
Hat jemand schon ähnliche Erfahrungen gemacht?
Danke und ciao
walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

betateilchen

Ganztägige Ereignisse und das fhem Kalendermodul waren noch nie beste Freunde - und werden es wohl auch nie werden.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wkarl

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
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wkarl

Habe jetzt die Termine auf gezeitet umgestellt. Das mit holiday sehe ich mir noch an.
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

wkarl

Ergänzend: sobald ein Termin vor 02:00 startet lieferte er den gleichen Blödsinn wie Ganztagstermine. Termin ab 02:00 funktionieren wie erwartet.
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

betateilchen

Hängt wohl mit der Zeitzone und der Sommerzeit zusammen ;)

Ab November funktionieren dann auch die Termine ab 01:00 Uhr wieder richtig  :P
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wkarl

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.
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

wkarl

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.
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

chris1284

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.

betateilchen

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)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

chris1284

Bei mir sind es Ganztagestermine... Werd ich wohl doch nochmal das Calendardmodul einbinden und testen

Dr. Boris Neubert

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

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

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

kohlenmacher

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

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