Erbitte Codekorrektur (einzeiliger Code) :-)

Begonnen von Invers, 03 Januar 2014, 21:07:00

Vorheriges Thema - Nächstes Thema

Invers

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.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

#2
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.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Mist. Da hast du wohl Recht. :-)
Ich werde mich wohl noch mit seeeeehhhhrrr vielem beschäftigen müssen. LOL

Nochmals Danke.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

gubbl

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?  :)
fhem zurzeit im Umstieg von FB7390 auf Raspi
2x HMS 100 TF
1x HMS 300 TH
4x FHT80b und FHT 8v
diverse Aktoren über FS20 Unterputzschalter

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF