FHEM Forum

FHEM => Frontends => readingsGroup / readingsHistory => Thema gestartet von: fruemmel am 13 Juli 2015, 16:58:39

Titel: readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: fruemmel am 13 Juli 2015, 16:58:39
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
Titel: Antw:readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: justme1968 am 14 Juli 2015, 14:19:23
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
Titel: Antw:readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: fruemmel am 14 Juli 2015, 17:22:27
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
Titel: Antw:readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: justme1968 am 14 Juli 2015, 17:37:29
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
Titel: Antw:readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: fruemmel am 14 Juli 2015, 18:42:08
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
Titel: Antw:readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: Spook112 am 05 September 2016, 12:07:30
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?
Titel: Antw:readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: the ratman am 05 September 2016, 12:19:04
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;
Titel: Antw:readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: justme1968 am 05 September 2016, 12:48:06
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
Titel: Antw:readingsGroup - name-mapping bei mehreren Spalten
Beitrag von: Spook112 am 05 September 2016, 20:11:11
Prima - funktioniert auch bei mir.
Danke für den Tip.
Gruß
Michael