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!
muss das nicht sprintf lauten ..?
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 +
statt "alarm_$schleifennr_status" -> "alarm_".$schleifennr."_status" verwenden oder besser 'alarm_'.$schleifennr-'_status'