Hi Leute,
ich komm hier einfach nicht mehr weiter.
Ich habe hier einen notify, welcher mir beim öffnen eines Fensters die Heizung ausmachen soll. Das geht alles.
Jedoch wenn zwischen 8:00 und 9:30 das Fenster geschlossen wird soll noch zusätzlich die Temperatur aus Dummy gelesen werden.
Jedoch bekomme ich folgendes Ergebnis:
set Heizung desired-temp : wrong format, see commandref
Fenster.stop return value: wrong format, see commandref
defmod Fenster.stop notify (Fenster:doorWindow.*) { \
my $s1 = ReadingsVal('Fenster','doorWindow','');;\
if ($s1 eq "on") { \
fhem('set Heizung tmOff');;\
fhem('set Fenster.STATUS offen');;\
}else{ \
fhem ('set Heizung tmHeating');;\
fhem ('set Fenster.STATUS geschlossen');;\
my $hm = sprintf("%02d:%02d", $hour, $min);;\
if ($hm gt "08:00" && $hm lt "09:30") {\
fhem ('set Heizung desired-temp Heizung.Tags');;\
}\
}\
}
Bei dem Versuch ein wenig den Fehler einzugrenzen habe ich folgendes mit in den if eingebaut.
my $t1 = ReadingsVal('Heizung.Tags','','');
system("/bin/echo Debug . $t1 >> /opt/fhem/log/fhem-2020-11.log");
Erkenntnis es kommt kein Wert an.
Config von dem Dummy Wert
defmod Heizung.Tags dummy
setstate Heizung.Tags 20
setstate Heizung.Tags 2020-11-22 22:14:36 state 20
Hat hier noch jemand eine Idee ??
Vielen Dank schon mal
Thonix
Zitat von: th0nix am 26 November 2020, 21:35:07
my $t1 = ReadingsVal('Heizung.Tags','','');
system("/bin/echo Debug . $t1 >> /opt/fhem/log/fhem-2020-11.log");
Wo hast Du denn das her?
Debug $t1;
funktioniert doch viel einfacher.
my $t1 = ReadingsVal('Heizung.Tags','','');
Falsche Syntax für ReadingsVal(). Du gibst zwar einen deviceName mit, aber keinen readingName.
Deshalb kommt logischerweise immer ein Nullstring als Ergebnis.
fhem('set Heizung tmOff');;\
fhem ('set Heizung tmHeating');;\
Was soll denn tmOff und tmHeating sein?
fhem ('set Heizung desired-temp Heizung.Tags')
desired-temp erwartet bei allen mir bekannten Geräten einen numerischen Temperaturwert.
Hallo betateilchen,
grätsche mal dazwischen.
ZitatWas soll denn tmOff und tmHeating sein?
Vermute mal es geht um ZWave Thermostaten Modi tm = thermostat Modi.
Zitatdesired-temp erwartet bei allen mir bekannten Geräten einen numerischen Temperaturwert.
Heizung.Tags eventuell handelt es sich hier um einen dummy oder DOIF.
Gruß
Hans-Jürgen
Zitat von: Deckoffizier am 27 November 2020, 19:20:14
Heizung.Tags eventuell handelt es sich hier um einen dummy oder DOIF.
Vermutlich nicht. Das ist aber auch egal, die Syntax ist trotzdem in beiden Fällen falsch.
set Heizung desired-temp : wrong format, see commandref
Danke für den Tipp mit dem Debug - das andere habe ich hier im Forum gefunden - gibt dann schon komplizierte Ansätze - ging aber ;-)
fhem('set Heizung tmOff');;\
fhem ('set Heizung tmHeating');;\
ist bei dem Thermostat der Modus um diese auszuschalten oder wieder in betrieb zu nehmen. (https://wiki.fhem.de/wiki/Z-Wave-Eurotronic_Spirit_Thermostat (https://wiki.fhem.de/wiki/Z-Wave-Eurotronic_Spirit_Thermostat)
Zitat
desired-temp erwartet bei allen mir bekannten Geräten einen numerischen Temperaturwert.
Heizung.Tags eventuell handelt es sich hier um einen dummy oder DOIF.
Korrekt - ich möchte desired-temp aus einen Dummy Wert steuern.
Das mit dem leeren readingName war ein Versuch. Habe gerade auch mein Fehler gefunden. ich hatte STATE Großgeschrieben.
so geht es
my $t1 = ReadingsVal('Heizung.Tags','state','');
fhem ('set Bad.Heizung desired-temp '. $t1);
Dank euch !