min und max funktionen in perl

Begonnen von hanske, 10 März 2019, 15:50:55

Vorheriges Thema - Nächstes Thema

hanske

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
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

jensb

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, 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
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

CoolTux

Es gibt in der 99_Utils.pm eine Funktion welche dir die kleinste Zahl einer Zahlenreihe aus gibt. Meinst Du sowas?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

minNum(num1, num2, ...) returns the lowest value from a given list (sorted numeric)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

hanske

Ok,
beide Lösungen funktionieren einwandfrei.

Danke! :)
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte