Hallo zusammen,
ich versuche die Funktion des Max Temperaturscanners nachzubauen.
Dabei sollen alle Thermostate -0.5 gesetzt werden, eine at definiert werden, die dann wiederum nach 15Min wieder +0,5 setzt.
Das Scanner at sieht wie folgt aus:
+*00:30:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
Leider funktioniert der Spaß nicht.
Log:
2015.12.05 13:15:04 1: PERL WARNING: Bareword found where operator expected at (eval 17281) line 16, near ""define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer"
(Might be a runaway multi-line "" string starting on line 15)
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 16, near "ThermostatWohnzimmer", ""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: Bareword found where operator expected at (eval 17281) line 16, near "", "desiredTemperature"
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 16, near "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal(""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 16, near "ThermostatKueche", ""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 16, near "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal(""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 16, near "ThermostatKinderzimmer", ""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 16, near "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal(""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 16, near "ThermostatBad", ""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 16, near "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem(""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: String found where operator expected at (eval 17281) line 19, near "$tb2")}""
2015.12.05 13:15:04 3: eval: {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw-0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku-0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki-0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb-0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2");
fhem("define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
my $tw2 = $tw+0.5;
my $tku = ReadingsVal("ThermostatKueche", "desiredTemperature", 0);
my $tku2 = $tku+0.5;
my $tki = ReadingsVal("ThermostatKinderzimmer", "desiredTemperature", 0);
my $tki2 = $tki+0.5;
my $tb = ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $tb2 = $tb+0.5;
fhem("set ThermostatWohnzimmer desiredTemperature $tw2;
set ThermostatKueche desiredTemperature $tku2;
set ThermostatKinderzimmer desiredTemperature $tki2;
set ThermostatBad desiredTemperature $tb2")}");
}
2015.12.05 13:15:04 1: PERL WARNING: (Missing operator before ")}"?)
2015.12.05 13:15:04 3: TScanner: syntax error at (eval 17281) line 16, near ""define temp at +00:15:00 {
my $tw = ReadingsVal("ThermostatWohnzimmer"
syntax error at (eval 17281) line 19, near "")}")"
2015.12.05 13:15:47 3: get Cube credit10ms : Cube credit10ms => 900
Der erste Teil der Scanner Notify dabei hat bereits funktioniert und ist quasi nur in die temporäre at Definition hineinkopiert.
Sieht jemand auf Anhieb den Fehler?
Danke,
Kharim
Bei der Zeile
fhem("define temp at +00:15:00 {
wird ein Hochkomma verwendet. Der nachfolgende Code geht dann bis zum nächsten Hochkomma, das ist vor dem String Thermostatwohnzimmer:
my $tw = ReadingsVal("ThermostatWohnzimmer", "desiredTemperature", 0);
So wird das nix. Ich vermute du denkst dass die umgebenden Klammern den fhem-Befehl begrenzen, das ist aber nicht so. Siehe http://perlmaven.com/quoted-interpolated-and-escaped-strings-in-perl (http://perlmaven.com/quoted-interpolated-and-escaped-strings-in-perl)