FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Arne42 am 19 April 2016, 22:58:53

Titel: Rechnen mit DOIF im attr ... state
Beitrag von: Arne42 am 19 April 2016, 22:58:53
Hallo,

ich möchte DOIF benutzen, um abhängig von einem Status x einen Wert a oder einen Wert b in einen Wert c zu kopieren.

if x = on then c=a else c= b

In der Commandref gibt es ein schönes Beispiel, wie man einen Mittelwert berechenn kann. Ich dachte, so ähnlich müsste mein Problem auch lösbar sein. Mit rumprobieren komme ich nicht weiter.


define dyHcAutoOnOffRoom1 dummy # state:on/off
define dyTempDesiredManualRoom1 dummy # state: Temperaturwerte
define dyTempDesiredAutoRoom1 dummy # state: Temperaturwerte
...

define diTempDesiredRoom1 DOIF
attr diTempDesiredRoom1 state {(IF([dyHcAutoOnOffRoom1:state]) eq "on")( [dyTempDesiredManualRoom1:state]) ELSE ([dyTempDesiredManualRoom1:state])}


Hat jemand eine Idee?

Grüße,
Arne
Titel: Antw:Rechnen mit DOIF im attr ... state
Beitrag von: Per am 19 April 2016, 23:47:21
Probier mal das kleine if-else (Perl-if).
Titel: Antw:Rechnen mit DOIF im attr ... state
Beitrag von: Ellert am 20 April 2016, 12:28:25
Die Problematik wird hier diskutiert und es werden einige Lösungen aufgezeigt: https://forum.fhem.de/index.php/topic,45201.msg370447.html#msg370447
Titel: Antw:Rechnen mit DOIF im attr ... state
Beitrag von: Arne42 am 20 April 2016, 21:01:31
Danke! Das war 95% der Lösung.

Das hier funktioniert:

attr diTempDesiredRoom1 state {(("[dyHcAutoOnOffRoom1:state]" eq "on" ) ? sprintf("%.1f", [dyTempDesiredAutoRoom1:state]) :  sprintf("%.1f", [dyTempDesiredManualRoom1:state]))}