Neues Modul readingsGroup

Begonnen von Niko, 24 August 2013, 11:59:11

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo Andre,

war leider drei Wochen weg, komme aber noch Mal auf das Problem zurück, bei der Beschriftung von "Commands" (Textfelder,Menüs) in readingsGrouup:

1. Was ich haben möchte, ist folgendes:
..readingsGrup HzAnlage:Min-Volumenstrom,Max-Volumenstrom
attr meinerg commands {'HzAnlage.Min-Volumenstrom' => 'Min-Volumenstrom:', 'HzAnlage.Max-Volumenstrom' => 'Max-Volumenstrom:'}
Für Min- und Max-Volumenstrom gibt es im device eine setlist, so dass da ein Menü erscheint.

Die Zeile in der rg sollte nun so aussehen:

Volumenstrom min <Menü> max <menü>

Mache ich jetzt ein mapping auf 'Min-Volumenstrom' => 'min', dann steht natürlich auch in der ersten Spalte nicht mehr 'Volumenstrom', sondern 'min'.
Umgekehrt geht's auch nicht, dann steht vor dem ersten Menü 'Volumenstrom', und nicht 'min'.

Ich habe auch schon folgendes ausprobiert:
define meinerg readingsGroup <Volumentstrom>,HzAnlage:Min-Volumenstrom,Max-Volumenstrom

dann wird aber nichts ausgegeben.
Ich habe da recht viele Anwendungsfälle, wo ich in einer Zeile mehrere, gleichartige Werte mit akt,min,min,absenk usw. ausgeben möchte.

Wie könnte ich das lösen?
Oder anders herum gefragt: Wie kann man die erste Spalte in der rg unabhängig von den Readings beschriften?

Gruß


Elektrolurch
configDB und Windows befreite Zone!

justme1968

ich verstehe das problem noch nicht ganz.

wenn du 'Min-Volumenstrom' => 'min' verwendest sollte das keinen einfluss auf die erste spalte haben. da steht ja nur Volumenstrom und das ist von dem mapping nicht betroffen.

kannst du bitte mal ein komplettes beispiel bei dem das auftritt mit ein paar dummys zusammenbauen. dann kann ich es nachstellen.

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

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

Elektrolurch

Hallo Andre,

hier mal ein Testcode:

define Strom dummy
attr Strom room ts
define Strom_rg readingsGroup Strom:Min-Volumenstrom,Max-Volumenstrom
attr Strom_rg alias Heizkreis 1 - Durchfluß
attr Strom_rg commands {'Min-Volumenstrom' => 'Min-Volumenstrom:10,20,30', 'Max-Volumenstrom' => 'Max-Volumenstrom:80,90,100'}
attr Strom_rg mapping {'Min-Volumenstrom' => 'min', 'Max-Volumenstrom' => 'max'}
attr Strom_rg nostate 1
attr Strom_rg notime 1
attr Strom_rg room ts


Die Ausgabezeile heißt jetzt:
min min <menu> max <menu>

Ich hätte aber gerne, dass da vorne nun das Wort "Volumenstrom" steht.

Vielleicht habe ich da ja auch ein Verständnisproblem zu dem attr commands:

Was bewirkt das mapping genau?

{von' => 'nach:10,10,30'}

1. Heißt dass, das an der Stelle von "von" nun das Reading "nach" ausgegeben wird?
oder
2. Wird das Reading "von" nur mit dem Beistelltext "nach" ausgegeben?
Wenn 2) zutreffend wäre, wäre damit ja mein Problem gelöst.
Bislang bin ich aber immer davon ausgegangen, dass "nach" = "von" sein muss, damit auch wirklich der Wert des entsprechenden Readings an der Stelle ein- und ausgegeben wird. Die Doku ist da vielleicht etwas ungenau ... :-)
Die Idee ist mir aber erst jetzt beim erstellen des Beispiels gekommen, da ich da einen Tippfehler drin hatte.

Stimmt das also mit Interpretation 2?
Wäre ja dann etwas anderes im Verhalten, als es bei einem reinen dummy der Fall wäre....

Gruß


Elektrolurch
configDB und Windows befreite Zone!

justme1968

ich habe eben einen fehler gefunden durch den beim mapping des zeilentitels der name des ersten readings mit verwendet wurde. deshalb zwei mal min. ich hab es repariert und eingecheckt.

die zeile heisst jetzt:
Strom min <menu> max <menu>

mapping ändert nur den angezeigten namen. also interpretation 2.

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

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

Elektrolurch

Hallo Andre,

leider geht das aber nicht so, wie ich dachte. Noch mal ein Beispiel:

define HzAnlage_GAS_P_RG readingsGroup HzAnlage:Hk1-Betriebsart
..commands {'Hk1-Betriebsart' => 'Prog:Programm-1,Programm-2,Programm-3,Sommer,Standby'}
...mapping {'Hk1-Betriebsart' => 'Betriebsart'}

ergibt in der Ausgabe (wie gewünscht:

Betriebsart    prog <Menü>

Wählt man nun aber einen Menüpunkt aus, so erhält das Device das Event "prog Sommer" und nicht "Hk1-Betriebsart Sommer", d.h. ich kann den TExt vor dem Menü nicht abändern, da sich auch das Event somit ändert, also doch nicht Variante 2 (siehe Post davor).

Es muss also ..commands {'Hk1-Betriebsart' => 'Hk1-Betriebsart:'}
heißen.

Da aber für "Hk1-Betriebart" bereits ein Mapping besteht, wird die Ausgabe nun so:

Betriebsart    Betriebsart  <Menü>

Das Event stimmt zwar nun, aber die Anzeige ist nicht so wie gewünscht.

Ich habe nun Ausgabezeilen vom gleichen Typ (Volumenstrom) mit mehreren Einzelwerten (min,max,diff usw) -> also ideal für eine readingsGroup, aber ich möchte vor den Auswahlmenüs natürlich nicht immer den kompletten readings-Namen stehen haben und in der ersten Spalte davor nur den gemeinsamen Überbegriff.
Derzeit sehe ich keine Möglichkeit, dies zu realisieren oder was habe ich da übersehen?

Das Mapping in dem attr commands ändert ja nicht nur das Label vor dem Eingabebereich, sondern auch das Event,
das attr mapping zwar dann das Label vor dem Eingabebereich, aber dann auch die erste Spalte.

Gruß


Elektrolurch
configDB und Windows befreite Zone!

justme1968

das mit der ersten spalte hab ich ja vorhin repariert. das ist morgen im update.

das andere muss ich mir noch mal anschauen. ich bin mir aber eigentlich ziemlich sicher das das nicht so ist. das label ist wirklich nur ein label. entweder gibt es noch einen fehler oder in deiner konfiguration ist noch etwas anders.

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

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

Elektrolurch

Hallo Andre,

ich befürchte, dass das mit dem Label leider so nicht funktioniert:

commands {'Hk-1Betriebsart' => 'Hk1-Betriebsart:'}
macht in der Ausgabe:
Hk1-Betriebsart     Hk1-Betriebsart<Menu>
mit Menü = Programm-1,...Sommer usw, da im Device intern %sets für Hk1-Betriebsart mit den Menüeinträgen definiert ist.
Wird der Wert aus dem Menü ausgewählt, so setzt das Device den Wert auch.

commands {Hk1-Betriebsart' => 'prog:'}

erzeugt folgende Ausgabe:

Hk1-Betriebsart    Sommer   (Sommer als Link)
d.h. ohne die %sets für Hk1-Betriebsart zu verwenden (kein Menü).

commands {'Hk1-Betriebsart' => 'prog:Programm-1,Programm-2,....Sommer'}
erzeugt folgende Ausgabe:

Hk1-Betriebsart    prog <Menü> mit den oben definierten Einträgen.

Wird ein Menüpunkt ausgewählt, so meldet das von mir programmierte Device:

"set unknown reading prog, use: ..." und dann den Inhhalt von %sets.

Wie man also sieht, mapped das attr commands nicht nur rein auf den Anzeigentext, sondern auch auf die Ihnhaltsinterpretation (sowohl für die fhem Option-List zum Reading, als auch auf das Event).

Mit
attr mapping ('Hk1-Betriebsart' => 'Betriebsart'}
und
commands {'Hk1-Betriebsart' => 'Hk1-Betriebsart:}
bekommt man dann folgende Ausgabe:

Betriebsart   Betriebsart<Menü>
und das erzeugte Event ist dann auch "Hk1-Betriebsart Sommer".
d.h. attr mapping ändert zwar hier nun das Label, aber sinnvollerweise jetzt nicht das Event.

So sollte es ja eigentlich auch für das attr commands sein (früher als Punkt 2 im post bezeichnet), ist wohl aber so nicht.

Gruß

Elektrolurch
configDB und Windows befreite Zone!

Elektrolurch

Hallo Andre,

habe das letzte Update von der readingsGroup eingespielt und bin jetzt ziemlich verwirrt.
In der ersten Spalte kommt nun kein Mapping mehr, d.h. es wird nun überall der statedes darzustellenden Devices ausgegeben und nicht mehr der per Mapping gewünschte (abgeänderte Namen) des Readings.

Vorher stand da z.B.

Außentemperatur    min 17  max 22

um in der ersten Spalte das Wort "Außentempeatur" erscheinen zu lassen, war folgendes definiert:
attr .. mapping {'HzAnlage.Min-Aussentemperatur' => 'Außentemperatur'} usw.
definiert ist die rg .. HzAnlage:Min-Aussentemperatur,Max-Aussentemperatur...

Jetzt verstehe ich nicht, wie ich per Mapping einen Text in die erste Spalte bekommen kann....
Ich dachte immer, das wäre das Mapping für den ersten Wert (2. Spalte).
Kann es sein, dass ich den "Bug" die ganze Zeit genutzt habe?
Jetzt stehe ich auf dem Schlauch.

Gruß

Elektrolurch

configDB und Windows befreite Zone!

justme1968

die erste spalte ist immer der zeilen titel. also der name des devices und des readings bzw. nur der device name bei mehreren readings pro zeile.

der fehler war das bei mehreren readings pro zeile trozdem der name des ersten readings beim mappen des zeilentitels verwendet wurde und dann der reading name zwei mal dort stand. ein mal als titel und dann das zweite mal für das eigeniche reading.

das habe ich repariert so das in der ersten spalte jetzt der device name steht.

was steht denn bei dir in der ersten spalte? da sollte niemals automatisch state stehen sondern der device alias oder wenn nicht vorhanden der name. wenn du dort per mapping etwas anderes anzeigen möchgest dann muss es so aussehen: ... <name> => 'txt' ...

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

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

Elektrolurch

Hallo Andre,

ok, dann habe ich für alle meine readingsGroup den Bug genutzt und das REading in der zweiten Spalte dazu verwendet, in der ersten Spalte einen Text auszugeben. Jetzt brauche ich aber doch mal Deine Hilfe, wie muss ich das denn jetzt lösen, wenn ich in einer readingsGroup bspw. alle Werte des Devices "HzAnlage" in mehreren Spalten darstellen möchte, wie z.B.:

Min-Volumenstrom,Max-Voluemenstrom
Akt-Kollektortemperatur,Min-Kollektortemperatur,Max-Kollektrotemperatur

und in der ersten Spalte dann stehen soll

Volumenstrom
Kollektortemperatur

mit mapping {'Min-Kollektortemperatur' => 'min'} bekomme ich dann vor dem Wert das Wort "min", aber was muss ich jetzt Mappen, um in der ersten Spalte "Kollektortemperatur" zu haben??

Und "überschreibt" jetzt das Mapping des attr commands das allgemeine "Mapping"?
Scheint so.
Im Augenblick habe ich die vorletzte Version der readingsGroup zurückgespielt, da meine ganzen Ausgaben nun "verhaut" sind.

Wäre es nicht sinnvoll, das Mapping der Readings mit ihren Werten in den Spalten 2. - n, vom Mapping der ersten Spalte zu trennen?
ZZum Beispiel mit einem neuen Attribut? (Label)
Das Vorhandensein eines beliebigen Readings in einer Zeile würde dann den Text in der ersten Spalte bestimmen? Dass heißt den Bug in ein neues Attribut überführen.

Gruß


Elektrolurch
configDB und Windows befreite Zone!

justme1968

#400
für deinen fall ist es das einfachste in der ersten spalte jeweils den titel direkt anzugeben. also so:

HzAnlage:<Volumenstrom>,Min-Volumenstrom,Max-Voluemenstrom
HzAnlage:<Kollektortemperatur>,Akt-Kollektortemperatur,Min-Kollektortemperatur,Max-Kollektrotemperatur

mapping und commands überschreiben sich nicht. mapping ist nur für die jeweiligen label zuständig. commands dafür das ein label ein kommando auslösen kann.

es gibt nur eine 'sorte' label. das sind die namen der readings. und der steht bei einer 'einfachen' readingsGroup jeweils in der ersten spalte vor jedem reading. bei einer readingsGroup mir mehreren readings pro zeile gibt es aber nur ein label pro zeile und da ist normalerweise nur der device name sinnvoll. der erscheint da auch automatisch.

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

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

Elektrolurch

Ok. Das fehlte mir für die erste Spalte:

HzAnlage :<Volumenstrom>,...

Ich hatte es nämlich in der defs der rG so probiert:
<Volumenstrom>,HzAnlage:Min-Volumenstrom..

und das ging nicht.

Danke, das hilft mir jetzt für (fast) alle Fälle weiter.

Gruß


Elektrolurch
configDB und Windows befreite Zone!

justme1968

vorsicht: vor und nach dem doppelpunkt darf natürlich kein leerzeichen sein.

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

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

Aeroschmelz

Könntet ihr netterweise ein komplettes Beispiel zeigen? Das wäre zu meinem Verständnis super nett


Gesendet von meinem iPhone mit Tapatalk

justme1968

ein beispiel wofür?

im wiki gibt es eine ganze seite mit beispielen...

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

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