[GELÖST] Probleme Variablen: min. zweistellig + erweitern innerhalb ReadingsVal

Begonnen von 87insane, 14 Februar 2019, 17:14:07

Vorheriges Thema - Nächstes Thema

87insane

Hi mal zusammen,

bin gerade ein wenig am testen und bekomme es nicht hin, eine Variable die aus einer Schleife kommt immer mindestens zweistellig zu setzen.

...
foreach $k (1..ReadingsVal("$NAME", "alarm_count", "0"))
...
my $schleifennr = "0";
$schleifennr = printf("%02d", $k);


Nach meiner Ansicht, wenn dort eine z.B. 2 drin steht, müsste mit "printf("%02d", $k);" am Ende 02 dort stehen. Leider bekomme ich aber nur eine 2 angezeigt.
Wie komme ich hier weiter?


GELÖST in Beitrag 2 durch herrmannj - Danke!

Danach soll in einem Reading was angepasst werden. Dies läuft auch nicht. Suche noch nach dem Problem.

if (ReadingsVal("$NAME", "alarm_$schleifennr_status", "")

Das hier kann so nicht gesetzt werden.
Fehler:

Global symbol "$schleifennr_status" requires explicit package name (did you forget to declare "my $schleifennr_status"?) at (eval 3981) line 20.

Warum kann ich so, die Variable nicht erweitern? Muss ich das vorher komplett in eine andere Variable schreiben und dann ca. so machen?
if (ReadingsVal("$NAME", "$hierstehtallesdrin", "")

GELÖST: in Beitrag 4 durch Wzut - Danke!

Danke schon mal für Eure Hilfe!

herrmannj


87insane

Problem 1 gelöst! Danke @herrmannj!
Hatte noch in meiner alten c# Ausgabe gelebt.

Problem 2 ist leider noch offen.


EDIT: Teste gerade aber glaube es ist einfach +

Wzut

statt "alarm_$schleifennr_status" -> "alarm_".$schleifennr."_status" verwenden oder besser 'alarm_'.$schleifennr-'_status'
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher