Hallo,
wie kann ich auf einfache Art das Minimum zweier Werte berechnen?
Ich wollte das Ergebnis einer Addition in einem DOIF begrenzen.
([dm_hz_circulation_actor]) (set sw_hm_wall $EVENT) (setreading $SELF currentLoad {(min(([$SELF:currentLoad:d] + [dm_hz_circulation_actor:state:d]), 80))} )
Leider funktioniert das nicht wie erwartet.
Ich habe dann in der FHEM Befehlszeile mal rumprobiert.
Wenn ich dort {min(11,100)} eingebe, kommt 100 raus, was ja falsch ist.
Bei {min(11,10)} kommt dann richtigerweise 10 raus.
Ich hatte dann vermutet , das er die Zahlen als String interpretiert und den ACII Code vergleicht.
Wenn ich aber Buchstaben statt Zahlen eingebe kommt ein Syntaxfehler.
Dann kann es das ja auch nicht sein
Wo liegt mein Fehler?
Danke
Vermutlich wird irgendeine min-Funktion von irgendeinem Modul aufgerufen, da min nicht zum Perl-Sprachumfang gehört. Es gibt das Perl-Core-Modul List::Utils (https://perldoc.perl.org/List/Util.html), das das machen sollte, was du willst. Wenn du den Namen des Moduls vor die Funktion schreibst, wird der Aufruf eindeutig. Versuche folgendes:
{List::Util::min(11,100)}
-> 11
Grüße,
Jens
Es gibt in der 99_Utils.pm eine Funktion welche dir die kleinste Zahl einer Zahlenreihe aus gibt. Meinst Du sowas?
minNum(num1, num2, ...) returns the lowest value from a given list (sorted numeric)
Ok,
beide Lösungen funktionieren einwandfrei.
Danke! :)