Device in allen Räumen darstellen

Begonnen von betateilchen, 04 September 2013, 12:16:22

Vorheriges Thema - Nächstes Thema

betateilchen

Mir schwebt grade die Idee vor Augen, ein bestimmtes Device in allen derzeit definierten rooms anzuzeigen.

attr <device> room *

funktioniert natürlich nicht, da wird lediglich ein Raum namens "*" angelegt.

Gibt es irgendeine andere elegante Möglichkeit, das quasi in Echtzeit automatisch zu bewerkstelligen (und damit auch aktuell zu halten, wenn sich die Anzahl der Räume verändert)?

Eigentlich müssten ja im Frontend einfach nur alle Devices mit dem gerade zur Anzeige gewählten Raum PLUS die Devices mit einem "*" als Raumdefinition zusammengeführt werden. Meinetwegen kann das statt "*" auch gerne "all" heißen, falls der Stern Probleme beim regexen macht.

Nein, die manuelle Attributpflege ist keine Option (um diesem Vorschlag schonmal grundsätzlich vorzubeugen)


---
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Ok, "*" und "all" geht nicht *g* das eine bringt fhem zum Absturz und das andere ist schon reserviert. Ich werde mal mit "any" testen ...

edit: so einfach könnte es gehen:


Index: 01_FHEMWEB.pm
===================================================================
--- 01_FHEMWEB.pm (Revision 3853)
+++ 01_FHEMWEB.pm (Arbeitskopie)
@@ -1079,7 +1079,7 @@
   
   # array of all device names in the room (exception weblinks without group
   # attribute)
-  my @devs= grep { ($FW_rooms{$FW_room}{$_}||$FW_room eq "all") &&
+  my @devs= grep { ($FW_rooms{$FW_room}{$_}||$FW_rooms{any}{$_}||$FW_room eq "all") &&
                       !IsIgnored($_) } keys %defs;
   my (%group, @atEnds);
   foreach my $dev (@devs) {

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!