Originally posted by: <email address deleted>
Hallo,
ich möchte das CALENDAR Modul benutze, um über einen Google Kalendar meine
Heizung zu programmieren. Leider kriege ich nicht die erwarteten Events.
Zum Test habe ich mal einen FileLog definiert
und ein Event im Kalender eingetragen: Startzeit 11:10, Endzeit 11:20.
Zur Startzeit wird auch der Event "cal0 modeStarted: 6sgooglecom"
(Eventname gekürzt) abgesetzt,
zur Endzeit kommt jedoch "cal0 modeEnded: ", also ohne Parameter welches
Event denn nun geendet hat.
Das Problem ist wohl, dass
isEnded(): return $self->{end}< $t
isStarted(): return $self->{start}<= $t && $t<= $self->{end}
Jedoch wacht das Kalender-Modul genau zur end oder start Zeit auf.
Wenn es zur end Zeit aufwacht, dann gilt jedoch noch isStarted(), da
$t == $self->{end}.
Angehängter Patch ändert (=korrigiert?) diese Logik.
Viele Grüße,
Matthias
-- fhem.cfg:
define cal0 Calendar ical url https://www.google.com/calendar/...
define FL_cal0 FileLog ./log/cal0.log cal0:.*
-- cal0.log:
2012-11-19_11:10:00 cal0 changed: 6sgooglecom start
2012-11-19_11:10:00 cal0 lastCheck: 2012-11-19 11:10:00
2012-11-19_11:10:00 cal0 modeUpcoming:
2012-11-19_11:10:00 cal0 modeAlarm:
2012-11-19_11:10:00 cal0 modeAlarmed:
2012-11-19_11:10:00 cal0 modeAlarmOrStart: 6sgooglecom
2012-11-19_11:10:00 cal0 modeChanged: 6sgooglecom
2012-11-19_11:10:00 cal0 modeStart: 6sgooglecom
2012-11-19_11:10:00 cal0 modeStarted: 6sgooglecom
2012-11-19_11:10:00 cal0 modeEnd:
2012-11-19_11:10:00 cal0 modeEnded:
2012-11-19_11:20:00 cal0 lastCheck: 2012-11-19 11:20:00
2012-11-19_11:20:00 cal0 modeUpcoming:
2012-11-19_11:20:00 cal0 modeAlarm:
2012-11-19_11:20:00 cal0 modeAlarmed:
2012-11-19_11:20:00 cal0 modeAlarmOrStart: 6sgooglecom
2012-11-19_11:20:00 cal0 modeChanged:
2012-11-19_11:20:00 cal0 modeStart: 6sgooglecom
2012-11-19_11:20:00 cal0 modeStarted:
2012-11-19_11:20:00 cal0 modeEnd:
2012-11-19_11:20:00 cal0 modeEnded:
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Danke, werde mich in den nächsten Tagen damit befassen.
Viele Grüße
Boris
-------- Original-Nachricht --------
Von: Polytheus@gmx.de
Gesendet: Mon Nov 19 12:49:29 MEZ 2012
An: fhem-users@googlegroups.com
Betreff: [FHEM] 57_CALENDAR: modeEnded wird nicht getriggert
Hallo,
ich möchte das CALENDAR Modul benutze, um über einen Google Kalendar meine
Heizung zu programmieren. Leider kriege ich nicht die erwarteten Events.
Zum Test habe ich mal einen FileLog definiert
und ein Event im Kalender eingetragen: Startzeit 11:10, Endzeit 11:20.
Zur Startzeit wird auch der Event "cal0 modeStarted: 6sgooglecom"
(Eventname gekürzt) abgesetzt,
zur Endzeit kommt jedoch "cal0 modeEnded: ", also ohne Parameter welches
Event denn nun geendet hat.
Das Problem ist wohl, dass
isEnded(): return $self->{end}< $t
isStarted(): return $self->{start}<= $t && $t<= $self->{end}
Jedoch wacht das Kalender-Modul genau zur end oder start Zeit auf.
Wenn es zur end Zeit aufwacht, dann gilt jedoch noch isStarted(), da
$t == $self->{end}.
Angehängter Patch ändert (=korrigiert?) diese Logik.
Viele Grüße,
Matthias
-- fhem.cfg:
define cal0 Calendar ical url https://www.google.com/calendar/...
define FL_cal0 FileLog ./log/cal0.log cal0:.*
-- cal0.log:
2012-11-19_11:10:00 cal0 changed: 6sgooglecom start
2012-11-19_11:10:00 cal0 lastCheck: 2012-11-19 11:10:00
2012-11-19_11:10:00 cal0 modeUpcoming:
2012-11-19_11:10:00 cal0 modeAlarm:
2012-11-19_11:10:00 cal0 modeAlarmed:
2012-11-19_11:10:00 cal0 modeAlarmOrStart: 6sgooglecom
2012-11-19_11:10:00 cal0 modeChanged: 6sgooglecom
2012-11-19_11:10:00 cal0 modeStart: 6sgooglecom
2012-11-19_11:10:00 cal0 modeStarted: 6sgooglecom
2012-11-19_11:10:00 cal0 modeEnd:
2012-11-19_11:10:00 cal0 modeEnded:
2012-11-19_11:20:00 cal0 lastCheck: 2012-11-19 11:20:00
2012-11-19_11:20:00 cal0 modeUpcoming:
2012-11-19_11:20:00 cal0 modeAlarm:
2012-11-19_11:20:00 cal0 modeAlarmed:
2012-11-19_11:20:00 cal0 modeAlarmOrStart: 6sgooglecom
2012-11-19_11:20:00 cal0 modeChanged:
2012-11-19_11:20:00 cal0 modeStart: 6sgooglecom
2012-11-19_11:20:00 cal0 modeStarted:
2012-11-19_11:20:00 cal0 modeEnd:
2012-11-19_11:20:00 cal0 modeEnded:
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
--
sent from my WePad - apologies for brevity
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hallo Zusammen,
vielen Dank für das großartige Calendar Modul. Ich hatte ein fettes Grinsen
im Gesicht, als nach einem (mit meinem Androiden) erstellen Kalendareintrag
das Licht anging :-).
Auch bei mir gingen bei modeEnded die Lichter nicht automatisch aus. Wenn
jedoch zwischen Beginn und Ende ein "set GoogleCalendar update"
durchgeführt wird, klappt es.
Zum Ausprobieren habe ich daher das Intervall auf 60s gesetzt und dadurch
ein kleinen Bug festgestellt:
Immer wenn ein "set GoogleCalendar update" durchgeführt wird (automatisch
oder manuell), werden notfier mit einem GoogleCalendar:modeStarted.*
getriggert, auch wenn gar kein Kalendareintrag angelegt ist.
Dies führt dazu, dass bei folgendem Beispiel bei jedem "set GoogleCalendar
update" kein gültiger %EVTPART1 geliefert wird und im Log haufenweise
Fehlermeldungen auftreten.
"define Google_SwitchActorOn notify GoogleCalendar:modeStarted.* { my $uid=
"%EVTPART1";; my $actor= fhem("get MyCalendar summary $uid");; fhem("set
$actor on") }"
Vereinfacht gesagt schaltet folgender notify jedesmal bei einem "set
GoogleCalendar update" die Lampe ein, auf wenn gar kein Kalendereintrag
vorhanden ist.
"define LampePerGoogle notify MyCalendar:modeStarted.* set Lampe on"
Als kurzfristigen Hotfix habe ich in mein notify eine kleine Abfrage
eingebaut, ob %EVTPART1 vorhanden ist. Ist dies nämlich nicht der Fall,
gibt %EVTPART1 folgende Ausgabe "modeStarted: EVTPART1".
Ich hätte ja vermutet, dass %EVTPART1 leer ist und ein if(("%EVTPART1") vor
dem Befehl ausreicht, aber dies funktionierte nicht. Nun steht ein
if("%EVTPART1" ne "modeStarted: EVTPART1") vor dem Rest des Befehls und
alles klappt wie gewollt.
Grüße Jannes
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hallo Jannes,
Am 23.11.2012 20:27, schrieb Dr. Boris Neubert:
>
>
> Zum Ausprobieren habe ich daher das Intervall auf 60s gesetzt und
> dadurch ein kleinen Bug festgestellt:
> Immer wenn ein |"set GoogleCalendar update|" durchgeführt wird
> (automatisch oder manuell), werden notfier mit einem
> GoogleCalendar:modeStarted.* getriggert, auch wenn gar kein
> Kalendareintrag angelegt ist.
>
das ist so gewollt. Wie bei anderen "Geräten" auch führt die
Aktualisierung eines Readings dazu, daß Events getriggert werden. Wenn
dann keine Kalenderereignisse in Irgendwas-Zustand sind, ist das Reading
modeIrgendwas leer. Es ist also richtig, daß Du in Deinen notifys auf
leere Readings prüfst.
Viele Grüße
Boris
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hallo Matthias,
Am 19.11.2012 12:49, schrieb Polytheus@gmx.de:
> isEnded(): return $self->{end}< $t
> isStarted(): return $self->{start}<= $t && $t<= $self->{end}
> Jedoch wacht das Kalender-Modul genau zur end oder start Zeit auf.
> Wenn es zur end Zeit aufwacht, dann gilt jedoch noch isStarted(), da
> $t == $self->{end}.
Danke, das scheint mir sinnvoll. Ich habe es eingecheckt.
Gruesse
Boris
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hi Boris,
danke für deine Aufklärung, dann nehme ich "Bug" natürlich zurück ;-)
Eventuell wäre der Einbau dieser Abfrage in dem Beispiel im commandref für
weitere User hilfreich? Das Beispiel funktioniert zwar ausgezeichnet, wirft
aber haufenweise Fehlermeldungen ins Log-File.
Nochmals vielen Dank für eure super Arbeit!
Jannes
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com