Hallo zusammen.
Ich versuche mich gerade daran ein kleines Skript zu basteln, was bei warmen Wetter die Heizung ausschaltet.
Vorgestellt habe ich mir, dass es als notify bei Weather triggered und bei einer Außentemperatur von >= 15° die Heizung ausschaltet.
Folgendes habe ich versucht:
define SetControlMode notify Wetter
Alt:
{
if ( ReadingsVal("Wetter","temperature","") >= 15 ) {
fhem("set Heizungsthermostat_Bad_Clima controlMode off")
}
else {
fhem("set Heizungsthermostat_Bad_Clima controlMode auto")
}
}
Neu:
Wetter:temperature:.* if ((ReadingsVal("Wetter","temperature","") >= 15) && (ReadingsVal("Wetter","condition","") == "sonnig")) {
fhem("set Heizungsthermostat_Bad_Clima controlMode manual")
fhem("set Heizungsthermostat_Bad_Clima desired-temp off")
}
else {
fhem("set Heizungsthermostat_Bad_Clima controlMode auto")
}
Leider macht das nichts. Was mache ich denn falsch? :)
Bekomme nun als
Zitat2016.05.08 19:35:53 3: SetControlMode return value: Unknown command if, try help.
Unknown command fhem("set, try help.
Unknown command }
, try help.
Unknown command }, try help.
Für mich sieht mein Code nicht so verkehrt aus... Kommt mir fast so vor, als ob er keine Perl-Syntax ausführt.
da fehlen noch ein paar ;
Wetter:temperature:.* if ((ReadingsVal("Wetter","temperature","") >= 15) && (ReadingsVal("Wetter","condition","") == "sonnig")) {
fhem("set Heizungsthermostat_Bad_Clima controlMode manual");
fhem("set Heizungsthermostat_Bad_Clima desired-temp off");
}
else {
fhem("set Heizungsthermostat_Bad_Clima controlMode auto");
}
Mach mal geschweifte Klammern um das ganze perl Gerümpel.
define SetControlMode notify Wetter:temperature:.* { .... perl Gerümpel ... }
so wie Du das ja bei "alt" richtig gemacht hattest.
stimmt, habe ich noch übersehen.
Ich würde es aber sowieso mit DOIF machen:
define SetControlMode DOIF ([Wetter:temperature] >= 15 and [Wetter:condition] eq "sonnig") (set Heizungsthermostat_Bad_Clima controlMode manual,set Heizungsthermostat_Bad_Clima desired-temp off)
DOELSE (set Heizungsthermostat_Bad_Clima controlMode auto)
Zitat von: Mitch am 08 Mai 2016, 20:38:26
Ich würde es aber sowieso mit DOIF machen:
*grusel*
Leider weiß ich nicht, wie ich das notify selbst auslösen kann zum Testen ;(
Geht das mit dem Print so, um zu debuggen?
Ich habe es nun so umgebaut:
Wetter:temperature:.*
{
print "SetControlMode asugeführt";
if ((ReadingsVal("Wetter","temperature","") >= 15) && (ReadingsVal("Wetter","condition","") == "sonnig")) {
print "manual";
fhem("set Heizungsthermostat_Bad_Clima controlMode manual");
fhem("set Heizungsthermostat_Bad_Clima desired-temp off");
}
else {
print "auto";
fhem("set Heizungsthermostat_Bad_Clima controlMode auto");
}
}
Was micht in der Übersicht nur etwas verwundert/nicht so gefällt ist REGEXP: Wetter:temperature:.* {. Normal hat da die { nix zu suchen denke ich.
Zitat von: Aerics am 08 Mai 2016, 21:32:04
Leider weiß ich nicht, wie ich das notify selbst auslösen kann zum Testen
zuwenig fhem-Doku gelesen. Dafür gibt es den Befehl trigger.
Zitat von: betateilchen am 08 Mai 2016, 21:55:04
zuwenig fhem-Doku gelesen. Dafür gibt es den Befehl trigger.
Danke dir!
Problem ist, dass ich damals beim Kauf bissel was eingerichtet habe und es dann halbes Jahr lief und man somit wieder vieles vergisst, gerade wenn man nur wenig gemacht hat.