Wie bei warmen Wetter Heizung ausschalten?

Begonnen von Aerics, 08 Mai 2016, 11:39:43

Vorheriges Thema - Nächstes Thema

Aerics

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? :)

Aerics

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.

Mitch

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");
}
FHEM im Proxmox Container

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Mitch

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)

FHEM im Proxmox Container

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Aerics

#6
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.

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Aerics

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.