Hauptmenü

notify für FHT

Begonnen von sylvester, 16 Dezember 2015, 09:23:27

Vorheriges Thema - Nächstes Thema

sylvester

Hallo,

ich habe mehrere FS20 FHTs zur Heizungssteuerung im Einsatz. Nun möchte ich gerne eine Aktion auslösen, wenn einer der Aktuatoren das Ventil auf über 75% auffährt.
Ich könnte jetzt für jedes FHT ein notify anlegen, aber das geht doch bestimmt auch eleganter, oder?

Irgendwie so ähnlich:

define ActuatorNotify notify .*:actuator { if("$EVTPART1" > 75) {fhem("Mach etwas")}}


Wobei in dem actuator-Wert etwas mit % steht ... da wird man wohl nicht direkt vergleichen können ...

Viele Grüße

Stephan

Ellert

Schau Dir mal das Modul DOIF in der deutschen Commandref an, damit geht es ungefähr so:
define di DOIF ([FS_1:actuator:d] > 75 or [FS_2:actuator:d] > 75 or ...  [FS_x:actuator:d] > 75) (set ...)

demnächst auch so: [<Regex>:actuator:d]

Elektrolurch

Zitat:
Ich könnte jetzt für jedes FHT ein notify anlegen, aber das geht doch bestimmt auch eleganter, oder?


Ja. Wenn Du z.B. für Deine Thermostate eine Namenskonvention verwendest, z.B. die ersten beiden Buchstaben bezeichnen den Raum. Dann könnte das notify so z.B. aussehen:

define atc_not notify .._Thermostat:Actuator ...

oder z.B. auch so:

define act_not notify [A-Z][a-z]_notify:Actuator

Bei den fht's steht hinter dem Wert für den Actuator tatsächlich ein "%".
Wenn Du einen numerischen Vergleich (>) machst, dürfte das in perl zwar auch funktionieren, Du bekommt aber eine Warnung im log.

Aber Du kannst auch so vergleichen:

gt "75%" ...

Elektrolurch

configDB und Windows befreite Zone!

sylvester

#3
Hallo,

aktuell versuche ich es so:


define ActuatorNotify notify [.._Heizung|.._Fussboden_Main]:[Aa]ctuator.* { if($EVENT gt "75%") {fhem("set FernwaermeSparen off")}}


Da scheint aber irgendwo noch ein Fehler drin zu sein ...

Ellert

Der Vergleich {"100%" gt "75%"} liefert "falsch" als Ergebnis.

sylvester

#5
Ok, das habe ich jetzt wieder zurück gestellt ...

define ActuatorNotify notify [.._Heizung|.._Fussboden_Main]:[Aa]ctuator.* {if ("$EVTPART1" > 75) {fhem("set FernwaermeSparen off")}}


Aber das notify scheint gar nicht angesprungen zu werden. Scheinbar stimmt vorne noch etwas nicht ...

Ellert

Wie sieht das Ereignis im Eventmonitor aus?

sylvester

OK, habe den Fehler gefunden. Es waren die Klammern.


define ActuatorNotify notify (.._Heizung|.._Fussboden_Main):[Aa]ctuator.* {if ($EVTPART1 > 75) {fhem("set FernwaermeSparen off")}}


Jetzt bleibt nur noch die Frage, wie der Vergleich aussehen muss.
Aktuell bekomme ich da noch Fehlermeldungen:

2015.12.21 12:25:53 1: PERL WARNING: Argument "100%" isn't numeric in numeric gt (>) at (eval 49458) line 1.
2015.12.21 12:25:53 3: eval: my $EVTPART0='actuator:';my $EVENT='actuator: 100%';my $TYPE='FHT';my $EVTPART1='100%';my $NAME='BZ_Heizung';my $SELF='ActuatorNotify';{if($EVTPART1 > 75) {fhem("set  FernwaermeSparen off")}}

Ellert


Puschel74

So wie hier einfach chop um das letze Zeichen zu entfernen:
https://wiki.selfhtml.org/wiki/Perl/Funktionen_f%C3%BCr_Zeichenketten#substr_-_Teilzeichenkette_aus_Zeichenkette_extrahieren
oder substr.
my $ventil=ReadingsVal($_, "actuator", "101%");
$ventil=(substr($ventil, 0, (length($ventil)-1)));


Ja FHEM bietet ReadingsNum man sollte sich aber dennoch ein kleines bischen mit Perl vertraut machen - es kann nicht schaden.
Ich hab einfach nur noch nicht auf ReadingsNum umgebaut  8)
Aber mit FHEM/Perl führen zum Glück mehrere Wege ans Ziel.

P.S.: Wenn du auf alle Geräte mit actuator als Reading triggern willst kannst du auch
.*:actuator.* nehmen.
Meine FHT haben als Reading nur actuator und nicht Actuator.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

sylvester

Hallo,

ich habe es jetzt so gelöst:


define ActuatorNotifyFernwaerme notify (.._Heizung|.._Fussboden_Main):[Aa]ctuator.* {if (ReadingsNum($NAME,"actuator","0") > 75) {fhem("Mach was")}}


Vielen Dank für die Hilfe!!!