FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: outhouse am 04 Oktober 2015, 14:01:46

Titel: Eigene Variable mit if-Fromel
Beitrag von: outhouse am 04 Oktober 2015, 14:01:46
Hallo

Wie lautet die Formel zur Berechnung einer eigenen Variablen, abhängig vom Inhalt der ersten Variablen?

define n_Stehlampe notify ui_Stehlampe.* {\
my $myval = Value("ui_Stehlampe");;\
my $myzahl = wenn $myval grösser 90 dann 100, wenn $myval grösser 80 dann 85, wenn $myval grösser 70 etc.

Gruss  Chris
Titel: Antw:Eigene Variable mit if-Fromel
Beitrag von: viegener am 05 Oktober 2015, 15:14:48
Hallo Chris,
ich nehme an, Du möchtest bestimmte Werte zuordnen, leider ist die Reihe in Deinem beispiel etwas verwirrend.
Als meine Annahme, Du möchtest normalerweise auf x5 (also 15, 25, ..., 75, 85) "runden", ausser zwischen 90 und 100 (hier stattdessen auf 100) und zwischen  0 und 9 (stattdessen auf 0).

Anmerkung: Das habe ich jetzt mal wieder nur theoretisch programmiert, da ich gerade keine perl compiler habe

OK, wenn das die Anforderung ist, so wird der erste Teil rechnerisch erledigt:


# Runden auf x5 Werte -> Achtung für 100 kommt hier 105 heraus
my $myzahl = ( int($myval / 10) * 10 ) + 5;


Den zweiten Teil 90-100 bzw. 0-9 würde ich "klassisch" erledigen


# Spezialfall >=90
my $myzahl = ( $myzahl >= 90 )?100:$myzahl;

# Spezialfall  <10
my $myzahl = ( $myzahl < 10 )?0:$myzahl;


Ich bin sicher das geht kürzer, ist aber so zumindest schnell verständlich wenn man sich später mal wundert...