Neues Modul readingsGroup

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

Vorheriges Thema - Nächstes Thema

justme1968

normalerweise per notify das direkt mit der passenden regex alle deine max komponenten matched.

alternativ wenn das mit der regex zu unhandlich wird kannst du sehr wohl ein notify an eine readingsGroup hängen. schau mal in den eventMonitor oder per telnet mit inform timer :) das schöne wenn man eine readingsGroup verwendet ist das man z.b. mit TYPE=MAX:battery eine readingsGroup mit allen batterie meldungen aller max geräte anlegen kann ohne sich gedanken über die namen der devices zu machen. und auch neue max devices werden automatisch in die readingsGruppe mit aufgenommen.

die structure ist auch eine alternative.

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

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

stenny73

Hallo justme1968

Kannst du mir vielleicht sagen wie ich das notify an das readingsgroup hänge?
Danke
FHEM auf XEN, Ubuntu-Server 14.04   - HM-Lan - Max - ZWave -WS1080 -BlueTooth

FHEM auf Ubuntu-Server 14.04   - HM-LAN

FHEM auf Raspberry Pi   - CSM für Max - HM-USB - WiFi-LED

justme1968

genau so wie an jedes andere device.

define <my_notify> notify <readingsGroup name>[:regex] ...
gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Niko

Hallo Andre,

"nolinks" funktioniert einwandfrei, nochmals vielen Dank hierfür


Zitat von: justme1968 schrieb am So, 08 September 2013 17:32zu timestampStyle:  das ist doch gar nicht dokumentiert :). timestampStyle hat das problem das es von longpoll überschrieben wird bzw. noch nicht dynamisch gesetzt werden kann wenn sich der wert per longpoll ändert.

das was du aber eigentlich möchtest ist timestampFormat. das gibt es noch gar nicht und ich muss auch erst  mal schauen ob das überhaupt geht weil die timestamps zur zeit automatisch von fhem erzeugt werden.

eigentlich sogar beides (z.B. gib mir nur die Zeit aus und dies in roter Farben), dies aber alles, wie gesagt nur ein Wunsch von mir und readingsGrooup ist auch ohne dieses schon ein beeindruckendes Modul.

Ich probiere jetzt erst einmal den Vorschlag von Elektrolurch. Grundsätzlich klappt dies auch, ich habe es nur noch nicht hinbekommen Werte untereinander dar zu stellen. Auch sind dies, wie Elektrolurch ja auch schreibt schon aufwendige Statements, da die Abfrage (if etc) nicht nur den Value sondern auch den Timestring berücksichtigen muss und diese bei mir nicht unbedingt in die gleiche Gruppe (if) fallen. Mal sehen wie weit ich komme.

Viele Grüße Niko


Niko

Hallo Andre, hallo Elektrolurch,

ich wollte einmal kurz berichten wie weit ich gekommen bin. Die Möglichkeit bei readingsGroup eigene Funktionen einzubinden hat zu einer Lösung geführt. Allerdings habe ich mich etwas mit der Formatierung (rechts, links, zentriert, Einrücking etc) der Timestamps in dem Value Feld gequält. Dies war so nicht zufriedenstellend möglich. Die Lösung war in meiner Funktion einfach eine neue Tabellenspalte zu erzeugen. Die Lösung sieht jetzt so aus:


(siehe Anhang / see attachement)


Eine andere Sache ist mir noch aufgefallen. Diese kann aber auch eine Folge meiner Funktion sein, daher hier mehr die Frage ob dies bei Euch auch auftritt. Wenn ich mir den "Event Monitor" anschaue scheint jedes readingsGroup Event die folgenden Zeilen um eine Position nach rechts zu verschieben:


(siehe Anhang / see attachement)


Stört aber auch nicht weiter, wie gesagt ist mir nur aufgefallen.

Nochmals vielen Dank für die Hilfe bei meinen Bemühungen.

Niko

justme1968

das schaut klasse aus.

das einrücken im event monitor kommt ziemlich sicher von deiner formatierung. die landet auch in den events. das sollte aber sonst keine probleme weiter machen.

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

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

Elektrolurch

Hallo,

mir ist da auch was aufgefallen. Ich nutze ziemlich viel das valueFormat, um mir die Ausgabe zusammenzubasteln.
z.B. {$VALUE eq "present"?"$DEVICE ist zu Hause":""}

Wenn also nicht present, dann sollte kein Eintrag angezeigt werden.
Geht aber mit "" nicht, man muss undf() zurückliefern.

So als Tipp, falls da jemand auch drüber stolpern sollte.

Elektrolurch
configDB und Windows befreite Zone!

Elektrolurch

Hallo,

wenn da jemand knifflige Sachen, wie z.B. Formatierung gelöst hat, -> über kleines Beispiel zur Anregung würde ich mich immer freuen.
Mit dem ReadingsGroup kann man ja wirklich tolle Sachen machen, so z.B. eine Übersichtliste von allen Lampen im Haus, die man vergessen hat auszuschalten!
Gerade implementiert - mit Zeitangabe, seit wann die L. an ist.

Elektrolurch

configDB und Windows befreite Zone!

Niko

Hallo Elektrolurch,

das mit der neuen Spalte habe ich mit html Formatierungen in dem Attribut valueFormat gelöst. Hier habe ich eine neue Tabellenspalte eingefügt. Das Format steht ja in einer eigenen Spalte die mit <td> vom Modul eröffnet wird. Dann kommen die Dinge die man im valueFormat eingibt und danach wird die Spalte mit </td> vom Modul wieder geschlossen.

Ich habe jetzt bei valueFormat erst die Dinge eingegeben die sich auf den Value beziehen, dann die Tabellenspalte geschlossen und eine neue eröffnet. Schließen brauch man diese nicht wieder, dies macht ja schon das Modul:

Beispiel: %.3f </td><td>Neue Spalte

Man kann auch noch Formatierungen für die neue Spalte (in html) mit aufnehmen

Ich hoffe dies hat keine Nebenwirkungen. Wenn es  nicht gewünscht ist möchte ich Andre bitten hier zu antworten.

Viele Grüße
Niko

Elektrolurch

Problem mit %ROOM

Hallo Andre,

habe jetzt readingsGroup intensiv eingesetzt. Dabei ist mir folgendes aufgefallen:

attr rg mapping {state => '$DEVICE'} geht sowohl mit $DEVICE, als auch mit %DEVICE, so stehts ja auch in der commandRef.
Aber mit $ROOM oder %ROOM geht es bei mapping nicht.
Wollte in einer Übersicht alle Heizungsthermostate darstellen, da die im Raum Name = 2-Buchstabigen Raumkürzel_Thermostat und im Alias nur "Thermostat" heißen, wäre es schön, wenn in der Übersicht der Raum, statt des Devicenamens oder Alias stehen würde.
%ROOM wird aber nur als "%ROOM" ausgegeben.


Elektrolurch
configDB und Windows befreite Zone!

justme1968

hast du auch wirklich die neueste version aus dem update von heute ?

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

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

Elektrolurch

Ok. Mit dem Update von gestern gings noch nicht, aber jetzt geht's.
Super. Bringt in den Übersichten sinnvolle Informationen.
Frage: Ich lasse mir z.B. anzeigen, welche Lampen im Haus noch eingeschaltet sind. Über valueFormat selektiere ich die, die den Status "ein" haben. Wenn man die jetzt auch noch anklicken könnte, um sie auszuschalten...
Geht aber wahrscheinlich mit dem ´Modul readingsGroup nicht....

Gruß


Elektrolurch
configDB und Windows befreite Zone!

justme1968

sagen wir mal es geht noch nich. zumindest über das icon wird es vermutlich demnächst gehen.

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

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

Elektrolurch

Klingt ja spannend. Habe in einer Übersicht alle Lampen im Haus, die noch nicht ausgeschaltet wurden. Wird über valueFormat mit einer entsprechenden Abfrage auf "ein" realisiert. Wenn man dann zum Ausschalten gleich auch drauf klicken könnte... :-)
Für manche Übersichten wird es aber auch etwas länglich, für ein Device  mehrere Werte in einer Zeile darzustellen. Beispiel:

define Alle_Thermostate_rg readingsGroup [A-Z][a-z]_Thermostat:state
attr Alle_Thermostate_rg alias Alle Thermostate
attr Alle_Thermostate_rg group Fenster - Türen und Heizung
attr Alle_Thermostate_rg mapping {state => '$ROOM'}
attr Alle_Thermostate_rg noheading 1
attr Alle_Thermostate_rg nolinks 1
attr Alle_Thermostate_rg nostate 0
attr Alle_Thermostate_rg notime 1
attr Alle_Thermostate_rg room ts,Haus
attr Alle_Thermostate_rg valueFormat {"Ist-Temp. ".ReadingsVal($DEVICE,"measured-temp","???")." °C Soll-Temp. ".ReadingsVal($DEVICE,"desired-temp","???")."°C  Regler ".ReadingsVal($DEVICE,"actuator","???")." Modus ".ReadingsVal($DEVICE,"mode","???").((ReadingsVal($DEVICE,"warnings","???") eq "none")?undef():(" Warnung: ".ReadingsVal($DEVICE,"warnings","???")))." Zeit ".KonvertiereZeit(ReadingsTimestamp($DEVICE,"state","???"))}



Gibt dann folgendes aus:

Alle Thermostate
Büro Ist-Temp. 20.6 °C Soll-Temp. 19.5°C Regler 0% Modus auto Zeit 22:27:40 05.10.2013

Da ist das %ROOM!

Vielleicht gibt es da ja auch eine einfacherere Variante,....Man lernt ja nie aus.

Elektrolurch

configDB und Windows befreite Zone!

Elektrolurch

Hallo Andre,

ich bekomme jetzt von readingsGroup eine Fehlermeldung:
2013.10.06 11:12:05 2: FHT set Bu_Thermostat desired-temp 21.0
Use of uninitialized value in concatenation (.) or string at (eval 15871) line 1.
Invalid conversion in sprintf: "% M" at ./FHEM/33_readingsGroup.pm line 458.
Use of uninitialized value in concatenation (.) or string at (eval 15939) line 1.
Invalid conversion in sprintf: "% M" at ./FHEM/33_readingsGroup.pm line 330.
Use of uninitialized value in concatenation (.) or string at (eval 15985) line 1.
Invalid conversion in sprintf: "% M" at ./FHEM/33_readingsGroup.pm line 330.
2013.10.06 11:15:32 2: FHT set Bu_Thermostat desired-temp 21.0
Use of uninitialized value in concatenation (.) or string at (eval 16063) line 1.
Invalid conversion in sprintf: "% M" at ./FHEM/33_readingsGroup.pm line 458.

Und zwar, wenn ich die readingsGroup zum Thermostat anzeigen lasse, dachte ich zumindest.
Da ist für die Anzeige folgendes definiert:
valueFormat {"Ist-Temp. ".ReadingsVal($DEVICE,"measured-temp","???")." °C Soll-Temp. ".ReadingsVal($DEVICE,"desired-temp","???")."°C  Regler ".ReadingsVal($DEVICE,"actuator","???")." Modus ".ReadingsVal($DEVICE,"mode","???").((ReadingsVal($DEVICE,"warnings","???") eq "none")?" - ":(" Warnung: ".ReadingsVal($DEVICE,"warnings","???")))." Zeit ".KonvertiereZeit(ReadingsTimestamp($DEVICE,"state","???"))}

Da hatte ich für die Anzeige/Ausblenden von warnings als Rückgabewert ursprünglich ein "undef()", habe das aber durch ein " - " ersetzt.
Aber die Fehlermeldung kommt immer noch, wenn ich die Seite "Haus" aufrufe. Da gibt es noch andere readingsGroups, da werden aber die Anzeigen komplett ausgeblendet, wenn der Wert nicht interessant ist, also ein "undef" über valueFormat an die readingsGroup geliefert. Die Anzeige auf der Seite schaut auch völlig korekt aus.
Wie könnte ich da den Fehler finden? Die Meldungen kommen halt jetzt ständig im log. Waren aber vorgestern noch nicht drin (vor dem letzten update) und neu ist nur die readingsGroup für die Thermostate.

Gruß

Elektrolurch
 

configDB und Windows befreite Zone!