define LuefterEin at +*00:20:00 {if (ReadingsVal("FHT_4955","temperature",0)+0.1 < ReadingsVal("FHT_4955","desired-temp",0)) && (ReadingsVal("FHT_4955","actuator",0) > 15% { fhem ("set Luefter on")}}
Wäre jemand so nett, den Code zu prüfen? Ich kann gerade nicht testen, vermute aber, dass Fehler drinnen sind. Ich denke, dass der Wertevergleich des Actuators nicht funktionieren wird.
Der Lüfter soll eingeschaltet werden, wenn die Temperatur+0,1 Grad unter der Solltempereatur liegt und der Actuator mindestens 15% anzeigt.
Danke im Voraus.
Bedingung müssen komplett geklammert sein in perl und Prozentzeichen hinter der Zahl 15 wird auch nicht klappen, daher:
define LuefterEin at +*00:20:00 {if ((ReadingsVal("FHT_4955","temperature",0)+0.1 < ReadingsVal("FHT_4955","desired-temp",0)) && (ReadingsVal("FHT_4955","actuator",0) > 15)) { fhem ("set Luefter on")}}
oder etwas kürzer mit IF:
define LuefterEin at +*00:20:00 IF ((FHT_4955:temperature + 0.1 < FHT_4955:desired-temp) && (FHT_4955:actuator > 15)) (set Luefter on)
Gruß
Damian
Vielen Dank, aber kann es denn überhaupt klappen? Der Actuator liefert ja 21% und nicht 21
Ich will baber nur die Zahlen vergleichen, damit auch grösser und kleiner geht.
Geschaltet soll halt werden, wenn actuator grösser 21% ist.
Hast du da noch einen Tipp?
Edit:
Hab schon probiert, es scheint so, als würde das % rausgefiltert werden.
Die kurze Variante hat er allerdings angemeckert, weil er wohl IF nicht kennt.:
2014.01.03 23:58:44 3: TestLuefterEin: Unknown command IF, try help.
Dann wirst du dich noch mit regulären Ausdrücken beschäftigen müssen:
define LuefterEin at +*00:20:00 {my $actuator = ReadingsVal("FHT_4955","actuator",0);; $actuator =~ /([\d.]*)%/;; if ((ReadingsVal("FHT_4955","temperature",0)+0.1 < ReadingsVal("FHT_4955","desired-temp",0)) && ($1 > 15)) { fhem ("set Luefter on")}}
oder demnächst:
define LuefterEin at +*00:20:00 IF ((FHT_4955:temperature + 0.1 < FHT_4955:desired-temp) && (FHT_4955:actuator:([\d.]*)% > 15)) (set Luefter on)
Gruß
Damian
Mist. Da hast du wohl Recht. :-)
Ich werde mich wohl noch mit seeeeehhhhrrr vielem beschäftigen müssen. LOL
Nochmals Danke.
Zitat von: Damian am 04 Januar 2014, 00:22:50
oder demnächst:
define LuefterEin at +*00:20:00 IF ((FHT_4955:temperature + 0.1 < FHT_4955:desired-temp) && (FHT_4955:actuator:([\d.]*)% > 15)) (set Luefter on)
Gruß
Damian
Aiaiai. Das sieht ja schick aus. Darf man das so deuten, dass diese Syntax mit einem der naechsten Updates kommt? :)
Zitat von: gubbl am 04 Januar 2014, 18:26:29
Aiaiai. Das sieht ja schick aus. Darf man das so deuten, dass diese Syntax mit einem der naechsten Updates kommt? :)
Per FHEM-Update erst mal nicht. Den Befehl IF kannst du aber schon heute haben:
http://forum.fhem.de/index.php/topic,17895.0.html
Gruß
Damian