FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: erotikbaer am 10 Oktober 2018, 23:16:37

Titel: Fehlermeldung bareword off bei If bedingung
Beitrag von: erotikbaer am 10 Oktober 2018, 23:16:37
Hallo zusammen,
ich möchte gerne folgende if bedingung umsetzen:

if (([HeizungKiZi:desiredTemperature] == off) && ([HeizungKueche:desiredTemperature] == off) && ([HeizungBad:desiredTemperature] == off) && ([HeizungSchlafzimmer:desiredTemperature] == off) && ([HeizungWohnzimmer:desiredTemperature] == off)) ({ fhem("set TMP off");;}))

ich bekomme jedoch die fehlermeldung "Bareword "off" not allowed while "strict subs" in use at (eval 17235) line 1"

kann mir da jemand helfen?

gruß christian
Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: CoolTux am 10 Oktober 2018, 23:18:09
Hochkommata.
Aber was genau soll das sein? Perl ist das nicht. DOIF?
Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: erotikbaer am 10 Oktober 2018, 23:22:26
sorry, das ist alles durch google und diesem forum hier zusammengekommen. hochkommatas helfen leider auch nicht.
puhhh jetzt nochmal auf doif umstellen? meine ganze abfrage ist riesig und funktioniert, bis auf diese mit dem off, auch super.

Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: erotikbaer am 10 Oktober 2018, 23:32:27
also damit du verstehst was ich meine, poste ich mal mein kompletten if kram:

if (([HeizungKiZi:mode] ne "auto") && ([HeizungKueche:mode] ne "auto") && ([HeizungBad:mode] ne "auto") && ([HeizungSchlafzimmer:mode] ne "auto") && ([HeizungWohnzimmer:mode] ne "auto") && ([HeizungKiZi:mode] ne "manual") && ([HeizungKueche:mode] ne "manual") && ([HeizungBad:mode] ne "manual") && ([HeizungSchlafzimmer:mode] ne "manual") && ([HeizungWohnzimmer:mode] ne "manual")) ({ fhem("set TMP boost");;})ELSE (if (([HeizungKiZi:desiredTemperature] == 18.0) && ([HeizungKueche:desiredTemperature] == 18.0) && ([HeizungBad:desiredTemperature] == 18.0) && ([HeizungSchlafzimmer:desiredTemperature] == 18.0) && ([HeizungWohnzimmer:desiredTemperature] == 18.0)) ({ fhem("set TMP 18");;})ELSE (if (([HeizungKiZi:desiredTemperature] == 20.0) && ([HeizungKueche:desiredTemperature] == 20.0) && ([HeizungBad:desiredTemperature] == 20.0) && ([HeizungSchlafzimmer:desiredTemperature] == 20.0) && ([HeizungWohnzimmer:desiredTemperature] == 20.0)) ({ fhem("set TMP 20");;})ELSE (if (([HeizungKiZi:desiredTemperature] == 25.0) && ([HeizungKueche:desiredTemperature] == 25.0) && ([HeizungBad:desiredTemperature] == 25.0) && ([HeizungSchlafzimmer:desiredTemperature] == 25.0) && ([HeizungWohnzimmer:desiredTemperature] == 25.0)) ({ fhem("set TMP 25");;})ELSE (if (([HeizungKiZi:desiredTemperature] == "off") && ([HeizungKueche:desiredTemperature] == "off") && ([HeizungBad:desiredTemperature] == "off") && ([HeizungSchlafzimmer:desiredTemperature] == "off") && ([HeizungWohnzimmer:desiredTemperature] == "off")) ({ fhem("set TMP off");;})ELSE ({ fhem("set TMP none");;})))))
Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: CoolTux am 10 Oktober 2018, 23:33:13
Meine Frage war ja ob das DOIF ist. Was ist es? Notify?

Poste bitte ein list vom Device

list DEVICENAME

in der Kommandozeile von FHEMWEB eingeben.
Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: CoolTux am 10 Oktober 2018, 23:35:43
Zitat von: erotikbaer am 10 Oktober 2018, 23:32:27
also damit du verstehst was ich meine, poste ich mal mein kompletten if kram:

if (([HeizungKiZi:mode] ne "auto") && ([HeizungKueche:mode] ne "auto") && ([HeizungBad:mode] ne "auto") && ([HeizungSchlafzimmer:mode] ne "auto") && ([HeizungWohnzimmer:mode] ne "auto") && ([HeizungKiZi:mode] ne "manual") && ([HeizungKueche:mode] ne "manual") && ([HeizungBad:mode] ne "manual") && ([HeizungSchlafzimmer:mode] ne "manual") && ([HeizungWohnzimmer:mode] ne "manual")) ({ fhem("set TMP boost");;})ELSE (if (([HeizungKiZi:desiredTemperature] == 18.0) && ([HeizungKueche:desiredTemperature] == 18.0) && ([HeizungBad:desiredTemperature] == 18.0) && ([HeizungSchlafzimmer:desiredTemperature] == 18.0) && ([HeizungWohnzimmer:desiredTemperature] == 18.0)) ({ fhem("set TMP 18");;})ELSE (if (([HeizungKiZi:desiredTemperature] == 20.0) && ([HeizungKueche:desiredTemperature] == 20.0) && ([HeizungBad:desiredTemperature] == 20.0) && ([HeizungSchlafzimmer:desiredTemperature] == 20.0) && ([HeizungWohnzimmer:desiredTemperature] == 20.0)) ({ fhem("set TMP 20");;})ELSE (if (([HeizungKiZi:desiredTemperature] == 25.0) && ([HeizungKueche:desiredTemperature] == 25.0) && ([HeizungBad:desiredTemperature] == 25.0) && ([HeizungSchlafzimmer:desiredTemperature] == 25.0) && ([HeizungWohnzimmer:desiredTemperature] == 25.0)) ({ fhem("set TMP 25");;})ELSE (if (([HeizungKiZi:desiredTemperature] == "off") && ([HeizungKueche:desiredTemperature] == "off") && ([HeizungBad:desiredTemperature] == "off") && ([HeizungSchlafzimmer:desiredTemperature] == "off") && ([HeizungWohnzimmer:desiredTemperature] == "off")) ({ fhem("set TMP off");;})ELSE ({ fhem("set TMP none");;})))))

Das hilft nicht wirklich solange ich nicht weiß was für ein Device Type dahinter steht. Der Code kann aber wenn nur in einem DOIF gehen. Ein notify würde meckern
Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: erotikbaer am 10 Oktober 2018, 23:42:26
okay, jetzt hab ich verstanden :) ABER ich habe es jetzt in ein doif umgebaut. und es war doch erstaunlich einfach und eine viel bessere Lösung als ich vor hatte.
ich wollte den if kram irgendwie im 5 minuten takt ausführen lassen. es war also noch kein device, notify oder ähnliches.

aber auf jedenfall habe ich jetzt das doif genommen und das funktioniert Viel besser.

vielen dank !
Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: frank am 11 Oktober 2018, 13:08:42
"==" ist für numerische vergleiche.
also "eq "off"" nutzen.

edit: zumindestens unter perl.
Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: Damian am 11 Oktober 2018, 15:20:48
Zitat von: frank am 11 Oktober 2018, 13:08:42
"==" ist für numerische vergleiche.
also "eq "off"" nutzen.

edit: zumindestens unter perl.

Im DOIF auch, ist weitgehend perl ;)
Titel: Antw:Fehlermeldung bareword off bei If bedingung
Beitrag von: CoolTux am 11 Oktober 2018, 15:25:09
Zitat von: Damian am 11 Oktober 2018, 15:20:48
Im DOIF auch, ist weitgehend perl ;)

Aber Du siehst ja selber das die User langsam anfangen aus Nicht Wissen heraus alles mögliche an DOIF als Perl zu verwenden. Das finde ich anstrengend als Helfender.
Der User wusste ja nicht mal was er genau machen wollte, er hat einfach nur irgendwas zusammen kopiert.