Probleme bei Google-Steuerung für HM-CC-RT-DN

Begonnen von juelich, 04 November 2013, 21:06:23

Vorheriges Thema - Nächstes Thema

martinp876

Hallo Markus,

um einmal zum Problem zurück zu kommen: das Kommando desired-temp funktioniert. Es wird sich darüber beschwert, dass kein Parameter übergeben wurde - und es ist einer erforderlich. Daher solltest du feststellen, was eigentlich zu diesem Zeitpunkt in $dtemp steht. Schreibe es irgendwo hin, am besten ins log

define HZ.Bad_an notify Kalender_Bad:modeStarted.* { \
my $reading="%EVTPART0";\
my $uid= "%EVTPART1"; \
my ($dtemp,undef)= split(/ /,fhem("get Kalender_Bad summary $uid")); \
{ fhem("set hz.bads desired-temp $dtemp");}\
Log 1,"try to set desired-temp to $dTemp"; }

zum Testen ist es noch besser, gleich alles wegzuschreiben:

define HZ.Bad_an notify Kalender_Bad:modeStarted.* { \
my $reading="%EVTPART0";\
my $uid= "%EVTPART1"; \
my $dAll = fhem("get Kalender_Bad summary $uid"));\
my ($dtemp,undef)=$dAll; \
{ fhem("set hz.bads desired-temp $dtemp");}\
Log 1,"try to set desired-temp to $dTemp from $dAll ##"; }

du nutzt die ersten beiden durch blank getrennten Parameter - schaue dir genau an, was die Funktion liefert. Offensichtlich ist dTemp hier "leer".
Nur wenn der Log korrekt kommt ist es ein Beweis für etwa - bin gespannt

Gruss Martin



betateilchen

Zitat von: martinp876 am 05 November 2013, 22:57:40um einmal zum Problem zurück zu kommen: das Kommando desired-temp funktioniert. Es wird sich darüber beschwert, dass kein Parameter übergeben wurde - und es ist einer erforderlich.

das ist doch ganze Zeit meine Rede und von diesem Punkt habe ich mich - allen Unkenrufen zum Trotz - auch nie wegbewegt - also muss ich zu dem Problem nicht zurückkommen, weil ich die ganze Zeit da bin?!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

martinp876

dann gib ihm halt einen Tip, wie er es herausfinden kann - anstatt zu stänkern

juelich

Kleine Rückmeldung:

Ich konnte das Log leider nicht so einfügen wie Du vorgeschlagen hast, Martin. Da kam ein Syntaxfehler. Ich habe es halt hinten angehängt, ich hoffe, es hilft trotzdem:

2013.11.06 22:41:00 3: HZ.Bad_an return value: Global symbol "$dTemp" requires explicit package name at (eval 467) line 1.
Unmatched right curly bracket at (eval 467) line 1, at end of line
syntax error at (eval 467) line 1, near "} }"

2013.11.06 22:42:44 2: CUL_HM set CUL_HM_HM_CC_RT_DN_221812_WindowRec getConfig
2013.11.06 22:43:00 3: HZ.Bad_an return value: Global symbol "$dTemp" requires explicit package name at (eval 471) line 1.

2013.11.06 22:43:00 3: HZ.Bad_an return value: Global symbol "$dTemp" requires explicit package name at (eval 473) line 1.

2013.11.06 22:43:50 3: set hz.bad desired-temp  : desired-temp requires parameter: [on|off|5.0..30.0]
2013.11.06 22:43:50 1: try to set desired-temp to
2013.11.06 22:45:00 3: get Kalender_Bad summary xxx: 18 17
2013.11.06 22:45:00 2: CUL_HM set hz.bad desired-temp 18
2013.11.06 22:45:00 1: try to set desired-temp to 18
2013.11.06 22:45:17 2: CUL_HM set hz.kueche getConfig
2013.11.06 22:46:00 3: set hz.bad desired-temp  : desired-temp requires parameter: [on|off|5.0..30.0]
2013.11.06 22:46:00 1: try to set desired-temp to
2013.11.06 22:46:00 3: set hz.bad desired-temp  : desired-temp requires parameter: [on|off|5.0..30.0]
2013.11.06 22:46:00 1: try to set desired-temp to
2013.11.06 22:47:36 2: CUL_HM set CUL_HM_HM_CC_RT_DN_221812_remote getConfig
2013.11.06 22:48:00 3: set hz.bad desired-temp  : desired-temp requires parameter: [on|off|5.0..30.0]
2013.11.06 22:48:00 1: try to set desired-temp to
2013.11.06 22:48:00 3: get Kalender_Bad summary xxx: 18 17
2013.11.06 22:48:00 2: CUL_HM set hz.bad desired-temp 17
2013.11.06 22:48:00 3: set hz.bad desired-temp  : desired-temp requires parameter: [on|off|5.0..30.0]
2013.11.06 22:48:00 1: try to set desired-temp to
2013.11.06 22:48:00 3: set hz.bad desired-temp  : desired-temp requires parameter: [on|off|5.0..30.0]
2013.11.06 22:48:00 1: try to set desired-temp to

Der entsprechende Kalendereintrag lautete: 22:45 bis 22:48 "18 17"

Es kommt tatsächlich ein Fehler, den ich aber nicht einordnen kann. Ich verwende doch gar nicht "$dTemp" , sondern "$dtemp" .
Wie man sieht funktioniert das Setzen der Temperatur aber trotzdem.

@Betateilchen: Dein Notify war bei mir auch noch aktiv, ich habe mal einen Termin angelegt, jetzt passiert aber leider gar nicht :-( Es hat aber schon mal bei mir funktioniert.

Hatte einen Termin
"hz.kueche 21 17"
Mi, 6. November, 22:59 – 23:02

Notify Kalender_Heizung:modeStarted.* { my $reading="%EVTPART0"; my $uid= "%EVTPART1"; my ($actor,$dtemp,undef)= split(/ /,fhem("get Kalender_Heizung summary $uid")); if(defined $actor) { fhem("set $actor desired-temp $dtemp"); } }

Viele Grüße

Markus

juelich

Hallo Martin, ich habe jetzt doch noch Deinen Code eingeben können - aber das Log ist dabei leer:

Termin:
"18 17"
Mi, 6. November, 23:25 – 23:28

Notify: define HZ.Bad_an notify Kalender_Bad:modeStarted.* { my $reading="%EVTPART0"; my $uid= "%EVTPART1"; my ($dtemp,undef)= split(/ /,fhem("get Kalender_Bad summary $uid")); { fhem("set hz.bad desired-temp $dtemp"); } Log 1,"try to set desired-temp to $dtemp from $dAll ##"; }

führt zu folgendem Log:

2013.11.06 23:28:00 3: get Kalender_Bad summary xxx: 18 17
2013.11.06 23:28:00 2: CUL_HM set hz.bad desired-temp 17

Merkwürdig.

Viele Grüße

Markus

juelich

Mein Fehler, hatte alles in die DEF kopiert. Bei Deinem Beispiel kommt der Fehler

2013.11.06 23:39:09 3: HZ.Bad_an return value: Unknown command {, try help.

Liebe Grüße

Markus

juelich

Jetzt noch mal gelogt:

2013.11.06 23:46:01 1: Setze Temperatur:
2013.11.06 23:47:00 3: get Kalender_Bad summary xxx: 18 17
2013.11.06 23:47:00 2: CUL_HM set hz.bad desired-temp 18
2013.11.06 23:47:00 1: Setze Temperatur: 18
2013.11.06 23:47:00 1: Setze Temperatur:

23:46 Uhr habe ich den Kalender geupdatet - warum wird da das Notify getriggert?
23:47 Uhr Temperatur auf 18 gesetzt
Danach wird augenscheinlich das Notify ein zweitesmal getriggert, ohne Argument - aber warum nur?

Das notify Kalender_Bad:modeStarted.* dürfte doch eigentlich nur beim Beginn eines Termins getriggert werden und als Argument den Betreff des Termins übergeben.

Was ist hier bloß faul?

martinp876

Hallo Juelich,

damit ist klar, was in CUL_HM passiert - das darfst du so eben nicht senden.
dein Notify triggert immer, wenn ein "Kalender_Bad:modeStarted.*" kommt. schalte einmal "inform on" - dann solltest du alle events sehen, die kommen.
aus HM sicht: setze die temperatur nicht, wenn du sie nicht hast :-)

Gruss Martin

juelich

So, Problem gelöst. Vielen Dank an alle, die geholfen haben.

Das Kalendermodulk funktioniert scheinbar andes, als ich es erwartet habe. Ich bin davon ausgegangen, das das Notify genau dann triggert, wenn ein Kalenderereignis eintritt (Beginn und Ende).
Ich habe noch aus dem Jahr 2012 Eine Diskussion in einer Google-Group die Bestätigung gefunden, das dem nicht so aus. Das Notify Kalender_Bad:modeStarted.* triggert bei JEDER Änderung des Kalenders, das soll angeblich auch so gewollt sein (verstehe ich zwar nicht wozu das gut sein sollte, aber muß man so akzeptieren).

Der zweite Fallstrick war das structure-Modul. Scheinbar schluckt dieses den set desired-temp-Befehl ohne Fehlermeldung, auch wenn die Temperatur gar nicht angegeben wird (im Gegensatz zum RT).
Deshalb hatte ich die Fehlermeldungen auch nur in Bad und Küche.

Ich habe jetzt in meinem  Notify vor das Setzen der Temperatur eine Abfrage gesetzt, das diese auch wirklich existiert, und jetzt ist das Log fehelerfrei.

Kalender_Bad:modeStarted.* { my $reading="%EVTPART0"; my $uid= "%EVTPART1"; my ($dtemp,undef)= split(/ /,fhem("get Kalender_Bad summary $uid")); {if ("$dtemp" ne "") { fhem("set hz.bad desired-temp $dtemp")};}}

Also noch einmal vielen Dank - und jetzt kann der Threat auch in die Abteilung "Unterstützende Dienste" geschoben werden, da er da ja scheinbar wirklich hingehört ;-)

Viele Grüße

Markus