readingsGroup - name-mapping bei mehreren Spalten

Begonnen von fruemmel, 13 Juli 2015, 16:58:39

Vorheriges Thema - Nächstes Thema

fruemmel

Hallo,

ich kann in einer readingsGroup ja in einer Zeile mehrere Spalten mit Werten, indem ich die Readings durch Komma trenne. Dabei ist es auch möglich, mit Hilfe von @ die Readings von verschiedenen devices darzustellen.
If regex is a comma separatet list the reading values will be shown on a single line.
...
regex can be of the form <regex>@device to use readings from a different device

Leider habe ich keinen Weg gefunden, um bei einer solchen Konstellation den in Spalte 0 angezeigten Namen mittels des mapping-Attributes zu modifizieren, außer über den Namen des ersten devices. Wenn dieses device aber in einer readingsGroup in mehreren Zeilen vorkommt, kann man das nicht mehr unterscheiden.

Mir geht es also um die Anwendung des folgenden help-Textes bei mehreren Werten in einer Zeile:
Zitatmapping
Can be a simple string or a perl expression enclosed in {} that returns a hash that maps reading names to the displayed name. The keys can be either the name of the reading or <device>.<reading>.

Gibt es einen Weg, den ich noch nicht herausgefunden habe, um auch bei mehreren Readings gezielt einen Namen zu "mappen", oder müsste da was am Code gemacht werden?

Gruß Wolfgang

justme1968

ich verstehe deine frage nicht ganz.

das mapping ist nur für den device namen. den gibt es nur in der ersten spalte und er gehört immer zum ersten device.

wenn du hier etwas anderes anzeigen willst aktiviere nonames und definiere dir explizit den text in der ersten spalte mit <...> oder <{...}> oder !...

bitte mach mal ein konkretes beispiel mit ist und soll zustand.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

fruemmel

Hallo Andre,

als Beispiel erstelle ich eine rg mit der definition define rg readingsGroup mykm200:temperature/outdoor1,temperature@laCrosse1 mykm200:temperature/water1

(Die readings sind nur exemplarisch gekürzt). Daraus ergibt sich eine rg mit zwei Werten in der ersten Zeile. Über das mapping kann ich den Namen der ersten Zeile (also den Text in Spalte 0 der rg) nur setzen wenn ich über den device-Namen gehe, also z. B. {"mykm200" => " Temperaturen"}. Damit würde aber auch der Text für die zweite Zeile gesetzt werden.
Es wäre also z. B. eine Lösung, wenn ein mapping { "mykm200:temperature/outdoor1" => "Temperaturen" } funktionieren würde, tut es aber nach meinen Test wegen dem zweiten Wert (temperature@laCrosse1) nicht.

Ist das so verständlicher?
Dein vorgeschlagener Weg über nonames würde das aber vermutlich lösen können, muss ich probieren. Vielen Dank dafür.

Gruß Wolfgang

justme1968

die erste spalte ist (nur) der device name. und mapping ist dafür gedacht aus einem device namen etwas lesbares zu machen wenn aus irgend einem grund der device alias nicht genug ist. da es kein device mit namen mykm200:temperature/outdoor1 gibt passiert auch im mapping nichts. das hat aber nichts weiter mit den anderen werten in dieser zeile zu tun.

für das was du möchtest ist mapping nicht vorgesehen/geeignet. dazu solltest du eine der drei anderen oben vorgeschlagenen varianten verwenden.

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

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

fruemmel

Beim mapping geht ja auch <device>.<reading>. Das matched aber eben leider nur, wenn nur ein Wert pro Zeile angegeben ist, und nicht mehrere. Mir wäre ja auch geholfen, wenn auch bei mehreren Werten das mapping gegen das erste angegebene device.reading erfolgt. Ist aber wohl im Code nicht vorgesehen.

Ich kümmere mich um die anderen Varianten.

Danke und Gruß
Wolfgang

Spook112

Hi,
ich hatte das gleiche "Problem" wie fruemmel und habe es (teilweise) mi dem Vorschlag
Zitataktiviere nonames und definiere dir explizit den text in der ersten spalte mit <...> oder <{...}> oder !...
hin bekommen.

Allerdings geht das bei mir nur, wenn in dem "Freitext" keine Leerzeichen enthalten sind.

<Aussentemperatur> funktioniert und wird richtig angezeigt als "Aussentemperatur"

<Temp. im Gartenhaus> funktioniert nicht und wird so angezeigt:  "<Temp. "

Das gilt für die beiden Varianten mit    !...     oder mit     <...>
Gibt es eine Möglichkeit auch "Begriffe" mit Leerzeichen darzustellen?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

the ratman

#6
schreib &nbsp; als space rein - funzt zumindest bei mir

also z.b.  <Ich&nbsp;bin&nbsp;ein&nbsp;text>
kann man übrigens auch super für "einrückungen" verwenden: <&nbsp;&nbsp;&nbsp;text>

is übrigens ein geschütztes leerzeichen. wenns wie bei html funzt, dann gibts auch keine zeilenumbrüche mehr damit.

andere bspl.:
non-breaking space &nbsp;
< less than &lt;
> greater than &gt;
& ampersand  &amp;
¢ cent &cent;
£ pound  &pound;
¥ yen &yen;
euro &euro;
© copyright &copy;
® registered trademark &reg;
→do↑p!dnʇs↓shit←

justme1968

#7
bei der <> variante: &nbsp; verwenden

bei der <{..}> variante: den string aus einer sub zurück geben

bei der !... variante: das nicht vorhandene reading mit setreading auf den beabsichtigen wert setzen.
                              das reading kann auch auch der readingsGroup selber kommen.

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

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

Spook112

Prima - funktioniert auch bei mir.
Danke für den Tip.
Gruß
Michael
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren