myUtil/Perl Liste aller Rollläden in einem Raum als reading wie im Modul ASC

Begonnen von derHeimwerker, 25 Mai 2020, 09:57:58

Vorheriges Thema - Nächstes Thema

derHeimwerker

Hallo,
im ASC Modul hab ich gesehen, dass dort alle Rollläden eines Raumes als reading hinterlegt sind. Also als Beispiel ein reading "Wohnzimmer" --> Roll1, Roll2, Roll5 und ein reading "Bad" --> Roll4, Roll6.

Das würde ich gerne nach bauen. Was bisher geschah ...


######## Test ######

# jeden einzelnen Rollladen als reading anlegen
my @devices = devspec2array('NAME=Roll\..*:FILTER=TYPE=HM485'); # ergebnis ist ein array mit den Device Namen Roll. ...
my @roomDev; # hash anlegen, in dem die Kombination RollNAmen --> Raumname

# jeden Roll. Namen durchlaufen, den Raumnamen aus dem Attr. 'Auto_Zimmer' auslesen und zusammen mit dem Roll.Namen ins array roomDev schreiben
foreach my $device (@devices){

my $roomName = AttrVal($device,'Auto_Zimmer',"NV");
my $temp = "$roomName - $device";
push (@roomDev, $temp);

#fhem("setreading $ARSDev $device $roomName");

}
##########
my %hash;
map {
my ($key, $value) = split/\s+-\s+/;    # Zeile am - aufteilen, um Schlüssel + Wert zu bekommen
push @{ $hash{$key} },$value;         # Wert in Array (wegen mehrfacher Werte!) schieben
}
@roomDev;

###########

my @raum = keys %hash;
my @rollo = values %hash;

#anzahl der Rollos in das reading Anzahl eintragen
my $anzahl=@devices;


# readings Einträge
fhem("setreading $ARSDev Raumliste @raum") if (ReadingsVal($ARSDev,@raum,'nv') eq 'nv');
fhem("setreading $ARSDev RollladenListe @devices") if (ReadingsVal($ARSDev,@devices,'nv') eq 'nv');
fhem("setreading $ARSDev RollAnzahl $anzahl");
fhem("setreading $ARSDev Test @rollo");

}


Die Gesamtzahl Rollläden und die Rollldenliste werden schon einmal korrekt gefüllt. Aber das Testreading sieht nicht gut. Wo liegt mein Fehler? Ich hätte dort jetzt die Namen aller meiner Rollläden vermutet. Also das gleiche, wie im reading "RollladenListe".

Kann mir hier jemand helfen?
Danke !