FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Kharim am 05 Dezember 2015, 13:27:48

Titel: Max Temperatur Scanner Nachbau
Beitrag von: Kharim am 05 Dezember 2015, 13:27:48
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
Titel: Antw:Max Temperatur Scanner Nachbau
Beitrag von: willyk am 06 Dezember 2015, 23:01:13
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)