Vorschlag: Alias für "Rooms"

Begonnen von Happy Fhem User, 20 Februar 2014, 20:55:17

Vorheriges Thema - Nächstes Thema

Happy Fhem User

Eigentlich nutze ich nur englische Definitionen in FHEM und bereite das ganze optisch über die Nutzung von Aliasen auf - das klappt schon ziemlich gut an den meisten Stellen.

Weil es bei den Raumnamen den Alias-Mechanismus nicht gibt, habe ich meine Raumnamen halt deutsch definiert - allerdings mit Leerzeichen z.B.

EG Arbeitszimmer
EG Wohnzimmer
EG Bad

damit sie in der Navigation freundlicher aussehen.

Das funktioniert aber leider nicht an allen Stellen in FHEM. Der Room-Selector erkennt z.B. die Leerzeichen-Räume nicht und bietet sie nicht zur Auswahl an.

Jetzt bin ich auf die Idee gekommen Aliase für die Anzeige der Räume zu implementieren. Dabei habe ich die Nomoklatur des Attributs "eventMap" verwendet (siehe http://homeauto.homenet/fhem/docs/commandref.html#eventMap) um auch Leerzeichen abbilden zu können.

Die Umsetzung war recht einfach:

--- BK/01_FHEMWEB_pre_roomalias.pm      2014-02-20 20:11:49.086317408 +0100
+++ 01_FHEMWEB.pm       2014-02-22 10:43:48.977213975 +0100
@@ -65,6 +65,7 @@
use vars qw(%FW_pos);     # scroll position
use vars qw($FW_cname);   # Current connection name
use vars qw(%FW_hiddenroom); # hash of hidden rooms, used by weblink
+use vars qw(%FW_roomAlias);  # hash of aliased rooms return the label for a room
use vars qw($FW_plotmode);# Global plot mode (WEB attribute), used by SVG
use vars qw($FW_plotsize);# Global plot size (WEB attribute), used by SVG
use vars qw(%FW_webArgs); # all arguments specified in the GET
@@ -142,6 +143,7 @@
     redirectCmds:0,1
     refresh
     reverseLogs:0,1
+    roomAlias
     roomIcons
     sortRooms
     smallscreen:unused
@@ -987,6 +989,13 @@
   foreach my $r (split(",",AttrVal($FW_wname, "hiddenroom", ""))) {
     $FW_hiddenroom{$r} = 1;
   }
+  %FW_roomAlias = ();
+  foreach my $r (attrSplit(AttrVal($FW_wname, "roomAlias", ""))) {
+    if (my($name,$alias)=($r=~/^([^:]+):(.*)$/)) {
+      $FW_roomAlias{$name} = $alias;
+    }
+  }
+       

   ##############
   # LOGO
@@ -1045,9 +1054,16 @@
                          FW_roomIdx(@sortBy,$b) } keys %FW_rooms ) {
     next if($r eq "hidden" || $FW_hiddenroom{$r});
     $FW_room = $r if(!$FW_room && $FW_ss);
-    $r =~ s/</&lt;/g;
-    $r =~ s/>/&lt;/g;
-    push @list1, $r;
+    if ($FW_roomAlias{$r}) {
+      my $l=$FW_roomAlias{$r};
+      $l =~ s/</&lt;/g;
+      $l =~ s/>/&lt;/g;
+      push @list1, $l;
+    } else {
+      $r =~ s/</&lt;/g;
+      $r =~ s/>/&lt;/g;
+      push @list1, $r;
+    }
     $r =~ s/ /%20/g;
     push @list2, "$FW_ME?room=$r";
   }
@@ -2755,6 +2771,20 @@
         attr WEB roomIcons Anlagen.EDV:icoEverything
         </li>
         <br>
+       
+    <a name="roomAlias"></a>
+        <li>roomAlias<br>
+        Space separated list of room:alias pairs, to override the label shown
+        in the navigation.The value of this attribute consists of a list of
+        space separated values, each value is a colon separated pair. The
+        first part specifies the roomname, the second the displayed value for
+        that room. If the first character is slash(/) or komma(,) then split
+        not by space but by this character, enabling to embed spaces. Examples:<br>
+        attr WEB roomAlias ,OG_Kind:OG Kind,OG_Eltern:OG Eltern<br>
+        attr WEB roomAlias MACHINEROOM:Zentrale
+        </li>
+        <br>
+                       

     <a name="sortRooms"></a>
     <li>sortRooms<br>


Vielleicht findet es Anklang und den Weg in das Original ;-)

Mfg, Happy ...

rudolfkoenig

Was ich nicht verstehe: warum ist dieser alias besser als room selbst? Wenn z.Bsp. Leerzeichen in Raumnamen nicht auswaehlbar sind, dann sollten wir doch das fixen, statt den Anwender mit weiteren Attributen zu nerven.

betateilchen

Das seh ich auch so - an dem nicht möglichen Leerzeichen hab ich mich auch schon öfters gestört, ich hab das aber immer mit einem Unterstrich gelöst, das fällt in der Raumliste fast nicht auf :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

marvin78

Wie sieht es denn mit Umlauten aus (z.B. Büro). Ich meine mich erinnern zu können, dass diese zumindest früher mal nicht erlaubt waren. Hat sich das geändert (kann gerade leider nicht testen)?

Billy

ZitatWas ich nicht verstehe: warum ist dieser alias besser als room selbst? Wenn z.Bsp. Leerzeichen in Raumnamen nicht auswaehlbar sind, dann sollten wir doch das fixen, statt den Anwender mit weiteren Attributen zu nerven.

Kann dem nur zustimmen! :)
Gruss Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

justme1968

umlaute gehen schon eine weile und das sie sich nicht mit longpoll vertragen haben wurde auch gerade behoben.

ich verwende leerzeichen in räumen und habe nicht wirklich ein problem bemerkt.

der das menü bei den attribute sollte sowieso umgebaut werden so das eine mehrfach auswahl möglich ist dann kann man dort die leerzeichen auch reparieren wenn sie probleme machen.

einen extra alias einzubauen zieht nur einen ratgenschwanz an änderungen an ich weiß nicht wie vielen stellen und oberflächen nach sich. und am ende hat man mehr probleme statt weniger.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

Die einzige Stelle, an der ich Probleme mit Leerzeichen in Raumnamen kenne, ist die Auswahlliste bei den Attributen (die ich am liebsten abgeschafft sehen würde)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Happy Fhem User

Ich finde die Möglichkeit nett, die Darstellung von der Definition zutrennen - so wie es bei dem Attribut "alias" der Fall ist.

Beim Testen der Änderung ist mir noch ein weiterer Benefit aufgefallen: Im Smallscreendesign konnte ich einen dort zu langen Raumnamen ohne Probleme abkürzen - während in der Pad Ansicht die volle Länge angezeigt wurde.

Hej, da kann ich dann sogar für meine dänischen Gäste gleich die Oberfläche übersetzen ;-)


Andy89

Servus,
ich bin noch relativ neu bei FHEM und wollte nun meine Räume sortieren. Dabei habe ich zB meine Heinzungs-Info mit 00 angeben, damit dieser Eintrag gabz oben ist. Der oberste Eintrag wird auf meinem iPhone automatisch geöffnet.
Da ich aber 00_ Heizung, 01_Schlafzimmer, etc. nicht so schön finde, wollte ich ein alias wie bei normalen Namen anwenden. Das hat natürlich nicht funktioniert. Gibt es eine Möglichkeit Räume zu sortieren, ohne dass sie dabei alphabetisch sortiert sind?
Falls nicht, würde ich den Vorschlag "alias für rooms" wiederbeleben, denn damit wäre eine Sortierung der Räume ohne Probleme möglich.

Danke für eure Hilfe und Beste Grüße
Andy
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

MrRight

@Andy89: Dein Problem lässt sich einfach mit

attr WEB sortRooms Heizung Schlafzimmer ...

lösen.
FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

Andy89

Zitat von: MrRight am 13 Januar 2015, 02:40:10
@Andy89: Dein Problem lässt sich einfach mit

attr WEB sortRooms Heizung Schlafzimmer ...

lösen.
dankeschön!
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD