Neues Modul readingsGroup

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

Vorheriges Thema - Nächstes Thema

Niko

Hallo Andre,

zunächst noch einmal vielen Dank für die Beantwortung meiner Fragen und die Aufnahme des "Alias". Ich nutze das Modul zunehmend und bin immer wieder begeistert über die Möglichkeiten der Einstellung.

Wie schon beim letzten Mal auch heute wieder drei Dinge :-)

Zunächst noch einmal zu dem Punkt an welcher Stelle das Modul eingebunden werden muss. Deine Änderung ("ich baue die liste jetzt auch ein mal auf wenn ich das INITIALIZED von fhem bekomme") funktioniert, nach einem Neustart sind die Daten vorhanden. Nach einem "rereadcfg" funktioniert es allerdings so noch nicht. Diesen "rereadcfg" benötige ich (man), da ich Include-Dateien für fhem.cfg habe. Wenn ich in diesen Include Dateien etwas ändere und dann "rereadcfg" durchführe erkennt dies "readingsGroup" nicht. Ggf. wäre es ja noch möglich auch dieses zu berücksichtigen.

Dann eine kleine optische Sache. Ich verwende das Modul zusammen mit dem Attribut "group". Dieses Attribut setzt in der Anzeige noch einen extra Rahmen um alle Module mit den Attribut (im jeweiligen Raum). Hier fügt "readingsGroup" eine Leerzeile an Ende ein. Im Quellcode ist die die Zeile 293 mit " $ret .= "</br>";" (denke ich, wenn ich diese auskommentiere ist zumindest die Leerzeile weg). Wenn möglich wäre es schön wenn dies bei Gelegenheit geändert werden könnte. Folgend ein Bildschirmabdruck hierzu.


(siehe Anhang / see attachement)


Zum Schluss noch eine ganz andere Sache / Überlegung. Ich nutze hier Fhem2Fhem im Log Modus. Ich erhalte also von dem anderen System ("Logger") die Events und kann diese auch in "Event Monitor" sehen. Die Daten werden in eine Datenbank geloggt. Neben dem Log wollte ich gerne im Fhem Haupt System sehen welche aktuellen Werte der Logger als letztes übermittelt hat. Hierzu gibt es (Beitrag finde ich gerade nicht wieder) eine Diskussion mit Rudolf König. Dort sagte er, dass es so etwas bisher noch nicht gibt und man sich selber eine entsprechende Routine erstellen kann/könnte. Dies habe ich getan (überwiegend aus FileLog, bzw. DbLog abgeschrieben, da diese Module die Events erkennen und auswerten).
Wäre es möglich dieses, also die Events eines mit Fhem2Fhem angebundenen Systems in readingsGroup mit aufzunehmen? Wir hätten dann ein einerseits ein offizielles Modul, dass dies könnte und könnten andererseits sogar gleichzeitig die hervorragenden Möglichkeiten von readingsGroup für diese Daten nutzen. Ich habe aber keine Vorstellung ob dies überhaupt und wenn ja mit welchem Auffand möglich ist. Auch habe ich vollstes Verständnis wenn dies nicht gewünscht ist.

Abermals vielen Dank in Voraus
VG Niko


justme1968

ich verwende rereadcfg nicht weil es alle möglichen probleme verursacht. wenn du sowieso etwas von hand machst kannst du ein modify auf die readingsGroup machen und einfach die gleichen aktuellen parameter noch mal angeben. oder im web frontend in der detail ansicht einmal auf DEF klicken und einfach ohne änderung modify klicken. ich baue gleich noch ein 'set <device> refresh' ein.

das mit der leerzeile schaue ich mir an. ich meine aber die hatte ich extra eingebaut weil sonst der abstand ohne group zu klein ist.

das mit dem fhem2fhem kann ich einbauen. es wird aber die einschränkung haben das du weder device noch reading per regex angeben kannst sondern es genau passen muss.

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

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

justme1968

ich habe eben einen version eingecheckt die auch mit rereadcfg klar kommen müsste.

das <br> ist mal probehalber entfernt. schau mal ob es besser ist so.

wegen dem fhem2fhem: die readingsGroup würde nur events anzeigen die seit dem letzten browser refresh neu rein gekommen sind. direkt nach dem refresh würden die devices alle mit leerem reading angezeigt. ist das das was dir vorschwebt?

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

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

Niko

Hallo Andre,

danke für die schnelle Antwort.

Das mit dem "rereadcfg" geht i.O. (hätte ich auch selber drauf kommen können, danke für den Tipp).

Betreff Fhem2Fhem würde mir eine eins zu eins Beziehung ausreichen. In dieser Form wurde es auch in dem Betrag mit Rudolf diskutiert. Wenn man Einschränkungen benötigt kann man ja sowohl auf dem Logger System "event on ..." benutzen als auch den Regex bei Fhem2Fhem entsprechend setzen.

Ein späteres Zusammenfassen mehrere "readingsGroup" Module wird wohl so nicht möglich sein, oder? Ich denke ich hatte in Deiner Beschreibung (hier im Forum) so etwas gelesen.

Ich kann es gar nicht oft genug sagen: Es ist schon sehr beeindruckend wie du dich hier um "Deine" Anwender kümmerst!  

VG Niko

 



Niko

Hallo Andre,

jetzt muss ich doch mal dumm fragen: Du hast die Version eingecheckt, wenn ich update eingebe erhalte ich Sie aber noch nicht. Erfahrungsgemäß dauert es etwa einen Tag bis neu eingecheckte Module bei mir erscheinen.

Kann ich das irgendwie beschleunigen?

Abermals Danke und VG Niko

justme1968

ja. es ist eingecheckt. die versionen die per update kommen werden ein mal jeden morgen 7:45 zusammengestellt.

wenn du es vorher möchtest musst du es selber per svn auschecken.


was meinst du mit zusammenfassen ?

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

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

Elektrolurch

Hallo Andre,

am Wochenende mich mit readingsGroup befasst. Klappt prima. Tolles Modul. Mit den perl-Ausdrücken für das mapping und das value-Format kann man ganz schön abgedrehte Sachen hinbekommen.
Aber ich habe da zwei Fragen:
a) Ich verstehe noch nicht so ganz den Unterschied z.B. zwischen $DEVICE und %DEVICE. Wann muss ich da was verwenden? Habe es zwar durch ausprobieren hinbekommen... ?
b) Im Kommentar zu den Parametern steht:
◦mapping
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>.
..und...
◦valueFormat
Specify an sprintf style format string used to display the reading values. Can be given as a string, a perl expression returninga hash or a perl expression returning a string, e.g.:
...
also: return a hash...
Ich komme da wieder auf mein Problem zurück, dass ich mehrere Werte aufheben will. Angenommen, ich würde die immer an ein userreading anhängen, mit einem Seperatorzeichen. Könnte man dann nicht aus diesem String mit split einen Hash erzeugen, der dann eine variabel lange Liste an readingsGroup zurückliefert?
Oder liege ich da völlig falsch?

Elektrolurch
 
configDB und Windows befreite Zone!

Niko

Hallo Andre,

a) rereadcfg funktioniert jetzt ebenfalls einwandfrei.

b) die Leerzeile nach der Tabelle ist weg.

Mit zusammenfassen meinte ich folgendes: Du schreibst, "es wird aber die Einschränkung haben das du weder device noch reading per regex angeben kannst sondern es genau passen muss." Ich hatte dies so verstanden, dass ein Modul auf dem Logger System (z.B. ein Max Heizungsthermostat) genau ein readingsGroup Modul auf dem Zielsystem ergibt. Ein readingsGroup über z.B. alle Heizungsthermostaten des Loggersystems (also via fhem2fhem) wäre nicht möglich.

Oder, und darauf bezog sich meine Anmerkung man kann mehrere readingsGroup zu einem weiteren readingsGroup zusammenfassen.

Dir erstmal wieder vielen, vielen Dank

Niko

justme1968

die mit $ sind 'richtige' perl variablen die in perl code zwischen den {} verwendet werden können.

die mit % sind nur 'marker' die mit suchen und ersetzen in den ergebniss strings der hashes ersetzt werden. die gab es schon in der weblink version. bevor es die erweiterung mit dem richtigen perl code gab.

ich denke ich werde beim  suchen und ersetzen auch die variante mit $ zulassen. dann braucht man sich keine gedanken mehr machen wo welche version zu verwenden ist.

die readingsGroup speichert zu keiner zeit (auch nicht temprär) irgendwelche readings. weder eigene noch andere. es werden nur events umgebogen. d.h. selbst wenn ich wollte könnte ich mir keine history merken.

der richtige platz dafür ist wirklich das original device. erzeuge dir einfach die zusätzlichen readings mit userReadings oder aus einem notify.

diese zusätzlichen readings aus dem originaldevice kannst du dann entweder wie gewohnt in einer readingsGroup verwenden oder so ähnlich wie in deinem vorschlag mit valueFormat in eine zeile packen.

speichern im originaldevice, formatieren mit der readingsGroup.

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

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

Elektrolurch

Hallo Andre,

ok, dass mit % und $ habe ich jetzt geschnallt. Gut zu wissen, spart herum probieren.
Das hatte ich auch so verstanden: Die Werte will ich in userReadings im device sammeln und über readingsGroup ausgeben.
Die Frage war jetzt nach dem Hash´, der ja von valueformat verstanden wird. Die Überlegung war, aus der einen im device gespeicherten userReading über valueFormat einen Mehrzeiler zu generieren. Geht das mit einem Hash? Und wie könnte ich den zusammenbauen?

Elektrolurch
P.S.: So langsam macht das einen höllischen Spaß und meine Mädels zu Hause haben sich auch schon daran gewöhnt, dass da Dinge ganz von selber passieren...
configDB und Windows befreite Zone!

justme1968

die einschränkung ist das du für jede zeile in der readingsGroup fest angeben musst welches fhem2fhem event dazugehört. du kannst weder auf device noch auf event ebene eine regex verwenden. das problem ist das ich nicht so wie bei einem normalen device mit der regex 'nachschauen' kann welche devices und readings es wirklich gibt und welche ich davon dann verwende.

du kannst aber ganz normal mehr als ein remote device in einer readingsGroup zusammenfassen je auch mit lokalen devices mischen. also z.b. alle temperaturen aller genau angegebenen fhem2fhem termostate geht ohne probleme. beliebige readings die vorher nicht bekannt sind geht aber nicht.

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

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

Niko

Spitze!!!!

Besser geht kaum noch.

justme1968

noch was vergessen: in der readingsGroup wird nichts gespeichert. d.h. die events die per fhem2fhem kommen würden werden nur angezeigt so lange die readingsGroup im web browser zu sehen ist. wenn du ein refresh machst sind die werte erst mal wider leer bist neue events rein kommen,

gilt das spitze immer noch :) ?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

@elektrolurch: wenn du die call history in einer zeile haben möchtest musst den format string entsprechen zusammen bauen. also z.b. etwas in der art:{"%s ".ReadingsVal("<device>"history1","").",".ReadingsVal("<device>"history2","").","...}
also einen sprintf format string so zusammen bauen in dem an einer stelle ein %s für das aktuelle reading vorkommt und ansonsten alles was du sonst noch anzeigen möchtest. z.b. die history mit ReadingsVal elementweise dran hängen.

wenn du das mit dem hash kombinieren willst müsste das auch gehen.

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

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

Elektrolurch

Hallo Andre,

wenn die Werte aber in einem device gespeichrt wurden und dann wird die Webseite mit der readingsGroup aufgerufen, dann werden aber die im device gespeicherten Werte angezeigt, OHNE das da ein neues Ereignis dazu am device eingehen muss, oder?
Ich hatte das mit der "Alarmzeit" (userReading bei den FS20 PIRU), da hatte ich den Eindruck, dass die gespeicherten Zeiten plötzlich in der readingsGroup leer blieben, nach dem ich die Seite erneut aufgerufen habe. Konnte es aber nicht so richtig nachvollziehen.

Gruß

Elektrolurch
configDB und Windows befreite Zone!