Nur float-Zahl aus $EVENT extrahieren

Begonnen von tmuecksch, 04 November 2016, 13:22:49

Vorheriges Thema - Nächstes Thema

tmuecksch

Liebe Community,

die folgende Frage bezieht sich implizit auf das Devolo Wandthermostat.

Ich möchte mittels notify auf das event "setpointTemp" horchen und den Wert des Events dann als desired Wert in einem Threshold setzen.

Dazu habe ich mir folgendes notify gebastelt:


define testNotify notify ZWave_Devolo_Thermostat:setpointTemp set Heizung_Threshold desired $EVENT


Das Problem:
man darf für desired nur einen Zahlenwert (bspw. 20.5) setzen. Leider liefert das Event allerdings den folgenden String: "20.5 heating". So wie ich das sehe übernimmt THRESHOLD das nicht automatisch...

Also lautet die Frage; wie kann ich alles hinter .5 entfernen?

tmuecksch

Hab es jetzt wie folgt probiert:


define testNotify notify ZWave_Devolo_Thermostat:.*setpointTemp.* set Heizung_Threshold desired ReadingsNum("ZWave_Devolo_Thermostat", "setpointTemp", 17.5)


Allerdings gibt es jetzt diesen Fehler im Logfile:

2016.11.04 13:40:43 3: testNotify return value: Heizung_Threshold: set desired value:ReadingsNum("ZWave_Devolo_Thermostat",, desired value needs a numeric parameter

marvin78

ReadingsNum ist eine Perl Funktion.

define testNotify notify ZWave_Devolo_Thermostat:.*setpointTemp.* {fhem("set Heizung_Threshold desired ".ReadingsNum('ZWave_Devolo_Thermostat', 'setpointTemp', 17.5))}
Sowas könnte gehen.

Bitte die Grundlagen lernen.

tmuecksch

Funktioniert perfekt. Hab nicht gecheckt, dass das eine Perl Funktion ist. Hab mich schon gewundert, dass es nicht in der Referenz zu finden ist...

Danke Marvin!

marvin78

Es ist in der commandref zu finden. Unter Perl Specials.

tmuecksch

Danke für den Hinweis! Das schaue ich mir noch mal an!

krikan

Dann schau Dir bitte vielleicht auch noch in http://fhem.de/commandref.html#notify das Thema "$EVTPARTx" an, ob das nicht auch eine Lösungsmöglichkeit ist. Bspw. $EVENT durch $EVTPART1 im Ausgangspost ersetzen und schauen was passiert.

Gruß, Christian

tmuecksch

krikan, danke für den Hinweis. Auch das werde ich noch mal ausprobieren :)