FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: 87insane am 14 Februar 2019, 17:14:07

Titel: [GELÖST] Probleme Variablen: min. zweistellig + erweitern innerhalb ReadingsVal
Beitrag von: 87insane am 14 Februar 2019, 17:14:07
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!
Titel: Antw:Probleme mit Variablen: min. zweistellig + erweitern innerhalb ReadingsVal
Beitrag von: herrmannj am 14 Februar 2019, 17:18:19
muss das nicht sprintf lauten ..?
Titel: Antw:Probleme mit Variablen: min. zweistellig + erweitern innerhalb ReadingsVal
Beitrag von: 87insane am 14 Februar 2019, 17:28:14
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 +
Titel: Antw:Probleme mit Variablen: min. zweistellig + erweitern innerhalb ReadingsVal
Beitrag von: Wzut am 14 Februar 2019, 17:39:05
statt "alarm_$schleifennr_status" -> "alarm_".$schleifennr."_status" verwenden oder besser 'alarm_'.$schleifennr-'_status'