Hallo zusammen,
ich bräuchte bitte mal einen Hinweis von Euch. Ich bekomme im Log immer folgende Warnung, die ich gerne abstellen möchte:
2017.11.04 09:34:46 1: PERL WARNING: Useless use of private variable in void context at (eval 16403) line 6.
2017.11.04 09:34:46 1: PERL WARNING: Useless use of private variable in void context at (eval 16403) line 7.
Das zugehörige notify ist das hier:
defmod no_RolloRunter notify BM_Garten:brightness:.* { \
my $Fensterkontakt=0;;\
my $Helligkeit=1000;; \
my $Rollo=1;; \
if (($Fensterkontakt == 0) && ($Helligkeit <= 90) && ($Rollo < 10) && ($hour => 19)) { Log (2, "Rollo runter, zu dunkel " . $Helligkeit );; fhem("set Rollo_Kueche runter;; set Rollo_WZ_Fenster runter;; set Rollo_WZ_Terrasse runter;; set Rollo_WZ_Tuer runter")}\
elsif (($Fensterkontakt == 0) && ($Helligkeit > 90) && ($Rollo > 70) && (($hour => 7) && ($min > 20) && ($hour < 17))) { Log (2, "Rollo rauf, hell genug " . $Helligkeit );; fhem("set Rollo_Kueche rauf;; set Rollo_WZ_Fenster rauf;; set Rollo_WZ_Terrasse rauf;; set Rollo_WZ_Tuer rauf;; set ZS_WZ_Frame off;; set ZS_WZ_Subwoofer off")}\
else { Log (2, "Rollo runter: Nichts zu tun! " . $Helligkeit )}\
}
Ich habe nun auch schon mal testweise die o. g. Variablen Fensterkontakt, Helligkeit und Rollo fix vorbelegt, aber daran liegt es nicht. Wo liegt in Zeile 6+7 mein Fehler?
Gruß Heiko
Ich glaube fast deine 3 Variablen machen alle keinen Sinn da du sie nicht mit aktuellen Werten fütterst. Bei dir ist Fensterkontakt immer 0, Helligkeit immer 1000 und Rollo immer 1
Die Variablen werden nie mit anderen / realen Werten (zb über Readingsval) neu belegt. Es greift also immer deine else {..}
Die Abfrage ob die Variablen Wert x haben ist also völlig sinnlos weil du ja bereits weißt welchen wert sie haben.
du kannst deine set orgie überigens auch abkürzen
fhem("set Rollo_Kueche,Rollo_WZ_Fenster,Rollo_WZ_Terrasse,Rollo_WZ_Tuer runter")}
fhem("set Rollo_Kueche,Rollo_WZ_Fenster,Rollo_WZ_Terrasse,Rollo_WZ_Tuer rauf; set ZS_WZ_Frame,ZS_WZ_Subwoofer off")}
oder
fhem("set Rollo_Kueche runter; set Rollo_WZ_.* runter")}
fhem("set Rollo_Kueche rauf; set Rollo_WZ_.* rauf; set ZS_WZ_Frame,ZS_WZ_Subwoofer off")}
alternativ wenns keine anderen Rollos gibt set Rollo.* xxxx
Strukture lässt sich dafür auch gut verwenden wenn du gleichartige Gerät zusammenfassen willst (zb Rollos wz)
Chris Du hast vergessen zu Ende zu lesen
Zitat
Ich habe nun auch schon mal testweise die o. g. Variablen Fensterkontakt, Helligkeit und Rollo fix vorbelegt, aber daran liegt es nicht. Wo liegt in Zeile 6+7 mein Fehler?
Nimm mal zu Testzwecken aus 6 und 7 Helligkeit komplett raus.
Ist zwar komisch und Unsinn, aber ich bilde mir ein das es daher kommt.
Das Problem kommt von =>
Erklärung: das entspricht NICHT grösser gleich grösser gleich ist >=
Tatsächlich. Total überlesen. Danke Dir!
Zitat von: CoolTux am 04 November 2017, 14:00:18
Tatsächlich. Total überlesen. Danke Dir!
Ich bin auch nur drauf gekommen, weil ich einige der Googletreffer zur Fehlermeldung angeschaut habe und da kam ein Problem mit einer fehlenden Zuweisung vor, das hat mich dann stutzig gemacht...
Hallo zusammen,
vielen Dank für die tolle Unterstützung. Da wäre ich wohl nie draufgekommen und hätte das noch tausend Mal überlesen. . Manches kann so einfach sein, wenn man weiß wie. ;)
In der Tat lag es am "=>". Mit ">=" funktioniert alles wie erwartet. Auch vielen Dank für den Hinweis, dass man Kommandos zusammenfassen kann. Das muss ich dann noch nach und nach umsetzen. Aktuell bin ich mit FHEM eher noch in der Anfangsphase aber das System gefällt mir und wächst so vor sich hin und bin für derartige Tipps immer offen.
Gruß Heiko