Rechnen mit DOIF im attr ... state

Begonnen von Arne42, 19 April 2016, 22:58:53

Vorheriges Thema - Nächstes Thema

Arne42

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

Per

Probier mal das kleine if-else (Perl-if).

Ellert

Die Problematik wird hier diskutiert und es werden einige Lösungen aufgezeigt: https://forum.fhem.de/index.php/topic,45201.msg370447.html#msg370447

Arne42

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]))}