Programmierproblem Calendermodul

Begonnen von juelich, 03 November 2014, 21:43:18

Vorheriges Thema - Nächstes Thema

juelich

Ich nutze schon seit mehr als einem Jahr das Kalendermodul zur Heizungssteuerung. Das klappt auch wunderbar, allerdings mit vielen Fehlermeldungen im Log (Habe darunter bei "unterstützende Dienste" gepostet.
Das ganze wird über Termine im Google-Kalender gesteuert, mit dem Text z.B. "24 17", heißt Terminbeginn 24 Grad, Terminende 17 Grad.
Programmiert habe ich das Ganze über Notifys - und da liegt meines Erachtens das Problem:

Ich bin davon ausgegangen, dass das Notify nur aktiv wird, wenn der Termin erreicht ist (wäre für mich logisch). Scheinbar wird das Notify aber grundsätzlich bei jedem Kalenderupdate aktiviert, dann wird allerdings ein leerer Termin mitgeliefert. Ich habe mal versucht zu loggen, das Ganze sieht bei mir so aus:

Kalender_Bad:modeStarted.* {
my $reading="%EVTPART0";;
my $uid="%EVTPART1";;
my $termin= fhem("get Kalender_Bad summary $uid");;
if ($termin ne "") {
my ($dtemp,undef)= split(/ /, fhem("get Kalender_Bad summary $uid"));;
log 1, "Temperatur $dtemp"}}


Das Log dazu sieht so aus:

2014.11.03 21:28:14 4: Calendar Kalender_Bad: Wakeup
2014.11.03 21:28:14 4: Calendar Kalender_Bad: Updating...
2014.11.03 21:28:17 4: Calendar Kalender_Bad: Checking times...
2014.11.03 21:28:17 3: Terminbeginn
2014.11.03 21:28:17 5: Triggering HZ.Bad_an
2014.11.03 21:28:17 4: HZ.Bad_an exec {
my $reading="modeStarted:";;;;
my $uid="%EVTPART1";;;;
my $termin= fhem("get Kalender_Bad summary $uid");;;;
if ($termin ne "") {
my ($dtemp,undef)= split(/ /, fhem("get Kalender_Bad summary $uid"));;;;
log 1, "Temperatur $dtemp"}}
2014.11.03 21:28:17 1: PERL WARNING: Use of uninitialized value $termin in string ne at (eval 5821) line 5.
2014.11.03 21:28:17 3: eval: {
my $reading="modeStarted:";;
my $uid="%EVTPART1";;
my $termin= fhem("get Kalender_Bad summary $uid");;
if ($termin ne "") {
my ($dtemp,undef)= split(/ /, fhem("get Kalender_Bad summary $uid"));;
log 1, "Temperatur $dtemp"}}

Die Abfrage ob der Terminbetreff leer ist scheint also nicht korrekt zu sein - wie muss sie richtig lauten?

Zur Vervollständigung - mein Originalnotify:

Kalender_Wohnzimmer:modeStarted.* {my $reading="%EVTPART0"; my $uid= "%EVTPART1"; my ($dtemp,undef)= split(/ /,fhem("get Kalender_Wohnzimmer summary $uid")); { fhem("set hz.wohnzimmer desired-temp $dtemp"); } } führt zu:

2014.11.01 01:15:46 1: PERL WARNING: Use of uninitialized value in split at (eval 966) line 1.
2014.11.01 01:15:46 3: eval: { my $reading="modeStarted:"; my $uid= "%EVTPART1"; my ($dtemp,undef)= split(/ /,fhem("get Kalender_Wohnzimmer summary $uid")); { fhem("set hz.wohnzimmer desired-temp $dtemp"); } }
2014.11.01 01:15:46 1: PERL WARNING: Use of uninitialized value $dtemp in concatenation (.) or string at (eval 966) line 1.

Viele Grüße

Markus