Hallo,
hab mal wieder ein Problem mit einem Notify bzw. eher mit Value und ReadingsVal.
Folgender Code für mein Rolladen:
define nRollo notify WohnDoor { if(Value("WohnDoor") eq "open" && ReadingsVal("TerrasseRoll", "state", "") eq "0%") {fhem ("set TerrasseRoll on")} }
Also WohnDoor ist ein Türkontakt an der Terrassentür. Gibt open,closed und tilted aus
TerrasseRoll ist der Aktor für den Rolladen.
Wenn der Türkontakt auf "open" steht und der Rolladen "TerrasseRoll" geschlossen ist (in diesem Fall 0%) dann soll der Rolladen "TerrasseRoll" auf gehen.
Mein Code funktioniert nicht. Ich weiß auch nie wann man Value oder ReadingsVal benutzt.
Gruß Alex
So auf die Schnelle, mach mal hinter notify WohnDoor ein .* sonst weis der notify ja kaum auf was er triggern soll
VG
Frank
Code sieht jetzt so aus: WohnDoor.* { if(Value("WohnDoor") eq "open" && ReadingsVal("TerrasseRoll", "state", "") eq "0%") {fhem ("set TerrasseRoll on")} }
funktioniert leider nicht
Hallo,
Und ich würd so auf die Schnelle mal fragen welcher Türkontakt ist es?
Ein FHTTK sendet nur alle ~2-3 Minuten.
ZitatMein Code funktioniert nicht.
Warum nicht?
Fehlermeldung siehst du im Logfile - die wären auch für uns interessant.
Zur Not erstmal das hier
http://forum.fhem.de/index.php/topic,16311.0.html (http://forum.fhem.de/index.php/topic,16311.0.html)
durchlesen und auch verstehen.
Grüße
Edith. Funktioniert nicht heisst was genau?
Egal, bitte erstmal meinen angepinnten Beitrag durchlesen, verstehen, und die bnötigten Abgaben posten.
Türkontakt: HM-Sec-RHS
Aktor: HM-LC-BI1-FM
Das letzte was im Logfile stand war das:
2014.10.30 22:00:19 1: PERL WARNING: Use of uninitialized value $regReq in string eq at ./FHEM/10_CUL_HM.pm line 2875.
2014.10.30 22:00:19 1: PERL WARNING: Use of uninitialized value $regName in hash element at ./FHEM/10_CUL_HM.pm line 5904.
2014.10.30 22:00:19 1: PERL WARNING: Use of uninitialized value $addr in numeric lt (<) at ./FHEM/10_CUL_HM.pm line 5917.
2014.10.30 22:00:53 1: PERL WARNING: Use of uninitialized value $arg in pattern match (m//) at fhem.pl line 2247.
2014.10.30 22:01:38 1: PERL WARNING: Use of uninitialized value $regReq in string eq at ./FHEM/10_CUL_HM.pm line 2875.
2014.10.30 22:01:38 1: PERL WARNING: Use of uninitialized value $regName in hash element at ./FHEM/10_CUL_HM.pm line 5904.
2014.10.30 22:01:38 1: PERL WARNING: Use of uninitialized value $addr in numeric lt (<) at ./FHEM/10_CUL_HM.pm line 5917.2014.10.30 22:00:19 1: PERL WARNING: Use of uninitialized value $regReq in string eq at ./FHEM/10_CUL_HM.pm line 2875.
2014.10.30 22:00:19 1: PERL WARNING: Use of uninitialized value $regName in hash element at ./FHEM/10_CUL_HM.pm line 5904.
2014.10.30 22:00:19 1: PERL WARNING: Use of uninitialized value $addr in numeric lt (<) at ./FHEM/10_CUL_HM.pm line 5917.
2014.10.30 22:00:53 1: PERL WARNING: Use of uninitialized value $arg in pattern match (m//) at fhem.pl line 2247.
2014.10.30 22:01:38 1: PERL WARNING: Use of uninitialized value $regReq in string eq at ./FHEM/10_CUL_HM.pm line 2875.
2014.10.30 22:01:38 1: PERL WARNING: Use of uninitialized value $regName in hash element at ./FHEM/10_CUL_HM.pm line 5904.
2014.10.30 22:01:38 1: PERL WARNING: Use of uninitialized value $addr in numeric lt (<) at ./FHEM/10_CUL_HM.pm line 5917.
Kommt auch nichts neues mehr hinzu. Keine Ahnung was da los ist.
Edit: Mit dem Code geht´s : WohnDoor { if(Value("WohnDoor") eq "open") {fhem ("set TerrasseRoll on")} }
Allerdings wird dann auch immer ein Befehl gesendet auch wenn der Rolladen oben ist.
Nee, der Log Auszug ist nicht hilfreich, dass ist nur die "Reaktion" auf einen Fehler in einem deinem fhem Code.
Die Frage ist wohl wie ich "state" vom Aktor korrekt abfrage
Dein Rolladenaktor hat doch im state ein on oder off, wenn er ganz auf oder ganz zu ist oder nicht? Wie kommst du auf "0%"?
was sagt dir denn
Value("TerrasseRoll")
wenn du es einfach mal in geschweiften Klammern in der fhem Kommandozeile ausführst? Vielleicht ist es ja "0 %"?
Ich hab´s jetzt: define nRollo notify WohnDoor { if(Value("WohnDoor") eq "open" && ReadingsVal("TerrasseRoll", "state", "") eq "off") {fhem ("set TerrasseRoll on")} }
Ich habe dämlicher Weise den STATE bei Internals verwendend und mit ReadingsVal abgefragt. ::)
An marvin78:
genau da dran lag´s. 0% war der STATE bei Internals.
Gruß Alex
Hallo,
das
ReadingsVal("TerrasseRoll", "state", "") eq "off")
müsste aber auch so
Value("TerrasseRoll") eq "off")
klappen.
Grüße
Mit Value hatte ich auch ausprobiert. Allerdings auch mit den 0%. :P
Daher kam wohl auch kein Fehler im Log.
Danke an alle.
Gruß Alex
In dem Fall halte ich aber auch die Abfrage des Readings für sinnvoller. Das notify für das DEF würde ich jedoch eher so bauen:
WohnDoor:.open {if (ReadingsVal("TerrasseRoll", "state", "on") eq "off") {fhem ("set TerrasseRoll on")}}
Hab deine Variante jetzt auch mal ausprobiert. Ich war so frei und hab den Doppelpunkt hinter WohnDoor gelöscht.
WohnDoor.open {if (ReadingsVal("TerrasseRoll", "state", "on") eq "off") {fhem ("set TerrasseRoll on")}}
Funktioniert auch.
Hat die Variante einen Vorteil oder Unterschied?
Gruß Alex
Hallo,
naja, die Prüfungen werden reduziert da das notify nur ausgelöst wird wenn der Sensor ein open sendet und nicht auch bei einer battery-Meldung oder was der Sensor noch so von sich gibt.
EventMonitor öffnen und du siehst was der Sensor an FHEM mitteilt.
Grüße
Alles klar :D
Dann behalte ich die Variante von marvin78 bei.
Gruß Alex