FHEM Forum

FHEM => Automatisierung => Perl für FHEM-User => Thema gestartet von: stobor am 18 Januar 2023, 20:42:08

Titel: Array/Liste mit Stings als Index anstatt Zahlen
Beitrag von: stobor am 18 Januar 2023, 20:42:08
Hallo,
Ich möchte gern eine Liste mit Werten anlegen, die ich über eindeutige Strings ansprechen kann.
Ich möchte eine Liste anlegen, die als Index die Gerätenamen verwendet und die Werte die Gerätezustände beinhalten. Über den Gerätenamen möchte ich dann an den Gerätezustand gelangen. Da ich nicht direkt die Zustände aus FHEM verwenden kann (on-for-timer wird nicht brauchbar abgebildet : https://forum.fhem.de/index.php/topic,131503.0.html).
Wie kann ich so etwas geschickt abbilden?
Titel: Antw:Array/Liste mit Stings als Index anstatt Zahlen
Beitrag von: betateilchen am 18 Januar 2023, 21:00:30
Das nennt sich hash.
Titel: Antw:Array/Liste mit Stings als Index anstatt Zahlen
Beitrag von: stobor am 18 Januar 2023, 21:09:01
Wie sollte ich denn das (hash) nutzen?
Wie initialisiere ich denn einen hash und schreibe neu Einträge in die Liste oder ändere Werte vorhandene Einträge?
Titel: Antw:Array/Liste mit Stings als Index anstatt Zahlen
Beitrag von: stobor am 18 Januar 2023, 21:34:15
Ich habe das etwas gefunden und werde das mal ausprobieren: https://www.perltutorial.org/perl-hash/
Titel: Antw:Array/Liste mit Stings als Index anstatt Zahlen
Beitrag von: Otto123 am 18 Januar 2023, 21:46:05
Ich habe sowas als userReadings, setzt quasi Zifferncode in Klartext um. Vielleicht ist das ein Beispiel für Dich.
mowerActive:mowerActiveIndex:.* {my %activeState = (
0 => "No",
1 => "Yes",
2 => "Party"
); $activeState{ReadingsVal($name,"mowerActiveIndex","0")}}
Titel: Antw:Array/Liste mit Stings als Index anstatt Zahlen
Beitrag von: betateilchen am 19 Januar 2023, 06:59:44
Zitat von: Otto123 am 18 Januar 2023, 21:46:05
Ich habe sowas als userReadings, setzt quasi Zifferncode in Klartext um.

Wobei man Dein Beispiel mit den Indexwerten 0..2 viel einfacher mit einem Array umsetzen könnte.

Aber angenommen, Du möchtest umgekehrt die Werte "No", "Yes" und "Party" in Zahlenwerte 0..2 umsetzen, dann könnte man das einfach mit dem hash lösen, in dem man die Werte einfach umdreht.