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
Hochkommata.
Aber was genau soll das sein? Perl ist das nicht. DOIF?
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.
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");;})))))
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.
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
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 !
"==" ist für numerische vergleiche.
also "eq "off"" nutzen.
edit: zumindestens unter perl.
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 ;)
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.