PERL WARNING: Useless use of private variable

Begonnen von matschig4711, 04 November 2017, 09:41:50

Vorheriges Thema - Nächstes Thema

matschig4711

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

chris1284

#1
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)

CoolTux

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?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

viegener

Das Problem kommt von =>
Erklärung: das entspricht NICHT grösser gleich grösser gleich ist >=
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

viegener

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...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

matschig4711

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