Hallo,
vielen Dank für das neue Modul. Ich kann es (wahrscheinlich) gut gebrauchen.
Eine Anmerkung, eine Frage und eine Anregung dazu:
Wenn ich es richtig verstehe muss das Modul am Ende der "fhem.cfg" aufgerufen werden. Zumindest bei mir erkennt es sonst andere Module, die vor (!) ihm selber in der fhem.cfg stehen nicht. Ist das so richtig?
Mit dem Attribut "mapping" kann man die Namen der Readings ändern. Dies funktioniert bei mir aber nur wenn ich aus der Liste ausschließlich den Reading Namen (z.B. temperature) und nicht zusätzlich den Modulnamen verwende (z.B. Max_Ht_01.temperature). Wenn ich nun mehrere "temperature" Einträge von verschiedenen Modulen habe (also im Beispiel mehrere Max Heizungs Thermostate) wie kann ich diesen jeweils einen eigenen Namen (z.B. Bad, Wohnzimmer etc.) zuweisen? Oder mahe ich hier noch etwas falsch?
Abschließend noch die Anregung (ich hoffe es wird nicht unverschämt :-) Wenn man Zugriff auf die Alias Namen der einzelnen Module hätte und diese statt des Modul Namens in der Liste anzeigen könnte, hätte ich gleich die richtige Benennung (Bad, etc.) ohne mapping verwenden zu müssen.
Nachmals vielen Dank für das neue Modul!
VG Niko
- die interne device liste wird immer aktualisiert wenn devices hinzugefügt oder gelöscht werden. scheinbar funktioniert das nicht richtig wärend des startens von fhem. ich baue die liste jetzt auch ein mal auf wenn ich das INITIALIZED von fhem bekomme. damit solle es keine rolle mehr spielen wo die readingsGroup innerhalb von fhem.pl steht.
- das schaue mir mir an das sollte eigentlich gehen.
- der vorschlag mit dem alias ist gut.
gruss
andre
ich habe das mapping eben gerade mit <device>.<reading> probiert und es geht ohne probleme.
bitte poste mal ein list deiner readingsGroup und des devices bei dem es nicht geht.
gruss
andre
ab morgen wird der alias statt dem namen in der default ansicht verwendet.
zusätzlich zu %DEVICE und %READING kann dann auch %ALIAS im mapping verwendet werden.
das mapping kann ausser dem perl ausdruck das einen hash zurück liefert jetzt auch ein einfacher string sein z.b.:attr <device> mapping %READING im %ALIAS
gruss
andre
Hallo Andre,
vielen Dank für Deine schnelle Reaktion und die konstruktive Antwort! Ich bin immer wieder begeistert wie schnell und gut einem hier geholfen wird.
Betreff des mapping habe ich mir das Beispiel aus der Commandref zum Vorbild genommen: attr temperatures mapping {temperature => "%DEVICE Temperatur"}. Ich habe dies dann mit dem Modul Sysstat probiert. Dieses heißt bei mir "RPiDB_Util_SysStat00" und das reading "temperature". In readingsGroup erscheint also "RPiDB_Util_SysStat00:temperature". Ich habe dann eingegeben:
{RPiDB_Util_SysStat00:temperature => "temp"}
Aufgrund Deines Posts habe ich es dann nochmal mit einem"." versucht, also:
{RPiDB_Util_SysStat00.temperature => "temp"}
Ebenfalls keine Änderung.
(siehe Anhang / see attachement)
Ein {temperature => "temp"} funktioniert hingegen einwandfrei.
Da es aber bei Dir funktioniert sitzt des Problem wohl vor (meiner) Tastatur, sprich ich mache etwas bei dem mapping falsch.
Abermals vielen Dank im Voraus und ich freue mich schon auf die Version mit dem "alias".
VG Niko
der punkt ist richtig.
sobald es den punkt im key gibt musst du ihn in anführungszeichen setzen. also { "<device>.<reading>" => ...
gruss
andre
Danke, das war es.
VG Niko
Zitat von: Niko schrieb am So, 25 August 2013 18:43Danke, das war es.
VG Niko
Hallo,
habe auch von weblink auf readingsGroup umgestellt. War ja nicht so schwer.
Aber jetzt wollte ich verschidene _Variablen mischen, unter anderem auch zwei dummys. Die haben ja keine readings, sondern nur "state". Ich bekomme auch die mit in die Anzeige, aber das mapping für das Label klappt irgendwie nicht. Was mache ich da falsch?
Code
define ts2 readingsGroup ts:voltage ts:energy ts:power EnergieGestern:state Energie24:state
attr ts2 alias Teststeckdose
attr ts2 group Geräte
attr ts2 mapping {{ 'ts.voltage' => 'Spannung: ', 'ts.energy' => 'Energieverbrauch gesamt: ', 'ts.power' => 'Aktueller Verbrauch: ', 'EnergieGestern.*' => 'Verbrauch bis Gestern: ', 'Energie24.*' => 'Verbrauch in den letzten 24 h: '}}
EnergieGestern und Energie24 sind die zwei dummys, die einmal in der Nacht berechnet werden. Könnte man zwar ev. auch mit "userattr"s machen, aber da sind die 24 h nach meinem jetzigen Kenntnisstand ein Problem.
In den mappings habe ich auch schon Energie24.* und nur Energie24 usw. aber der Ersatztext für die zwei dummys will einfach nicht erscheinen....
Elektrolurch
mach doch aus dein 'EnergieGestern.*' ein 'EnergieGestern.state' usw.
du kannst bei den keys keine regex verwenden. es muss wirklich zwei mal <device>.state heißen. oder ein mal allgemein 'state => "%DEVICE state"'
gruss
andre
Hallo Andre,
klappt. Danke.
Aber jetzt habe ich einige Fragen:
1. Mit dem Modul kann man zeilenweise "Name" -> Wert darstellen. Wäre es denkbar, dass man auch mehrere Werte in einer Zeile darstellen kann, wie z.B.:
"Temperatur" "Min" "Max".
Man bräuchte dann noch einen optionalen Parameter für die Zahl der Spalten.
2. Kann man den darzustellenden Wert ev. über ein Perl-Skript modifizieren? Zum Beispiel würde ich gerne das Datum (yyyy-mm-dd_hh:mm:ss) über eine Perlfunktion in "lesbare" Form umwandeln.
3. Gibt es ein Modul / Möglichkeit mehrere Datensätze gesammelt auszugeben? Beispiel: Derzeit zeige ich aus dem FB-Call-Monitor den letzten entgangenen Telefonanruf und den letzten geführten Anruf an. Würde aber gerne die letzten (max.) 5 Anrufe anzeigen lassen. Sammeln könnte man die ja über ein notify. Und dann müsste man die etwas umständlich nacheinander in fünf dummys sammeln und ein Rollieren der Daten noch programmieren. Andere Anwendung wäre die Anzeige der letzten gemessenen Temperaturwerte. Das würde doch für ein Modul sprechen. Ev. gibt es das ja schon und der Name ist nicht so sprechend, dass ich es gefunden hätte.
4. Habe das ganze Forum durchsucht. Dabei auch Deine Diskussion mit Rudolf über webCMD und defstateIcons mit großem Interesse gelesen. Für webCmd gibt es ja nur den Slider und den time-Picker. Ich vermisse ein einfaches Textfeld.
Da gibt es genügend Anwendungsfälle: Ich habe für alle Steuerparameter eine zentrale Seite "Automation", da stelle ich über setlist eine ganze Menge Parameter ein. Das geht aber nur bedingt. Zum Beispiel möchte ich die Telefonnumer (für Alarmierungen) oder die Mailadresse frei definieren können und nicht im Perl-Code festlegen. Dazu ein dummy nutzen. Aber wie bekomme ich ein Textfeld an das dummy?
Danke.
Elektrolurch
1. würde ich anders lösen und nicht die readingsGroup erweitern: bau dir im original device mit stateFormat eine anzeige die min max und current enthält oder ein userReading das das ein neues reading mit allen dreien enthält. bei letzterem kannst du es dann auch wieder über eine readingsGroup aus mehreren devices gemeinsam darstellen.
2. das steht noch auf der todo liste. valueFormat als %xx string um die werte z.b. einheitlich zu runden und als {} perl ausdruck um mehr zu machen.
3. auch das würde ich im original device mit notifys oder userReading machen. nur um ein paar werte aufzuheben braucht es keinen dummy. viel besser finde ich es die werte als zusätzliches readings im oringinal device zu speichern. das neue setreading sollte hier hilfreich sein.
4. wenn ich das richtig sehe gibt es noch kein text feld für die webCmds. aufgrund der diskussion gibt es aber inzwischen eine methode die möglichen widgets selbst zu erweitern. ich habe das schon verwendet um dein colorpicker für die farbigen lampen dort einzubauen. wie das geht ist im wiki und unter hier beschrieben:Link (http://forum.fhem.de/index.php?topic=12460.msg74762#msg74762). du findest noch en paar stellen wenn du nach webCmdFn suchst.
die idee hinter der readingGroup ist das es sich nur um die reine anzeige handelt. intern werden keinerlei readings gespeichert und nichts dupliziert. d.h. alles was formatierung angeht ist dort richtig aufgehoben. alles was speichern angeht gehört ins original device.
gruss
andre
ich habe eben eine neue version eingecheckt. damit gibt es ein neues attribut valueFormat. das ist auf drei unterschiedliche arten verwendbar:attr temperatures valueFormat %.1f °C
attr temperatures valueFormat { temperature => "%.1f °C", humidity => "%.1f%" }
attr temperatures valueFormat { ($READING eq 'temperature')?"%.1f °C":undef }
gruss
andre
edit: valueFormat geht jetzt auch bei longpoll updates.
Hallo Andre,
danke für die Tipps.
Die Erweiterung mit der Formatierung und Perl-Code werde ich mal in den nächsten Tagen ausprobieren.
Allerdings würde ich die Möglichkeit, eine mehrspaltige Ausgabe in readingsGroup dochz favorisieren, da ansonsten doch immer ein ziemliches Herumgefrickel notwendig ist.
Zitat:
1. würde ich anders lösen und nicht die readingsGroup erweitern: bau dir im original device mit stateFormat eine anzeige die min max und current enthält oder ein userReading das das ein neues reading mit allen dreien enthält. bei letzterem kannst du es dann auch wieder über eine readingsGroup aus mehreren devices gemeinsam darstellen.
Könnte aber dann auch mit dem "normalen Ablauf" (schalten auf on oder off, stateformat) in Konflikt kommen.
Ich habe zwar noch kein Modul programmiert, aber ich denke, dass das "Umbrechen" in eine neue Zeile bzgl. der Werteliste auf Grund eines optionalen Parameters "Nr. Coloumns") nicht so schwierig sein sollte zu implementieren.
Für viele Anwendungen, und das hatte ich ja schon geschrieben, liegt es nahe, bei einer tabellarischen Darstellung von mehreren Devices auch pro Device in einer Zeile gleich mehrere Werte anzuzeigen. Wie Du schon sagtest: readingsGroup ist für die Ausgabeformattierung und Anzeige gedacht. Ich denke, das wäre wirklich eine sinnvolle Erweiterung.
Gruß
Elektrolurch
du hast den zweiten vorschlag übersehen. nimm ein userReading im original device. das ist genau der mechanismus den du möchtest um mehrere readings zu einem zusammen zu fassen. angesehen davon das es doof wäre etwas was es schon gibt noch mal zu bauen wäre es in der readings group viel unhandlicher zu bedienen. es über irgendwelche umbrüche oder spalten zu machen kommt auch mit diversen interen annahmen des dreispaltigen aufbaus der tabellen in die quere und longpoll geht auch nicht mehr bzw. wird sehr ineffizient.
versuch es mal mit einem userReading im original device. es ist wirklich einfach und wird genau das tun was du willst.
gruss
andre
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
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
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
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
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
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
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
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
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
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...
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
Spitze!!!!
Besser geht kaum noch.
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 :) ?
@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
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
Aua, ich hoffe ich verstehe "refresh" jetzt falsch.
Beispiel:
Ich habe auf der Logger Seite 3 Max Heizkörper Thermostate. Diese übermitteln ca. alle 5 Minuten ihre Temperatur per Fhem2Fhem.
Auf der Server Seite habe ich einen Raum mit einer readingsGroup, welche die Temperaturen der 3 Thermostate enthält. Wenn ich diesen Raum jetzt aufrufe (Thermostate haben seit Start von FHEM schon einmal die Temperaturen übermittelt), sehe ich dann die Temperatur?
Falls ja: Jetzt mache ich eine "refresh" der Seite (F5). Was sehe ich dann?
Wenn ich beim Aufruf des Raums die (letzten) Temperaturen nicht sehe macht das wenig Sinn. Dann spar Dir besser die Arbeit (deshalb hatte ich zu Anfang geschrieben "wenn dies überhaupt möglich ist").
Gehe jetzt kurz zum Abendessen. So wie ich dich heute erlebt habe ist die Antwort danach schon da :-)
VG Niko
das dachte ich mir schon :)
wie gesagt die readingsGroup speichert keine werte. nicht kurzfristig und noch nicht mal temporär. d.h. nach dem refresh wären die werte leer bis wieder passende events kommen. sorry.
wenn du dir irgendetwas 'merken' willst brauchst du noch andere module dazu. z.b. ein dummy den du mit den werten in einem notify befüllst. ein dummy würde auch für mehrere räume reichen.
gruss
andre
wenn die readingsGroup das erste mal angezeigt wird werden die aktuellen readings aus dem device genommen. wenn sich am device die readings ändern wird die readingsGroup automatisch aktualisiert.
@niko: das ist sozusagen genau der grund warum es bei fhem2fhem nicht geht. ich habe kein device aus dem ich die aktuellen werte lesen kann. ausser du legst sie z.b. in einem dummy ab.
Hallo Andre,
dann spar Dir bitte die Mühe betreff Fhem2Fhem.
Ich werde trotzdem bei mir auf readingsGroup umstellen. Ich werde einfach meine Routine so umstellen, dass Sie alles "mitschreibt" (was über Fhem2Fhem kommt) und nicht mehr modulweise arbeitet. Aus diesen Werten werde ich dann verschiedene readingsGroup füttern.
Was für mich noch hilfreich wäre, ist ein "stateFormat" für readingsGroup. Ich nutze dies um bei meinen "attr group" ein Art Überschrift zu erzeugen. Wenn dies aber nicht zu Deinem Modul passt oder viel Arbeit bedeutet, kein Problem, ich kann dies auch anders lösen.
Nachmals vielen Dank für die beiden Änderungen heute und Deine Bereitschaft neue Ideen aufzunehmen!
Viele Grüße Niko
Hallo,
Die Sachen mit dem StateFormat möchte ich zurücknehmen. Bei genauerem Nachdenken passt dies überhaupt nicht zu dem Modul. Sorry dafür.
Ich habe jetzt einige Sachen bei mir auf readingsGroup umgestellt, als Anzeige für die Familie. Von dieser kam noch der Wunsch nach einer Sortierung. Ich habe im original Beitrag zu readingsFormat hierzu etwas gefunden, dies ist aber anscheinend nicht weiter verfolgt worden. Es wäre schön wenn dies noch möglich wäre. Aber wie bei meinen anderen Bitten auch; wenn dies nicht möglich ist oder zuviel Arbeit macht oder auch nur nicht gewünscht ist: kein Problem und vollstes Verständnis.
VG Niko
wegen dem stateFormat wollte sowieso fragen was du genau gemeint hast :)
die zeilen werden in der reihenfolge dargestellt wie du sie in der definition angegeben hast. wenn du eine bestimmte sortierung möchtest musst du es in genau dieser reihenfolge in der definition angeben.
gruss
andre
Alles klar, verstanden
... und abermals danke
VG Niko
Hallo Andre,
danke für den Tipp. Kann es aber sein, dass man nur ein userReadings pro Device definieren kann?
Ich habe da versucht, an den FBCallMonitor zwei userReadings, eins für entgangene Anrufe, eins für eingehende Anrufe anzuhängen und es sieht so aus, dass die Definition des zweiten das erste überschreibt. Auch an der grafischen Oberfläche lässt sich ja eigentlich nur ein userReading definieren, da der Name des Readings ja im Textfeld zusammen mit der Perlanweisung steht.
Wenn dem so ist, dann müssten doch dummys her...
Elektrolurch
pro device gibt es natürlich nur ein userReadings attribut. darin kannst du aber mit komma getrennt beliebig viele readings erzeugen.
für den fall der call history ist aber vermutlich eh ein notify besser. da kannst du auch mit readingsBulkUpdate oder setreading auch mehrere neue readings anlegen.
du brauchst ganz sicher keine dummys dafür.
gruss
andre
Hallo Andre,
Habe nun schon fleißig Dein Modul eingesetzt.
Aber mir ist etwas aufgefallen:
a) Wenn ich noheading 1 setze, erscheint der Name mit Link des ReadingsGroup nicht. So sollte es ja sein.
b) Setze ich nun das Attribut Group, so erscheint der Gruppennamen UND der Name des ReadingsGroup, d.h. noheading 1 wird nun ignoriert.
Auf der Übersichtseite möchte ich aber bei den Objekten möglichst keine Links haben und mit dem Group-Attribut die Darstellungsreiehenfolge setzen.
Ist das ein Fehler, dass das Group-Attribut das noheading 1 wieder überschreibt?
Und noch eine Frage (ich habe es noch nicht ausprobiert): Wie kann ich die Ausgabe eines Readings in ReadingsGroup in Abhängigkeit von seinem Wert unterdrücken?
Mir würde da jetzt nur einfallen "nostate = 1", "notime = 1" setzen und über ValueFormat und einer entsprechenden if-Abfrage ein "undef" zurückliefern.
Was macht ReadingsGroup mit einem "undef"? Oder Gibt es noch einen andere Möglichkeit?
Gruß
Elektrolurch
das noheading wird nicht ignoriert. die überschrift ist ja weg.
das was du links von der reading group siehst wird von fhem web erzeugt. darauf habe ich keinen einfluss. du kannst aber den alias auf  setzen. das ist ein leerzeichen ohne breite. das ist fast so gut wie nichts.
die komplette zeile kannst du nicht unterdrücken. den wert selber kannst du ausblenden in dem valueFormat einen leeren string zurück liefert wenn deine bedingung erfüllt ist.
gruss
andre
Hallo Andre,
dann verstehe ich nicht ganz, was Heading ist? Wie setze ich denn eine zusätzliche Überschriftszeile? In der Kommanref steht dazu nichts. Ich dachte, es wäre der Name des Objektes, der über der Tabelle steht.
Ich habe da Deinen alias String gesetzt und bekomme jetzt ein "&" angezeigt, also noch nicht ganz leer...
Gruß
Elektrolurch (so heißt ein Stück von Kraftwerk, auf einer ihrer ersten LPs. Fäng so an: Volt, Watt, Amper, Strom.. ohne mich.... -> Rest weiß ich nicht mehr)
Hallo Andre,
jetzt habe ich das mal mit dem Leerstring in ValueFormat ausprobiert:
Code:
{Value("$DEVICE") eq "present" ? KonvertiereZeit (ReadingsTimestamp("$DEVICE", "state", "???")):""}
Aber die $DEVICES, die noch auf "absent" stehen, werden trotzdem angezeigt, obwohl da ja ein Leerstring zurückgeliefert wird.
Anwesend
#xFEFF;
Familie
17:23:56 06.09.2013
Harald
absent
Marina
17:40:28 06.09.2013
Gruß
Elektrolurch
schau dir das bild unten an:
- testGruppe ist der name der gruppe. steht über dem äußeren rahmen
- readgings Group über dem inneren rahmen -> das ist der name der readingsGroup den ich selber anzeige. den kannst du mit noheading ausblenden
- readingsGroup links neben dem inneren rahmen -> das ist der name der readingsGroup den fhemweb selber noch mal anzeigt. gegen den kann ich nichts machen.
das mit dem  geht vermutlich nicht wenn fhem es aus dem config file liest weil # das kommentar zeichen ist. nimm statdessen
mach mal klammern um den test: {(Value("$DEVICE") eq "present") ? KonvertiereZeit (ReadingsTimestamp("$DEVICE", "state", "???")):""}
(siehe Anhang / see attachement)
Hallo Andre,
da kommt ja etwas lustiges Heraus:
Wohl für einen Normalsehenden kein sichtbares Zeichen, aber der Screenreader liest mir nun statt des Textes den dort stehenden Link vor auf das Objekt "Anwesenheit", also der ReadingsGroup. Na ja, dass ist der Unterschied zwischen Optik und Akustik....
Optisch weg, aber doch noch da...
Ok. die Klammern habe ich gesetzt, aber die "absent" stehen immer noch da.
ReadingsGroup liest doch jedesmal, wenn es aufgerufen wird, die Werte und wird nicht von den Readings getriggert. Die ändern sich ja im Augenblick nicht...
Oder mache ich da einen Denkfehler?
Hinweis: Leider nützen mir die Screenshots nichts, die müsste ich erst OCRlern.
Elektrolurch
der link ist ja noch da. nur durch ein leerzeichen ersetzt. die akustik ist also genauer.
du musst im valueFormat ein leerzeichen zurückgeben statt dem leeren string. statt Value($DEVICE) kannst du direkt $VALUE verwenden.
es wird auch von den readings getriggert.
sorry wegen dem screenshot. aber ich habe immerhin nicht drin rum gemalt sondern versucht zu beschreiben.
gruss
andre
Hallo Andre,
1. ok $VALUE vers Value("... hatte ich da verdrängt, gleich abgeändert und geht auch.
2. jetzt gebe ich statt "" ein " " (Leerzeichen an Readings Group zurück. Ergebnis: statt den Status mit "absent" auszugeben, wie vorher, kommt nun ein Leerzeichen.
Familie
17:23:56 06.09.2013
Harald
Marina
17:40:28 06.09.2013
-> Harald ist absent
(Natürlich in Tabelle! Aber ich kann mal mit Screenshots nichts anfangen).
Also, ein " " oder ein "" als Rückgabewert unterdrückt die Ausgabe des einzelnen Wertes wohl nicht?
->Creenshots: kein Problem - PCs kann ich auch so bedienen. Lerne seit ein paar Jahren um und Elektrik im Haus kann man ja auch umbauen. Da muss nur jemand sagen, wo Blau und Grün/gelb ist. Der Rest ist ja unkritisch :-)
Habe jetzt die gesamte Beleuchtung mit ca. 20 Dosen umgebaut....
Gruß
Elektrolurch
du kannst nur den wert an sich unterdrücken. nicht die ganze zeile weg lassen. dafür müßte ich mir noch was überlegen. ich weiss aber nicht ob es überhaupt richtig funktionieren kann weil es ja auch den update gibt der durch aktualisierte readings getriggert wird und da kann ich nicht einfach zeilen entfernen oder einfügen.
gruss
andre
Ok. So siehts ja auch aus. Anliegend war: Dinge nicht darzustellen, die nicht relevant sind. (:_@ GUI Optimierung). Ich hatte da mal was mit notify und deleteattr room ausprobiert -> führt aber nach einem Neustart von fhem auch nicht zu konsistenten Ergebnissen.
Wenn man so ein "undef" oder ein "" als Unterdrücker der Ausgabezeile verwenden könnte... wäre aus meiner Sicht schon sinnvoll.
Elektrolurch
P.S.: Heia angesagt.
ab morgen kannst du undef zurück geben. dann wird die zeile ausgelassen. das funktioniert aber nur beim initialen aufbau. nicht beim nachträglichen update durch longpoll. ausgelassene zeilen werden auch per longpoll nicht wieder eingefügt.
gruss
andre
Hallo Andre,
ich hoffe es ist nicht unverschämt, aber zwei Bitten hätte ich noch:
Einerseits die Verwendung von Perl Expressions nicht nur bei nameStyle und valueStyle sondern auch bei timestampStyle. Beim Timestamp würde ich gern in Abhängigkeit vom Reading mal nur den Tag, mal nur die Zeit, mal nur volle Stunden etc. darstellen. Grund dafür sind zeitliche Max/Min Werte also z.B. stärkste Stunde / schlechtester Tag.
Andererseits sind die Readings, wie in Fhem üblich verlinkt. Gerade "readingsGroup" bietet sich meiner Meinung nach aber für abgespeckt Versionen von Fhem an bei denen die User nichts verstellen können (z.B. meine Familie/Kinder :-) Durch die Links kommen die Anwender dann aber doch wieder an Stellen an denen ich sie nicht haben möchte, und dies selbst dann wenn ich die entsprechenden Module vorher mit "hiddengroup/hiddenroom" versteckt habe. Hier würde ich mir eine Einstellmöglichkeit "Verlinkung an/aus" (also wir z.B. noheading) wünschen.
Auch wenn es mit meinen Wünschen nichts werden sollte, Dir auf jeden Fall vielen Dank für das gute Modul!
VG Niko
ab morgen kannst du mit dem attribut nolinks die links unterdrücken.
zu 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.
gruss
andre
Hallo Nico,
ich habe das über ValueFormat gelöst, da kannst Du zurückgeben, was Du möchtest. Das ist ja gerade die Stärke des Moduls.
Beispiel:
define Alarmmelder readingsGroup [EO]G[012]_Bewegungsmelder:Alarmzeit
attr Alarmmelder alias Alarmmelder
attr Alarmmelder group Alarmanlage
attr Alarmmelder mapping { 'Alarmzeit' => '%ALIAS'}
attr Alarmmelder noheading 1
attr Alarmmelder notime 1
attr Alarmmelder room Automation,Haus
attr Alarmmelder valueFormat { KonvertiereZeit($VALUE);;}
In dem Fall steht schon in $VALUE die Zeit. Geht aber auch mit ReadingTimeStamp(.."state"..=
Leider geht seit dem gestrigen Update aber das "mapping" von der ReadingsGroup nicht mehr. Da wird nun immer das Pärchen <device>:<Trigger> angezeigt. @Andre?
Am Freitag abend waren die alle noch ok, Samstags das Update eingespielt...
Gruß
Elektrolurch
das mapping habe ich gestern schon wieder repariert. wenn du heute ein update machst sollte wieder alles gehen.
gruss
andre
Hallo
@Andre: Danke für die Link Geschichte
@Elektrolurch: Wenn ich das richtig verstehe nehme ich dann einen, wie immer auch aufbereiteten Zeit-String einfach mit in das Value Feld. Danke für den Tipp, das ist natürlich auch eine Lösung. Wobei ich ein eigenes Feld für die Zeit aus optischen Gründen vorziehen würde.
Das mit dem Mapping geht inzwischen (bei mir) wieder. Habe heute gegen Mittag ein Update gefahren.
Viele Grüße
Niko
Super und DANKE. nokinks ist auch super!
Werde das morgen gleich noch setzen und mir überlegen, wo ich noch überall ReadingsGroup sinnvoll einsetzen könnte.
So langsam geht das coden richtig locker von der Hand. Da in meiner 99_myutils schon fast 700 Zeilen waren, habe ich die jetzt auf drei Dateien 99_myutilsxxx aufgeteilt. Offensichtlich werden alle 99_myutils.* automatisch geladen.
Frage: Muss man beim "update" Befehl eine Option setzen, damit fhem automatisch wieder startet oder hängt sich das auf, da im Hintergrund noch die pings vom PRESENCE - Modul laufen?
Die habe ich nämlich im Verdacht, dass sich fhem bei längeren Aktivitäten dann aufhängt.
Gruß
Elektrolurch
Hallo Nico,
ich fand das geradezu genial, mit dem Perlcode in ValueFormat kannst Du ja jetzt beliebige Variablen mischen.
Habe gestern begonnen, über den FB_CallMonitor die entgangenen Anrufe zu sammeln und die letzten fünf rollierenden in eine ReadingsGroup zu packen.
Bin mitten drin, da ja auch noch zu berücksichtigen ist, dass mehrere Anrufegleichzeitig eingehen können.... tricky... krieg ich aber schon hin. Und dann geht das über ValueFormat so aus:
08.09.2013 0123456 (Mustermann, Heinrich) entgangen bzw. Dauer: 0:30
Gruß
Elektrolurch
Hallo
Ich möchte mit readingsGroup die Batterien meiner Max Komponenten kontrollieren.
Hierzu habe ich
define Batterie readingsGroup .*:battery
attr Batterie room Log
angelegt. Jetzt bekomme ich es aber nicht hin einen Notify auf die readingsGroup anzulegen das mir eine Mail Morgens schickt wenn der Batterie zustand low ist.
Mein Versuch, erstmal nur gegen einen Dummy geht nicht
define Status_Batterie notify (BM_Kiosk_1:battery.*) { if ("%EVTPART1" eq "ok") {fhem('set BatterieLED on');}else { if ("%EVTPART1" eq "low") { fhem('set BatterieLED off'); } } }
Kann mir vielleicht einer helfen?
Hallo,
ich denke, dass ReadingsGroup kein notify bedienen wird, da es rein zur Anzeige dient.
Was Du brauchst, wäre wohl ein struct über alle Batterien.
Mit dem Attribut "behavior" kannst Du dann steuern, dass wenn eine Batterie leer geht, das struct auch auf leer geht und auf dem struct kannst Du ein notify definieren.
Du findest hierzu eine Reihe von Eintragungen unter "Fensterkontakte gruppieren" oder "Anwesenheit überwachen".
Außerdem gibt es im wiki unter Codeschnipsel einen Batterieüberwacher.
Gruß
Elektrolurch
Danke. Dann versuche ich das mal....
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
Hallo justme1968
Kannst du mir vielleicht sagen wie ich das notify an das readingsgroup hänge?
Danke
genau so wie an jedes andere device.
define <my_notify> notify <readingsGroup name>[:regex] ...
gruss
andre
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
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
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
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
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
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
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
hast du auch wirklich die neueste version aus dem update von heute ?
gruss
andre
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
sagen wir mal es geht noch nich. zumindest über das icon wird es vermutlich demnächst gehen.
gruss
andre
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
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
mach mal bitte ein screen shot wie die readingsGroup auschaut wenn sie angezeigt wird.
gruss
andre
anbei eine neue version der readingsGroup zum testen:
es gibt ein neues attribut valueIcon. damit kann der value eines readings auf ein icon gemappt werden das dann statt des texts angezeigt wird.
jeder reading wert wird auf ein gleichnamiges icon gemapped:attr <device> valueIcon $VALUE
nur state wird als icon dargestellt. alle anderen readings bleiben wie sie sind:attr <device> valueIcon {state => '%VALUE'}
es wird für state das jeweilige devStateIcon des devices angezeigt. inklusive anklickbarkeit:attr <device> valueIcon {state => '%devStateIcon'}
gruss
andre
und noch eine erweiterung:
die readings die angezeigt werden sollen können alternativ auch mit komma getrennt werden. dann werden mehrere readings auf einer einzigen zeile angezeigt.
hier ein beispiel das die verbrauchswerte aller PCA301 steckdosen in einer übersicht anzeigt. werte über 100 watt werden rot eingefärbt. die icons sind anklickbar:
define Verbrauch readingsGroup TYPE=PCA301:state,power,consumption
attr Verbrauch mapping %Alias
attr Verbrauch nameStyle style="font-weight:bold"
attr Verbrauch style style="font-size:20px"
attr Verbrauch valueFormat {power => "%.1f W", consumption => "%.2f kWh"}
attr Verbrauch valueIcon { state => '%devStateIcon' }
attr Verbrauch valueStyle {($READING eq "power" && $VALUE > 100)?'style="color:red"':'style="color:green"'}
(siehe Anhang / see attachement)
@elektrolurch: ich muss noch einbauen das man auch hier readings komplett ausblenden kann.
gruss
andre
Hallo Andre,
absolute Klasse undgleich auch mit einem hilfreichen Beispiel, dann tut man sich am Anfang etwas leichter. Dann kann ich ja meinen Code wieder umstellen....! Wenn jetzt mehrere Readings in einer Zeile gehen!!!!
Mal sehen, ob ich das in den nächsten Tagen hinbekomme.
Mir ist fhem wegen dem PRESENCE-Modul abgestüzt und danach kamen die Fehler wg. dem undefinierten Wert in readingsGroup nicht mehr wieder. Strange. Werde das noch beobachten.
Elektrolurch
Hallo Andre,
bin erst heute dazu gekommen, per update die neue Version von readingsGroup einzuspielen. Ergebnis:
Das Ausblenden von Werten über "valueFormat" per undef funktoniert nicht mehr.
Alle meine readingsGroup zeigen jetzt wieder alle Geräte an.
Bspw. die Definition von:
{($VALUE =~m/on.*/)?"ein seit ".KonvertiereZeit(ReadingsTimestamp("$DEVICE","state","???")):undef()}
Zeigt auch alle FS20 mit dem state "off" an, obwohl diese eigentlich per eventmapping auf /off:aus/ gesetzt wurden.
Was muss ich anpassen?
Gruß Elektrolurch
mein fehler.
du musst nichts anpassen. ab morgen sollte es wieder gehen.
gruss
andre
Hallo Andre,
mir ist da noch was aufgefallen:
Küche Lampe 2 über Arbeitsplatte
off
Alle Lampen sind da bei mir mit attr eventmap auf ein - aus gemappt.
Wird das eventmapping ev. von readingsGroup ignoriert?
Und vielleicht hast Du da noch einen Tip für mich:
Ich habe fhts im Einsatz. Standardmässig zeigen die zwei Werte an:
einmal die aktuelle Temperatur und zweitens die "desired-temp" als Klappmenü.
Über das stateFormat habe ich die Anzeige der aktuellen Temperatur verändert und "eingedeutscht".
Mir gelingt es jedoch nicht, "desired-temp" durch "Soll-Temp." zu ersetzen, obwohl ich /desired-temp:Soll-Temp/ im eventmap definiert habe. Was muss ich tun, damit das an der GUI als Soll.-Temp. + Klappmenü angezeigt wird?
Gruß
Elektrolurch
readingsGroup arbeitet mit readings. eventmap mappt zwischen state und STATE. d.h. es wird nicht ignoriert sondern eventmap betrifft eine ganz andere stelle mit der readingsGroup nichts zu tun hat. wenn du die werte der dargestellten readings ändern möchtest musst du das über valueFormat selber machen.
ich kann aber mal schauen ob mal vielleicht ein zusätzliches value mapping einbaut.
wie oben gesagt: eventMap mappt nur zwischen state (dem reading state) und STATE (das was im web frontend als status oder icon angezeigt wird. du kannst die namen der readings die ein device verwendet nicht ändern. wenn es nur um einen read only wert geht kannt du ein zusätzliches userReading anlegen das dann deinen deutschen namen hat. wenn der wert auch setzbar sein soll kannst du da vielleicht ein notify dran hängen und dann den eigentilichen wert ändern. ist zwar etwas von hinten durchs knie müsste aber gehen.
gruss
andre
Hallo Andre,
Zitat:
du kannst die namen der readings die ein device verwendet nicht ändern. wenn es nur um einen read only wert geht kannt du ein zusätzliches userReading anlegen das dann deinen deutschen namen hat. wenn der wert auch setzbar sein soll kannst du da vielleicht ein notify dran hängen und dann den eigentilichen wert ändern. ist zwar etwas von hinten durchs knie müsste aber gehen.
..bringt leider auch nichts, da das Klappmenü mit "desired-temp" nicht auszublenden ist, dann hätte ich zwei Menüs. Ich habe sowas schon befürchtet, da ich irgendwo on-the-fly einen Beitrag gesehen hatte, wo jemand das fht-Modul "einfranzösischen" wollte. Ein echter Patriot.
Werde da wohl weiterhin mit "desired-temp" auf der Gui leben müssen. Nicht so schön...
Elektrolurch
Hallo Andre,
nach dem Update ist alles wieder ok. Jetzt habe ich mal valuIcon ausprobiert. Klappt. Aber wie das immer so ist... der Appetit kommt beim Essen.
Ich habe mir eine Gruppe gebaut, die alle Lampen anzeigt, die noch eingeschaltet sind. Dabei habe ich den Zeitpunkt des Einschaltens in das valueFormat (einschl. udef für die ausgeschalteten Lampen) gepackt.
Leider hat man jetzt nur die Alternative zwischen Ikon oder Text. Mir würde es gefallen, wenn das so möglich wäre:
Icon (mit Link zum Schalten) und dahinter den Text, bzw. (eingesch. seit...=.
Könnte man da nicht ev. noch ein Steuerparameter beim valueIcon (z.B. "+" einbauen, wenn das Reading auch ausgegeben werden soll?
Wäre super und danke.
Du hast da wirklich ein tolles Modul gebaut...
Elektrolurch
Guten Tag,
über readingsGroup habe ich mich richtig gefreut - hatte schon immer Bedarf danach, konnte ihn aber nicht so richtig formulieren. Ich benutze es jetzt gleich mehrfach. Dabei fiel mir auf, dass ich bei einem Start von FHEM regelmäßig dieses beiden Fehlerzeilen erhalte:
# ^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HER E $/ at ./FHEM/33_readingsGroup.pm line 104, <$fh> line 392.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at ./FHEM/33_readingsGroup.pm line 104.
Herzliche Grüße
Chritian
du hast irgendwo in deinen readingsGroup definitionen zwei mit falscher regex. vor dem * fehlt da ziemlich sicher ein punkt.
zeig doch mal die definitionen.
gruss
andre
Hallo Andre,
du hattest natürlich recht, da habe ich nicht ordentlich gearbeitet und hätte vor meinen Posting ersteinmal selbst meine Definitionen prüfen sollen.
wieder was gelernt - weiter gutes Gelingen mit Deinem Modul...
Grüße
Christian
Hallo Andre,
jetzt habe ich doch so ziemlich alles in den Übersichten ausgereizt, was man mit Deinem Modul so machen kann.
Dabei bin ich auf zwei Grenzen gestoßen:
1. Hat man mehrere Readings in einer Zeile (Superfeature) und verwendet für Valueformat die Form reading => Ausdruck, so kann Ausdruck wohl nur ein sprinft - Formatierungsausdruck sein. Perl-Code (z.B. zum Umrechnung der Zeitinformation) geht wohl da leider nicht.
2. Ich bin bei den Übersichten auf folgendes, kleines Problem gestoßen:
Ziel war es jene Lampen/Stromverbraucher anzuzeigen, die noch eingeschaltet sind. Dabei sollte ein Ikon für das Schalten vorhanden sein und die Uhrzeit, seit dem der Verbraucher auf "ein" ging.
attr Alle_Lampen_im_Haus valueFormat {($VALUE =~m/on.*/)?"</td><td>ein seit ".KonvertiereZeit(ReadingsTimestamp("$DEVICE","state","???")):undef()}
Wenn ich jetzt das Ikon dazu nehme mit
ValueIkon {state => '%devStateIcon'}
Dann wird der Text (so stehts ja auch in der CommandRef) nicht mehr angezeigt.
Da es bei den zusätzlichen Informationen zumeist um Zeitangaben handelt, die formatiert werden müssten, wäre nun die Lösung:
timestampFormat analog zu valueFormat, wenn notime = 0 gesetzt ist.
Gerade in Übersichten sind ja die zusätzlichen Zeitinformationen von großem Interesse.
Ließe sich so eine Erweiterung noch mit einbringen?
Gruß
Elektrolurch
ich bin gerade dabei eine erweiterung einzubauen bei der man mit '<Text>' einen festen text und mit '<{Perl-Code}>' eine beliebige perl routine in die komma liste mit einbauen kann. auch an einem formatTimestamp bastle ich garade noch.
damit lässt sich im prinzip beides erschlagen. ich habe aber noch probleme den timestamp im longpoll auch zu aktualisieren.
vielleicht kann ich das auch noch mit spaltenüberschriften und einrücken verbinden. ich bin noch am probieren...
gruss
andre
Hallo Elektrolurch,
bist du inzwischen mit den Anrufen über FB_CallMonitor und readingsGroup weitergekommen? Kannst du mir zeigen, wie du das realisiert hast?
Gruß
Luigi
Zitat von: Elektrolurch am 08 September 2013, 18:08:04
Hallo Nico,
ich fand das geradezu genial, mit dem Perlcode in ValueFormat kannst Du ja jetzt beliebige Variablen mischen.
Habe gestern begonnen, über den FB_CallMonitor die entgangenen Anrufe zu sammeln und die letzten fünf rollierenden in eine ReadingsGroup zu packen.
Bin mitten drin, da ja auch noch zu berücksichtigen ist, dass mehrere Anrufegleichzeitig eingehen können.... tricky... krieg ich aber schon hin. Und dann geht das über ValueFormat so aus:
08.09.2013 0123456 (Mustermann, Heinrich) entgangen bzw. Dauer: 0:30
Gruß
Elektrolurch
Hallo Luigi,
ja, ist fertig und funktioniert mit "allen Schikanen", so z.B. wird auch auf dem FS20 SIG2 für bekannte Anrufer gemeldet, wer da anruft.
Die readingsGroup sieht so aus:
define meineFB FB_CALLMONITOR 192.168.1.254
attr meineFB local-area-code 089
attr meineFB reverse-search all
attr meineFB userReadings eing0 eing1 eing2 eing3 eing4 A0 A1 A2 A3 A4 B0 B1 B2 B3 B4 C0 C1 C2 C3 C4 D0 D1 D2 D3 D4 E0 E1 E2 E3 E4
attr meineFB verbose 0
define FileLog_meineFB FileLog ./log/meineFB-%Y.log meineFB
attr FileLog_meineFB logtype text
define Call_Notify notify meineFB:.* { \
TelefonMonitor ($EVENT);; \
}
# end Call_Notify
################################
# Neue Version:
define Anrufliste readingsGroup meineFB:A0,B0,C0,D0,E0 meineFB:A1,B1,C1,D1,E1 meineFB:A2,B2,C2,D2,E2 meineFB:A3,B3,C3,D3,E3 meineFB:A4,B4,C4,D4,E4
attr Anrufliste mapping {'meineFB.A0' => '1.', 'meineFB.A1' => '2.', 'meineFB.A2' => '3.', 'meineFB.A3' => '4.', 'meineFB.A4' => '5.'}
attr Anrufliste noheading 0
attr Anrufliste nolinks 1
attr Anrufliste nostate 1
attr Anrufliste notime 1
attr Anrufliste room Telefon
Alles, was mit dem Telefon zu tun hat, habe ich in ein eigenes Modul gesteckt.
siehe Anhang.
Gruß
Elektrolurch
Hallo,
ich denke, du solltest deine persönlichen Daten aus der angehängten Datei entfernen ;).
Gruss
Hans
Hallo Elektrolurch,
vielen Dank. Mir fehlt jetzt noch die Funktion EventZeit().
Gruß
Luigi
Hallo,
ganz trivial: Die Zeit wird nicht in der fhem-Reihenfolge, sondern für "human Interface" dargestellt.
sub EventZeit()
{
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
return sprintf ("%2d:%02d:%02d %2d.%02d.%4d", $hour,$min,$sec,$mday,($mon+1),($year+1900));
} # end sub EventZeit
###################
Ansonsten macht der Telefonmonitor max. 6 Einträge für eingehende und ausgehende Anrufe. (-> und <-). Geht der eingehnde Anruf auf den AB, dann steht stattdessen in der ersten Spalte "AB". Das ganze ist für eine Mehrnummern-Anlage ausgelegt, d.h. während ein Gespräch geführt wird, kann ein zweiters, drittes usw. auch ein- oder ausgehen und die Zuordnung sollte stimmen. Daher der etwas komplizierte Automat, der die CallID (intern von Fritzbox bereitgestellt) auswertet und erst nach Abschluß des Gespräches die Daten in die readingsGroup schreibt (mit Namen und Nummern und Gesprächsdauer).
Zusätzlich kann man über den Hook eine Telefonaktion ausführen lassen... z.B. auf Basis einer bestimmten Anrufernummer und der gewählten Zielnummer etwas tun.
Die alten Anrufe werden immer um eins nach hinten geschoben, so dass die aktuellen immer oben stehen.
Gruß
Elektrolurch
Hallo Andre,
Du hast mal in einem Beitrag geschrieben, dass man auch ein notify an eine readingsGroup hängen kann.
Ich möchte den Inhalt einer Liste löschen und habe dazu
attr Meine_rg webCmd Alle löschen
definiert.
Unter der ReadingsGroup erscheint nun auch der link "Alle löschen".
Dann ein notify dazu:
define Meine_rg_notify notify Meine_rg:.* {if ($EVENT eq "Alle löschen") {LöscheAlarmmelder();;}}
Klick ich auf "Alle löschen", so erhalte ich: no SET implented
Hm.. Ist schon klar, dasses kein set für readingsGroup gibt, aber wie muss ich die webCmd hinschreiben, damit ich das Event "Alle löschen" bekomme?
Noch eine Frage:
Ich hatte mir ja mal gewünscht, dass man das defStateIcon und einen Text (z.B. mit einer mod. Zeitangabe -> Licht ein seit xx.yy.zz..) realisieren kann.
Leider geht ja beides gleichzeitig momentan nicht. Sobald das defStateIcon definiert ist, wird valueFormat ignoriert.
Alternativ ging noch ein ValueTimeStampFormat, wenn man notime 0 setzt und das zusammen mit dem Ikon erscheinen würde.
Gruß
Elektrolurch
so wie du das möchtest geht das nicht. ein webCmd führt das kommando in dem device aus bei dem es gesetzt ist. readingsGroup hat keine set kommandos.
als workaround fällt mir nur ein ein dummy mit passendem devStateIcon zu definieren und von diesem dann state als icon mit in die readings group rein zu nehmen. wenn es kein passendes icon gibt wird statt dessen der text von state angezeigt. der müsste auch klickbar sein.
das mit dem icon und state gleichzeitig hab ich noch im auge und auch das mit dem timestampFormat. es funktioniert nur noch nicht ganz wie ich es möchte.
in der version die eingecheckt ist gibt es aber schon die möglichkeit in der liste der readings ein <TEXT> anzugeben. der text zwischen den <> wird 1:1 angezeigt. du kannst zwischen die <> auch einen perl ausdruck in {} setzen. der kennt $DEVICE und muss einen string zurück geben. das ganze funktioniert aber nur für mehrere readings in einer zeile. versuch mal ob dir das hilft. also etwas in der art:define rg readingsGroup xyz:state,<{ReadingsTimestamp($DEVICE, "state", 0)}>
gruss
andre
Hallo Andre,
wozu kann man dann bei einer readingsGroup das Attribut webCmd nutzen?
Dann habe ich nicht verstanden, was im notify, welches an einer rg hängt, erscheint?
Das webCmd erscheint ja unter der Liste, damit so einige Funktionen auszulösen, die das Erscheinungsbild der Liste ändern, wäre eine feine Sache.
Und wenn man die rg um ein "dummy-set" erweitert, dass nur die webCmds in die Event-Kette von fhem leitet.....?
Gruß
Elektrolurch
da attribut webCmd ist global und das gibt es für jedes device. ich kann es nicht für die readingsGroup abschalten.
ich denke mal drüber nach...
gruss
andre
weiß ich, dass das Global ist...
Da ich jetzt mit zei dummys, dynamisch gesetzten webCmds und zwei an die dummys angehängten notifys mir eine Programmierung aller meiner fht-Thermostate bzg. Tag- und Nachtemperatur und den Schaltzeiten für die einzelnen Tage / Werktage / Wochenende gebaut habe, bin ich so richtig auf den Geschmack gekommen. Wenn sowas auch für die readingsGoup funktionieren würde....
..Du hattest damit im übrigen Recht, wenn man einmal mit fhem und perl anfängt... :-)
Gruß
Elektrolurch
ich denke über das wenCmd nach... was ich nicht verstehe ist wo du es siehst. eigentlich sollte es noch nicht mal zu sehen sein. ist es bei mir auch nicht.
hast du mal über den workaround mit dem dumm nachgedacht?
gruss
andre
Hallo Andre,
bei mir sieht das so aus (untere Zeile der rg):
2. OG Bewegungsmelder 17:40:29 9.11.2013
Alle löschen
"Alle löschen" ist anklickbar und dann kommt die Meldung mit dem nicht implementierten set für rg.
Mit dem Ikon ginge wahrscheinlich schon, aber mit dem anklickbaren Links unterhalb der Tabelle fände ich das schon von der Optik schöner. Ich denke, wenn man da mehrere Knöpfe hinmachen wollte, wäre das mit den webCmds auch einfacher.
Mit dem Text <> in den REadings-Definitionen werde ich mal ausprobieren. Mal sehen, ob ich in der Tabelle über "Alle eingeschalteten Lampen" nicht nur das Ikon zum Ausschalten, sondern auch die Zeitangabe, seit wann die Lampe / das Gerät an ist, hinbekomme.
Gruß
Elektrolurch
das ist komisch... ich sehe ein gesetes webCmd nicht. ist das der screenreader der das macht oder ist es auch wirklich zu sehen ?
die zeit müsstest du mit etwas wie dem beispiel oben bekommen.
wenn du ein dumm verwendest für dessen state es kein icon gibt sollte der text anklickbar sein. auch ohne bildchen.
gruss
andre
Hallo Andre,
ich hänge mal einen Screenshot an. Ich dachte, der Link "Alle löschen" wäre unterhalb der rg, er steht aber wohl rechts daneben. Das ist natürlich nicht schön, aber wenn man mit dem Mauszeiger drüber fährt, dann kommt auch das Handsymbol für den Link. Du müsstest das also anklicken können. Wenn man mit der Pfeiltaste "dwon" durch die rg navigiert, dass geht dann zeilenweise von Spalte zu Spalte, dann steht der Link direkt hinter dem letzten Element der Tabelle.
Gruß
Elektrolurch
jetzt sehe ich den grund...
du hast die readingsGroup in eine gruppe gesteckt. dann taucht webCmd plötzlich auf. das macht fhem aber automatisch. da habe ich keinen einfluss drauf. selbst wenn ich die sets z.b. mit einem setList wie bei einem dummy einbaue würde die liste immer noch rechts auftauchen und nicht darunter.
den vorschlag mit dem dummy von oben kannst du so formatieren das er als letztes in der gruppe erscheint und vermutlich auch farblich so absetzen das es besser ausschaut.
gruss
andre
ich denke ich habe eine idee wie das ohne dummy geht. aber du musst dich bis heute abend gedulden.
gruss
andre
ich habe eben ein kleines update eingecheckt. das sollte morgen im update kommen. neu ist das <STRING> und <{perl}> jetzt nicht nur in er liste der readings erlaubt ist sondern auch statt einem device auftauchen kann. damit ist es möglich z.b. zwischenüberschriften einzubauen.
wenn du das hier in deine 99_myUtils.pm einbaust:sub
appendTrigger($$$)
{
my ($name,$trigger,$label) = @_;
my $ret .= "</table></td></tr>";
my $link = "cmd=trigger $name $trigger";
my $txt = "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$label</a>";
$ret .= "<td colspan=\"99\"><div style=\"cursor:pointer;color:#888888;text-align:right\">$txt</div></td>";
return ($ret,0);
}
und ans ende deiner reading group das hier als letztes 'device' anhängst:
<{appendTrigger($DEVICE,"clear","Alle löschen")}>
bekommst du einen klickbaren link der ein event clear auf die readingsGroup triggert das du mit einem notify abfangen kannst.
ein komplettes beispiel (mit screenshot) findet sich hier: http://forum.fhem.de/index.php/topic,15190.msg106766.html#msg106766 (http://forum.fhem.de/index.php/topic,15190.msg106766.html#msg106766)
gruss
andre
Hallo Andre,
habe gerade aktualisiert und probiere das mit dem Text hinter dem defStateIcon in der rg aus:
define Alle_Lampen_im_Haus readingsGroup [A-Z][E-z][012]*_.*[LlFf](ampe|luter).*
attr Alle_Lampen_im_Haus alias Alle eingeschalteten Lampen
attr Alle_Lampen_im_Haus eventMap /on:ein/off:aus/
attr Alle_Lampen_im_Haus group Beleuchtung
attr Alle_Lampen_im_Haus mapping {state => '%ROOM %ALIAS'}
attr Alle_Lampen_im_Haus noheading 1
attr Alle_Lampen_im_Haus nolinks 1
attr Alle_Lampen_im_Haus notime 1
attr Alle_Lampen_im_Haus room Haus
attr Alle_Lampen_im_Haus valueFormat {($VALUE =~m/on.*/)?"</td><td>ein seit ".KonvertiereZeit(ReadingsTimestamp("$DEVICE","state","???")):undef()}
attr Alle_Lampen_im_Haus valueIcon {state => '%devStateIcon'}
Derzeit bekomme ich nur das Ikon, zum Ausschalten. Möchte aber noch die Zeit einblenden, seit dem die Lampe eingeschaltet ist, wie in "ValueFormat definiert ist.
Wenn ich an die rg Definition [A-Z].,<ein Text> anhänge, bekomme ich gar keine Lampen mehr angezeigt. Statt "," ein " " zeigt den 'Text unterhalb aller eingeschalteten Lampen an.
Da stehe ich irgendwie auf dem Schlauch, in welcher Form ich die Liste der readings erweitern muss, damit ich den Ausdruck:
<{"</td><td>ein seit ".KonvertiereZeit(ReadingsTimestamp("$DEVICE","state","???"));}>
noch angezeigt bekomme. mit ",<Text> wird die Ausgabe ja unterdrückt, da da irgendwas nicht matched.????
Gruß
Elektrolurch
also...
der <...> teil gehört in die liste der readings. in der definition der readingsGroup gibst du ja die devices und die readings durch doppelpunkt getrennt an. wenn du die readings weg lässt sind es alle. deine lampen haben nur state von daher hat es bis jetzt gepasst wenn du nichts angegeben hast. jetzt möchtest du aber zwei dinge anzeigen. state und zeit also musst du beides auch hinschreiben:define Alle_Lampen_im_Haus readingsGroup [A-Z][E-z][012]*_.*[LlFf](ampe|luter).*:state,<{anSeit($DEVICE)}>
der <...> teil ist leider was die syntax angeht etwas eingeschränkt. es dürfen z.b keine leerzeichen vorkommen. deshalb ist es am besten alles in eine kleine routine in 99_myUtils.pm zu stecken und diese aufzurufen:sub
anSeit($)
{
my ($DEVICE) = @_;
my $state = ReadingsVal($DEVICE,"state","" );
return undef if( !$state || $state eq "off" );
my $time = ReadingsTimestamp($DEVICE,"state","");
return "an seit ". KonvertiereZeit($time);
}
value format kann jetz ganz einfach werden:attr valueFormat {($VALUE=~/on/)?"":undef}
wichtig: das unterdrücken der ausgabe für den <...> ausdruck hab ich eben erst eingecheckt. das geht erst morgen im update.
das mapping kannst du etwas vereinfachen:attr mapping %ROOM %ALIAS
die <...> werden nicht wirklich unterdrückt. der webbrowser blendet sie nur aus weil er denkt es wäre ein html kommando. das ist aber nicht wirklich ein problem. beim klick auf DEF sollten sie wieder zu sehen sein.
gruss
andre
Hallo Andre,
wenn mans dann liest, ist es ja logisch. Danke. Eingebaut, funktioniert und sieht "echt kompetent" aus.
Gruß
Elektrolurch
das freut mich.
du hast inzwischen so viel mit der readingGroup gemacht ich glaube es gibt vielleicht noch dein ein oder anderen der sich deine ideen gerne mal anschauen würde :)
hast du nicht zeit und lust mal ein bisschen was zu beschreiben. vielleicht sogar im wiki...
gruss
andre
Hallo Andre,
köntte ich schon machen, weiß aber nicht, wie ich einen Zugriff auf das Wiki bekomme. Außerdem müsste ich mich erst einmal schlau machen, wie das mit der Formatierung (Kapitel usw.) funktioniert.
Da hätte ich noch zwei bis drei Themen:
a) Einen FS SIG2 intelligent ansteuern, ohne dass man 100 FHEM - Objekte dafür anlegen muss;
b) Meine Anruflistenverwaltung, die auch readingsGroup verwendet und dynamisch rolliert;
c) FHTs intelligent ansteuern, mit verschiedenen Heizungsprofilen für Urlaub, Party, Gast oder Abwesenheit einzelner Personen. Da ich 10 Stück davon im Betrieb habe, habe ich um nicht auf Funkprobleme zu laufen, einen Softpuffer mit Verifikation implementiert. Außerdem nutze ich die Fensterkontakte auch noch für eine Alarmanlage und für einen Schutz vor zu starker Raumtemperaturabsenkung bei versehentlichem Dauerlüften.
Zeit müsste man nur haben.
Gruß
Elektrolurch
P.S.: Noch Mals danke für die nette Unterstützung.
Hallo Elektrolurch,
bei den Fragen zum wiki kann ich Dir weiterhelfen:
- wie Du den Zugriff bekommst, ist hier beschrieben: http://www.fhemwiki.de/wiki/Benutzer:Soulman
- den Einstieg in die (Mit-)Arbeit im wiki kannst Du hier finden: http://www.fhemwiki.de/wiki/FHEMWiki:%C3%9Cber_FHEMWiki#Beispiel:_Neuer_Artikel (... aber bitte auch die restlichen Hinweise auf der Seite beachten). Das Beispiel ist zwar auf ein Hardware-Device zugeschnitten, aber ich denke, das Prinzip lässt sich leicht auf Deinen Bedarf zuschneiden.
Wenn Dir das lieber ist, kann ich auch das Grundgerüst für den neuen Artikel schon mal für Dich anlegen - ich weiß nämlich nicht, wie es mit der Nutzbarkeit der Beispiele auf einem Screenreader aussieht. Im Zweifel melde Dich einfach, bei der Formatierung kann ich Dich auf jeden Fall unterstützen.
Gruß, Peter
Hallo Andre,
ist leider mit der Lösch-Funktion nach einem Neustart von fhem ein Problem aufgetreten:
2013.11.16 20:31:31 1: reload: Error:Modul 99_myUtils deactivated:
Global symbol "$FW_ME" requires explicit package name at ./FHEM/99_myUtils.pm line 139, <$fh> line 6.
Global symbol "$FW_subdir" requires explicit package name at ./FHEM/99_myUtils.pm line 139, <$fh> line 6.
2013.11.16 20:31:33 3: telnetPort: port 7072 opened
Ist die auskommentierte Zeile im Trigger:
sub
appendTrigger($$$)
{
my ($name,$trigger,$label) = @_;
my $ret .= "</table></td></tr>";
my $link = "cmd=trigger $name $trigger";
# my $txt = "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$label</a>";
$ret .= "<td colspan=\"99\"><div style=\"cursor:pointer;color:#888888;text-align:right\">$txt</div></td>";
return ($ret,0);
} # end appendTrigger
Weiß allerdings nicht, woher die beiden Variablen stammen. Guter Rat...?
(aktueller Update - Stand von heute und erst nach shutdown restart, ein reload vom Modul hatte ich heute schon mal gemacht, wg. anderer Änderungen).
Zweites Thema (ich war fleißig)
rollierende Listen auf Basis von readingsGroup:
Beispiel:
an "meineFB" habe ich userReadings A0...E4 gehängt, also A - E Spalten und 0 - 4 Zeilen.
Will ich nun einen neuen Eintrag in A0 - E0 schreiben, so schiebe ich den Rest nach hinten:
my $meineFB = $defs{"meineFB"};
...
# shiften der alten Inhalte
my $tt;
readingsBeginUpdate($meineFB);
for ($i=4;$i>0; $i--)
{
foreach $j ('A'..'E')
{
# $defs{"meineFB"}{READINGS}{$j.($i-1)}{VAL};
$tt = ReadingsVal("meineFB",$j.($i-1),"-");
readingsBulkUpdate($meineFB,$j.$i,$tt);
} # end j
} # end i
$E[$callID] = $callDuration;
readingsBulkUpdate($meineFB,"A0",$A[$callID]);
readingsBulkUpdate($meineFB,"B0",$B[$callID]);
readingsBulkUpdate($meineFB,"C0",$C[$callID]);
readingsBulkUpdate($meineFB,"D0",$D[$callID]);
readingsBulkUpdate($meineFB,"E0",$E[$callID]);
readingsEndUpdate($meineFB, 1);
Was jetzt da etwas störend ist, dass jedes schreiben der Readings wohl trotz des bulk-Updates ein Event generiert, also 25 Stück. Man merkt das auch an der Performance....
Kann man die Werte nicht direkt schreiben:
$defs{"meineFB"}{READINGS}{$j.($i-1)}{VAL} = ...;
Irgendwie klappte das nicht mit der doppelten Indirektion, d.h. in einer Variable steht der Name einer Variable....
Zumindest könnte ich mir beim Shiften so die unnötigen Events ersparen, eine FB ist ja keine Cray.
Gruß
Elektrolurch
das mit den fehlenden variablen war mein fehler. ich hab dir zwei zeilen zu wenig kopiert. das hier:use vars qw($FW_ME);
use vars qw($FW_subdir);
muss noch vor das 'sub appendTrigger($$$)'
du kannst das triggern der events steuern in dem du bei readingsBulkUpdate einen zusätzlichen vierten parameter angibst. 0 -> keine events, 1 -> triggert events.
aber achtung: wenn keine events getriggert werden bekommt die readingsGroup natürlich auch nicht mit das sich etwas geändert hat und longpoll funktioniert auch nicht.
gruss
andre
Hallo Andre,
wie granular ist denn das graf. Update in der readingsGroup implementiert? Je Wert oder reicht es auch aus, wenn ich am Schluß nur für die neuen Werte in der ersten Zeile das Update per Event veranlasse?
Da es sich ja um eine Übersichtsliste handelt, wäre es ja wünschenswert nach erfolgtem Abschluß der Änderungen (shiften der Einträge) die ganze Gruppe neu malen zu lassen, als jedes Element einzeln.
Die Events, für die userReadings beim Shiften sind jedenfalls im log der Telefonliste, falls man das wirklich doch mal zum Nachsehen (Fehleranalyse) ziemlich nervi.
Daher war ja die Idee, direkt die Hashes zu schreiben.
Mal ncohnoch ein anderes Thema: Setze mal in einer readingsGroup einzlene Werte, die dargestellt werden sollen, auf ein "-". Das scheint fhem überhaupt nicht zu mögen. Ich habe daher jetzt an allen Stellen, wo ich keinen defnierten Wert habe, "n/a" rein geschrieben.... sieht so aus, als wären die fhem-Meldungen aus der fhem.pl über undefinierte Werte im Hash jetzt weg...
Muss das aber noch mal genauer recherchieren.
Gruß
Elektrolurch
jeder wert wird einzeln behaldelt. die readingsGroup kennt nur readings. sonst nichts. wenn du etwas gruppenweise brauchst muss schon das reading die ganze gruppe sein.
wenn du es weniger granular haben möchtest hilft es vielleicht die userReadings schon so aufzubereiten das immer ein komplette zeile existiert.
oder du baust die ganze gruppe in valueFormat komplett zusammen.
ich hab eben mal etwas mit '-' probiert und kein problem gehabt. ich schau es mir aber noch mal an.
gruss
andre
Hallo Andre,
ich hatte in valueFormat die Abrage auf "-" -> undef, um die Ausgabe zu unterdrücken. Hintergurnd: mit setreadings Name reading value, kann man nur Werte setzen, aber nicht auf "leer" zurücksetzen. Wenn ich also einen Alarmmelder zurücksetzen wollte, damit er in der Liste nicht mehr auftaucht, habe ich ihn mit setreading auf "-" gesetzt.
Da aber nicht das Setzen, sondern erst die Darstellung wohl über
Use of uninitialized value $fn in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 984.
Argument "-" isn't numeric in numeric ge (>=) at (eval 88861) line 1.
Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 351.
Use of uninitialized value $fn in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 984.
zu Problemen führt, konnte ich zunächst die Ursache nicht feststellen.
Dann habe ich gestern noch einige Thermostate in Betrieb genommen. Da sind die readings auch erst einmal mit "-" belegt, bis der alle eingesammelt hat, da häuften sich die Meldungen. Die sind alle über eine rg dargestellt.
Da konnte man auch die Fehlermeldung im log sehen:
Das "-" kein numerischer Vergleich in 33-readingsGroup.pm ist....
Jetzt habe ich alle "Default"-Besetzungen, und deren Abfragen, auf "n/a" gesetzt, und sihe da, das log ist bzgl. der km-langen Fehlermeldungen leer.
Ich vermute fast, das perl aus dem "-" irgendwas mit "-0" und daraus ein undef generiert.
Bei jedem Aufruf der zentralen Webseite hatte ich jede Menge Warnungen im log, (km), die scheinen nun weg zu sein.
Also: Ein "-" ist wohl gefährlich".
Möglicherweise ist dies auch ein perl-Spezifika, bei mir ist dies die Version auf der FB, Du verwendest ev. auf dem RP eine andere...?
Gruß
Elektrolurch
das valueFormat wird tatsächlich als format string in einem sprintf verwendet. ich fange den fehler ab. dann sollte keine meldenug mehr auftauchen.
gruss
andre
Hallo Andre,
jetzt sind auch die Meldungen von fhem.pl weniger geworden. Für den Rest muss ich noch mal Ursachenforschung betreiben. Gibt's da in perl die Möglichkeit eines trace-backs?
Eine andere Sache, ist strange und ich komm da nicht weiter.
Die Gruppe "Aller eingeschalteten Lampen im Haus" funktioniert mit anklickbaren Ikon je Zeile und der Zeitangabe, dank Deiner freundlichen Unterstützung.
Die gleiche Gruppe, für "Alle eingeschalteten Geräte" zeigt nichst an. Nimmt man das valueFormat ganz raus, so werden alle Geräte eingeschaltet, aber es fehlt die Zeitangabe.
Einziger Unterschied: Die Lampen sind einzeilig über regex definiert, die Geräte mehrzeilig:
Ich sehe da partout keinen Unterschied, zumal ich die Gruppendefinition kopiert habe und nur den Namen ausgetauscht habe:
define Alle_Lampen_im_Haus readingsGroup [A-Z][E-z][012]*_.*[LlFf](ampe|luter).*:state,<{anSeit($DEVICE)}>
attr Alle_Lampen_im_Haus alias Alle eingeschalteten Lampen
attr Alle_Lampen_im_Haus eventMap /on:ein/off:aus/
attr Alle_Lampen_im_Haus group Beleuchtung
attr Alle_Lampen_im_Haus mapping %ROOM %ALIAS
attr Alle_Lampen_im_Haus noheading 1
attr Alle_Lampen_im_Haus nolinks 1
attr Alle_Lampen_im_Haus notime 1
attr Alle_Lampen_im_Haus room Haus
attr Alle_Lampen_im_Haus valueFormat {($VALUE=~/on/)?"":undef}
attr Alle_Lampen_im_Haus valueIcon {state => '%devStateIcon'}
define Alle_Geraete_im_Haus readingsGroup SonosBridge:state,<{anSeit($DEVICE)}> Ku_Squeezebox:state,<{anSeit($DEVICE)}> [MW]z_Media:state,<{anSeit($DEVICE)}> Sa_IR_strahler:state,<{anSeit($DEVICE)}> Sa_Sitzbank:state,<{anSeit($DEVICE)}>
attr Alle_Geraete_im_Haus alias Alle eingeschalteten Geräte
attr Alle_Geraete_im_Haus eventMap /on:ein/off:aus/
attr Alle_Geraete_im_Haus group Geräte
attr Alle_Geraete_im_Haus mapping %ROOM %ALIAS
attr Alle_Geraete_im_Haus noheading 1
attr Alle_Geraete_im_Haus nolinks 1
attr Alle_Geraete_im_Haus notime 1
attr Alle_Geraete_im_Haus room Haus
attr Alle_Geraete_im_Haus valueFormat {($VALUE=~/on/)?"":undef}
attr Alle_Geraete_im_Haus valueIcon {state => '%devStateIcon'}
Eine Idee, woran es liegen könnte?
Gruß
Elektrolurch
auf die schnelle habe ich keine idee.
bitte ändere mal die zweite readingsGroup nacheinander so ab das immer nur eines der 5 geräte überwacht wird. geht es dann? wenn ja bei welchen?
gruss
andre
ps: eventMap ist bei der readingsGroup nicht nötig.
Darf ich meine Fehlermeldungen zu readingsGroup hier auch noch in die Runde werfen? Ich bekomme regelmäßig
Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 533.
Invalid conversion in sprintf: end of string at ./FHEM/33_readingsGroup.pm line 533.
Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 352, <FH> line 23075.
Invalid conversion in sprintf: end of string at ./FHEM/33_readingsGroup.pm line 352, <FH> line 23075.
Version: 33_readingsGroup.pm 4233 2013-11-16 22:00:07Z justme1968 $
Wenn die folgende readingsGroups auskommentiert ist, kommen die Meldungen nicht mehr:
#define TempHygro readingsGroup TYPE=CUL_WS.*:temperature,humidity,dewpoint
#attr TempHygro mapping %ALIAS
#attr TempHygro valueFormat { temperature => "%.1f°;C", humidity => "%.1f %", dewpoint => "%.1f°;C"}
Ist da irgendetwas offensichtlich falsch oder kann/muss ich noch mehr Informationen liefern?
Gruß, Peter
du muss das % das wirklich angezeigt werden soll verdoppeln.
gruss
andre
Zitat von: justme1968 am 20 November 2013, 21:35:18
du muss das % das wirklich angezeigt werden soll verdoppeln.
Blitzschnell und genial richtig. Danke Andre.
Ließe sich dieser Fehler irgendwie im readingsGroup abfangen? Könnte mir vorstellen, dass ich nicht der letzte bin, der da reinfällt.
Gruß, Peter
du bist auch nicht der erste.
das lässt sich nicht wirklich abfangen. zumindest habe ich keine idee die zuverlässig immer funktioniert und nicht zuviel overhead hat.
gruss
andre
Hallo Andre,
versuche das mit der "Geräteliste" einzukreisen, aber ist noch nicht schlüssig. Vielleicht hilft ja langsames Herantasten.
Ich habe jetzt mal folgendes gemacht:
Mit dem schönen Trigger für die rg, die Du gebaut hast, habe ich jetzt drei Knöpfe unter die rg gesetzt: Alle_anzeigen, nur eingeschaltete, nur ausgeschaltete.
Der Trigger modifiziert das valueFormat der rg.
1. Mein Screenreader sagt aber, das da steht: Alle anzeigen, eingeschaltete,ausgeschaltete,eingeschaltete,ausgeschaltete -> also 5 Knöpfe, statt drei. Definition:
define Alle_Geraete_im_Haus readingsGroup Sa_IR_strahler:state,<{anSeit($DEVICE)}> Sa_Sitzbank:state,<{anSeit($DEVICE)}> SonosBridge:state,<{anSeit($DEVICE)}> Ku_Squeezebox:state,<{anSeit($DEVICE)}> [MW]z_Media:state,<{anSeit($DEVICE)}> <{appendTrigger($DEVICE,"alle","Alle anzeigen");;}>,<{appendTrigger($DEVICE,"ein","eingeschaltete");;}>,<{appendTrigger($DEVICE,"aus","ausgeschaltete");;}>
Ok, wie ändern?
2. So sieht das notify aus:
sub ModifiziereAnzeige($$)
{
my ($liste,$event) = @_;
Log(3,"ModifiziereAnzeige: $liste $event");
if ($event eq "alle")
{
fhem("deleteattr $liste valueFormat");
} # if alle
elsif ($event eq "ein")
{
my $val = '{($VALUE=~/on/)?"":undef}';
fhem("attr $liste valueFormat $val");
} # if ein
elsif ($event eq "aus")
{
my $val = '{($VALUE=~/off/)?"":undef}';
fhem("attr $liste valueFormat $val");
} # if aus
} # end sub modifiziereAnzeige
(old-fashion -C-Style :-))
Das schaltet auch, aber in der Liste "der ausgeschalteten Geräte erscheint das "eingeschaltete Gerät ohne Namen, aber mit Zeitangabe.
Ich habe mal einen Screenshot angehängt.
Wenn ich aber nur die "eingeschalteten" mir anzeigen lasse, ist alles korrekt... grübel... (Wo ist da die Symetrie?)
Dann ist da noch was stranges: Ich schalte die Sa_Sitzbank ein (am Schalter) und sie heizt auf. fhem zeigt sie aber mit "off" im state an.
Dann setze ich per fhem die auf "ein2 -> STATE ß= on, sobald ich aber die Webseite aufrufe, geht der state wieder auf "off", obwohl physikalisch das Teil weiter heizt. Da hängt nur ein notify mit einem at dran, welches mir die Heizung nach 30 Minuten wieder ausschalten soll.
Funktechnisch ist das Teil gleich neben an. Möglicherweise habe ich durch diesen Effekt beim Testen der rg zwei überlagernde Effekte, die die Analyse erschweren.
Gruß
Elektrolurch
du machst ja sachen :)
ich schaue mir das heute abend mal in ruhe an. nur kurz eins vorweg um ganz sicher zu gehen: wenn du so das valueFormat änderst braucht es zur zeit auf jeden fall einen refresh der html seite. und du musst in deinem anSeit berücksichtigen auch hier undef zurück gegeben wird wenn du die zeit nicht anzeigen lassen willst. also für die liste der ausgeschalteten geräte bei allen geräten die an sind.
wenn ich so darüber nachdenke ist das vermutlich schon genau das problem: die anSeit funktion muss wissen welche liste gerade angezeigt wird damit sie je nach dem die passenden undef zurück liefern kann. da das bei dir dynamisch ist wäre mein vorschlag das du in anSeit den namen der readingGroup mit übergibst (erst mal einfach hartkodiert), das du
in ModifiziereAnzeige der readingsGroup je nach liste ein reading 'liste' verpasst und dieses dann in anSeit auswertest.
es ist auch besser wenn du appendTrigger nur ein mal anhängst und im appendTrigger den passenden html code für alle drei links erzeugst. ich denke das macht es übersichtlicher.
gruss
andre
Hallo Andre,
ja ja, drüber nachdenken und jetzt sieht es so aus:
sub
anSeit($$)
{
my ($DEVICE,$mode) = @_;
my $state = ReadingsVal($DEVICE,"state","" );
my $time = ReadingsTimestamp($DEVICE,"state","");
if ($mode eq "ein")
{
return undef if( !$state || $state eq "off" );
return "an seit ". KonvertiereZeit($time);
} # if mode ein
elsif ($mode eq "aus")
{
return undef if( !$state || $state =~m/on.*/ );
return "aus seit ". KonvertiereZeit($time);
} # end if modeaus
# mode alle
my $t = ($state =~m/on.*/)?"ein":"aus";
return " $t seit ". KonvertiereZeit($time);
} # end anseit
###############################
Für die rg muss man jetzt definieren:
[A-Z][a-z]_Lampen.*:state,<{anseit($DEVICE,ReadingsVal("der Name der rg","mode","alle"))}>
Und an die rg hängt man ein userReading "mode" an, welches über die drei knöpfe je nach gewünschter Darstellung auf "ein","aus" oder "alle" gesetzt wird.
Und schwup, die wupp, hat man dynamische Listen, die einem alles mögliche mit Zusatzangaben darstellen.
Ein Refresh ist im übrigen nicht notwendig, wenn ich valueFormat ändere, baut sich die Liste gleich wieder korrekt auf.
#gruß
'Elektrolurch
die idee ist so gut du solltest es wirklich im wiki dokumentieren :)
gruss
andre
Ja, so langsam komme ich auf den Trichter, habe 20 Jahre nicht mehr programmiert....
Habe da noch mit zwei dummys, die zwei Menüs und 6 Textfelder haben und vier Knöpfe (set,read) eine Steuerung für die Heizungsthermostate gebaut, da kann man alle per Wochentag, Werktag, Wochende oder auch einzeln die Schaltzeiten und Temperaturen setzen. Kompakter geht es nicht an einer Weboberfläche.
So Checkboxen oder Radiobuttons wären auch noch eine schöne Ergänzung für fhem.
Auch würde mich noch interessieren, ob es möglich ist über attr webCmd die Werte eines dummys über mehrere Zeilen darzustellen...
Elektrolurch
Hallo Andre,
ich habs gefunden. Vermutlich dürfte das auch den Meister König interessieren:
attr follow-on-timer 1
Wenn man dann das Gerät nur auf "on" setzt, geht es sofort auf "off". Das sollte eigentlich so nicht sein, so wie ich das verstehe, soll gemonitored werden, wenn man per timer das Gerät für eine Zeitdauer einschaltet.
Wer korrigiert den Fehler?
Hat bei mir eine Menge Verwirrung gestiftet...
Gruß
Elektrolurch
das follow-on-for timer ist für fs20 geräte die mit on-for-timer eingeschaltet werden. weil es in fs20 keinen rückkanal gibt würde sonst fhem das automatische aus nach einer weile nicht mit bekommen. mit dem follow-on-for-timer wird bei einem on-for-timer automatisch ein internes at erzeugt das dann zu dem zeitpunkt in dem das echte device automatisch abschaltet auch das fhem device auf off setzt.
hat du das problem auch ohne readingsGroup?
gruss
andre
Hallo Andre,
das war schon klar. Ich setze das Licht im Treppenahus mit der timer-Funktion von fs20 und habe dort das Attribut auch entsprechend gesetzt.
Für ein paar Geräte habe ich eine Überwachung laufen und wollte zuerst das "on" - Event mit einem "on-for-timer" ersetzen, mache es jetzt aber über ein at.
Bei dem device war aber das Attribut "follow-on-for-timer" = 1 gesetzt. Wird das Device aber nur mit "on" eingeschaltet, so setzt fhem es sofort wieder auf "off".
Da müsste eine Abfrage hinein, wie das Device eingeschaltet wird und ggfs bei nur "on" keinen timer starten, der gleich auf "off" geht.
Daher hatte ich in der rg die komischen Effekte, dass die Devices teilweise nicht angezeigt wurden. Nachdem ich da etwas herumprobiert habe, bin ich drauf gekommen, dass die Devices, bei den follow-on-for-timer gesetzt war, nicht korrekt angezeigt wurde.
Also, m.M.n. müsste da etwas in fhem.pl korrigiert werden.
Gruß
Elektrolurch
Koennt Ihr mir bitte das follow-on-for-timer Problem erklaeren, am liebsten mit einem einfachen Beispiel in einer neuen Diskussion? Das was ich mir als Problem zusammengereimt habe kann ich nicht nachvollziehen.
ich hab mal eine wiki seite angefangen. es wäre schön wenn dort eine sammlung von beispielen und screenshots entstehen würde...
http://www.fhemwiki.de/wiki/ReadingsGroup (http://www.fhemwiki.de/wiki/ReadingsGroup)
gruss
adnre
Hallo zusammen,
ich wollte mir eine Anrufliste der Fritzbox anzeigen lassen. Hab die von Elektrolurch bereitgestellte Datei mit den Beispielen eingetragen.
Es werden mir aber keine Anrufe angezeigt, nur die Dauer und entsprechende Pfeile für incoming oder outgoing.
Im Logfile finde ich folgende Einträge:
2013.12.02 22:02:36 1: CustomGetFileFromURL nginx: malformed or unsupported URL
2013.12.02 22:02:36 3: Call_Notify return value: Undefined subroutine &main::EventZeit called at /usr/local/FHEM/share/fhem/FHEM/99_myUtilsTelefon.pm line 200.
2013.12.02 22:02:46 3: Call_Notify return value: Undefined subroutine &main::sig2_break called at /usr/local/FHEM/share/fhem/FHEM/99_myUtilsTelefon.pm line 120.
syswrite() on closed filehandle GEN335 at /usr/local/FHEM/bin/fhem.pl line 522.
Hat jemand eine Idee, woran das liegen könnte ? Fehlt da irgendwas ?
Vielen Dank.
Gruß, bytebold
PS: Ich tu mich leider immer noch sehr schwer mit Programmierung in FHEM bzw. Perl.
Hallo,
zu den Meldungen:
2013.12.02 22:02:36 1: CustomGetFileFromURL nginx: malformed or unsupported URL
1. Check mal unter dem eingerichteten Device Deiner Fritzbox (Callmonitor) bei den Attributen, ob da reverse-lookup eingeschaltet ist. Ansonsten bekommst Du keine Namen angezeigt.
2. In dem Modul FBCallMonitor ist allerdings auch wohl noch ein Fehler, denn wenn der CallMonitor im Internet keine Telefonnummer rückwärts auflösen kann (liefert dann für den Namen "unknown"), habe ich diese Meldung auch im log-File.
2013.12.02 22:02:36 3: Call_Notify return value: Undefined subroutine &main::EventZeit called at /usr/local/FHEM/share/fhem/FHEM/99_myUtilsTelefon.pm line 200.
Sorry, die Routine "EventZeit" steht bei mir im 99_myUtils.pm - Modul. Hatte ich aber, so glaube ich, in dem Post, in dem ich das 99_myUtilsTelefon - Modul eingestellt habe, oder einen post später noch "nachgeschoben.
Die Routine liefert nur die aktuelle Zeit im Format hh:mm:ss dd.mm.yyyy zurück.
Habe leider die SW nicht hier...
2013.12.02 22:02:46 3: Call_Notify return value: Undefined subroutine &main::sig2_break called at /usr/local/FHEM/share/fhem/FHEM/99_myUtilsTelefon.pm line 120.
Die Routine "sig2" brauchst Du nicht, die kannst Du aus dem Code auskommentieren. Ich lasse mir den Anrufnamen auf einem FS20 SIG2 Signalgeber ausgeben.
syswrite() on closed filehandle GEN335 at /usr/local/FHEM/bin/fhem.pl line 522.
Da wurde etwas in der fhem.pl von Rudolf König umgestellt. Die Meldungen bbekomme ich sporadisch auch, ohne dass ich sie genau einem Ereignis zuordnen könnte.
Gruß
Elektrolurch
Hallo,
vielen Dank, klappt jetzt.
Ich habe nun eine 99_myUtils angelegt, in der sich EventZeit befindet, Sig2 habe ich auskommentiert.
Das Telefonbuch von der Fritzbox liegt nun auch auf der Synology Diskstation, muß ich aber noch testen.
Gruß, bytebold
Hallo Elektrolurch,
ich habe mir Dein Modul aus Post #91 runtergeladen und meine .cfg angepasst. Soweit funktioniert auch alles. Das Modul FB_CALLMONITOR schreibt die readings in die LogFile und schiebt die Einträge auch immer eins weiter. Im Event Monitor sieht es m.E. auch gut aus:
Events:
2013-12-04 22:58:32 FB_CALLMONITOR meineFB event: ring
2013-12-04 22:58:32 FB_CALLMONITOR meineFB external_number: 01609999999
2013-12-04 22:58:32 FB_CALLMONITOR meineFB external_name: Tommy
2013-12-04 22:58:32 FB_CALLMONITOR meineFB internal_number: 11111111
2013-12-04 22:58:32 FB_CALLMONITOR meineFB external_connection: SIP0
2013-12-04 22:58:32 FB_CALLMONITOR meineFB call_id: 0
2013-12-04 22:58:33 FB_CALLMONITOR meineFB event: disconnect
2013-12-04 22:58:33 FB_CALLMONITOR meineFB call_duration: 0
2013-12-04 22:58:33 FB_CALLMONITOR meineFB missed_call: 01609999999 (Tommy)
2013-12-04 22:58:33 FB_CALLMONITOR meineFB call_id: 0
2013-12-04 22:58:33 FB_CALLMONITOR meineFB A4: ->
2013-12-04 22:58:33 FB_CALLMONITOR meineFB B4: 20:11:02 3.12.2013
2013-12-04 22:58:33 FB_CALLMONITOR meineFB C4: Tommy
2013-12-04 22:58:33 FB_CALLMONITOR meineFB D4: 01609999999
2013-12-04 22:58:33 FB_CALLMONITOR meineFB E4: 0:00
2013-12-04 22:58:33 FB_CALLMONITOR meineFB A3: ->
2013-12-04 22:58:33 FB_CALLMONITOR meineFB B3: 20:41:35 3.12.2013
2013-12-04 22:58:33 FB_CALLMONITOR meineFB C3: Tommy
2013-12-04 22:58:33 FB_CALLMONITOR meineFB D3: 01609999999
2013-12-04 22:58:33 FB_CALLMONITOR meineFB E3: 0:00
2013-12-04 22:58:33 FB_CALLMONITOR meineFB A2: ->
2013-12-04 22:58:33 FB_CALLMONITOR meineFB B2: 20:42:21 3.12.2013
2013-12-04 22:58:33 FB_CALLMONITOR meineFB C2: Tommy
2013-12-04 22:58:33 FB_CALLMONITOR meineFB D2: 01609999999
2013-12-04 22:58:33 FB_CALLMONITOR meineFB E2: 0:00
2013-12-04 22:58:33 FB_CALLMONITOR meineFB A1: ->
2013-12-04 22:58:33 FB_CALLMONITOR meineFB B1: 21:20:57 3.12.2013
2013-12-04 22:58:33 FB_CALLMONITOR meineFB C1: Tommy
2013-12-04 22:58:33 FB_CALLMONITOR meineFB D1: 01609999999
2013-12-04 22:58:33 FB_CALLMONITOR meineFB E1: 0:00
2013-12-04 22:58:33 FB_CALLMONITOR meineFB A0: ->
2013-12-04 22:58:33 FB_CALLMONITOR meineFB B0: 22:58:32 4.12.2013
2013-12-04 22:58:33 FB_CALLMONITOR meineFB C0: Tommy
2013-12-04 22:58:33 FB_CALLMONITOR meineFB D0: 01609999999
2013-12-04 22:58:33 FB_CALLMONITOR meineFB E0: 0:00
Hier auch noch der Teil aus meiner config:
define meineFB FB_CALLMONITOR 192.168.178.1
attr meineFB local-area-code 0621
attr meineFB reverse-search all
attr meineFB room FritzBox
attr meineFB userReadings eing0 eing1 eing2 eing3 eing4 A0 A1 A2 A3 A4 B0 B1 B2 B3 B4 C0 C1 C2 C3 C4 D0 D1 D2 D3 D4 E0 E1 E2 E3 E4
attr meineFB verbose 0
define FileLog_meineFB FileLog ./log/meineFB-%Y.log meineFB
attr FileLog_meineFB logtype text
attr FileLog_meineFB room FritzBox
define Call_Notify notify meineFB:.* { \
TelefonMonitor ($EVENT);; \
}
attr Call_Notify room FritzBox
# end Call_Notify
################################
# Neue Version:
define Anrufliste readingsGroup meineFB:A0,B0,C0,D0,E0 meineFB:A1,B1,C1,D1,E1 meineFB:A2,B2,C2,D2,E2 meineFB:A3,B3,C3,D3,E3 meineFB:A4,B4,C4,D4,E4
attr Anrufliste fp_Info 625,299,5,
attr Anrufliste mapping {'meineFB.A0' => '1.', 'meineFB.A1' => '2.', 'meineFB.A2' => '3.', 'meineFB.A3' => '4.', 'meineFB.A4' => '5.'}
attr Anrufliste noheading 0
attr Anrufliste nolinks 0
attr Anrufliste nostate 0
attr Anrufliste notime 1
attr Anrufliste room FritzBox
Im LogFile gibt es keine Fehlermeldungen.
Ich bekomme es jetz aber nicht hin, das die Anrufliste die Einträge anzeigt, damit ich diese im FLOORPLAN anzeigen kann.
Als Anlage mal noch ein Screenshot der "leeren" Anrufliste.
Ich hoffe du kannst mir helfen.
Gruß Tommy
Hi Tommy,
hast du die Datei "99_myUtilsTelefon.pm" in FHEM angelegt und danach "shutdown restart" durchgeführt? Die Datei erstellst du am Besten, in dem du die "99_myUtils.pm" oder "99_Utils.pm" per "Save as" -> "99_myUtilsTelefon.pm" umkopierst. Dann öffnest du die neu erzeugte "99_myUtilsTelefon.pm", leerst sie und kopierst den Inhalt der Datei dort hinein. Speichern, Restart, fertig. ;)
Ich hab die Datei noch etwas zurechtgekürzt, damit im Log nicht so viel Verwirrendes erscheint und wieder hier angehängt.
Gruß
Frank
Hallo Frank,
leider habe ich auch ein paar probleme mit der "Anruferliste" :
1. longpoll funktioniert nicht, erst bei Browser refresh ist die Anrufliste vollständig.
2. bei eingehenden rückrufen gibt er den eigentlichen Anruf nochmal aus (zeit und datum identisch)
(//)
mfg
chicony
Hallo Frank,
danke für Deine Antwort.
Leider liegt es nicht daran. Ich habe nun zwar die 99_myUtilsTelefon noch mal neu mit deiner Version angelegt, aber das Ergebnis bleibt gleich.
Ich hätte gedacht, dass das Modul richtig läuft, da ja im Eventmonitor zu sehen ist, das die Einträge weiter geschoben werden, so wie es sein soll.
Mein Problem liegt denke ich eher in der Notify oder in der readingsGroup, denn wie im Anhang oben zu sehen, bleibt die angezeigte "Anrufliste" leer. Vielleicht könnt ihr noch mal über meine cfg und die rG schauen, ob ich hier etwas falsch eingetragen habe.
Vielen Dank für Eure Unterstützung.
Tommy
Sieht alles gut aus bei dir. Dieses kleine leere Feld hatte ich auch, als meine 99_myUtilsTelefon.pm noch nicht funktioniert hatte. Deshalb hab ich gleich darauf getippt. Vielleicht hilft dir ja ein Update? Hab meine RG gerade mal in einen FP gesetzt und geht. Nur ein Rahmen fehlt dann dort. Muss man ggf. noch etwas CSS dazustricken.
@chicony:
1.: Longpoll nutze ich leider nicht.
2.: Habe die Funktion auch erst heute eingebaut, werde ich mal beobachten. Ggf. teste und beschreibe mal genauer, damit es nachvollziehbar ist (Testablauf Schritt für Schritt und was dabei passiert).
Hallo Andre,
ich versuche mit den readingsGroup einiges in der Darstellung meiner FHEM Oberfläche zu verbessern.
Die derzeitigen Möglichkeiten sind schon super. :)
Ist es möglich den Style für die Zitat:
Zitat<Eine Überschrift>
aus dem letzten Update
zu verändern? z.B unterstrichen, kursiv oder andere Farbe?
Gruss
Billy
klar geht das :).
du musst nur die formatierung in eine kleine funktion auslagern. am besten steckst du die in 99_myUtils.pm. z.b. so:sub
rgText($)
{
my ($txt) = @_;
return "<div style='color:#00ff00;font-weight:bold;font-size:40px'>$txt</div>";
}
und dann mit <{rgText("Mein Text")}
einbinden.
gruss
andre
Hi Frank,
noch mal danke, aber FHEM ist aktuell. Anbei meine
Fhem info:
Release : 5.5
Branch : DEVELOPMENT
OS : linux
Arch : mips-linux
Perl : v5.12.2
Hat vielleicht noch jemand eine Idee?
Bin für jede Hilfe dankbar.
Tommy
noch ein beispiel für eine mögliche verwendung von <...> findest du hier: http://forum.fhem.de/index.php/topic,14425.msg106767/topicseen.html#msg106767 (http://forum.fhem.de/index.php/topic,14425.msg106767/topicseen.html#msg106767).
elektrolurch hat das inzwischen so weit ausgebaut das er mit den zusätzlichen links die readingsGroup steuert und z.b. umschalten kann was angezeigt wird.
gruss
andre
Danke Andre :)
Das mit der Formatierung der Überschrift klappt super. ;D
Zitatklar geht das :).
du musst nur die formatierung in eine kleine funktion auslagern. am besten steckst du die in 99_myUtils.pm. z.b. so:
Gruss
Billy
mach mach mal ein paar beispiele und screenshots fürs wiki :)
gruss
andre
Hallo Andre
Zitatmach mach mal ein paar beispiele und screenshots fürs wiki
Gerne, kannst du damit was anfangen?
Zugehöriger Eintrag in 99_myUtils.pm sieht so aus.
Zitatsub
rgText($)
{
my ($txt) = @_;
return "<div style='color:#00ff00;font-family:verdana, sans-serif;font-weight:bold;font-style:italic;font-size:30px'>$txt</div>";
#return "<div style='color:#00ff00;font-family:verdana, sans-serif;font-weight:bold;font-style:italic;font-size:30px'>$txt</div>";
}
Die Gesamtdefinition für das Beispiel Klima sieht dann aus wie in Anlage Reading Group Definition.png.
(//)
Gruss
Billy
Hallo zusammen,
ich schon wieder. Ich komme nicht wirklich weiter. Wenn ich die rg "Anrufliste" nur mit meineFB:xx definieren, also nur mit einem Teil aus den readings, sehe ich den Wert in der Anrufliste/ Floorplan. Sobald ich mehrere Werte definieren z.B: meineFB:A0,A1,A2 bleibt die "Anrufliste" leer.
Hatte das jemand schon mal ?
Danke
Tommy
Hallo Andre,
bin etwas weiter in das Formatierungsthema eingestiegen.
In Anlage mal ein Beispiel wo ich gerade stehe.
Mir war besonders wichtig für meine Smartphone Ansicht ein vernünftiges Ergebnis zu bekommen!
Dank deine Typs zum formatieren der Überschriften sieht das jetzt schon ganz ordentlich aus.
Ausserdem kann ja attr .... nameStyle style="font-weight:bold" auf style="color:blue;font-weight:bold" um die Farbe erweitert werden.
Ein Problem habe ich gefunden: Sobald ich attr valueIcon setze geht die übrige Formatierung im Smartphonemodus
WEBphone stylesheetPrefix smallscreen verloren.
Ist das ein Bug oder feature?
Hoffe die Anlage hilft zum Verständnis.
Gruss
Billy
zeig mir mal bitte die komplette definition deiner readingsGroup. ich schaue mir das dann mal an.
ansonsten teste mal bitte die beiden readings brenner und bessel in der reihenfolge zu tauschen. und das ganze noch mal ohne die beiden überschriften.
gruss
andre
Hallo Andre,
eie gewünscht. das Drehen bringt nichts.
Siehe Bild. Mit und ohne Überschrift
Zitatzeig mir mal bitte die komplette definition deiner readingsGroup. ich schaue mir das dann mal an.
# Definition RGroup HK1
define RG_HK1 readingsGroup T12:state T17:state D5
attr RG_HK1 alias HK1
attr RG_HK1 mapping {'T12.state' => 'VL-Ist ', 'T17.state' => 'VL-Soll ', 'D5' => 'HK1 '}
attr RG_HK1 nameStyle style="font-weight:bold"
attr RG_HK1 nolinks 1
attr RG_HK1 notime 1
attr RG_HK1 room 7_Anlagedaten
attr RG_HK1 style style="font-size:30px"
attr RG_HK1 valueFormat {'T12.state' => "%.1f °C",'T17.state' => "%.1f °C"}
attr RG_HK1 valueIcon { state => '%devStateIcon' }
attr RG_HK1 valueStyle {($READING eq "state" && $VALUE == 1)?'style="color:red"':'style="color:green"'}
# Definition RGroup Heizung
define RG_Hz readingsGroup <{rgText30("Heizung")}> <{rgText25("Buderus")}> T9 D1
attr RG_Hz alias Heizung
attr RG_Hz mapping {'D1' => 'Brenner ', 'T9' => 'Kessel '}
attr RG_Hz nameStyle style="color:blue;;font-weight:bold"
attr RG_Hz noheading 1
attr RG_Hz nolinks 1
attr RG_Hz notime 1
attr RG_Hz room 7_Anlagedaten
attr RG_Hz style style="font-size:30px"
attr RG_Hz valueFormat {'T9.state' => "%.1f °C"}
attr RG_Hz valueIcon { state => '%devStateIcon' }
attr RG_Hz valueStyle {($READING eq "state" && $VALUE == 1)?'style="color:red"':'style="color:green"'}
Gruss und schon mal Danke
Billy
Hallo zusammen,
auf die Gefahr hin euch zu nerven, hat denn keiner eine Idee zu meinem Problem?
Noch mal kurz zusammen gefasst:
Ich habe mir nach der Anleitung von Elektrolurch das Modul 99_myUtilsTelefon eingebunden und die rg "Anrufliste" erstellt. Es klappt auch alles soweit. In der LogFile_Anrufliste und auch im Eventmonitor sieht man den eingegangen Anruf und auch das weiterschieben der vorhandenen Einträge.
Also denke ich, dass das Modul richtig funktioniert. Ich denke irgend etwas mit der Definition in der rg scheint nicht zu passen (siehe Anlage). Wenn ich als Definition nur einen Wert abfrage, z.B. meineFB:C3 bekomme ich den Wert angezeigt. Sobald ich mehrere Werte mit Komma getrennt (schon bei zwei Werten) eintrage, erhalte ich eine leere Anzeige wie im angehängten Screenshot zu sehen.
Im FP bekomme ich die Meldung "Undefined Reading Anrufliste-"
Ich hoffe mir kann jemand helfen,
Vielen Dank und noch mal sorry, dass ich so nervig bin.
Grüße
Tommy
Hallo noch mal,
ich hab´s endlich hinbekommen.
Nach einer Neuinstallation hat es jetzt doch funktioniert.
Trotzdem Danke für Eure Geduld und Nachsehen mit mir.
Gruß
Tommy
Zitat von: Elektrolurch am 10 November 2013, 20:36:45
Zusätzlich kann man über den Hook eine Telefonaktion ausführen lassen... z.B. auf Basis einer bestimmten Anrufernummer und der gewählten Zielnummer etwas tun.
Die alten Anrufe werden immer um eins nach hinten geschoben, so dass die aktuellen immer oben stehen.
Gruß
Elektrolurch
Hallo Elektrolurch,
kann ich in der Anrufliste auch nur Anrufe für eine bestimmte Nummer anzeigen lassen? Z.B. Anrufe auf die Nummer 4711 sollen angezeigt werden, die auf die Nummer 4712 nicht (die der Tochter). Kannst Du mir einen Tipp geben?
Danke
Gruß Tommy
ändere mal deine value icon definition so ab das sie genau nur auf das D1 passt:attr RG_Hz valueIcon { 'D1.state' => '%devStateIcon' }
die allgemeinere definition bei der nur state gemappt wird führt dazu das auch für T9 versucht wird ein icon zu finden. das gibt es zwar nicht und deshalb wird dann als fallback der text angezeigt. aber der fallback wird je nach stylesheet unterschiedlich formatiert.
gruss
andre
Hallo Andre,
Zitatändere mal deine value icon definition so ab das sie genau nur auf das D1 passt:
Code: [Auswählen]
attr RG_Hz valueIcon { 'D1.state' => '%devStateIcon' }
Passt jetzt bis auf die Hintergrundfarbe aber damit kann ich gut leben. :)
Schon mal herzlichen Dank.
Noch eine Frage bezüglich deinem Wiki:
Zitatattr Verbrauch valueStyle {($READING eq "power" && $VALUE > 40)?'style="color:red"':'style="color:green"'}
Kann man das auch für 3 Schwellen machen? zB. bis 30° blau bis 45° orange darüber rot?
Grüsse
Billy
ja natürlich. du kannst alles machen was in perl möglich ist. aber auch hier gilt: komplexeres besser in eine funktion in 99_myUtils auslagern und nur aufrufen.
etwas in der art müsste gehen:
attr Verbrauch valueStyle {return '' if( $READING ne "power");return 'style="color:red"' if( $VALUE > 45); return 'style="color:orange"' if( $VALUE > 30); return 'style="color:green"';}
gruss
andre
Hallo Andre,
Zitatja natürlich. du kannst alles machen was in perl möglich ist. aber auch hier gilt: komplexeres besser in eine funktion in 99_myUtils auslagern und nur aufrufen.
Vielen Dank, das klappt hervorragend. :) Jetzt kann ich die Temperaturen im Puffer farblich abgrenzen.
Schönes Wochenende
Billy
Hi,
nach einem Update vorhin habe ich folgenden Fehler in der Konsole:
Useless use of private variable in void context at ./FHEM/33_readingsGroup.pm li
ne 525, <$fh> line 91.
kurz darauf gefolgt von:
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE
$/ at fhem.pl line 3468.
Keine Ahnung, ob die Fehler etwas miteinander zu tun haben.
Die readingsGroups sehen aber alle i.O. aus.
Gruß
Spiff.
die erste meldung hab ich eben behoben. war ein copy&paste fehler. ist aber harmlos.
die zweite meldung kommt von einer falschen readingsGroup definition. du hast irgendwo eine readingsGroup auf * statt .* definiert.
gruss
andre
Muss das wirklich mit einer readingsGroup zusammenhängen? Die sind alle mit .* gewesen. Ich hatte bei den LaCrosse allerdings ein "event-min-interval *:300" und jetzt auf "event-min-interval .*:300" geändert. Jetzt kein Fehler mehr. Komisch. Das ging trotzdem. :-)
Gruß
Spiff.
muss nicht. war aber schon mehr als ein mal der fall :). aber jede andere stelle mit falschen wildcards spuckt die gleiche meldung aus.
gruss
andre
Ach so, noch was:
kann man dem valueStyle auch beibringen, dass er automatisch neu angewendet wird, wenn per longpoll ein neuer Wert reinkommt?
Die Farbe verändert sich leider nicht entsprechend der hinterlegten Regel.
Gruß
Spiff.
habs eben eingebaut.
gruss
andre
Hi,
das mit dem valueStyle funktioniert perfekt, danke!
Jedoch gibt es einen neuen Fehler:
Argument "0.0 W" isn't numeric in numeric gt (>) at (eval 101) line 1.
Argument "0.0 W" isn't numeric in numeric gt (>) at (eval 213) line 1.
Argument "0.0 W" isn't numeric in numeric gt (>) at (eval 377) line 1.
Argument "0.0 W" isn't numeric in numeric gt (>) at (eval 544) line 1.
Argument "32.8 W" isn't numeric in numeric gt (>) at (eval 711) line 1.
Argument "0.0 W" isn't numeric in numeric gt (>) at (eval 824) line 1.
Argument "75.5 W" isn't numeric in numeric gt (>) at (eval 937) line 1.
Argument "76.0 W" isn't numeric in numeric gt (>) at (eval 1212) line 1.
Ich habe die PCA-Verbrauchsübersicht aus dem Beispiel übernommen, da muss der Fehler herkommen.
define Verbrauch readingsGroup TYPE=PCA301:state,power,consumption
attr Verbrauch mapping %ALIAS
attr Verbrauch room Energieverbrauch
attr Verbrauch valueFormat {power => "%.1f W", consumption => "%.2f kWh"}
attr Verbrauch valueIcon { state => '%devStateIcon' }
attr Verbrauch valueStyle {($READING eq "power" && $VALUE > 50)?'style="color:red"':'style="color:green"'}
Viele Grüße,
Spiff.
das liegt an der internen reihenfolge. zuerst wird das ' W' dran gehängt und dann value style aufgerufen.
ich drehe es um.
gruss
andre
Ja, das war's, danke.
Kann man die readingsGroup eigentlich so definieren, dass sie die gleiche Tabellenmaße verwendet, wie alle andere Tabellen in einer Raumansicht?
Gruß
Spiff
wenn du eine readingsGroup hast die den gleichen inhalt hat sollte sie auch gleich gross sein.
fhemweb packt alle plots, readingGroups und weblinks ans ende der seite in eine eigene tabelle, unabhängig von der tabele mit allen anderen devices. diese beiden tabellen gleich gross zu bekommen geht nur über die stylesheets bzw eingriff in fhemweb.
gruss
andre
Sorry, bin erst jetzt wieder online.
Zitat:
Hallo Elektrolurch,
kann ich in der Anrufliste auch nur Anrufe für eine bestimmte Nummer anzeigen lassen? Z.B. Anrufe auf die Nummer 4711 sollen angezeigt werden, die auf die Nummer 4712 nicht (die der Tochter). Kannst Du mir einen Tipp geben?
Danke
Gruß Tommy
Hmm...
Sollen diese Anrufe erst gar nicht aufgezeichnet werden? Dann müsstest Du im Quellcode das in 99-myutilsTelefon abändern. Die Schierigkeit ist dabei, dass bei einem eingehenden Anruf mehrere Events kommen: Klingeln, Anrufer mit Namen, Abheben, interne Nummer, Auflegen, Gesprächsdauer. Ist im FBCallMonitor beschrieben. Ich habe einem Mehrnummernanschluss Rechnung getragen, d.h. es funktioniert auch bei mehreren ein- und ausgehenden Anrufen. Das macht das Filtern auf der Ebene etwas schwierig.
Andere Möglichkeit wäre in der Anzeige der readingsGroup einen Filter zu setzen, wobei in der jetzigen Implementierung die intern angerufene Nummer ja nicht angezeigt wird.
Wie das so vom Prinzip geht, kannst Du in dem Codeschnipsel für die Anzeige der "offenen Fenster" sehen:
http://forum.fhem.de/index.php/board,8.0.html
Da sind zwei Beispiele von readingsGroup's drin.
Gruß
Elektrolurch
Hallo Andre,
zu dem Thema mit den rollierenden Listen ist mir noch etwas eingefallen. Derzeit ist es ja etwas unflexibel, da man sich für die Spalten so etwas wie A ... E und für die Zeilen so etwas wie 1...5, gemeint also A1...E5 als userReadings definieren muss.
Wenn man da tiefer eingreift, also{READInG}{VALUE} = @werte direkt in den fhem-Baum einhängen würde, würde das dann auch durch den SAVE-Befehl gespeichert werden?
{READING}{NAME} wäre dabei der Spaltenname.
Wenn fhem so etwas "saven" könnte, so hätte man beliebig lange Listen.
Ev. muss man eine neue Objektklasse auf Basis der readingsGroup definieren, um über Attribute das Teil vorzukonfiguriren....
So eine Idee.
Gruß
Elektrulurch
ich muss mal überlegen wie das aussehen könnte.
vielleicht kannst du mir mal einen screenshot machen.
gruss
andre
Hi Andre,
möchte so eine readingsGroup auf meinem Status Display nutzen, habe aber das Problem,
dass ich einen doppelten Rahmen bekomme
(siehe auch Screenshot im Anhang, 1. Spalte: Temperatur, Luftfeuchtigkeit .....)
Ich nutze den mehrspalten Modus von FHEMWEB.
Ich habe eine readingsGroup definiert, und dieser auch ein Attribut Group verpasst.
Dann wird die readingsGroup auch an der Stelle angezeigt wo ich sie haben will
und nicht am Ende. Es wird aber ein doppelter Rahmen definiert.
Wenn ich im stylesheet den border auf 0px setze, dann sind alle weg, das möchte ich ja auch nicht.
Weisst Du woran das liegen könnte und wenn ja ob ich da was gegen machen kann??
Gruß
Adam
das passiert wenn die readingsGroup in einer gruppe ist dann ist der rahmen doppelt. du kannst zur zeit entweder die readingsGroup aus der gruppe entfernen oder mit attr <device> style style="border:0px;background:none;box-shadow:none"
den rahmen der readingsGroup abschalten.
ich überlege mir noch etwas besseres.
gruss
andre
Danke, für die schnelle Reaktion !!!
Das sieht auf jeden Fall schon mal schöner aus!
Was fehlen würde, wäre dieses abwechselnde Grau, Schwarz.
Aber ich kann auch sehr gut mit dieser Lösung leben.
Ist zumindest keine Platzverschwendung mehr auf dem kleinen Display.
(Siehe Anhang)
Ich hätte da noch eine Frage,
ich habe ein Reading das hat als state "no" oder "yes"
und das möchte ich aber als icon darstellen.
Das bekomme ich leider nicht hin. :(
Ich habe
devStateIcon mit Namen von png Dateien gesetzt
und
valueIcon mit state => '%devStateIcon besetzt!?
attr wetter devStateIcon no:weather-cloudy_green yes:weather-rain_blue
attr wetter valueIcon {state => '%devStateIcon'}
Hat jemand ne Idee für mich?
readings haben keinen state. ein device kann ein reading state haben.
das attribut devStateIcon ist um einem device abängig vom STATE ein icon zu verpassen. eine readingsGroup hat keinen state und kein icon.
du möchtest einem reading innerhalb einer readingGroup ein icon verpassen. dazu ist das attribut valueIcon da. damit ordnest du einem reading ein icon zu. wenn du kein icon hat das so heisst wie der wert deines readings musst du vorher den wert mit valueFormat auf ein passendes icon mappen.
schau im wiki da findest du beispiele: http://www.fhemwiki.de/wiki/ReadingsGroup (http://www.fhemwiki.de/wiki/ReadingsGroup)
gruss
andre
Nochmals Danke, die Wiki Seite hatte ich noch nicht gesehen.
Ist es auch möglich den State zweier Devices in einer Zeiler zu kombinieren?
Device 1 liefert: T:22.6 H:41.5
Device 2 liefert: ok oder nok
und ich möchte dann in einer Zeile sehen:
T:22.6 H:41.5 ok
Fragt
Adam
da sehr über einen umweg mit <{ReadingsVal(...)}>
gruss
abdre
da sehr über einen umweg mit <{ReadingsVal(...)}>
gruss
abdre
Hi Andre,
ich verstehe Deine Antwort nicht, muss ich das bei dem define der readingsGroup mit angeben?
Adam
ja. statt dem namen eines readings.
OK Verstanden, leider werden die Werte dann doch in zwei Zeilen ausgegeben:
define statushum readingsGroup S300TH:state <{ReadingsVal("Wohnzimmer_Lueften","state","kann")}>
Ausgabe dann doch wieder:
Wohnzimmer:state T: 22.6 H: 40.9
kann
alle readings die auf eine zeile sollen müssen mit komma aufgezählt werden. nicht mit leerzeichen getrennt.
gruss
andre
1. Ja Super Danke!!
2. Und Sorry nächstes mal dann doch wieder gründlicher die Doku lesen ;)
Adam
Die valueIcon kann ich dann für die Werte von <{ReadingsVal("Wohnzimmer_Lueften","state","kann")}> leider nicht nutzen oder?
habe
valueIcon %VALUE
und die Namen der PNG Dateien heissen dann wie die Werte von <{ReadingsVal("Wohnzimmer_Lueften","state","kann")}>
ja. icons gehen nur mit normalen readings.
du kannst im <{...}> aber von hand ein icon erzeugen:<{FW_makeImage("icon_name")}>
gruss
andre
Hi Andre, danke für Deinen Tipp, aber ich bekomme das nicht hin.
Im Gegenteil mein fhem bricht komplett ab, da meine Regex dann super Shrott sind :(
mit folgendem bekomme ich alles in eine Zeile wie gewünscht:
S300TH:state,<{ReadingsVal("Wohnzimmer_Lueften","state","kann")}>
Müsste aber ja jetzt eine regexp finden die in <{ ... }> passt,
damit im Falle "kann" FW_makeImage("kann")
und im Falle "muss" FW_makeImage("muss") benutzt wird.
Das bekomme ich nicht hin. Er meckert mir immer wier Klammern an.
Hast Du ne Idee?
nein. keine regex... einfach eine ganz normale if else geschichte:S300TH:state,<{if(ReadingsVal("Wohnzimmer_Lueften","state","kann") eq "kann"){FW_makeImage("kann")}else{FW_makeImage("muss")}}>
oder wenn der wert immer dem icon namen entspricht so:S300TH:state,<{FW_makeImage(ReadingsVal("Wohnzimmer_Lueften","state","kann"))}>
gruss
andre
Hi Andre,
ja das zweite Beispiel funktioniert, Juhu !!!
Das erste Beispiel habe ich auch schon probiert, dann gibt es immer einen fhem Absturz mit der Meldung:
Unmatched ) in regex; marked by <-- HERE in m/^"kann") <-- HERE {FW_makeImage("k
ann")}else{FW_makeImage("muss")}}>$/ at ./FHEM/33_readingsGroup.pm line 112, <DA
TEI> line 48.
Und daher auch von mir meine weiteren gescheiterten regex Versuche!
Danke
die erste version geht wegen den leerzeichen nicht. wenn man die weg macht geht es auch da. aber die zweite ist eh besser. die erste sollte man in eine eigene sub in 99_myUtils.pm auslagern. dann sind die leerzeichen kein problem.
gruss
andre
Hallo Andre,
habe über die Feiertage fleißig programmiert und readingsGroup "ausgereizt! Dabei haben sich folgende Dinge ergeben:
1. um einen Titel zu erzeugen, hatte ich für die erste Spalte in der Headline <#> angegeben. Das "#"mag wohl fhem überhaupt nicht, denn dann war der Rest der Definition weg.
2. Mit dem undef für einzelne Werte: Ist ein Wert undef, so wird er nicht dargestellt. Schön wäre es aber, dass trotzdem in die nächste Spalte gesprungen würde. Für mich sieht das im Moment so aus, dasss die Liste einfach "zusammen rutscht".
3. Sind alle Werte in einer Zeile undef, so wird diese überhupt nicht dargestellt. Das ist gut und sinnvoll.
4. Hat wzar nichts mit rG zu tun: Warum gibt es die "userreadings"? Man kann mit "setreading" sich Werte an dumm<s anhängen, ohne das eine Fehlermeldung ausgelöst wird. Mit "deletereading" kann man diese dann auch wieder löschen, so dass diese in einer rG nicht mehr erscheinen. Hintergrund: Ich zeige nur Werte von meiner Solaranlage an, wenn diese auch an heutigen Tag gelaufen ist. Ansonsten erscheinen nur die Puffertemperaturen. Dabei erzeuge ich die Readings dynamisch und lösche sie nachts wieder. funktioniert super. Zuerst dachte ich, ich müsste die über "userreadings" immer reservieren, scheint aber nicht so. Und gesichert werden die Werte auch noch. Also warum "userreadings"? Den Unterschied habe ich in der fhem.pl auch nicht finden können.
Gruß
Elektrolurch
1. das problem mit # ist das es als kommentarzeichen im config file gilt. es geht also solange bis du abspeicherst und neu lädst. das gilt z.b. auch für farben oder hex codes. du kannst es umgehen in dem du <{...}> mit einer kleinen funktion in 99_myUtils.pm verwendest die dann das # zurück gibt. das geht.
2. undef lässt den wert wirklich aus. wenn du die spalte beibehalten aber leer haben möchtest kannst du ein leerzeichen oder verwenden
4. die userreadings haben eine formel hinterlegt und werden automatisch berechnet und gesetzt wenn sich ein anderes reading ändert. es gibt z.b. den modifier differential der automatisch die zeit berücksichtig um etwas pro zeit zu berechnen. ads ist im prinzip nichts das mit einem notify und selber rechnen und setreading nicht auch geht. die userreadings machen es nicht einfacher und es gab sie schon bevor es setreading gab.
gruss
andre
Ok. Danke, habe verstanden. Das "#" habe ich durch "Pos" ersetzt.
Da ich an die userreadings eh nix anhänge, dass lieber selber über das notify direkt im Perl-Code erledige... Passt mir das so ganz gut. In der fhem - Doku wäre es ev. ganz hilfreich, da mal auf das notify von readings einzugehen. Der State kommt direkt als Wert, der reading mit "Name:", für den Anfänger, erst einmal ein wenig Experiment...
Da musste ich auch erst einmal etwas Zeit investieren. Auch das Konzept mit den Hashes von Perl und in der Realisierung von fhem ist schon Forschungsarbeit. Die "$defs" habe ich in der Doku auch nicht gefunden....
W#äre so mal ein Ergänzungsforschlag für die Doku.
Gruß
Elektrolurch
ZitatW#äre so mal ein Ergänzungsforschlag für die Doku.
Wenn, dann bitte als diff, und zweisprachig :)
Hallo Andre,
Du hattest mir ja mal vor einiger Zeit ein Stückchen Code gegeben, um die readingsGroup - anzeige zu modifizieren. Allerdings habe ich da etwas Probleme mit den Knöpfen. Statt drei Knöpfe, erscheinen fünf in drei Spalten und ich kann mir absolut keinen Reim drauf machen.
Alle anzeigen
eingeschaltete
ausgeschaltete
eingeschaltete
ausgeschaltete
Den Screenshot (hoffentlich sieht man da was) hänge ich mal an. Wenn ich den html-Quelcode anzeigen lasse, so finde ich da eigentlich auch nur drei Knöpfe.
Definition der Gruppe:
define Alle_Lampen_im_Haus readingsGroup [A-Z][E-z][012]*_.*[LlFf](ampe|luter).*:state,<{anSeit($DEVICE,ReadingsVal("Alle_Lampen_im_Haus","mode","ein"))}> <{appendTrigger($DEVICE,"alle","Alle anzeigen");;}>,<{appendTrigger($DEVICE,"ein","nur eingeschaltete");;}>,<{appendTrigger($DEVICE,"aus","nur ausgeschaltete");;}>
attr Alle_Lampen_im_Haus alias Alle eingeschalteten Lampen
attr Alle_Lampen_im_Haus eventMap /on:ein/off:aus/
attr Alle_Lampen_im_Haus group Beleuchtung
attr Alle_Lampen_im_Haus mapping %ROOM %ALIAS
attr Alle_Lampen_im_Haus noheading 1
attr Alle_Lampen_im_Haus nolinks 1
attr Alle_Lampen_im_Haus notime 1
attr Alle_Lampen_im_Haus room Haus
attr Alle_Lampen_im_Haus userReadings mode
attr Alle_Lampen_im_Haus valueFormat {($VALUE=~m/on.*/)?"":undef}
attr Alle_Lampen_im_Haus valueIcon {state => '%devStateIcon'}
Die Triggerfunktion für die Knöpfe:
sub
appendTrigger($$$)
{
my ($name,$trigger,$label) = @_;
my $ret .= "</table></td></tr>";
my $link = "cmd=trigger $name $trigger";
my $txt = "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$label</a>";
$ret .= "<td colspan=\"99\"><div style=\"cursor:pointer;color:#888888;text-align:right\">$txt</div></td>";
return ($ret,0);
} # end appendTrigger
Ich habe insgesamt drei Gruppen mit drei Knöpfen, für Lampen, Geräte und Fenster.
Der Effekt, dass sich in der Zeiten Spalte drei Knöpfe befinden, tritt nur bei Lampen und Geräte auf, bei Fenster nicht.
Strange....
Ich dachte ev., dass das "eingeschaltete" sich ev. auf das valueFormat auswirken könnte und habe probeweise mal "nur eingeschaltete" hingeschieben, hat aber keinen Effekt.
Gruß
Elektrolurch
der screenshot ist leider so gescrollt das man die links zum klicken nicht sehen kann.
ich vermute aber das problem ist appendTrigger drei mal aufzurufen. was du tun musst ist in einem appendTrigger alle drei links nebeneinander zu erzeugen. der aktuelle code fügt eine zeile über die ganze breite der tabelle ein und macht den text rechtsbündig. wenn das mehrfach aufgerufen wird passt es vermutlich nicht mehr.
änder mal die zeile my $txt = "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$label</a>";
so das es drei zeilen in der art sind:my $txt = "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$label</a>";
$txt .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link2')\">$label2</a>";
$txt .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link3')\">$label3</a>";
du musst dann natürlich label2 und 3 und link2 und 3 gleich mit übergeben. oder einfach erst mal hart in die funktion rein schreiben.
gruss
andre
Hallo Andre,
perfekt, fast. Jetzt kommen nur noch drei Knöpfe.
Allerdings stehen die direkt hintereinander. Wo muss ich da einen Spaltenvorschub einfügen? Mit dem html hab ichs noch nicht so.
Die Funktion sieht jetzt bei mir so aus (geht für beliebig viele Knöpfe)
sub
appendTrigger
{
my ($name, @liste) = @_;
my ($trigger,$label,$link,$txt) ;
my $ret .= "</table></td></tr>";
$trigger = shift @liste;
$label = shift @liste;
$link = "cmd=trigger $name $trigger";
$txt = "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$label</a>";
while (@liste)
{
$trigger = shift @liste;
$label = shift @liste;
$link = "cmd=trigger $name $trigger";
$txt .= "<a onClick=\"FW_cmd('$FW_ME$FW_subdir?XHR=1&$link')\">$label</a>";
} # end while
$ret .= "<td colspan=\"99\"><div style=\"cursor:pointer;color:#888888;text-align:right\">$txt</div></td>";
return ($ret,0);
} # end appendTrigger
Dann ist noch eins: Wenn fhem neu startet, werden immer "Alle Lampen" angezeigt, obwohl der "mode" ja als reading an der readingsGroup hängt und doch eigentlich mit abgespeichert werden sollte?
Gruß
Elektrolurch
das einfachst auf die schnelle ist vermutlich mit jeweils so viele leerzeichen einzufügen wie du magst.
ja. eigentlich sollte nach dem start alles richtig gesetzt sein. vorausgesetz es war ein normales shutdown bei dem alles auch gesichert wurde. du solltest dann das mode reading in der detail ansicht auch sehen.
gruss
andre
Guten Tag,
mir gelingt einfach kein Trick, mit dem ich verhindern kann, dass im Spaltenmodus des WEB-Moduls in einer Readingsgroup die Datumsanzeige direkt klatsch am Readingswert und seiner über valueFormat definierten Einheit hängt. Dabei habe ich da schon ein/zwei Leerzeichen hinter.
Danke für sachdienliche Hinweise im Voraus!
Christian
leerzeichen werden in html 'wegoptimiert'. du kannst jeweils (non-breaking-space) verwenden um ein (oder mehrere) leerzeichen zu erzwingen.
gruss
andre
Hallo Andre,
vielen Dank - es klappt. Und wieder was dazugelernt.
Christian
Hallo,
heute habe ich gelernt, dass Leerzeichen (zum Beispiel im ValueFormat) beim Ausführen der readingGroup vom Browser wegoptimiert werden. Das Heilmittel ist (bei mir in nahezu allen Fällen) nun das empfohlene Einfügen von   nach Device-Namen und Reading.
Meine Beobachtung ist: ReadingGroup macht sehr schöne Darstellungen auf dem Weboberfläche und fügt seinerseits auch Leerräume ein. Erst wenn - zum Beispiel durch den Spaltenmodus des Moduls WEB - die ReadingsGroup in Enge gerät, wird gepresst. Wäre es nicht schön, wenn ReadingsGroup grundsätzlich beim Spaltentrennen wenigstens ein   einfügt? Dann würde auch ohne Eingriffe die Darstellung nicht wie hier http://forum.fhem.de/index.php/topic,14425.msg129155.html#msg129155 beschrieben aussehen, oder?
Danke an den Autoren für die wunderbare Möglichkeit von ReadingGroups - sorgen echt für Gliederung und helfen Multidevices (z.B. 1-Wire) differenziert und informativ dazustellen. Füge noch ein Beispiel an.
Christian
@cwagner
Wie bekommst Du die Temperaturstatistik zusammen?
Grüße
Sven
Hallo, das geht mit readingsGroup ziemlich cool. Dort kann man praktisch eine Ausgabeliste über mehrere Geräte hinweg machen. Hier als Beispiel das Listing meiner Temp_Statistik:
Internals:
DEF Wetterstation:(T_a.*|T_m.*|temperature|Taupunkt|Windchill)
NAME Temp_Statistik
NR 233
NTFY_ORDER 50-Temp_Statistik
STATE Initialized
TYPE readingsGroup
Content:
Wetterstation 1
DEVICES:
ARRAY(0x14cc720)
Readings:
2013-11-30 23:00:19 Wetterstation_avg_day 3.9
2013-11-30 23:00:19 Wetterstation_avg_month 3.9
2013-11-30 23:00:19 Wetterstation_cum_day 323343.2
2013-11-30 23:00:19 Wetterstation_cum_month 10432143.2
2013-11-30 22:47:24 Wetterstation_max_day 4.3
2013-11-30 22:47:24 Wetterstation_max_month 4.3
2013-11-30 23:45:30 Wetterstation_min_day 3.9
2013-11-30 23:45:30 Wetterstation_min_month 3.9
Helper:
Attributes:
group Temp_Statistik
mapping {temperature => "akt. Temperatur",T_min_day => "bish. Tages-Min",T_avg_day => "bish. Tagesschnitt",T_max_day => "bish. Tages-Max",T_max_month => "bish. Monats-Max",T_avg_month => "bish. Monats-Schnitt",T_min_month => "bish. Monats-Min",state => "%DEVICE",Taupunkt => "Taupunkt",rain_calc_d_last => 'Regen gestern',Windchill => "gefühlte Temperatur"}
noheading 1
room Aktuell
valueFormat %.1f °C
valueStyle style="text-align:right"
Du machts ein Define einer readingsGroup und im DEF-Teil kombinierst Du alle in dieser Liste gemeinsam gewünschten readings aus Deinen Geräten. Über das Mapping legst Du die Namen der Readings fest.
Man kann auch mehrere Spalten definieren und noch richtig tolle Sachen machen. Schau mal: http://forum.fhem.de/index.php/topic,19126.msg129214.html#msg129214 Was hier Forenmitglieder im Dialog zusammengebaut haben, ist beeindruckend.
Herzliche Grüße
Christian
Hallo eine Frage,
es ist bei dem Define ja möglich zwischen zwei <> einen Text einzutragen,
kann man da auch einen style zu angeben? Ich habe es bisher mit keiner Syntax geschafft!?
Also in der Art
<{style="color:red"}Beispieltext>
Fragt
Adam
mit nameStyle. oder du machst aus dem string ein komplettes <div>...</div>. dann musst du es aber in eine sub auslagern und zurückgeben weil im define keine leerzeichen erlaubt sind.
gruss
andee
Hallo,
mir ist heute aufgefallen das die Links der readingsGroup das Attribut webname ignorieren und hart auf fhem?... verlinken. Das führt zu Problemen wenn Fhem hinter einem reverse Proxy läuft.
Ich hab das bei mir lokal jetzt so gelöst. Evtl. was fürs nächste Update?
Zeile 282:
$txt = "<a href=\"".$FW_ME."?detail=$d\">$txt</a>" if( $show_links );
Zeile 285:
#$ret .= "<div class=\"devType\"><a style=\"color:#ff8888\" href=\"".$FW_ME."?detail=$d\">readingsGroup $txt is disabled.</a></div>";
Zeile 334:
$txt = "<a href=\"".$FW_ME."?detail=$d\">$txt</a>" if( $show_links );
Zeile 497:
$txt = "<a href=\"".$FW_ME."?detail=$name\">$txt</a>" if( $show_links );
Gruß
Matthias
habs repariert und eingecheckt.
gruss
andre
Hallo Andre,
danke für den Tipp mit dem <div></div> in einer ausgelagerten Funktion.
Und von mir einen großen Dank für das Modul überhaupt!!!!
Räumt die Anzeige auf meinen (Android) Display schön auf, da man verschiedene Device Stati in einer Spalte anzeigen kann.
(siehe Bild)
Danke !!!!!
Adam
Sieht gut aus! Möchtest Du die config posten?
Gesendet von meinem iPhone mit Tapatalk
Kein Problem bitte sehr, vielleicht sieht ja noch jemand Optimierungs-Möglichkeit ;-)
Ist halt sehr lang.
Adam
Habe noch ein Problem mit der Darstellung der readingsGroup in einer Gruppe im Dashboard.
Leider wird obwohl noch genug Platz ist, eher ein Zeilenumbruch gemacht, als die volle Breite zu nutzen.
habe es schon mit Column versucht, aber klappt auch nicht wirklich.
attr TwilightWerte noheading 1
attr TwilightWerte notime 1
attr TwilightWerte room System
attr TwilightWerte style style="border:0px"
attr TwilightWerte valueColumns { eventdescription => 'colspan="4"' }
danke und gruss
Marc
@Adam: wenn ich mich beim überfliegen nicht täusche kann man da ein bisschen optimieren :)
wenn du in deinem fall statt den <{...}> variante jeweils:
- valueIcon für die icons
- valueFormat für die einheiten
verwendest wird es glaube ich übersichtlicher und leichter wartbar. automatische updates per longpoll bekommst du umsonst dazu.
was eventuell noch nicht geht sind default values für nicht vorhandene readings. da würde ich etwas einbauen um die einfach vorgeben zu können.
gruss
andre
Ich hatte das Problem,
dass bei dieser Variante immer nur der erste Wert in einer Zeile angezeigt wird:
S300TH:temperature,S300TH:humidity,MAX_TH_WAND:state
daher immer wieder die Konstruktion mit dem <ReadingsVal.(...)>:
S300TH:temperature,<{ReadingsVal("S300TH","humidity","0")."%"}>,<{ReadingsVal("MAX_TH_WAND","state","0")}>
und dann halt notwendigerweise darin dann die Icons generiert, da es dann nicht mehr mit ValueIcon uind ValueFormat funktioniert.
Die Defaults waren mir gar nicht mal so wichtig, aber man konnte sie halt bei ReadingsVal dann angeben.
du hast recht mein fehler. das mischen unterschiedlicher devices in einer zeile geht noch nicht.
valueIcon sollte aber inzwischen auch für <...> funktionieren.
gruss
andre
Ich habe noch ein Problem mit der Icon-Darstellung. ein Reading hat den Wert A
Diesen Wert wollte ich als Icon darstellen und dachte dafür ist valueIcon zuständig.
Aber
valueIcon {'A' =>'phone_call_in'}
Zeigt mir nur A und nicht das Icon an
gib es mal bitte mit device.reading an.
ansonsten poste mal die komplette definition. nicht das noch irgendwo etwas umgemapped wird.
gruss
andre
Die Definition sieht so aus:
define Anrufliste readingsGroup <Nr.>,<>,<Uhrzeit>,<Anrufer>,<Telefonnumer>,<AB> Fritz:A0,B0,C0,D0,E0 Fritz:A1,B1,C1,D1,E1 Fritz:A2,B2,C2,D2,E2 Fritz:A3,B3,C3,D3,E3 Fritz:A4,B4,C4,D4,E4
attr Anrufliste fp_Telefon 70,300,0,
attr Anrufliste mapping {'Fritz.A0' => '1.', 'Fritz.A1' => '2.', 'Fritz.A2' => '3.', 'Fritz.A3' => '4.', 'Fritz.A4' => '5.'}
attr Anrufliste room Telefon
attr Anrufliste valueIcon {'A' =>'phone_call_in'}
define Call_Notify notify Fritz:.* {TelefonMonitor ($EVENT)}
Die A-Werte haben als Rückgabe A und das soll als Icon dargestellt werden.
das mit dem valueIcon habe ich aus der Heizungssteuerung abgewandelt und da klappt das.
du kannst den namen des devices, den namen des readings, <name>.<reading> oder <reading>.<value> als key verwenden. in deinem fall muss es also so sein: attr Anrufliste valueIcon {'A1.A' =>'phone_call_in', 'A2.A' =>'phone_call_in', 'A3.A' =>'phone_call_in', 'A4.A' =>'phone_call_in', 'A5.A' =>'phone_call_in'}
gruss
andre
danke hat geklappt
Zitat von: yogiflop am 29 Januar 2014, 10:18:58
Habe noch ein Problem mit der Darstellung der readingsGroup in einer Gruppe im Dashboard.
Leider wird obwohl noch genug Platz ist, eher ein Zeilenumbruch gemacht, als die volle Breite zu nutzen.
habe es schon mit Column versucht, aber klappt auch nicht wirklich.
attr TwilightWerte noheading 1
attr TwilightWerte notime 1
attr TwilightWerte room System
attr TwilightWerte style style="border:0px"
attr TwilightWerte valueColumns { eventdescription => 'colspan="4"' }
danke und gruss
Marc
ich habe noch einmal geschaut, es ist anscheinend ein Unterschied, ob ich es in einem Raum oder einer Gruppe betrachte.
Hallo zusammen,
ich habe bei mir die Anrufliste vom Elektrolurch übernommen. Diese funktioniert auch soweit gut! Ich wollte nun einige Punkte in der Darstellung anpassen und komme nicht wirklich ans Ziel.
- zum einen möchte ich anstelle der Pfeile ein Icon mit einem Hörer und in rot oder grün anzeigen je nach Eingang oder Abgang. Hier ist mein letzet versuch:attr valueIcon {'A0.<-' => 'phone_call@lightgreen'}
- dann möchte ich das Datum und die Urzeit anpassen. Aktuell sieht das so aus "21:06:50 30.01.2014" und mir würde aber so reichen "21:06 30.01.14" ohne sec und das Jahr verkürzt
- dann würde ich gerne die Spalte "C" und "D" so ändern, das nur noch eine angezeigt wird und immer wenn die Nummer nicht gefunden wird unbekannt da steht und wenn im Telefonbuch ein Name gefunden wird soll der Name da stehen. Ich möchte dadurch eine Spalte einsparen.
- die Dauer in Spalte E brauche ich nicht und habe diese bereits ausgeblendet.
Folgend noch meine aktuellen Einstellungen und wie es aktuell aussieht. Ich hoffe ihr könnt mir helfen?
# Anzeige der Anrufe generieren:
define Anrufliste readingsGroup Callmon:A0,B0,C0,D0 Callmon:A1,B1,C1,D1 Callmon:A2,B2,C2,D2 Callmon:A3,B3,C3,D3 Callmon:A4,B4,C4,D4
attr Anrufliste mapping {'Callmon.A0' => '1.', 'Callmon.A1' => '2.', 'Callmon.A2' => '3.', 'Callmon.A3' => '4.', 'Callmon.A4' => '5.'}
attr Anrufliste nameStyle style="font-weight:bold"
attr Anrufliste noheading 0
attr Anrufliste nolinks 1
attr Anrufliste nostate 1
attr Anrufliste notime 1
attr Anrufliste room 0_Überblick
attr Anrufliste valueIcon {'A0.<-' => 'phone_call@lightgreen'}
Hallo Holzwurm,
Die Antwort mit dem Icon steht hier bereits in #222
attr Anrufliste valueIcon {'A1.A' =>'phone_call_in', 'A2.A' =>'phone_call_in', 'A3.A' =>'phone_call_in', 'A4.A' =>'phone_call_in', 'A5.A' =>'phone_call_in'}
Wenn du die Nummer nicht angezeigt haben möchtest dann entferne doch einfach C aus der readingsgroup.
Liebe Mitsstreiter,
habe erst heute auf der Konsole entdeckt, dass ich mir mit einer Readingsgroup ständige Fehlermeldungen einfange:
Argument "35 %" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 453.
Eingrenzen lässt sich das auf das Reading von HM-Ventilaktoren, deren Valve-Postion ich auslese. Geliefert wird:
ValvePosition 35 %
mit mapping %DEVICE
noheading 1
valueFormat %.0f %  
valueStyle style="text-align:right"
mache ich eine Liste, die mir sehr gefällt und auch im Spaltenmodus dank   gut läuft. Doch offenbar stört das "%"-Zeichen im Ursprungsreading.
Was tun?
Danke für hilfreiche Tipps im Voraus!
Christian
das % zeichen das du anzeigen möchtest musst du verdoppeln:valueFormat %.0f %%  
gruss
andre
Moin,
seit letzter Nacht 00:00 Uhr müllt mir readingsGroup das Log zu:
Use of uninitialized value in string ne at /volume1/@appstore/FHEM/share/fhem/FHEM/33_readingsGroup.pm line 648.
Verantwortlich ist wohl:
define group_batteries readingsGroup .*:battery
Jedenfalls kommen keine neuen Logeinträge wenn ich diese Group disable.
Bis gestern vor Mitternacht gabs auch keine Logeinträge
an dieser stelle werden falle devices durchgegangen und die device namen verglichen.
die fehlermeldung gibt es für ein device ohne nahmen. das sollte es eigentlich nicht geben.
schau mal was bei einem { join(",", grep { !defined($defs{$_}{TYPE}) } keys %defs ) }
zurück kommt.
gruss
andre
Nach einem Update und restart vor 20 Minuten sind bisher keine Meldungen mehr aufgetaucht.
Ich hatte gestern Vormittag ein paar Sachen umbenannt, da waren auch 2 Bewegungsmelder mit bei. Aber wenn es daran liegen sollte hätten die Meldungen ja eigentlch schon gestern kommen müssen. Ich finde es halt seltsam, dass die Meldungen exakt um 00:00 Uhr anfangen.
Hallo Andre,
ganz herzlichen Dank: Auf die Idee mit dem Maskieren des % war ich auch schon gekommen und muss einräumen, dass meine Fragestellung unsauber war. Die Fehlermeldung:
ZitatArgument "0 %" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 453.
Argument "24 %" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 453.
Argument "28 %" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 453.
erhalte ich mit %%.
Wenn ich nur ein % habe, lautet die Fehlermeldung:
Argument "0 %" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 453.
Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 453.
Invalid conversion in sprintf: "% &" at ./FHEM/33_readingsGroup.pm line 453.
Argument "28 %" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 453.
Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 453.
Invalid conversion in sprintf: "% &" at ./FHEM/33_readingsGroup.pm line 453.
(Leider hatte ich beim Dokumentieren übersehen, dass ich diese Variante auch durchgespielt hatte und die beiden Versuche quasi in der Beschreibung gemischt)
Herzliche Grüße
Christian
wenn du schon ein % im value hast das du beibehalten möchtest kannst du das als string und nicht als zahl behandeln:valueFormat %s  
oder du machst so etwas:{sprintf("%.1f %%  ", int($VALUE)}
gruss
andre
Hallo,
ganz herzlichen Dank - da ist wieder Ruhe auf der Console! Und ich habe schon wieder etwas gelernt.
Danke
Christian
Bei mir taucht seit heute im fhem Logfile folgende Meldung auf:
Use of uninitialized value $lookup in substitution (s///) at /usr/share/fhem/FHEM/33_readingsGroup.pm line 226.
soweit ich rausgefunden habe hängt es mit Einträgen wie diesen zusammen:
attr dc.rg valueFormat {($VALUE !~ m/alive/)?"$VALUE":undef }
sobald undef nicht mehr vorkommt gibt es die Meldung nicht mehr.
sollte ab morgen behoben sein.
gruss
andre
Logfile ist wieder sauber.
Zitat von: Paul am 01 Februar 2014, 02:51:06
Hallo Holzwurm,
Die Antwort mit dem Icon steht hier bereits in #222
attr Anrufliste valueIcon {'A1.A' =>'phone_call_in', 'A2.A' =>'phone_call_in', 'A3.A' =>'phone_call_in', 'A4.A' =>'phone_call_in', 'A5.A' =>'phone_call_in'}
Wenn du die Nummer nicht angezeigt haben möchtest dann entferne doch einfach C aus der readingsgroup.
Ich möchte die Nummern nicht einfach nur ausblenden. Ich würde gerne die Spalte "C" und "D" so ändern, das nur noch eine angezeigt wird und immer wenn die Nummer nicht gefunden wird unbekannt da steht und wenn im Telefonbuch ein Name gefunden wird soll der Name da stehen. Ich möchte dadurch eine Spalte einsparen.
Ich möchte gerne noch mal auf meine Frage aus #225 zurückkommen ;D
Den Punkt mit den Icon habe ich nun hinbekommen.
Leider Scheitere ich noch an den Anpassung für Datum und Uhrzeit. Aktuell sieht das so aus "21:06:50 30.01.2014" und mir würde aber so reichen "21:06 30.01.14" ohne sec und das Jahr verkürzt
Hallo Holzwurm,
ZitatDen Punkt mit den Icon habe ich nun hinbekommen.
Wie machst du die Zuweisung der Icons für Ein- oder Ausgehend? Ist das mit dem gezeigten Attr. schon erledigt?
Gruß
Frank
Hallo zusammen!
Wenn ich versuche das Beispiel aus dem Wiki bei mir umzusetzen, bekomme ich folgendes Resultat:
siehe Anhang
Die einzige Änderung die ich vorgenommen habe ist TYPE=CUL_HM, da ich Homematic Thermostate HM-CC-RT-DN im Einsatz habe.
Was mach ich falsch?
VG
frank
das problem ist das bei den hm thermostaten der TYPE auch auf die einzelnen kanäle matched. du musst es also weiter einschränken.
schau mal
in sein thread ab etwa hier: http://forum.fhem.de/index.php/topic,19126.msg131875.html#msg131875
weiter unten steht auch noch wie die myUtils routine für hm angepasst werden muss.
gruss
andre
Zitat von: fiedel am 03 Februar 2014, 09:11:55
Hallo Holzwurm,
Wie machst du die Zuweisung der Icons für Ein- oder Ausgehend? Ist das mit dem gezeigten Attr. schon erledigt?
Gruß
Frank
Hallo Frank,
da ich keine Pfeile brauche habe ich in der 99_myUtilsTelefon die Pfeile gegen "in" und "out" getauscht und dann diese attr gesetzt.
attr Anrufliste valueIcon {'A0.out' => 'phone_call@lightgreen', 'A0.in' => 'phone_call@red', 'A0.AB' => 'audio_volume_mid@lightgreen', 'A1.out' => 'phone_call@lightgreen', 'A1.in' => 'phone_call@red', 'A1.AB' => 'audio_volume_mid@lightgreen', 'A2.out' => 'phone_call@lightgreen', 'A2.in' => 'phone_call@red', 'A2.AB' => 'audio_volume_mid@lightgreen', 'A3.out' => 'phone_call@lightgreen', 'A3.in' => 'phone_call@red', 'A3.AB' => 'audio_volume_mid@lightgreen', 'A4.out' => 'phone_call@lightgreen', 'A4.in' => 'phone_call@red', 'A4.AB' => 'audio_volume_mid@lightgreen'}
Das mit dem "AB" habe ich nur noch nicht getestet.
ZitatHallo Frank,
da ich keine Pfeile brauche habe ich in der 99_myUtilsTelefon die Pfeile gegen "in" und "out" getauscht und dann diese attr gesetzt.
Hi Holzwurm,
vielen Dank für den Tipp! Habs eingebaut und geht. :)
Viele Grüße
Frank
Hallo,
sehr cooles Modul. Macht echt Laune.
Ist es möglich einen Filter zu setzen, z.B. das nur die Fensterkontakte angezeigt werden, bei denen der batterystatus = low ist.
Ich habe nichts in diese Richtung gefunden. Generell habe ich keine Möglichkeit gefunden FHEM nach einer Liste von Geräten zu Fragen, die ein bestimmtes Reading gesetzt haben. Das gibt es doch bestimmt schon, oder?
Danke & Grüße,
Merhan
wenn du in der readingsGroup nur für bestimmte werte etwas anzeigen möchtest kannst du das über valueFormat beeinflussen. du kannst dann z.b. ein leerzeichen zurück geben. wenn valueFormat ein undef zurück gibt wird der wert übersprungen. wenn es in einer zeile keine werte gibt wird die ganze zeile übersprungen.
das geht z.b. so:
list battery=low
gruss
andre
Hallo Andre,
vielen Dank.
Ich habe es jetzt so gelöst:
valueFormat {($VALUE eq 'ok')?undef:$VALUE}
Somit werden alle Batteriezustände, die ok sind ausgeblendet und ich habe eine Liste der Geräte mit einer schwachen Batterie.
Ist das eine gute Lösung oder gibt es etwas besseres/eleganteres?
Grüße,
Merhan
der einzige haken daran ist das wenn eine batterie auf schwach wechselt der status in der web seite nicht live per longpoll aktualisiert wird weil damit nicht eine neue zeile eingeblendet wird. nach dem neuladen im browser ist aber alles ok. wenn dir das egal ist ist die lösung gut.
wenn du möchtest das der wert auch dann aktualisiert wird wenn die seite nicht neu geladen wird musst du den wert auf jeden fall anzeigen.
gruss
andre
Hallo zusammen,
ich bastle immer noch an meiner Anrufliste. Ich habe jetzt einen Weg gefunden reading C oder D anzuzeigen. Habe das jetzt so gelöst
# Anzeige der Anrufe generieren:
define Anrufliste readingsGroup Callmon:A0,B0,<{NameNummer}>
######################################################
# Anrufliste NameNummer
######################################################
sub
NameNummer()
{
{ if (ReadingsVal("Callmon", "C0", 99) eq "unknown") {fhem("list Callmon D0")} else {fhem("list Callmon C0")}}
}
# End NameNummer
Das was mich jetzt noch stört ist das es mir auch das Devise und das Datum mit ausgibt
Callmon 2014-02-05 21:19:31 Gymnasien u. Realschulen , Gymnasium
Bekommt man das weg oder ist der weg falsch?
Hi,
ich probiere mir gerade ein wenig einen Wolf.
Und zwar wollte ich mittels ReadingsGroup ein wenig Übersicht schaffen.
Gerne wollte ich den Batteriestatus der Devices und auch den Zustand von meinen Fensterkontakten anzeigen lassen.
So wie im Anhang sieht es derzeit aus.
Allerdings möchte ich bei den Devices, die kein Fensterkontakt sind, lediglich den Batteriestatus anzeigen lassen.
Daher habe ich das mal so definiert:
define rg_Uebersicht readingsGroup TF_.*:battery,state BM_.*:battery Voralarm.*:battery Alarm.*:battery
attr rg_Uebersicht alias Übersicht
attr rg_Uebersicht group Status
attr rg_Uebersicht mapping %ALIAS
attr rg_Uebersicht room zzSystem
attr rg_Uebersicht valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red', 'state.closed' => 'fts_window_1w@lightgreen', 'state.open' => 'fts_window_1w_open@red'}
Nur was ist das für ein Datum hinter den letzten Devices?
In der Definition habe ich da doch nur battery definiert.
Dieses Posting habe ich auch schon x-mal wohl eher mit mässigem Erfolg gelesen.
http://forum.fhem.de/index.php/topic,19126.90.html
Ich hoffe mir kann jemand helfen.
sobald für ein device nur ein reading angegeben ist ist der default den timestamp mit anzuzeigen.
wenn du das nicht willst kannst du es mit dem attribut notime abschalten.
gruss
andre
Prima. Danke Dir. Das passt soweit.
Du hast doch bestimmt noch eine Idee, wie man die Darstellung so hinbekommt, dass die Hintergrundfarbe bei den letzten Zeilen komplett alternierend schwarz/grau hinbekommt?
schau dir mal valueColumns an. damit kannst du ein reading über mehr als eine spalte gehen lassen. allerdings wird es dann auch zentriert. wenn du das nicht magst gib einfach ein ,< > hinter den batterie readings an. das fügt eine leere spalte an. dann brauchst du auch das notime nicht.
gruss
andre
Hm,
irgendwie passiert gar nichts.
Wobei mir valueColumns auch noch nicht wirklich klar ist, was ich da anzugeben habe.
Das gilt doch dann eigentlich für alle Zeilen meiner Readingsgroup oder?
Ich habe jetzt schon diverse valueColumns ausprobiert
{notime=>'colspan="2"'}
und
{buxtehude=>'colspan="2"'}
und
{state=>'colspan="2"'}
Allerdings ändert sich gar nicht in den letzten 4 Zeilen der ReadingsGroup.
Der Tip mit ,< > anstatt ,notime hörte sich erst vielversprechend an.
Ändert aber auch nichts.
Sollte ich heute lieber die Finger von der FHEM-Config lassen? ;)
du hast gerade einiges durcheinander geschmissen :)
- bei valueColumns musst du als key den namen des readings angeben. also bei dir z.b.: 'Voralarm.battery'
- das < > gibst du zusätzlich bei den devices an die nur battery haben. also z.b. so:define rg_Uebersicht readingsGroup TF_.*:battery,state BM_.*:battery,< > Voralarm.*:battery,< > Alarm.*:battery,< >
gruß
andre
Zitat von: justme1968 am 06 Februar 2014, 21:17:00
du hast gerade einiges durcheinander geschmissen :)
Das kann ich nur unterschreiben und scheint gerade noch weiter zu gehen ???
Also noch mal für mich.
Entweder valueColumns
oder < >.
Richtig?
Schau bitte mal in meinen letzten Screenshot aus #253 (http://forum.fhem.de/index.php/topic,14425.msg134419.html#msg134419).
Da habe ich ja genau Alarm.*:battery,< > als letztes Reading eingegeben. Das Ergebnis sieht aber nicht so aus wie erwartet/erhofft.
Gebe ich bei Voralarm.battery colspan='2' ein, sehe ich wieder keine Änderung.
Und wieder ein Screenshot...
sorry mein fehler. da darf kein leerzeichen zwischen den <> stehen.
define rg_Uebersicht readingsGroup TF_.*:battery,state BM_.*:battery,<> Voralarm.*:battery,<> Alarm.*:battery,<>
gruss
andre
Yes, yes, yes.
Du brauchst Dich doch nicht entschuldigen.
Ich danke Dir und noch einen schönen Abend.
Moin,
ich würde gerne wissen wie man den Namen des Readings anpassen kann.
Ich habe ein eignes Modul welches mir ein Device erstellt welches als Readings alle Kalendereinträge des Modules 57_Calendar.pm beinhaltet.
Der Name des Readings ist das Datum und die Uhrzeit des Termines und der Wert der Text des Termines (siehe screenshot "CALVIEW").
Darauf habe ich nun eine readingsGroup gepackt. Wie kann ich nun die im Screenshot 2 rot markierten Wert ausblenden lassen?
Über mapping %ALIAS kann ich ja nur den Namen des Readings verbergen, es soll aber genau anderst rum sein.
ich bin mir nicht sicher ob ich es ganz richtig verstanden habe.
du hat in mapping nicht nur %ALIAS zur verfügung sondern auch %DEVICE, %ROOM, %GROUP and %READING. dein device hat keinen alias also wird %DEVICE:%READING als default verwendet.
bei dir sollte das hier passen:attr kalenderTermine mapping %READING
ansonsten musst du aufpassen. leereichen sind in reading namen eigentlich nicht erlaubt. ich vermute das geht nur so lange gut wie du keine notifys oder sonstiges darauf ansetzen willst.
gruss
andre
Danke schön, funktioniert. Das mit dem Leerzeichen werd ich auch gleich fixen.
Hallo chris1284, kannst du mir dein Kalendermodul zur Verfügung stellen?
Sent from my iPod touch using Tapatalk
Zitat von: holzwurm83 am 08 Februar 2014, 00:38:22
Hallo chris1284, kannst du mir dein Kalendermodul zur Verfügung stellen?
Sent from my iPod touch using Tapatalk
Das Kalendermodul würde mich auch interessieren, chris1284
gruß
Marc
http://forum.fhem.de/index.php/topic,19922.0.html
aber auf eigene Gefahr :)
Guten Morgen,
Ich habe da nochmal eine allgemeine Frage .....
kann es sein, das der Rahmen der readingsGroup max 80% der Breite einer group nutzt ?? Ist das irgendwie oder irgendwo definiert ??
Ich habe immer noch Zeilenumbrüche, obwohl die volle Breite nicht ausgenutzt wurde.
Gruß und schönen Sonntag
Marc
Welchen Style verwendest du?
Ich denke es liegt an deinem Style. Schalte mal testweise auf das iOS7 Style um. Da wird die readingsGroup sicher auf der kompletten Bildschirmbreite dargestellt.
Grüße
Zitat von: fhainz am 09 Februar 2014, 10:01:36
Ich denke es liegt an deinem Style. Schalte mal testweise auf das iOS7 Style um. Da wird die readingsGroup sicher auf der kompletten Bildschirmbreite dargestellt.
Grüße
Also daran scheint es nicht liegen ......
jetzt verstehe ich das problem. ich fürchte es lässt sich nicht per css lösen.
bitte teste mal ob es für weblink und svg plot in der gleichen gruppe genau so passiert. und ob es nur im dashboard oder auch auf einer normalen fhemweb seite passiert.
wenn ja muss man in fhemweb und/oder dashboard für alle devices die ein $hash->{FW_atPageEnd} gesetzt haben colspan=2 setzen.
gruss
andre
Eigentlich liegt es an den Tabellen HTML von fhem. Das Problem bei dir ist das die readingsGroup in der 1. Zeile in der 1. Spalte steht, die 2. Spalte leer. In der 2. Zeile steht in der 1.Spalte zB. Lichtdiff Lampe und in der 2. Spalte aus. Das Design verschiebt sich.
Die Lösung könnte sein, die ReadingsGroup in eine Dashboard Gruppe zu stecken und die 2 Devices auch in eine Gruppe.
Grüße
Zitat von: fhainz am 09 Februar 2014, 10:22:03
Eigentlich liegt es an den Tabellen HTML von fhem. Das Problem bei dir ist das die readingsGroup in der 1. Zeile in der 1. Spalte steht, die 2. Spalte leer. In der 2. Zeile steht in der 1.Spalte zB. Lichtdiff Lampe und in der 2. Spalte aus. Das Design verschiebt sich.
Die Lösung könnte sein, die ReadingsGroup in eine Dashboard Gruppe zu stecken und die 2 Devices auch in eine Gruppe.
Grüße
Ich habe es nun mal in eine eigene Gruppe gepackt, und da wird es tatsächlich über die volle Breite angezeigt. Es ist zwar nicht das was ich wollte, aber fürs erste wird es so funktionieren ......
Du könntest dir die Umweltdaten auch noch in die readingsGroup schreiben, dann hast du alles an einem platz.
Grüße
Hallo,
kurze Frage - wie kann ich die Readinggroups im Log ausschalten (telnet - info timer). Da kommt jedesmal ein haufen HTML durchgeschwirrt. Verbose = 0 zeigt keinen effekt als Atribut gesetzt. Ein "refresh readinggroup xyz" würde ja reichen im Log
das was du bei inform timer siehst oder im event monitor ist nicht das log.
das sind die events die z.b. für longpoll gebraucht werden. die kannst du nicht abschalten.
gruss
andre
Okay, ich dachte nur, das man da nicht alles durchjagen müsste. Das macht die Telnet info fast nutzlos :o
das sind halt die events zwischen den komponenten die du siehst. in dem fall die icons die aktualisiert werden. im event monitor siehst du es ach wirklich als icons.
inform timer solltest du auf die devices einschränken die dich wirklich interessieren. das ist normalerweise nicht dir readingsGroup sondern dir original devices.
gruss
andre
Hallo Zusammen,
da ich keine FHT sondern HM-CC-RT-DN (Homematic) besitze, habe ich das im Wiki http://www.fhemwiki.de/wiki/ReadingsGroup (http://www.fhemwiki.de/wiki/ReadingsGroup) aufgeführte Beispiel "Heizungswerte2" für meine Zwecke versucht anzupassen. Das gelingt mir leider nicht so erfolgreich :(. Folgende Probleme habe ich noch:
- Die Perl-Routine myUtils_HeizungUpDown($$) wird regelmäßig getriggert (ca. alle 30 Sekunden). Meinem Verständnis nach sollte das aber nur passieren, wenn UP/DOWN-Pfeile gedrückt werden. Kommt das durch eine Eigenart meines Thermostates zustande? Wenn ja, wie kann ich das umgehen?
- Das Window-Symbol wird nicht angezeigt. Vermutlich, da beim RT die Window-Eigenschaften in einem eigenen Channel stehen. Muss ich mir da auf Device-Ebene ein UserReading einrichten, was die entsprechende Info vom Channel "hochzieht"? Oder geht das eleganter?
Leider habe ich keine FHT im Einsatz, sodass hier hier nicht selber Vergleiche anstellen kann.
Vielen Dank schon einmal für hilfreiche Tipps und viele Grüße
Christoph
schau mal in den original thread dazu: http://forum.fhem.de/index.php/topic,19126.0.html (http://forum.fhem.de/index.php/topic,19126.0.html). gegen ende werden auch die änderungen die für homematic nötig sind gezeigt.
zu 1:
das myUtils_HeizungUpDown wird immer dann aufgerufen wenn sich sich die temperaturen ändern. da die pfeile abhängig von den werten auch die farbe ändern.
ich bin immer noch dran die readingGroup so zu optimieren das sie nichts tut wenn sie nicht sichtbar ist. wenn dich der aufruf stört kannst du das @desired.* jeweils entfernen. dann werden die pfeile aber auch nicht mehr per longpoll aktualisiert.
zu 2.:
in dem anderen thread findest du ab hier: http://forum.fhem.de/index.php/topic,19126.msg135321.html#msg135321 (http://forum.fhem.de/index.php/topic,19126.msg135321.html#msg135321) auch beispiele wie du ein reading aus einem anderen device zusätzlich auf der gleichen zeile noch mit anzeigen kannst. auch als icon.
gruss
andre
Danke André,
das hat schon mal sehr viel weiter geholfen.
Aber irgendwie ist in der Routine myUtils_HeizungUpDown noch der Wurm drin. Ich kann immer nur um einen Step erhöhen/reduzieren.
Es sieht so aus, dass wenn ich das zweite Mal auf Up klicke, mir in der Zwischenzeit wegen der Tempänderung ein Down dazwischen funkt. Warum ist das nur bei mir so?
Viele Grüße
Christoph
veruch mal im anderen thread zu posten. da haben es ja welche am laufen.
gruss
andre
Zitat von: justme1968 am 11 Februar 2014, 16:00:20
veruch mal im anderen thread zu posten. da haben es ja welche am laufen.
gruss
andre
Auch hier nochmals vielen Dank! Ich bin fündig geworden und es scheint jetzt zu laufen.
Nur eine Frage habe ich noch: wie schnell sollten die Klicks auf die Pfeile denn umgesetzt werden? Ich habe beim Klicken ca. 2 Sekunden Verzögerung bis es im Frontend dargestellt wird. Ist das normal? Wo kann man ggf. optimieren, damit die Anzeige flüssiger reagiert? (Okay, waren jetzt drei Fragen 8))
Danke und Gruß
Christoph
der klick sollte sofort dazu führen das zwischen den pfeilen der gränderte wert eingeblendet bzw. geändert wird. und nach 3 sekunden ohne änderung der wert zwischen den pfeilen verschwindet und als neuer wert übernommen wird.
wo genau ist die verzögerung bei dir?
gruss
andre
Ich klicke auf einen Pfeil und dann dauert es ca. 2 Sekunden bis die neue Solltemperatur zwischen den Pfeilen angezeigt wird. Drücke ich nochmals auf den Pfeil (innerhalb der Wartefrist, die bei mir auf 5 Sekunden steht), dauert es wieder ca. 2 Sekunden bis die Solltemperatur noch um einen weiteren Step verändert wird. Und so weiter.
Mache ich dann fünf Sekunden nichts, wird der Befehl dann abgesetzt.
auf welcher plattform ist das? was passiert wenn du schneller hintereinander klickst?
gruss
andre
Zitat von: justme1968 am 12 Februar 2014, 07:55:40
auf welcher plattform ist das? was passiert wenn du schneller hintereinander klickst?
Platform ist Raspberry Pi (siehe Signatur). Wenn ich schnell hintereinander klicke "verschluckt" sich das System, d.h. die Befehle kommen nicht (alle) an. Ich musse warten, bis die neue Solltemperatur angezeigt wird.
Das selbe Problem habe ich uaf dem Tab auch, am PC aber nicht. Deshalb habe ich die Anzeigezeit von 3 auf 30 Sekunden hochgesetzt, damit ich das Problem überbrücken kann. Irritiert aber leicht.
Zitat von: Invers am 12 Februar 2014, 09:16:41
Das selbe Problem habe ich uaf dem Tab auch, am PC aber nicht. Deshalb habe ich die Anzeigezeit von 3 auf 30 Sekunden hochgesetzt, damit ich das Problem überbrücken kann. Irritiert aber leicht.
Verwendest Du die Version für den FHT oder angeänderte Version für Homematic? Ich habe das Gefühl, dass bei der Homatic-Anpassung die Routine zu oft getriggert wird.
Alles FHT
ich hatte gerade eben beim testen auch ein performance problem das ursprünglich beim entwickeln nicht da war. nach einem update hat es sich aber wieder gelegt.
ist deine fhem version aktuell ?
gruss
andre
Ich mache täglich um 8 Uhr ein Update, auch heute.
Mein letztes Update war gestern.
gesendet von unterwegs...
@yogiflop: mit dem aktuellen dashboard update geht die anzeige einer readingsGroup jetzt über die ganze spaltenbreite. es ist also kein group workaround mehr nötig.
gruss
andre
Zitat von: justme1968 am 13 Februar 2014, 15:43:34
@yogiflop: mit dem aktuellen dashboard update geht die anzeige einer readingsGroup jetzt über die ganze spaltenbreite. es ist also kein group workaround mehr nötig.
gruss
andre
Ich danke euch
gruß
Marc
Zitat von: holzwurm83 am 03 Februar 2014, 19:36:46
da ich keine Pfeile brauche habe ich in der 99_myUtilsTelefon die Pfeile gegen "in" und "out" getauscht und dann diese attr gesetzt.
ich finde dies eine tolle Sache mit den Icons und habe das auch mal probiert, aber bei mir wird immer "in" oder eben "out" angezeigt, kann es in dem Fall sein das er die Icons nicht findet, die da heißen "phone_call"
EDIT:// so jetzt sind die Icons auch da, aber ehe die sich aktualisieren dauert schon, erst kommt immer in oder out un dann dauert es noch ein wenig bis sie da sind. Ist das so normal..?
Hallo,
Kann ich eigentlich bei den HM-RTs, wo mehrere Channels unterschiedliche Readings haben, bestimmten Readings in einer Readingsgroup zusammen fassen?
Hier meine bisher gescheiterten Versuche aus dem Device und dem Channel Clima je eine Zeile mit allen gewünschten Werten zu erstellen:
DEF1 <%sani_heating>,<Act>,<Soll>,<Ist>,<Modus>,<Batterie> hz.*_Clima:ValvePosition,desired-temp,measured-temp,mode hz.*:battery
=> Screen_1, hier haut er eine extra Zeile für jedes Battery-Reading rein
DEF2 <%sani_heating>,<Act>,<Soll>,<Ist>,<Modus>,<Batterie> hz.*_Clima:ValvePosition,desired-temp,measured-temp,mode,hz.*:battery
=> Screen_2, hier lässt es leer
Als Workaround habe ich zur Zeit 2 Readingsgroup. EInmal Battery, einmal den Rest. Beides in einem Wäre super. Und was auch noch toll wäre wenn mir jemad sagen könnte wie man die Battery-Readings von dem Zeitstempel befreien kann.
Danke vorab!
wenn du weiter oben im thread schaust findest du beispiele für beides. in der commandref steht es auch.
- um die timestamps weg zu machen: notime
- um verschiedene devices in einer zeile zu mischen: <{ReadingsVal(<device2>,<reading>,<default>)}> verwenden.
gruss
andre
Danke Andre,
Notime, funktioniert aber das Mischen nicht. Es funktioniert nur wenn ich das Device2 genau benenne, macht ja kein sinn da bei allen 3 Rts dann der Wert des einen steht.
$DEVICE greift auch nicht weil er scheinbar immer in hz.[device]_Clima schaut. Wenn ich den _Clima irgendwie wegnehmen könnte würde es denke ich gehen. Oder:
Kann ich an die Variable $DEVICE noch ein "_Clima" anhängen?
<%sani_heating>,<Act>,<Soll>,<Ist>,<Modus>,<Batterie> hz.*:battery,
<{ReadingsVal('$DEVICE_Clima','ValvePosition','')}>,
<{ReadingsVal('$DEVICE_Clima','desired-temp','')}>,
<{ReadingsVal('$DEVICE_Clima','measured-temp','')}>,
<{ReadingsVal('$DEVICE_Clima','mode','')}>
So funktioniert es leider nicht.
du musst es mit doppelten anführungszeichen schreiben.
...,<{ReadingsVal($DEVICE."_Clima",'ValvePosition','')}>,...
in perl werden variablen zwischen einfachen Anführungszeichen nicht expandiert.
gruss
andre
<%sani_heating>,<Act>,<Soll>,<Ist>,<Modus>,<Batterie> hz.*:battery,<{ReadingsVal("$DEVICE",'ValvePosition','')}>
So liefert er z.B: die 0 % aber leider auch alle leeren Channels in denen es ValvePosition garnicht gibt und in einer neuen Zeile. Siehe Screenshot
<%sani_heating>,<Act>,<Soll>,<Ist>,<Modus>,<Batterie> hz.*:battery,<{ReadingsVal("$DEVICE_Clima",'ValvePosition','')}>
Den Channel an Device dranhängen liefert keine Werte
schau noch mal oben. ich hatte es noch mal geändert. der name muss anders zusammen gebaut werden.
ansonsten musst du zu auf jeden fall den device teil ganz am anfang der definition so spezifisch machen das dir devices bzw. channel die du nicht dabei haben willst auch nicht mit matchen
gruss
andre
Zitat von: chris1284 am 16 Februar 2014, 11:16:48
<%sani_heating>,<Act>,<Soll>,<Ist>,<Modus>,<Batterie> hz.*:battery,<{ReadingsVal("$DEVICE_Clima",'ValvePosition','')}>
Trenne "$DEVICE_Clima", da es als ein Variable betrachtet wird, welche nicht existiert.
Mit "$DEVICE"."_Clima" sollte es funktionieren.
Jetzt muss ich es nur noch schaffen die leeren Devices auszublenden.
Zitat
ansonsten musst du zu auf jeden fall den device teil ganz am anfang der definition so spezifisch machen das dir devices bzw. channel die du nicht dabei haben willst auch nicht mit matchen
Das wird denke ich nicht gehen bei den RTs. Der Aufbau ist aber auch schlecht! Das Device [bla] ohne Channels hält fasst alle Readings als Zusammenfassung, aber leider nur fast.
Ich habe das ganze auch schon anderst herum probiert, aber da wird natürlich der Baterie-Level nicht angezeigt da $DEVICE = hz.[device]_Clima.
Kann ich statt $DEVICE auch sowas wie
nur den string device minus 6 zeichen von rechts
angeben? So eine Art trim (was perl scheinbar so nicht kennt)
EDIT:substr("$DEVICE",0,length("$DEVICE")-6)
liefert mir genua den device-String den ih brauche, allerdings nimmt fhem es nicht / stürtzt ab ;D
In der Padre IDE funktioniert es :
Zitat$DEVICE = "hz.Bad_Clima";
$test = substr("$DEVICE",0,length("$DEVICE")-6);
print $test;
Ausgabe ist "hz.Bad"
Wenn ich das in das Redingsval mit hineinbekomme wäre es super:
<%sani_heating>,<Act>,<Soll>,<Ist>,<Modus>,<Batterie> hz.*_Clima:ValvePosition,desired-temp,measured-temp,mode,<{ReadingsVal('substr("$DEVICE",0,length("$DEVICE")-6)','Baterie','n.A.')}>
geht schonmal nicht.
Hi Andre,
erstmal von mir ein großes DANKE für das super Modul!
ich hab aber auch eine Frage:
attr valueIcon {"state.off" => "fts_shutter_" . ReadingsVal("Jalousie_Balkon_posstatus","state","0")} #funktioniert
attr valueIcon {"state.off" => "fts_shutter_" . "%DEVICE"} #funktioniert
attr valueIcon {"state.off" => "fts_shutter_" . ReadingsVal("%DEVICE","state","0")} #funktioniert nicht, egal ob in single oder dquotes, ich vermute weil zuerst eval und dann substitution gemacht wird.
und zweitens auch eine Bitte:
ich wünsch mir folgenden Konstruktion:
define myRG readingsGroup Jalousie_.+_movestatus:state, usw.....
und möchte dann in der weitern definition (und auch in den attributen den match-string als variable verwenden. (analog zu %DEVICE, %ALIAS, usw....
das würde die Definitonen und auch die attribute wesentlich übersichtlicher gestalten.
l.g. erwin
die ganzen => hash Konfigurationen werden nur ein mal am anfang durch eval geschickt und dürfen aktuell nur einen string zurück geben und nicht noch device abhängigen perl code aufrufen. ich bin gerade dabei das zu erweitern. dann wird es so funktionieren:attr valueIcon {"state.off" => {"fts_shutter_" . ReadingsVal("$DEVICE","state","0")} }
was aber jetzt schon gehen sollte ist das hier:attr valueIcon {"state.off" => "fts_shutter_%VALUE"}
deinen zweiten punkt habe ich noch nicht ganz verstanden. du hast doch in %DEVICE den kompletten namen. was genau möchtest du mit dem match-string tun?
gruss
andre
Hi Andre,
danke für die Antwort, ich hab mein Problem möglichweis zu sehr verkürzt dargestellt.....
attr valueIcon {"state.off" => "fts_shutter_%VALUE"}
funktioniert bestens, hilft mir aber nicht, weil ich den value eines anderen devices für das brauche. Den hab ich mit Readingsvalue("anderesdevice","state",0) zu holen versucht.
Hintergrund: ich versuche EIB devices (genauer Jalousien) zu steuern, und beim EIB Module gibts ausschließlich ein state attr, dafür brauche ich pro Jalousie mehrere FHEM devices (z.b. eins für Auf/Ab ein für Stop, eins für Absoltue Position setzen, eins für Rückmeldung absolute Position, usw....
Und dann ist auch noch entscheidend, mit welchem "Device" ich die Readingsgroup triggere, z.B.: Ein Absoluter Positionsstatus ist nur dann gültig, wenn das "Jalousie_xxx_movestatus" device auf aus steht....
Das war dann meine Idee, per namenskonvention die Devices zu gruppieren:
z.B:
Jalousie_<Raum1>_movestatus # Status: Jal in Bewegung
Jalousie_<Raum1>_posstatus # Status: Absolute Position der Jal (0-100%)
Jalousie_<Raum1>_AufAb # CMD: Auf=0 Ab=1
Jalousie_<Raum1>_Stop # CMD: Stop=1
Jalousie_<Raum1>_Absposition #Cmd: absolute Position setzen (0-100%)
usw...
daher kommt die Bitte nach dem match string. Damit könnte ich in der Readingsgroup eine Jalousie pro Zeile darstellen und undercover die EIB-Devicenamen modifizieren.
Beispiel:
define myRG readingsGroup Jalousie_.+_movestatus:state, <{sprintf("%3d %%",ReadingsValStrip("Jalousie_$DEVMATCH_posstatus","state","0"))}@state>, ,usw...
Das define matched auf alle meine Jalousien - das funktioniert ja bestens und liefert mir pro Jalousie EINE zeile.
Der match-string würde mir die Möglichkeit schaffen, ein "weiteres EIB-Device abzufragen.. (im Beispiel mit $DEVMATCH markiert). Selbiges auch für attr valueIcon...
ich hoffe das war verständlich.
danke erwin
PS: Das wirkliche Problem ist, das EIB.pm den readingsupdate mechanismus nicht implementiert hat und damit auch keine userreadings funktionieren.
jetzt hab ich es verstanden. ich fürchte aber das ist nicht ganz einfach. ich muss mal überlegen.
wäre es nicht auch ein weg mit dummy oder readingsProxy jeweils ein device pro jalousie zu bauen das dann intern das verteilen macht und die readingsGroup nur noch auf diese kombinierten devices los zu lassen?
ich schau aber mal ob man die teile aus der regex durchreichen kann.
gruss
andre
Hi Andre,
nochmals Danke für die Antwort,
falls das mit dem match-string zu viel Kopfzerbrechen macht, ist das auch kein Problem.
Für meinen speziell Fall hab ich mir eine kleine sub geschrieben, das den namen extrahiert und das funktioniert auch im define nicht jedoch beim attr valueIcon.
ich habs auch mit %ALIAS versucht, aber selbes Ergebnis beim attr valueIcon.
ich formuliere nochmal anders:
attr valueIcon {"state" => "myfunct('%DEVICE')"}
liefert %DEVICE in die funktion.
l.g. erwin
Hi Andre,
hats du evtl noch eine Idee wie ich die Funktion substr("$DEVICE",0,length("$DEVICE")-6)
sauber in ein
<{ReadingsVal([HIER MUSS SIE REIN],'Baterie','n.A.')}>
hineinbekomme bzw ist sowas überhaupt möglich? Substr an sich und auch length funktionieren zusammen wenn ich sie hinten als default -Wert angebe, nur nicht vorn als device.
Gruß
Christiab
ich habe gerade eben einen bug repariert der zugeschlagen hat wenn eine 0 in der parameterliste aufgetaucht ist.
das sollte an morgen gehen.
als workaround müsste 1-1 gehen.
gruss
andre
@erwin: ich hab gerade mal geschaut wie ich die capture groups/match variablen bereut stellen kann und es geht nicht wirklich. das matchen der devices passiert nur zur definitions zeit (bzw. wenn in fhem neue devices angelegt werden).
wenn später die web seite aufgebaut wird habe ich nur noch die liste der devices die tatsächlich relevant sind.
das würde ich auch ungern ändern weil ich dann nicht mehr optimieren kann.
wenn es wirklich nicht so wichtig ist würde ich es erst mal ruhen lassen bis mindestens noch jemand damit kommt :)
gruss
andre
Hi Andre,
Zitatwenn es wirklich nicht so wichtig ist ...
Wie schon geschrieben, dieses Problem kann ich anders lösen.
Wenn du das implementieren könntest, wäre mein Problem schon gelöst:
Zitatich bin gerade dabei das zu erweitern. dann wird es so funktionieren:
attr valueIcon {"state.off" => {"fts_shutter_" . ReadingsVal("$DEVICE","state","0")} }
Danke erwin
Hi Andre, funktioniert mit dem substring nach dem Update, bekomme nun die Batterie-Werte.
Allerdings scheint ein einfaches valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red'}
nicht mehr auf die Werte der Batterie zu greifen.
Iconpfad usw alles i.O. valueIcon {'mode.auto' => 'sani_heating_automatic','battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red'}
grift zumindest bei mode und in einer 2 Readingsgroup nur mit battery greift das icon auch.
das mappen der der readings werte auf ein icon mit valueIcon geht nur mit 'echten' readings. nicht mit den strings die mit <{...}> eingefügt werden.
dazu gibt es zwei mögliche Lösungen:
- du verwendest valueFormat um den reading wert durch den wert zu ersetzen den du brauchst. etwas so:attr <rg> valueFormat {battery =>{ReadingsVal(substr($DEVICE,0,length("$DEVICE")-6),'Baterie','n.A.')} }
- deine <{...}> routine liefert direkt den namen des icons mit vorangestelltem % zurück. am besten über eine eigene rouinte in 99_myUtils.pm die du dann in etwas so aufrufst ...,<{myBat2Icon($DEVICE)}>,...
gruss
andre
Danke für die schnelle Rückmeldung
Zitat von: justme1968
- du verwendest valueFormat um den reading wert durch den wert zu ersetzen den du brauchst. etwas so:attr <rg> valueFormat {battery =>{ReadingsVal(substr($DEVICE,0,length("$DEVICE")-6),'Baterie','n.A.')} }
Das haut in alle anderen Werte
ZitatHASH(0x14e64a8)
rein statt der gelesenen Werte.
Zitat von: justme1968
- deine <{...}> routine liefert direkt den namen des icons mit vorangestelltem % zurück. am besten über eine eigene rouinte in 99_myUtils.pm die du dann in etwas so aufrufst ...,<{myBat2Icon($DEVICE)}>,...
http://forum.fhem.de/Themes/fhem-curve-green/images/bbc/quote.gif
Funktioniert, direkt in der ReadingsGroup
Zitat<%sani_heating>,<Act>,<Soll>,<Ist>,<Modus>,<Batterie> hz.*_Clima:ValvePosition,desired-temp,measured-temp,mode,<{if(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"battery","n.A.")eq"ok"){"%batterie\@green"}else{"%batterie\@red"}}>
Danke und Gruß
Christian
die erste version sollte eigentlich mit der aktuellen readingaGroup funktionieren.
wenn nicht nimm trozdem die varuante aber als { if($READING eq "battery") ... }
gruss
andre
Hallo,
die folgende Definition wollte ich vereinfachen:
define Anrufliste readingsGroup <Pos>,<Art>,<Datum>,<Name>,<Nummer>,<Dauer> meineFB:A0,B0,C0,D0,E0 meineFB:A1,B1,C1,D1,E1 meineFB:A2,B2,C2,D2,E2 meineFB:A3,B3,C3,D3,E3 meineFB:A4,B4,C4,D4,E4
in dem ich eine regex verwende:
define Anrufliste readingsGroup <Pos>,<Art>,<Datum>,<Name>,<Nummer>,<Dauer> meineFB:[A-E][0-4]
oder meineFb:A[0-4],B[0-4],C[0-4]..
zumindest für den letzten Fall hatte ich gehofft, dass mir die Liste angezeigt wird. Die readings sind belegt....
Wo liegt da der Denkfehler?
Gruß
Elektrolurch
regex ist zur zeit nur für devices und nicht für readings möglich.
da die regex auch keine sortierung erlaubt würde es dir nicht helfen.
gruss
andre
Ich hab mir eine readingsGroup zusammen gestellt. Dabei ist mir die Frage aufgekommen ob es möglich ist den einzelnen Einträgen ein Icon voranzustellen?
Gruß Svenson
- du kannst mit name icon den zeilen titel durch ein icon erstetzen
- du kannst mit <%icon> an beliebiger stelle ein icon hinzufügen also auch vor jeden reading wert.
wenn du ein icon und den device namen möchtest geht das in dem du den zeilen titel durch eine icon ersetzt und z.b. mit <{$ALIAS}> den alias in die readings liste mit einfügst.
gruss
andre
Hallo Andre,
Da mein Fhem, wenn ich die fhem.cfg speicher, abstürzt. Bin ich gerade dabei alle Fehlermeldungen zu debuggen.
Eine hab ich bei der readingsgroup. Die Fehlermeldung sieht folgendermaßen aus:
Argument "2.9 V" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 711.
Ich hab eine Readingsgroup, die den Batteriestatus aller meiner Geräte zusammenfasst. Die neuen Homematic DN-RT Regler, geben ja auch die Batteriespannung aus, ich hab dann einfach noch ein V hinten drangehangen, bei anderen macht das keine Probleme. Hier der Bereich aus meiner fhem.cfg:
define reading_battStatus readingsGroup .*:[Bb]attery,batteryLevel
attr reading_battStatus alias Batterie Status
attr reading_battStatus mapping %ALIAS
attr reading_battStatus notime 1
attr reading_battStatus valueFormat {"batteryLevel" => "%.1f V"}
Sagt dir der Fehler was?
es gab vor einiger zeit mal eine solche meldung. das sollte inzwischen aber in den meisten fällen behoben sein.
in der zeile 711 gibt es kein sprintf mehr. ich vermute du bist nicht ganz auf dem aktuelles stand.
gruss
andre
Danke, ich prüf das mal, ich hab vorhin noch ein Update gemacht, vielleicht gibt es da Zugriffsprobleme. Ausgerechnet das Problem hab ich nicht gegoggelt nur das mit meinem Sonos :-) Sorry.
die aktuelle version ist
Zitat# $Id: 33_readingsGroup.pm 5004 2014-02-20 19:52:01Z justme1968 $
gruss
andre
Danke, ich hab jetzt mal ein "update force" gemacht jetzt hab ich die Version, bisher ist der Fehler weg.
Hallo Andre,
wie gebe ich denn ein "%" - Zeichen über valueFormat in einer readingsGroup aus?
Wenn ich valueFormat so angebe:
'Laststellung' => '%d %'
bekomme ich in der readingsGroup eine Fehlermeldung, dass der Formatstring nicht vollständig ist. Klar.
Wenn ich:
'Laststellung' => '%d \%'
stattdessen eingebe, so erscheint allerdings dann der \ in der Ausgabe:
17 \%
Den Wert vorher formatieren über sprinft und dann im valueFormat als %s ausgeben, ist etwas unglücklich, denn wenn ich den Wert dann über ReadingsVal abfrage, ist er nicht mehr nummerisch und beim rechnen bringt perl dann Warnungen. Ich müsste ihn dann immer nach jeder Abfrage mit ReadingsVal über ein split vom "%" "befreien....
Gruß
Elektrolurch
Laststellung' => '%d %%
gruss
andre
Danke!!!! Du bist einfach der Größte!
Hallo Andre,
Zitat- du kannst mit name icon den zeilen titel durch ein icon erstetzen
- du kannst mit <%icon> an beliebiger stelle ein icon hinzufügen also auch vor jeden reading wert.
wenn du ein icon und den device namen möchtest geht das in dem du den zeilen titel durch eine icon ersetzt und z.b. mit <{$ALIAS}> den alias in die readings liste mit einfügst.
Mir gelingt es nicht ein Icon vor den reading wert zu bekommen. Den kniff mit dem <{$ALIAS}> bekomm ich nicht hin.
Ich kann zwar ein Icon anstelle des Titels anzeigen, aber das einfügen eines "beliebigen" Text nach dem Icon und vor dem Wert bekomm ich nicht hin.
Die readingGroup basiert in meinem Fall auf dem Weather Modul.
MyWeather:temperature,
MyWeather:humidity,
MyWeather:pressure,
MyWeather:wind_speed,
MyWeather:condition,
Hast du noch einen Tipp für mich?
Gruß Svenson
%ALIAS war falsch. es murr natürlich %READING sein.
also zum beispiel so:define rgWetter readingsGroup MyWeather:temperature MyWeather:humidity MyWeather:pressure
attr rgw nameIcon {temperature => 'temp_temperature', humidity => 'weather_humidity', pressure => 'weather_baraometric_pressure' }
attr rgw valueFormat <td>%READING<td>%s
oder ab morgen (ich hab eben noch ein layout problem repariert) einfach so:define rgw readingsGroup MyWeather:<%temp_temperature>,<temperature>,temperature MyWeather:<%weather_humidity>,<humidity>,humidity MyWeather:<%weather_baraometric_pressure>,<pressure>,pressure
ich hoffe jedenfalls so soll es aussehen.
gruss
andre
edit: die beispiele oben machen aus dem icon mit absicht eine extra spalte. wenn man das icon in die gleiche spalte wie den text einfügt hat man dann das gleiche problem wie mit den icons für die fhem devices die dan nicht mehr vertikal zum text zentriert sind.
Hallo Andre,
Update habe ich gemacht. Und es sieht schon mal etwas besser aus
ZitatMyWeather:<%temp_temperature>,<Temperatur>,temperature MyWeather:<%weather_humidity>,<Relative-Feuchte>,humidity MyWeather:<%weather_baraometric_pressure>,<Luftdruck>,pressure MyWeather:<%Icon_Fisch>,<Wind>,wind_speed MyWeather:<%Icon_Fisch>,<Wetter>,condition
führt aber dazu das alle Readings in einer Reihe stehen und nicht mehr zeilenweise.
Zitatdefine rgw readingsGroup MyWeather:<%temp_temperature>,<temperature>,temperature MyWeather:<%weather_humidity>,<humidity>,humidity MyWeather:<%weather_baraometric_pressure>,<pressure>,pressure
Dein Beispiel führt bei mir auch zu einer Anzeige in einer Reihe, statt in einzelnen Reihen.
Ist das so gewollt? Und was müsste ich tun um jedes Reading in eine eigene Zeile zu bekommen?
bei mir ist es nicht in einer reihe. siehe screenshot.
ich schaue gleich mal ob beim einchecken was schief gegangen ist.
gruss
andre
gerade probiert und und es geht. direkt aus dem post kopiert.
bist du sicher das das update ok war? da es genau das layout problem (fehlender zeilenumbruch wenn das erste objekt auf einer zeile ein icon ist) war das ich gestern repariert habe.
readingsGroup sollte jetzt diese version sein:
Zitat# $Id: 33_readingsGroup.pm 5032 2014-02-23 22:02:16Z justme1968 $
gruss
andre
ach mist, schlag mich. jetzt hab ich gut eine halbe Stunde rumprobiert und war zu blöd auch mal shutdown restart nach dem Update zu machen..... geht natürlich.
Jetzt hab ich trotzdem noch eine Kleinigkeit
ZitatMyWeather:<%weather_humidity>,<Relative Feuchte>,humidity
Text "Relative Feuchte"wird nicht angezeigt
ZitatMyWeather:<%weather_humidity>,<Relative-Feuchte>,humidity
Text "Relative-Feuchte" wird angezeigt.
Leerzeichen gehen dort scheinbar nicht. Ich kann mir aber so behelfen.
ja. leerzeichen sind nicht erlaubt. du kannst statt dessen verwenden. das problem ist die parse routine die nicht besonders intelligent ist.
wenn nicht reicht kannst du auf <{...}> ausweichen und eine sub aufrufen die den string mit leerzeichen zurück geben kann.
gruss
andre
Hi, noch eine Kleinigkeit,
wenn ich deinen beispiel in eine group tue und das ganze dann in eine Spalte einbinde (siehe Bild) wird das readingsGroup zusammen gedrückt. Ist diese group keiner Spalte (column) zugewiesen, wird sie richtig angezeigt.
Gerhard
schau mal ob dir das hilft: http://forum.fhem.de/index.php/topic,20643.msg141701.html#msg141701 (http://forum.fhem.de/index.php/topic,20643.msg141701.html#msg141701)
ansonsten schau dir mal DASHBOARD an. da wird die readingsGroup richtig dargestellt.
gruss
andre
o.k.
ich habe darkstyle.css wie vorgeschlagen geendert (siehe Bild), alles gut.
@rudi: das wollte Uli am WE testen, hier das Ergebniss.
Gerhard
@Andre
der Fehler ist wieder aufgetaucht, aber andere Zeile: Argument "2.9 V" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 493.
Ich hab folgende Version im Einsatz:
# $Id: 33_readingsGroup.pm 5004 2014-02-20 19:52:01Z justme1968 $
Ich hab gesehen es gibt auch schon wieder ein Update, werde ich mal einspielen.
zeig mal bitte die definition deiner readings group. je nach wert musst du mehr machen als nur %1.f zu verwenden. wenn im reading z.b. wie in deinem fall noch eine einheit dahinter steht.
gruss
andre
define reading_battStatus readingsGroup .*:[Bb]attery,batteryLevel
attr reading_battStatus alias Batterie Status
attr reading_battStatus mapping %ALIAS
attr reading_battStatus notime 1
attr reading_battStatus valueFormat {"batteryLevel" => "%.1f V"}
Danke fürs prüfen.
Hi,
ich habe ein Reading das wie folgt aussieht:
outside_temp: 6.1 flow_temp: 26.8 return_temp: 27.5 hot_gas_temp: 58.9 dhw_temp: 46.8 flow_temp_HC2: -60 evaporator_temp: 1.9 condenser_temp: 28.3 Mixer_open: 0 Mixer_closed: 1 HeatPipeValve: 0 DiverterValve: 0 DHW_Pump: 0 HeatingCircuit_Pump: 0 Solar_Pump: 0 Compressor: 0 BoosterStage3: 0 BoosterStage2: 0 BoosterStage1: 0 HighPressureSensor: 1 LowPressureSensor: 0 EvaporatorIceMonitor: 0 SignalAnode: 0 EVU_release: 1 OvenFireplace: 0 STB: 0 OutputVentilatorPower: 17 InputVentilatorPower: 17 MainVentilatorPower: 0 OutputVentilatorSpeed: 21 InputVentilatorSpeed: 19 MainVentilatorSpeed: 0 Outside_tempFiltered: 6.5 Rel_humidity: 0 DEW_point: 532 P_Nd: 5.32 P_Hd: 12.6 Actual_power_Qc: 0 Actual_power_Pel: 0 collector_temp: 6.5
Ich moechte in einer Readingsgroup aber nicht den ganzen Schlauch, sondern nur gezielt einzelne Werte hieraus haben um diese letztendlich im Dashboard anzuzeigen.
Ich hab leider nicht rausgefunden wie das funktioniert. Alternativ war ich einfach zu blind :)
Hoffe ihr habt ne Loesung :)
Danke,
Markus
readingsGroup ist hauptsächlich dafür gemacht aus einzelnen readings eine eine formatierte übersicht zu machen. das was du möchtest geht zumindest nicht einfach und effizient.
wo kommen denn die ganzen werte her? warum stecken sie alle in einem reading?
den bandwurm wieder auseinander zu nehmen ist nicht der optimale weg. erst recht wenn das ganze per longpoll aktualisiert werden soll.
wenn es irgend wie geht solltest du die werte als einzelne readings irgendwo haben und erst in einem zweiten schritt eine readingsGroup zum anzeigen verwenden.
wenn du tatsächlich nur das lange ding hast würde ich das zuerst mal auftrennen und einzelne readings draus machen. per userReadings oder mit einem notify.
gruss
andre
das kommt vom Modul thz
muss mir die User readings mal ansehen.
danke
markus
hallo andre,
sind (werden) die änserungen in darkstyle.css eingechekt??, rudi hat sich dazu nicht geäusert, oder wartet noch auf tests von Uli?
Gerhard
ich weiss nicht mehr als du...
gruss
andre
Hi,
Ich habe ein Problem mit meiner readingsGroup.
Internals:
DEF <%sani_heating>,<Mode>,<Ventil>,<Temp>,<Wunsch>,<Fenster> TYPE=FHT:mode,actuator,measured-temp,desired-temp,window
NAME Heizungswerte
NR 705
NTFY_ORDER 50-Heizungswerte
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
az.hz 1
ba.hz 1
ku.hz 1
sz.hz 1
ve.hz 1
wz.hz 1
DEVICES:
ARRAY(0x187cfc0)
ARRAY(0x14819a0)
ARRAY(0x18a7238)
ARRAY(0x16dac50)
ARRAY(0x1555ae0)
ARRAY(0x14a8ab8)
ARRAY(0x16d27b0)
Fhem:
last_update 1393764656.6148
Attributes:
commands { 'mode.manual' => 'set $DEVICE mode auto', 'mode.auto' => 'set $DEVICE mode manual', 'desired-temp' => 'desired-temp:' }
fp_1_Veranda 5,5,0,
group Heizungswerte
noheading 1
nolinks 1
room Heizung
sortDevices 1
valueFormat {"measured-temp" => "%.1f°C"}
valueIcon { "mode.auto" => "sani_heating_automatic\@green", "mode.manual" => "sani_heating_manual\@yellow", "window.closed" => "fts_window_1w\@green", "window.open" => "fts_window_1w_open\@red" }
Es wird kann nur die erste Temperatur im Floorplan gesetzt werden. Bei den anderen kommt folgende Fehlermeldung:
ERROR: Floorplan 1_Veranda&arg.sz.hz=desired-temp&dev.sz.hz=sz.hz&val.sz.hz=11.5&cmd.sz.hz=set not defined
Unter fhemweb funktionieren alle Links.
betrifft es nur das menü für desired-temp oder auch die direkten links?
gruss
andre
Hallo Andre,
probiere gerade mit dem attr xx comands herum. Sieht ja Klasse aus, habe aber da doch ein paar Fragen.
1. Hatte mit
attr Hz_rg valueFormat {'Anlagenfrostschutz' => '%.1f C'}
und so ähnlich mir formatierte Ausgaben für die readings der HzAnlage definiert.
Nun kommt jetzt die Eingabe dazu:
attr Hz_rg commands {'HzAnlage.Anlagenfrostschutz' => "Anlagenfrostschutz:textField"}
definiert und ein mapping für die Namen in der ersten Spalte.
Nach der Definition von commands rutsch der Wert in die dritte Spalte und der Namen wird wiederholt (Klar, steht ja auch da vor dem textField und geöhrt ja zum notify, welches nach Eingabe an die HzAnlage gesandt wird?)
Aber mir fehlt jetzt das Format, sprich das "Grad C". Wie bekomme ich das hinter das Textfeld?
2. Ich habe zum Teil mehrere Werte in einer Zeile, z.B. Solarvorlauftemp,Solarrücklauftemp, so dass das mapping so aussieht:
'Solarvorlauftemp' => 'Solar Temp. (Vor/Rück)'
Den Text vor dem Textfeld kann man wohl nicht unterdrücken?
3. Wenn man die Beschriftungen vor den Eingabefeldern beibehalten muss, könnte man auf die Bezeichner in der ersten Spalte ja dann eigentlich verzichten. Kann man das mapping für die erste Spalte unterdrücken, so dass das/die Textfelder mit Bezeichner ganz nach links rutschen?
4. Was ja ganz witzig ist:
Habe in dem Modul mir für die set-Funktion auch die ? - Option implementiert und da die HzAnlage Bereichsgrenzen für eine gültige Eingabe liefert, habe ich die mal durch 10 dividiert und mir die Werte für ein Menü gleich hinter der set-Ausgabe angehängt.
Setzt man nun bei commands statt "textField" nichts ein, so erscheint automatisch diese Menüliste. Sehr schön!
Aber ev. hast Du für 1. und 2. einen Tipp?
Gruß
Elektrolurch
du kannst den text vor dem textfeld bzw dem drop down menü über mapping auf "" bzw (d.h. nichts) mappen. dann verschwindet es (fast).
damit sollte 1. und 2. dann besser aussehen.
ja. genau. so sollte es sein. wenn du nichts angibst wird der interne default von fhemweb genommen. du kannst aber auch etwas angeben das nur eine untermenge des defaults ist. also z.b. desired-temp auf einen bestimmten bereich beschränken.
gruss
andre
Hallo Andre,
das ging ja flott.
Mapping: Geht denn das auf jede Spalte? Ich dachte immer nur auf die Erste?
Müsste das dann so heissen:
..mapping {HzAnlage.Anlagenfrostschutz' => 'Temp. für 'Anlagenschutz', 'Anlagenfrostschutz:' => ""} ?
wenn wie oben das command = Anlagenfrostschutz:textField lautet?
Und gibt es noch eine Möglichkeit hinter dem Textfeld die Einheit auszugeben? (K, l/min, Grad C usw)?
Gruß
das mapping geht immer dort wo automatisch ein reading name eingeblendet wird. das ist normalerweise nur die erste spalte. der text for den commands ist die ausnahme wo das dann auch geht.
du kannst die einheiten in einer eigenen spalte mit <text> dahinter schreiben (also <K>,<l/min>,...). es dürfen nur keine leerzeichen enthalten sein.
gruss
andre
Zitat von: justme1968 am 03 März 2014, 13:36:59
betrifft es nur das menü für desired-temp oder auch die direkten links?
Die direkten Links funktionieren.
Hallo Andre,
noch Mal eine Frage zum Textfeld/Menü in der readingsGroup, wobei ich vermute, dass die Aussage / Frage allgemeinerer Natur is?
Ich baue ja gerade ein Modul für meine Heizungsanlage, die lesenden Werte kommen alle, schreiben in die Anlage bin ich gerade dabei.
Nun ist mir aufgefallen, dass wenn ich einen Wert in einem Textfeld ändere, der sofort auch im Reading der Heizungsanlage steht, ohne dass der natürlich tatsächlich an die Hz gesendet wurde. Klassisch würde ich jetzt ein notify an die Hz hängen und dass so abfangen. Aber in einem Modul hat ja ein anderes Modul nichts zu suchen. Also, wie bekommt jetzt das Modul mit, dass das Reading sich ändern möchte?
Gibt es da so etwas ähnliches, wie die AttrFN?
In der fhem.pl konnte ich da nichts adäquates finden.
Gruß
Elektrolurch
über NotifyFn kannst du das mitbekommen. aber eigentlich ist das nicht sauber und auch nicht wirklich effizient.
wenn du ein eigenes modul schreibst solltest du dafür ein set kommando vorsehen.
gruss
andre
Hallo Andre,
Die entsprechende set - Funktion habe ich ja schon, die wird aber doch nicht automatisch aufgerufen, wenn die Eingabe im Textfeld / die MeMenü - Auswahl abgeschlossen ist.
Also bleibt doch n Wo ist das dokumentiert?
Parameter: Name, ReadingName, Value ? Oder statt Name den hash?
Und return undef, wenn das Reading vom Wert ok ist?
ur das NotifyFN.
wenn das set nicht automatisch aufgerufen wird stimmt etwas anderes noch nicht.
NotifyFn funktioniert nur so einfach. und du kannst dort nicht mehr werte überprüfen. das ist schon zu spät. du kannst nur mitbekommen das er gesetzt wurde.
die setFn ist wirklich die richtige stelle.
gruss
andre
Verstehe ich aber trotzdem nicht, Deine Antwort.
Wenn ich in das Textfeld etwas eingebe, so wird sofort das Reading auf den neuen Wert gesetzt... Was ja ggfs. zu verhindern wäre.
Da nützt die Implementierung einer set-Funktion doch auch nichts.
Ich stehe da offensichtlich auf dem Schlauch...
das mit dem sofort setzen sollte nur bei dummys so sein.
bei 'echten' devices mit einem passenden set sollte das nicht so sein.
bitte teste es mal mit einem menü oder slider.
gruss
andre
Hallo Andre,
also: Bei "Anlagenfrostschutz:texdtField" wird das Reading sofort gesetzt.
bei "Anlagenfrostschutz:-10,-5,0,5,10" passiert nach Auswahl des Menüpunktes nichts, der Wert des Readings bleibt auf dem alten Wert.
Wird da tatsächlich die setFN aufgerufen?
Ok. Steht im Log. Setze nur noch nicht den Wert an der HzAnlage (einmal für 10 und für -10):
2014.03.04 12:14:24 3: UNMETH_TEMP: low 100 high 0
2014.03.04 12:14:24 4: Wcmcom set HzAnlage Anlagenfrostschutz 10 low 100 high 0
2014.03.04 12:14:24 4: Wcmcom set.. telegram {"prot":"coco","telegramm":[[10,0,2,2560,0,0,100,0]]}
2014.03.04 12:15:13 3: UNMETH_TEMP: low 156 high 255
2014.03.04 12:15:13 4: Wcmcom set HzAnlage Anlagenfrostschutz -10 low 156 high 255
2014.03.04 12:15:13 4: Wcmcom set.. telegram {"prot":"coco","telegramm":[[10,0,2,2560,0,0,156,255]]}
Heißt also, ich muss verifizieren, was die Hz draus macht und dann das Reading danach selbst setzen?
Und was ist mit dem "textField"?
Ist das ein Bug und warum hat den bisher niemand bemerk?
Gruß
Elektrolurch
ja natürlich musst du die readings aus deinem set selber passend setzen. da gibt es keinen Automatismus. genau da kannst du ja dann passend reagieren.
textField war bis jetzt nur in verbindung mit einem dummy verwendent und über ein notify ausgewertet. ich habe jetzt hier: http://forum.fhem.de/index.php/topic,14701.msg145182.html#msg145182 (http://forum.fhem.de/index.php/topic,14701.msg145182.html#msg145182)einen kleinen patch gepostet bei dem angegeben werden kann ob set oder wie bisher setreading verwendet werden soll.
du würdest dann in einem modul <cmd>:textField,set
verwenden.
gruss
andre
Ok, prima. Probiere ich morgen aus.
Das wäre auch eine sinnvolle Ergänzung zu Stefans "Einsteiger-Doku" für das programmiern von Modulen.
Ich bin da schon beim dummy drüber gestolpert, da musste ich nämlich auch einige Verrenkungen machen, um inkorrekte Datums- und Zeitangaben abzufangen, die nämlich auch dann immer schon im Reading standen. Ich hatte mir nämlich neben dem Textfeld dafür noch einen "set" - Knopf gesetzt, um auf Plausi checken zu können, bzw. mir ein notify auf die Redings gesetzt (zweiter Fall). Also zwei verschiedene Wege...
Zitat von: strauch am 26 Februar 2014, 12:35:42
define reading_battStatus readingsGroup .*:[Bb]attery,batteryLevel
attr reading_battStatus alias Batterie Status
attr reading_battStatus mapping %ALIAS
attr reading_battStatus notime 1
attr reading_battStatus valueFormat {"batteryLevel" => "%.1f V"}
Danke fürs prüfen.
@andre kannst du hier noch mal drüber schauen ob ich einen Fehler habe?
ich kann keinen fehler finden. bist du ganz sicher das das batteryLevel reading wirklich bei allen devices nur eine zahl ohne einheiten enthält?
gruss
andre
Ah du hast recht. Das ist wohl irgendwann nachgepflegt worden. Früher stand noch kein V bei der Spannung inzwischen steht das so auch in den Readings. Danke. Habs entfernt, mal schauen.
Hallo,
das mit den Einheiten ist so ein generelles Problem, wenn das device die Einheiten im Reading mitliefert, hat man später Probleme mit dem Rechnen / Vergleichen. Zumindest spuckt perl dann immer Fehlermeldungen aus. Ich bin der Meinung, das Device soltle nur den Wert liefern, die Einheit gehört immer in die Darstellungsebene.
Gruß
Elektrolurch
ja.
eigentlich sollten alle readings ohne einheiten sein.
am besten fragst du mal beim modul autor an.
gruss
andre
Dann schreib ich dem Martin mal ne PN. Wobei ich dachte dafür gibts %EVPART1 2 usw.?
hi leute,
ich hab seid n paar tagen folgenden fehler immer wieder mal im log:
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE Temp$/ at ./FHEM/33_readingsGroup.pm line 491.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE Temp$/ at ./FHEM/33_readingsGroup.pm line 496.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE Temp$/ at ./FHEM/33_readingsGroup.pm line 780.
meine readingsgroup-cfg sieht wie folgt aus:
define rgTHZ readingsGroup Mythz:*Temp
attr rgTHZ group THZ
kann mir hier jemand weiterhelfen?
danke
markus
es muss .*Temp heißen.
gruss
andre
shitfuckmistpunkt! :) und ich such mir hier stundenlang einen nach dem fehler ab...
danke, funktioniert hats trotzdem.
gruß
markus
Hallo!
Ich wollte gerade bei einer readingsGroup das nameStyle Attribut anwenden. Leider schaff ich es nicht nur einen Namen klein geschrieben darzustellen.
nameStyle { if($READING eq "clearDate"){ style="font-size:10px;" } }
Kann es sein das ich nur alle Namen gleichzeitig um-stylen kann und nicht jeden für sich selbst?
Grüße
das sollte auch unterschiedlich gehen. da steckt die gleiche routeine dahinter.
mach mal bitte ein komplettes beispiel das probleme hat.
gruss
andre
Hier die list meiner RG:
Internals:
CFGFN ./FHEM/readingsGroups.cfg
DEF d_stromverbrauchAllgemein:,<Aktuell>,power,<Durchschnitt Heute / Monat>,<{ReadingsVal("d_stromverbrauchAllgemein","power_avg_day","").' W / '.ReadingsVal("d_stromverbrauchAllgemein","power_avg_month","").' W';}>
d_stromverbrauchAllgemein:,<Min / Max Heute>,<{ReadingsVal("d_stromverbrauchAllgemein","power_min_day","").' W / '.ReadingsVal("d_stromverbrauchAllgemein","power_max_day","").' W';}>,<Min / Max Monat>,<{ReadingsVal("d_stromverbrauchAllgemein","power_min_month","").' W / '.ReadingsVal("d_stromverbrauchAllgemein","power_max_month","").' W';}>
hourCounterAllgemein:,<Heute>,countsPerDay,<Gestern>,appCountsPerDay
hourCounterAllgemein:,<Aktuelle Stunde>,appCountsPerHourTemp,<Letzte Stunde>,appCountsPerHour
hourCounterAllgemein:,<Aktuell Woche>,appCountsPerWeekTemp,<Letzte Woche>,appCountsPerWeek
hourCounterAllgemein:,<Aktuells Monat>,appCountsPerMonthTemp,<Letztes Monat>,appCountsPerMonth
hourCounterAllgemein:,<Gesamt>,countsOverall,<Start der Messung>,clearDate
NAME stromverbrauchAllgemeinRG
NR 577
NTFY_ORDER 50-stromverbrauchAllgemeinRG
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
d_stromverbrauchAllgemein 1
hourCounterAllgemein 1
DEVICES:
ARRAY(0x7fe042bab0a8)
ARRAY(0x7fe043ad9250)
ARRAY(0x7fe043aea008)
ARRAY(0x7fe045808ac8)
ARRAY(0x7fe0458c8190)
ARRAY(0x7fe043ccb660)
ARRAY(0x7fe045a93240)
Fhem:
last_update 1394970913.34849
Attributes:
alias Stromverbrauch
group Stromverbrauch Allgemein
mapping
nameStyle { if($READING eq "clearDate"){ 'style="font-size:10px"' } }
noheading 1
room 5.2 Strom
valueFormat { if($DEVICE eq "d_stromverbrauchAllgemein"){ sprintf("%.2f W", $VALUE);}elsif($READING eq "clearDate"){ sprintf("%s", $VALUE); } else{sprintf("%.2f kWh", $VALUE/1000);} }
valueStyle { stromverbrauchGesamtAllgemeinRGvalueStyle($DEVICE,$READING,$VALUE); }
valueStyle aus 99_myUtils
sub stromverbrauchGesamtAllgemeinRGvalueStyle($$$){
my $device = shift;
my $reading = shift;
my $value = shift;
# hourCounter Values sind in W
if( $reading eq "state" ){
if( $value > 3000 ){
'style="color:red"'
}
elsif( $value > 2000 ){
'style="color:orange"'
}
else{
'style="color:green"'
}
}
elsif( ( $reading eq "power_avg_day" || $reading eq "power_avg_month" ) ){
if( $value > 300 ){
'style="color:red"'
}
elsif( $value > 250 ){
'style="color:orange"'
}
else{
'style="color:green"'
}
}
elsif( ( $reading eq "countsPerDay" || $reading eq "appCountsPerDay" ) ){
if( $value > 5000 ){
'style="color:red"'
}
elsif( $value > 4000 ){
'style="color:orange"'
}
else{
'style="color:green"'
}
}
elsif( ( $reading eq "countsPerWeek" || $reading eq "appCountsPerWeek" ) && $value > 35000 ){
'style="color:red"'
}
elsif( ( $reading eq "countsPerMonth" || $reading eq "appCountsPerMonth" ) && $value > 140000 ){
'style="color:red"'
}
elsif( $reading eq "clearDate" ){
'style="font-size:10px"'
}
else{
'style="color:green"'
}
}
Ist mein code falsch?
Grüße
Zitat von: fhainz am 16 März 2014, 12:59:33
Hier die list meiner RG:
Internals:
CFGFN ./FHEM/readingsGroups.cfg
DEF d_stromverbrauchAllgemein:,<Aktuell>,power,<Durchschnitt Heute / Monat>,<{ReadingsVal("d_stromverbrauchAllgemein","power_avg_day","").' W / '.ReadingsVal("d_stromverbrauchAllgemein","power_avg_month","").' W';}>
d_stromverbrauchAllgemein:,<Min / Max Heute>,<{ReadingsVal("d_stromverbrauchAllgemein","power_min_day","").' W / '.ReadingsVal("d_stromverbrauchAllgemein","power_max_day","").' W';}>,<Min / Max Monat>,<{ReadingsVal("d_stromverbrauchAllgemein","power_min_month","").' W / '.ReadingsVal("d_stromverbrauchAllgemein","power_max_month","").' W';}>
hourCounterAllgemein:,<Heute>,countsPerDay,<Gestern>,appCountsPerDay
hourCounterAllgemein:,<Aktuelle Stunde>,appCountsPerHourTemp,<Letzte Stunde>,appCountsPerHour
hourCounterAllgemein:,<Aktuell Woche>,appCountsPerWeekTemp,<Letzte Woche>,appCountsPerWeek
hourCounterAllgemein:,<Aktuells Monat>,appCountsPerMonthTemp,<Letztes Monat>,appCountsPerMonth
hourCounterAllgemein:,<Gesamt>,countsOverall,<Start der Messung>,clearDate
NAME stromverbrauchAllgemeinRG
NR 577
NTFY_ORDER 50-stromverbrauchAllgemeinRG
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
d_stromverbrauchAllgemein 1
hourCounterAllgemein 1
DEVICES:
ARRAY(0x7fe042bab0a8)
ARRAY(0x7fe043ad9250)
ARRAY(0x7fe043aea008)
ARRAY(0x7fe045808ac8)
ARRAY(0x7fe0458c8190)
ARRAY(0x7fe043ccb660)
ARRAY(0x7fe045a93240)
Fhem:
last_update 1394970913.34849
Attributes:
alias Stromverbrauch
group Stromverbrauch Allgemein
mapping
nameStyle { if($READING eq "clearDate"){ 'style="font-size:10px"' } }
noheading 1
room 5.2 Strom
valueFormat { if($DEVICE eq "d_stromverbrauchAllgemein"){ sprintf("%.2f W", $VALUE);}elsif($READING eq "clearDate"){ sprintf("%s", $VALUE); } else{sprintf("%.2f kWh", $VALUE/1000);} }
valueStyle { stromverbrauchGesamtAllgemeinRGvalueStyle($DEVICE,$READING,$VALUE); }
valueStyle aus 99_myUtils
sub stromverbrauchGesamtAllgemeinRGvalueStyle($$$){
my $device = shift;
my $reading = shift;
my $value = shift;
# hourCounter Values sind in W
if( $reading eq "state" ){
if( $value > 3000 ){
'style="color:red"'
}
elsif( $value > 2000 ){
'style="color:orange"'
}
else{
'style="color:green"'
}
}
elsif( ( $reading eq "power_avg_day" || $reading eq "power_avg_month" ) ){
if( $value > 300 ){
'style="color:red"'
}
elsif( $value > 250 ){
'style="color:orange"'
}
else{
'style="color:green"'
}
}
elsif( ( $reading eq "countsPerDay" || $reading eq "appCountsPerDay" ) ){
if( $value > 5000 ){
'style="color:red"'
}
elsif( $value > 4000 ){
'style="color:orange"'
}
else{
'style="color:green"'
}
}
elsif( ( $reading eq "countsPerWeek" || $reading eq "appCountsPerWeek" ) && $value > 35000 ){
'style="color:red"'
}
elsif( ( $reading eq "countsPerMonth" || $reading eq "appCountsPerMonth" ) && $value > 140000 ){
'style="color:red"'
}
elsif( $reading eq "clearDate" ){
'style="font-size:10px"'
}
else{
'style="color:green"'
}
}
Ist mein code falsch?
Grüße
Hallo fhainz, kannst du mir sagen wie du die einzelnen Werte im Reading ermittelst?
Hallo!
Die bekomme ich vom HourCounter (http://www.fhemwiki.de/wiki/HourCounter) Modul.
Grüße
Cool Danke!
da das label von deinem clearDate nicht automatisch von der readingsGroup erzeugt wird sondern von dir über das <Start der Messung>. d.h. du kannst nicht auf clearDate prüfen. das readinsg oder der value auf den du prüfen musst heisst so wie das label das du selber vergeben hast. am besten baust du mal ein Log ein und schaust was wirklich ankommt.
gruss
andre
Zitat von: justme1968 am 16 März 2014, 15:47:27
da das label von deinem clearDate nicht automatisch von der readingsGroup erzeugt wird sondern von dir über das <Start der Messung>. d.h. du kannst nicht auf clearDate prüfen.
Aber klar, ich ja den Namen und nicht den Wert ändern. -.-
Danke nun klappts natürlich!
Grüße
Hallo Zusammen,
da ich Homematic-Geräte benutze, habe ich das Heizungswerte2-Beispiel aus dem Wiki (http://www.fhemwiki.de/wiki/ReadingsGroup) für mich etwas angepasst.
Durch einen eingebauten Log
{Log 1, "myTemplisten_HeizungUpDown: return -> $ret "};
am Ende der Routine myTemplisten_HeizungUpDown($$) (unmittelbar vor dem return), habe ich festgestellt, dass diese Routine (auch bei Inaktivität) alle paar Minuten mehrfach aufgerufen wird, wenn ich die Readingsgroup im Webfrontend anzeigen lasse. Ist das normal?
Abgesehen davon, regiert das Setzen der "neuen" Temperaturen beim Klicken auf Up oder Down sehr träge.
(...)
2014.03.24 14:32:23.481 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:32:23.512 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:32:23.986 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:32:24.017 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:32:24.258 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:32:24.289 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:32:24.528 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:32:24.559 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:32:24.644 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:32:24.973 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:32:25.002 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:32:25.086 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:32:25.402 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:32:25.432 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:32:25.661 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:32:25.691 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
(...)
2014.03.24 14:35:24.323 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:35:24.386 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:35:25.410 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:35:25.471 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:35:25.977 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:35:26.037 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:35:26.527 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:35:26.591 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:35:26.762 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:35:27.473 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:35:27.536 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:35:27.707 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:35:28.357 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:35:28.420 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
2014.03.24 14:35:28.902 1: myTemplisten_HeizungUpDown: return -> %control_arrow_upward@red%setreading Hzkp_Flur desired-new 19.5
2014.03.24 14:35:28.960 1: myTemplisten_HeizungUpDown: return -> %control_arrow_downward@blue%setreading Hzkp_Flur desired-new 18.5
(...)
Danke und Gruß
Christoph
je nach genauer konfiguration wird die routine bei jeder änderung an einem reading aufgerufen das einfluss auf die anzeige haben kann.
das kannst du minimieren wenn du bei allen beteiligten devices event-on-change-reading entsprechend setzt.
gruss
andre
Danke für den Hinweis - werde ich mal ausprobieren.
Kann das auch die Ursache für das träge Schaltverhalten sein?
da müsstes du mehr logs liefern.
bei allen tests die ich gemacht hatte hat das userinterface immer sofort reagiert. egel wie schnell geklickt habe.
gruss
andre
Wie man im obigen Log sieht, wird in der Routine myTemplisten_HeizungUpDown($$) bei einem Notify jeweils in die Zweige if( $CMD eq "up" ) { und if( $CMD eq "down" ) { verzweigt - und das obwohl nicht im Frontend angeklickt wird. Das ist aber doch definitiv nicht normal. Oder?
in meiner ursprünglichen version wurden die pfeile abhängig von der soll temperatur eingefärbt und deshalb würde da die routine z.b. bei jedem notify auf desired aufgerufen.
du kannst in der readingsGroup angeben für welche readings der code zuständig ist.
gruss
andre
Zitat von: justme1968 am 24 März 2014, 14:47:29
bei allen tests die ich gemacht hatte hat das userinterface immer sofort reagiert. egel wie schnell geklickt habe.
Das träge Schaltverhalten liegt ziemlich eindeutig am RasPI. Ich habe testhalber FHEM mal auf meinem Notebook laufen lassen. Ergebnis: sofortige Reaktion beim Klicken auf Up bzw Down.
Jetzt muss ich mal schauen, wo der RasPI hier bremst. Webfrontend ist sowieso recht langsam unter dieser Konfiguration. Vielleicht sollte ich auf eine andere Plattform ausweichen....
Ich habe mal im FLOORPLAN eine Logausgabe eingefügt.
Floorplan bringt Fehlermeldung:
ERROR: Floorplan 1_Veranda&arg.ba.hz=desired-temp&dev.ba.hz=ba.hz&val.ba.hz=17.5&cmd.ba.hz=set not defined
Im Logfile steht folgende URL-pfad
2014.03.28 18:42:14 3: FLOORPLAN:floorplan/1_Veranda&arg.ba.hz=desired-temp&dev.ba.hz=ba.hz&val.ba.hz=17.5&cmd.ba.hz=set
Bei funktionierenden Befehl steht noch "/Heizungswerte?" anstelle des 1. "&" drin.
2014.03.28 18:42:53 3: FLOORPLAN:floorplan/1_Veranda/Heizungswerte?arg.ve.hz=desired-temp&dev.ve.hz=ve.hz&val.ve.hz=20.5&cmd.ve.hz=set
Wieso wird nur bei der ersten Zeile die Name der Readingroup eingefügt und bei den anderen nicht?
ich kann das problem reproduzieren. ich habe aber noch überhaupt keine idee wie es dazu kommt.
auf den 'normalen fhemweb seiten' werden die dropdown menüs in der readings group so wie jedes andere element per POST abgesendet.
auf dem floorplan werden sie mit GET abgesendet. und dabei stimmt dann die url nicht. es schaut gerade eher so aus als ob es zufall ist das die erste zeile doch geht.
mal sehen was ich noch rausfinde....
gruss
andre
ich habe eine lösungsidee mal sehen was ulim dazu sagt. es müsste dazu eine kleinigkeit am floorplan geändert werden.
gruss
andre
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
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
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
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
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
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
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
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
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
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
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
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
vorsicht: vor und nach dem doppelpunkt darf natürlich kein leerzeichen sein.
gruss
andre
Könntet ihr netterweise ein komplettes Beispiel zeigen? Das wäre zu meinem Verständnis super nett
Gesendet von meinem iPhone mit Tapatalk
ein beispiel wofür?
im wiki gibt es eine ganze seite mit beispielen...
gruss
andre
Hiho,
könnt ihr bitte mal mit der angehängten floorplan-Version testen?
Ins FHEM-Verzeichnis kopieren, danach reload oder restart nicht vergessen.
Falls es nicht funktioniert, bitte in den Zeilen 231-237 das Kommentarzeichen am Zeilenanfang entfernen, nochmal reload, dann Fehler produzieren und den Log-Auszug posten.
Gruß, Uli
Mit dem neuen Floorplan kann ich jetzt meine Werte schalten.
Zitat von: stromer-12 am 07 April 2014, 22:53:17
Mit dem neuen Floorplan kann ich jetzt meine Werte schalten.
D.h. aus Deiner Sicht sind damit alle Probleme behoben und ich kann's so einchecken?
Hab den Fred hier nicht verfolgt - hatte ausser Dir noch jemand Probleme und müsste bestätigen?
Gruß, Uli
Ich habe jetzt nur das von mir geschilderte Problem getestet, weitere Test habe ich nicht durchgeführt.
hi,
ich hab einen fehler und komm leider nicht ganz dahinter...
ich hab in der readingsgroup werte verschiedener typen.
wenn ich nun bei einigen ein icon und bei anderen den wert anzeigen will funktioniert das auch.
allerdings mit folgendem fehler im log:
Useless use of a constant (%1.f °C) in void context at (eval 24928) line 1.
Useless use of a constant (KollektorTemp) in void context at (eval 24928) line 1.
mein code fuer valueFormat:
{if($VALUE eq 'summer' || $VALUE eq 'winter') {($VALUE eq 'summer')?"weather_sun":"weather_frost"} else{AussenTemp => '%1.f °C', VorlaufTemp => '%1.f °C', AussenTemp=> '%1.f °C', RuecklaufTemp=> '%1.f °C', WWTemp=> '%1.f °C', KollektorTemp=> '%1.f °C'}}
help? =)
danke,
markus
Hallo Andre,
noch Mal zum Thema "mapping":
Folgendes kann ich derzeit nicht abbilden:
In der ersten Spalte soll eine fortlaufende Nummer stehen, wie z.B. 1 ... 31. Sind die Readings für den entsprechenden Tag nicht gesetzt, soll die Zeile auch nicht angezeigt werden, d.h. so was geht nicht:
define myrg readingsGroup <Monatsstatistik> Solardaten,<1.>,1-Solarenergie,1-Laufzeit ... Solardaten,<31>,31-Solarenergie,31-Laufzeit
Sind für den entsprechenden Tag die Readings nicht gesetzt, so erscheint trotzdem die leere Zeile mit der Tagesnummer.
Was hilfreich wäre, wäre eine Variable (wie z.B. %ROOM oder %DEVICE), die die Zeilennumer beinhaltet, z.B. %ROW,
dann könnte man das Mappping leicht vereinfachen, so z.B.
attr myrg mapping {'Solardaten' => "%ROW."}
oder
attr myrg mapping %ROW. ?
dann würde in der ersten Spalte "1." .. "31." erscheinen, wenn dafür Readings bestehen.
Wäre das eine sinnvolle Ergänzung?
Ich habe 5 readingsGroup, bei denen ich das brauchen könnte und dies bislang unter Ausnutzung des Bugs realisiert.
Gruß
Elektrolurch
Hallo Andre,
warum dürfen in <> - Ausdrücken keine Leerzeichen vorkommen?
Beispiel:
HzAnlage:<Aktualisiert um>,UpdateTime-SOL_P
Die ganze Zeile wird nicht ausgegeben.
So geht's, ist aber nicht schön:
HzAnlage:<Aktualisiert-um>,UpdateTime-SOL_P
Den Text in " " oder ' ' setzen, bringt auch nichts, da dann diese Zeichen in der Ausgabe erscheinen.
Und hier noch ein Problem:
Dieser Ausdruck bringt fhem zum Absturz mit der Meldung: unmatched () in regex:
HzAnlage:<Leistung-(akt,max,um>,Leistung,Max-Leistung,Max-Leistung-Zeit
Ich hatte hinter dem "um" die ) vergessen.
Aber warum wird der Text als regex interpretiert? Könnte man zumindest für die <> - Ausdrücke noch '' oder "" auswerten, um zu verhindern, dass der Ausdruck geparst wird?
Und noch eine Frage?
Wie kann ich die Ausgabe in der ersten Spalte unterdrücken, so dass der statische Text von HzAnlage:<text> in der ersten Spalte ausgegeben wird?
Wenn ich kein mapping definiere, erscheint in der ersten Spalte das alias von HzAnlage, wenn ich
attr HzAnlage_SOL_P_rg mapping {'HzAnlage' => ''}
erscheint zwar kein Text in der ersten Spalte...
Welche Möglichkeit besteht also die erste Spalte ganz auszublenden?
Gruß
Elektrolurch
das mit der zeilennummer kann ich einbauen. kein problem.
zwischen den < > dürfen kein leerzeichen sein weil das parsen sonst zu unhandlich wird und ich bis jetzt zu faul war das richtig zu bauen. du kannst aber statt dem leerzeichen en verwenden.
ich schau mal woher die meldung und der absturz kommt. ich dachte ich hatte inzwischen alle stellen abgefangen. alles zwischen den <> wird interpretiert um dort für die <{...}> variante den perl code ausführen zu könne.
du kannst zur zeit die erste spalte nicht ganz weg lassen sondern nur mit etwas leerem füllen. z.b.
ich schau mal ob mir da was einfällt.
gruss
andre
Ok. Das wäre super. Wie wärs, wenn in den <> - Ausdrücken der TEil nicht geparst wird, der in "" oder '' steht?
das ist leider nicht so einfach weil das leerzeichen schon der trenner viel weiter oben auf device ebene ist.
aber mit dem solltest du alles machen können was du im hinblick auf leerzeichen möchtest.
gruss
andre
Hallo Andre,
leider noch Mal zum Thema mapping. Es betrifft aber nur die Variante, in der ein Hash für das mapping verwendet wird.
define myrg def1:wert1
führt ohne mapping zur Ausage von
1. Spalte dev.ert1
2. Spalte <wert1>
define myrg readingsGroup dev1:wert1,wert2
führt zur Ausgabe von
1. Spalte dev1
2. Spalte <Wert1>
3. Spalte <wert2>
In der Version mit "Bug" führte das zur Ausgabe von
1. Spalte: dev1.wert1
Also ist der "Bug" noch immer zum Teil vorhanden, immer wenn nur ein Wert für eine Ausgabe definiert wurde.
Allerdings habe ich den "Bug" als ganz nützlich empfunden, da ich von ein und demselben Device Gruppen von Werten ausgeben möchte und die Gruppe dadurch gekennzeichnet wird, dass der erste Wert die Beschriftung der Zeile bestimmt (wie z.B. akt,min,max).
define myrg readingsGroup dev1:wert1 dev1:wert2,wert3
liefert jetzt in der Ausgabe:
Zeile1
Spalte 1: dev1.wert1
Spalte2: <wert1>
Zeile2:
Spalte1: dev
Spalte2: <wert2>
Spalte3: <Wert3>
Ich fand es eigentlich ganz nützlich, dass der Name des Readings "Wert2" über das mapping den Text in der Spalte 1 definierte, was jetzt durch die Beseitigung des "Bugs" bei mehr als einem Wert für eine Zeile nicht mehr gegeben ist.
Die Möglichkeit, über <> einen statischen Text für den "Gruppenbezeichner" zu verwenden und über mapping den device-Namen verschwinden zu lassen, blendet leider derzeit die erste Spalte nicht aus. Außerdem wird auch die leere Zeile ausgegeben, wenn keine Werte vorhanden sind (<> erscheint trotztdem)
Ich habe den "Bug", wie schon oben gesagt, dazu benutzt, über den ersten Wert den Text in der 1. Spalte zu bestimmen und habe den Text vor den einzelnen Werten über valueFormat dann gesetzt, wie z.B.:
valueFormat {'wert2' => 'min %s', 'wert3' => 'max %s'}
Mit mapping kann man für jedes Reading einen Text vor die Ausgabe stellen oder mit valueFormat ausgeben, aber wenn es für die erste Spalte nur ein mapping des device-Namens gibt, so sollte per Attribut die erste Spalte auch unterdrückt werden können.
Alternativ könnte man den "But" auch rückgängig machen. Vielleicht kann man das auch in der endgültigen Version in der CommandRef noch Mal etwas ausführlicher beschreiben.
Wie ist denn ansonsten die Resonanz zu dieser Fragestelung?
Die readingsGroup, insbesondere jetzt auch mit der command-Option, sind ein Super-Modul. Also herzlichen Dank für Deine Arbeit. Wie Du an meinem regen Kontakt siehst, setze ich das Modul intensiv ein. Ich lasse mir gerade zur Steuerungsübernahme meiner Heizungsanlage über die rgs viele Werte anzeigen und das ist ganz nützlich, um ein eigenes Heizungsverhalten für die Anlage zu entwickeln.
Gruß
Elektrolurch
define myrg def1:wert1
das ist pro zeile ein reading. der zeilentitel enthält per default den namen des device und des readings. du kannst es ummappen wie du möchtest und hast dabei unter anderem zugriff auf das device und den reading namen.
define myrg readingsGroup dev1:wert1,wert2
das sind pro zeile mehrere readings. der zeilentitel enhält per default nur den namen des devices. du kannst es ummappen wie du möchtest hast aber keinen zugriff auf einen reading namen weil der titel sich auf mehr als ein reading bezieht.
der bug hatte zur folge das für den zeilentitel der name des ersten readings beim mappen verwendet wurde. das hat dann aber zur folge das du den zeilentitel und das eigentliche reading nicht mehr unterschiedlich nennen kannst.
define myrg readingsGroup dev1:wert1 dev1:wert2,wert3
hier mischst du beide formen. das ist vermutlich meist nicht sinnvoll.
ich schaue mal ob mir für deinen anwenungsfall noch etwas besseres einfällt. den bug wieder einzubauen ist keine gute idee weil dann einiges inkonsitent wird und zum anderen du dein altes problem das der reading name doppelt auftaucht wieder hast.
gruss
andre
Hallo Andre,
habe jetzt mal ein textField in einer readingsGroup mit eingebaut. Bisher hatte ich nur Menüs.
Dabei ist mir folgendes aufgefallen:
1. Vor dem textField gibt es eine leere Spalte
2. im Logfile steht folgendes:
Use of uninitialized value $values in pattern match (m//) at ./FHEM/01_FHEMWEB.pm line 2305.
Use of uninitialized value $values in pattern match (m//) at ./FHEM/01_FHEMWEB.pm line 2394.
Use of uninitialized value $values in string ne at ./FHEM/01_FHEMWEB.pm line 2339.
Use of uninitialized value $values in split at ./FHEM/01_FHEMWEB.pm line 2357.
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
immer dann wenn sich die Seite mit der rg aufbaut.
Wenn ich richtig gezählt habe, wiederholt sich das log bis zum rg 4 mal, für jedes Textfeld einmal.
Definition: zwei dummy; Strom und Gas
define Strom dummy
define Gas dummy
define Verbrauch_rg readingsGroup Strom:Datum,Art,Verbrauch,speichern Gas:Datum,Art,Verbrauch,speichern
attr Verbrauch_rg alias Verbrauchsdaten
attr Verbrauch_rg commands {'Datum' => 'Datum:textField','Art' => 'Art:Ablesung,Abrechnung','Verbrauch' => 'Verbrauch:textField','Strom.speichern' => 'speichern:'}
attr Verbrauch_rg nolinks 0
attr Verbrauch_rg notime 1
attr Verbrauch_rg room Energie
Also nix spannendes. Die Readings haben auch alle Werte und werden angezeigt, trotzdem die leere Spalte vor den textField und die Warnungen im log.
Mal eine andere Frage: Leider sehen jetzt einige der rgs bei mir nach der Beseitigung des Bugs "etwas zerzaust" in den Zeilen aus, in denen mehrere Werte ausgegeben werden.
Die Probleme könnte ich ja umgehen, wenn es
a) eine Variable $ROW bzw %ROW geben würde, damit könnte ich dann in der ersten Spalte schon mal was bei Statistiken hineinmappen
(z.B. mit mapping %ROW. oder bei der Definition mit <{GetMonth($ROW);;}>
und
b) ein Attribut, mit der die erste Spalte komplett unterdrückt werden kann.
Ich würde dann den "gesammlten" Text für die Zeile über das mapping des ersten Readingts in der Zeile ausgeben.
Ginge das noch "nachzurüsten?
Wäre super!
Gruß
Elektrolurch
ich hab dich nicht vergessen. kommt fast alles. aber das modul kann inzwischen so viel und wird von einigen benutz. ich muss also testen und ich möchte gerne ein paar interne dinge vereinfachen.
gruss
andre
Neuer Monat und bei mir hagelts wieder Fehlermeldung. Das schon komisch. Ein Neustart und der Spuck ist vorbei. Mein Log ist voll mit folgenden Zeilen:
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 517.
Use of uninitialized value in string ne at ./FHEM/33_readingsGroup.pm line 730.
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 791.
Ich vermute das off kommt von der Heizung.
Die definitin sieht so aus:
define reading_HM_Heizung readingsGroup <>,<Temp>,<Soll>,<Ventil>,<Fenster>,<Mode> .*Heizung:measured-temp,desired-temp,actuator,window,mode
attr reading_HM_Heizung alias Status
attr reading_HM_Heizung mapping %ROOM
attr reading_HM_Heizung room Haus
attr reading_HM_Heizung valueFormat {"measured-temp" => "%.1f°C", "desired-temp" => "%.1f°C"}
Ich vermute das das "desired-temp" => "%.1f°C" diesen Fehler verursacht, wenn dann keine Zahl sondern off dort steht? Warum taucht das aber nur am Monatsanfang auf, bis ich einmal neu gestartet hab.
@andre kannst du da was machen, oder soll ich das rausnehmen?
Hallo,
Du siehst das richtig:
attr reading_HM_Heizung valueFormat {"measured-temp" => "%.1f°C", "desired-temp" => "%.1f°C"}
"off" ist nun mal keine Zahl.
Setze stattdessen doch %s ein. Dann gibt's keine Fehler mehr.
Elektrolurch
Danke für den Tipp.
Zitat von: micomat am 08 April 2014, 15:35:09
hi,
ich hab einen fehler und komm leider nicht ganz dahinter...
ich hab in der readingsgroup werte verschiedener typen.
wenn ich nun bei einigen ein icon und bei anderen den wert anzeigen will funktioniert das auch.
allerdings mit folgendem fehler im log:
Useless use of a constant (%1.f °C) in void context at (eval 24928) line 1.
Useless use of a constant (KollektorTemp) in void context at (eval 24928) line 1.
mein code fuer valueFormat:
{if($VALUE eq 'summer' || $VALUE eq 'winter') {($VALUE eq 'summer')?"weather_sun":"weather_frost"} else{AussenTemp => '%1.f °C', VorlaufTemp => '%1.f °C', AussenTemp=> '%1.f °C', RuecklaufTemp=> '%1.f °C', WWTemp=> '%1.f °C', KollektorTemp=> '%1.f °C'}}
help? =)
danke,
markus
sorry leute, ich habs noch immer nicht hinbekommen.
ziel sollte sein in der RG zwischen sommer/winter unterscheiden zu koennen und enstprechende symbole zu zeigen, und alles andere (else) dann wie gehabt zu behandeln.
help² =/
markus
Hallo Andre
hätte da auch mal eine Frage. Readingsgroup Heizung geht bei mir wunderbar, bis heute! Habe heute noch 2 RT´s in Empfang nehmen können und wollte diese in meine Heizungs ReadingsGroup einbinden. Leider ist das "optische Ergebnis" nicht berauschend.
DEF:
<%sani_heating>, < >,<Act>,<Soll>,<Ist>
Bad_Heizung_ClimRT_tr|WZ_links_Heizung_Clima|Kueche_Heizung_ClimRT_tr|SZ_Heizung_links_ClimRT_tr|SZ_Heizung_rechts_ClimRT_tr|Kinderzimmer_Heizung_links_ClimRT_tr|Kinderzimmer_Heizung_rechts_ClimRT_tr|Flur_Heizung_Clima:ValvePosition,desired-temp,measured-temp,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired.*>,desired.new,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired.*>,window,batterie
Fhem, siehe Screenshot!
Wo liegt mein Fehler?
VG
Frank
DEF ist:
<%sani_heating>, < >,<Act>,<Soll>,<Ist>
Bad_Heizung_ClimRT_tr|Kueche_Heizung_ClimRT_tr|SZ_Heizung_links_ClimRT_tr|SZ_Heizung_rechts_ClimRT_tr|Kinderzimmer_Heizung_links_ClimRT_tr|Kinderzimmer_Heizung_rechts_ClimRT_tr|Flur_Heizung_Clima:ValvePosition,desired-temp,measured-temp,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired.*>,desired.new,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired.*>,window,battery
VG
Frank
wenn du die beiden letzten zeilen meinst: vermutlich ist über deine regex jeweils noch ein device rein gerutscht das keine der gewünschten readings hat.
mach mal ein list auf die readingsGroup. unter Content: siehst du die devices die gematched haben.
gruss
andre
Danke Andre, in dem Moment, wo du mir geantwortet hast, habe ich das Thema einen Thread weiter oben nochmal angesprochen. Entschuldigung! Schon gelöscht!
Wenn ich ein list Heizungswerte2 mache, sieht das eigendlich OK für mich ausInternals:
DEF <%sani_heating>, < >,<Act>,<Soll>,<Ist>
Bad_Heizung_ClimRT_tr|Kueche_Heizung_ClimRT_tr|SZ_Heizung_links_ClimRT_tr|SZ_Heizung_rechts_ClimRT_tr|Kinderzimmer_Heizung_links_ClimRT_tr|Kinderzimmer_Heizung_rechts_ClimRT_tr|Flur_Heizung_Clima|WZ_links_Heizung_Clima|WZ_rechts_Heizung_Clima:ValvePosition,desired-temp,measured-temp,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired.*>,desired.new,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired.*>
NAME Heizungswerte2
NR 703
NTFY_ORDER 50-Heizungswerte2
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CHANGETIME:
Content:
Bad_Heizung_ClimRT_tr 1
Flur_Heizung_Clima 1
Kinderzimmer_Heizung_links_ClimRT_tr 1
Kinderzimmer_Heizung_rechts_ClimRT_tr 1
Kueche_Heizung_ClimRT_tr 1
SZ_Heizung_links_ClimRT_tr 1
SZ_Heizung_rechts_ClimRT_tr 1
WZ_links_Heizung_Clima 1
WZ_links_Heizung_Climate 1
WZ_rechts_Heizung_Clima 1
DEVICES:
ARRAY(0xa7ab47c)
ARRAY(0xa765d08)
ARRAY(0xa765d94)
ARRAY(0xa765e0c)
ARRAY(0xa765e84)
ARRAY(0xa765efc)
ARRAY(0xa765f88)
ARRAY(0xa766000)
ARRAY(0xa766078)
ARRAY(0xa7660c8)
ARRAY(0xa766154)
Helper:
Dblog:
Kinderzimmer_heizung_rechts_climrt_tr.valveposition:
Mydblog:
TIME 1399739387.82207
VALUE 100
Kinderzimmer_heizung_rechts_climrt_tr.desired-temp:
Mydblog:
TIME 1399739387.8153
VALUE 22.5
Kinderzimmer_heizung_rechts_climrt_tr.i1.item:
Mydblog:
TIME 1399739387.81758
VALUE <a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=setreading Kinderzimmer_Heizung_rechts_ClimRT_tr desired-new 19')"><svg class="icon control_arrow_downward blue" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="607pt" viewBox="0 0 468 607" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,607) scale(0.204367,-0.204367)" fill="blue" stroke="none"> <path d="M385 2955 c-22 -8 -45 -22 -52 -32 -17 -22 -18 -305 -2 -335 26 -48 28 -48 814 -48 786 0 788 0 814 48 15 28 14 294 0 326 -26 56 -24 56 -812 56 -597 -1 -729 -3 -762 -15z m1445 -200 l0 -75 -685 0 -685 0 0 75 0 75 685 0 685 0 0 -75z"/> <path d="M380 2399 c-58 -24 -60 -29 -60 -199 0 -149 1 -157 23 -177 12 -12 40 -26 62 -32 57 -15 1419 -15 1481 0 77 20 84 38 84 210 0 142 -1 149 -24 176 l-24 28 -759 2 c-486 1 -767 -2 -783 -8z m1450 -199 l0 -80 -685 0 -685 0 0 80 0 80 685 0 685 0 0 -80z"/> <path d="M380 1829 c-57 -23 -60 -32 -60 -166 l0 -123 -133 0 c-128 0 -134 -1 -156 -24 -14 -15 -21 -33 -19 -49 5 -39 1083 -1445 1113 -1453 13 -3 33 -3 44 1 21 6 1108 1421 1111 1446 4 27 0 39 -20 59 -18 18 -33 20 -155 20 l-135 0 0 116 c0 63 -5 124 -10 135 -27 50 -15 49 -812 48 -465 0 -752 -4 -768 -10z m1450 -199 l0 -80 -685 0 -685 0 0 80 0 80 685 0 685 0 0 -80z m197 -287 c-24 -32 -227 -299 -452 -593 -224 -294 -413 -541 -420 -548 -9 -10 -99 102 -446 554 -239 313 -447 585 -462 606 l-29 38 927 0 926 0 -44 -57z"/> </g> </svg></a>
Kinderzimmer_heizung_rechts_climrt_tr.i2.item:
Mydblog:
TIME 1399739387.81998
VALUE <a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=setreading Kinderzimmer_Heizung_rechts_ClimRT_tr desired-new 21')"><svg class="icon control_arrow_upward red" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="607pt" viewBox="0 0 468 607" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,607) scale(0.204367,-0.204367)" fill="red" stroke="none"> <path d="M1096 2938 c-19 -18 -271 -343 -560 -722 -396 -519 -526 -695 -526 -716 0 -54 28 -65 176 -68 l134 -4 0 -106 c0 -122 10 -149 60 -174 32 -17 90 -18 757 -18 644 0 727 2 763 16 59 24 70 52 70 178 l0 104 134 4 c117 3 137 6 156 23 15 14 21 28 18 50 -3 21 -161 236 -541 732 -295 386 -547 709 -559 717 -32 23 -44 20 -82 -16z m517 -764 l459 -599 -467 -3 c-257 -1 -674 -1 -927 0 l-460 3 458 602 c253 331 464 600 469 599 6 -1 216 -272 468 -602z m217 -829 l0 -75 -685 0 -685 0 0 75 0 75 685 0 685 0 0 -75z"/> <path d="M383 979 c-56 -16 -63 -37 -63 -194 0 -158 7 -181 60 -207 32 -17 89 -18 755 -18 475 0 733 4 758 11 66 18 77 49 77 216 0 136 -1 143 -24 170 l-24 28 -754 2 c-444 1 -766 -2 -785 -8z m1447 -204 l0 -75 -685 0 -685 0 0 75 0 75 685 0 685 0 0 -75z"/> <path d="M400 428 c-19 -5 -45 -19 -57 -31 -22 -19 -23 -28 -23 -163 0 -90 4 -153 12 -169 27 -60 3 -58 811 -56 406 1 748 6 760 10 12 5 31 19 42 31 18 19 20 39 23 162 2 90 -1 150 -8 168 -23 56 -3 55 -795 57 -464 1 -743 -2 -765 -9z m1430 -208 l0 -80 -685 0 -685 0 0 80 0 80 685 0 685 0 0 -80z"/> </g> </svg></a>
Kinderzimmer_heizung_rechts_climrt_tr.measured-temp:
Mydblog:
TIME 1399739387.81339
VALUE 22.2
Sz_heizung_rechts_climrt_tr.valveposition:
Mydblog:
TIME 1399739384.6692
VALUE 0
Sz_heizung_rechts_climrt_tr.desired-temp:
Mydblog:
TIME 1399739384.6627
VALUE 22.0
Sz_heizung_rechts_climrt_tr.i1.item:
Mydblog:
TIME 1399739384.66494
VALUE <a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=setreading SZ_Heizung_rechts_ClimRT_tr desired-new 19')"><svg class="icon control_arrow_downward blue" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="607pt" viewBox="0 0 468 607" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,607) scale(0.204367,-0.204367)" fill="blue" stroke="none"> <path d="M385 2955 c-22 -8 -45 -22 -52 -32 -17 -22 -18 -305 -2 -335 26 -48 28 -48 814 -48 786 0 788 0 814 48 15 28 14 294 0 326 -26 56 -24 56 -812 56 -597 -1 -729 -3 -762 -15z m1445 -200 l0 -75 -685 0 -685 0 0 75 0 75 685 0 685 0 0 -75z"/> <path d="M380 2399 c-58 -24 -60 -29 -60 -199 0 -149 1 -157 23 -177 12 -12 40 -26 62 -32 57 -15 1419 -15 1481 0 77 20 84 38 84 210 0 142 -1 149 -24 176 l-24 28 -759 2 c-486 1 -767 -2 -783 -8z m1450 -199 l0 -80 -685 0 -685 0 0 80 0 80 685 0 685 0 0 -80z"/> <path d="M380 1829 c-57 -23 -60 -32 -60 -166 l0 -123 -133 0 c-128 0 -134 -1 -156 -24 -14 -15 -21 -33 -19 -49 5 -39 1083 -1445 1113 -1453 13 -3 33 -3 44 1 21 6 1108 1421 1111 1446 4 27 0 39 -20 59 -18 18 -33 20 -155 20 l-135 0 0 116 c0 63 -5 124 -10 135 -27 50 -15 49 -812 48 -465 0 -752 -4 -768 -10z m1450 -199 l0 -80 -685 0 -685 0 0 80 0 80 685 0 685 0 0 -80z m197 -287 c-24 -32 -227 -299 -452 -593 -224 -294 -413 -541 -420 -548 -9 -10 -99 102 -446 554 -239 313 -447 585 -462 606 l-29 38 927 0 926 0 -44 -57z"/> </g> </svg></a>
Sz_heizung_rechts_climrt_tr.i2.item:
Mydblog:
TIME 1399739384.66729
VALUE <a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=setreading SZ_Heizung_rechts_ClimRT_tr desired-new 21')"><svg class="icon control_arrow_upward red" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="607pt" viewBox="0 0 468 607" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,607) scale(0.204367,-0.204367)" fill="red" stroke="none"> <path d="M1096 2938 c-19 -18 -271 -343 -560 -722 -396 -519 -526 -695 -526 -716 0 -54 28 -65 176 -68 l134 -4 0 -106 c0 -122 10 -149 60 -174 32 -17 90 -18 757 -18 644 0 727 2 763 16 59 24 70 52 70 178 l0 104 134 4 c117 3 137 6 156 23 15 14 21 28 18 50 -3 21 -161 236 -541 732 -295 386 -547 709 -559 717 -32 23 -44 20 -82 -16z m517 -764 l459 -599 -467 -3 c-257 -1 -674 -1 -927 0 l-460 3 458 602 c253 331 464 600 469 599 6 -1 216 -272 468 -602z m217 -829 l0 -75 -685 0 -685 0 0 75 0 75 685 0 685 0 0 -75z"/> <path d="M383 979 c-56 -16 -63 -37 -63 -194 0 -158 7 -181 60 -207 32 -17 89 -18 755 -18 475 0 733 4 758 11 66 18 77 49 77 216 0 136 -1 143 -24 170 l-24 28 -754 2 c-444 1 -766 -2 -785 -8z m1447 -204 l0 -75 -685 0 -685 0 0 75 0 75 685 0 685 0 0 -75z"/> <path d="M400 428 c-19 -5 -45 -19 -57 -31 -22 -19 -23 -28 -23 -163 0 -90 4 -153 12 -169 27 -60 3 -58 811 -56 406 1 748 6 760 10 12 5 31 19 42 31 18 19 20 39 23 162 2 90 -1 150 -8 168 -23 56 -3 55 -795 57 -464 1 -743 -2 -765 -9z m1430 -208 l0 -80 -685 0 -685 0 0 80 0 80 685 0 685 0 0 -80z"/> </g> </svg></a>
Sz_heizung_rechts_climrt_tr.measured-temp:
Mydblog:
TIME 1399739384.66073
VALUE 22.1
Fhem:
last_update 1399739356.15456
Attributes:
fp_Heizung_FP 40,250,0,
group Thermostate
nameStyle style="color:yellow"
room Heizung
valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red', 'window.closed' => 'fts_window_1w@lightgreen', 'window.open' => 'fts_window_1w_open@red'}
valueStyle {($VALUE eq "00")?'style="visibility:hidden"':''}
VG
Frank
und die devices haben auch alle wirklich die readings um die es geht?
gruss
andre
Seltsamerweise wird nicht nur auf ..._Clima sondern auch auf ClimaTeam und Climate vom RT gematcht. Habe die jetzt mal deaktiviert, da ich die Channels sowieso nicht brauche. Jetzt sieht das schon besser aus aber noch nicht ganz OK.
Content:
Bad_Heizung_ClimRT_tr 1
Flur_Heizung_Clima 1
Kinderzimmer_Heizung_links_ClimRT_tr 1
Kinderzimmer_Heizung_rechts_ClimRT_tr 1
Kueche_Heizung_ClimRT_tr 1
SZ_Heizung_links_ClimRT_tr 1
SZ_Heizung_rechts_ClimRT_tr 1
WZ_links_Heizung_Clima 1
WZ_rechts_Heizung_Clima 1
Siehe Screenshot:
je nach regex kann das passieren. du musst richtig klammern oder selber ^und $ verwenden.
sobald die jede zeile ein mal bedient hast sollte die ausrichtung passen.
gruss
andre
Danke, Andre. Probiere ich dann mal.
VG
Frank
Hallo Andre,
ich glaube, ich habe da noch einen kleinen Fehler in readingsGroup -> attr commands entdect:
define dummy dummy
attr dummy setList Uhrzeit:7:00,8:00,9:00
attr dummy webCmd Uhrzeit
gibt folgerichtig ein Klappmenü für die Uhrzeit aus.
Den Dummy in eine rg eingebunden:
define dummy_rg readingsGroup dummy:Uhrzeit
attr dummy_rg command {'dummy.Uhrzeit' => 'Uhrzeit:7:00,8:00,9:00'}
zeigt nur einen Link auf die im Reading gespeicherte Uhrzeit an.
Ich denke, dass die ":" den command-Befehlt stören, sprich, da ist wahrscheinlich ein split auf ":" implementiert, so dass die restliche Liste ignoriert wird.
Was machen Deine Umstellungsarbeiten an der rg?
Ich habe ja immer noch das Problem, dass ich zu verschiedenen Readings des gleichen devicees über mapping keine "Group" - Bezeichnung" setzen kann. Und eine Variable "%ROW" wäre auch noch hilfreich für Statistiken.
Gruß
Elektrolurch
ja. da ist ein normales split drin.
versuch mal \x3a für die doppelpunkte in den uhrzeiten zu verwenden.
ich schau es mir an.
die %ROW kommt auf jeden fall.
sorry da es so lange dauert.
gruss
andre
Hallo zusammen,
Ich habe da etwas merkwürdiges zu bieten. Folgendes klappt wie erwartet:
attr r valueStyle { if($READING eq "humidity" && $VALUE > 60) { 'style="color:red"'} }
Auch das hier geht:
attr r valueStyle { if($READING eq "humidity" && $VALUE < 40) { 'style="color:orange"'} }
Bei folgendem jedoch wird gar nichts mehr formatiert:
attr r valueStyle { if($READING eq "humidity" && $VALUE > 60) { 'style="color:red"'}elseif($READING eq "humidity" && $VALUE < 40) { 'style="color:orange"'} }
Und hierbei auch nicht (Zusätzliche else-Klausel):
attr r valueStyle { if($READING eq "humidity" && $VALUE > 60) { 'style="color:red"'}elseif($READING eq "humidity" && $VALUE < 40) { 'style="color:orange"'}else{'style="color:green"'} }
Ich habe die Syntax dank meiner mangelhaften Perl-Kenntnisse eigentlich inkl. Whitespaces dem Wiki entlehnt. Hab ich da was verpasst?
Version: # $Id: 33_readingsGroup.pm 5733 2014-05-03 13:48:48Z justme1968 $
LG!
es muss elsif
heißen nicht elseif. also ohne das e in der mitte.
gruss
andre
ARGH du glaubst nicht wieviele Stunden meines Lebens ich daran bis eben vergeudet hatte... mindestens 2. DANKE!
Hallo Andre,
ich habe eine Gruppe von dummys zur Rolladensteuerung und Programmierung der Öffnungs- und Schließzeiten nun in eine readingsGroup gepackt. Mit den einzelnen dummys klappte alles.
In der readingsGroup gibt es jetzt aber zwei Probleme:
1. Ich kann verschiedene werte einstellen und die dann mit "set" zu einer Aktion veranlassen.
Dazu habe ich folgendes command für die rg definiert:
attr Rolladen_rg commands {'RolladenOpenClose.Minuten' => 'Minuten:-,0,10,20', 'RolladenOpenClose.set' => 'set:set'...}
An dem RolladenOpenClose hängt ein notify, was einen Log-Eintrag generiert, wenn was eintrifft.
Werden die "Minuten" geändert, dann wird das notify getriggert. Beim Klick auf "set" in der readingsGroup kommt nichst, klicke ich auf das seperate dummy auf einer anderen room-Seite, kommt "set" als Event.
Was habe ich da in der rg falsch gemacht?
so habe ich es auch schon probiert: ...=> 'set:'
dann kommt aber auch nichts.
Auch im Eventmonitor ist nichts zu sehen.
2. Wird die Seite mit der Rolladensteuerung in der readingsGroup aufgerufen und ein Wert bspw. aus einem Klappmenü geändert, so kommen folgende Logeinträge:
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
Use of uninitialized value in hash element at ./FHEM/01_FHEMWEB.pm line 1214.
Use of uninitialized value in split at ./FHEM/01_FHEMWEB.pm line 1221.
Use of uninitialized value in hash element at ./FHEM/01_FHEMWEB.pm line 1214.
Use of uninitialized value in split at ./FHEM/01_FHEMWEB.pm line 1221.
Use of uninitialized value in hash element at ./FHEM/01_FHEMWEB.pm line 1214.
Use of uninitialized value in split at ./FHEM/01_FHEMWEB.pm line 1221.
Jetzt habe ich mal vor die line 580 in der readingsGroup eine Log-Zeile eingebaut.
Da sieht man wie nacheinander RolladenSelektor mit Menü Raum, den Knopf set und danach der RolladenWochentagSelektor und die dummy RolladenOpen und RolladenClose mit den readings ab,Sperrzeit,Minuten,mode und set-Knopf aufgerufen werden.
Könnte es sein, dass das set-reading keinen value hat und daher die Ausgaben im Log kommen?
Und daher auch der Link nicht funktioniert?
2014.05.13 15:42:04 1: readingsGroup line 580 html_text <td colspan='2'><form method="post"><input type="hidden" name="arg.RolladenSelektor" value="Aktion"/><input type="hidden" name="dev.RolladenSelektor" value="RolladenSelektor"/><input type="hidden" name="room" value="Rolladen"/>Aktion <select onchange="submit()" id="RolladenSelektor-Aktion" informId="RolladenSelektor-Aktion" name="val.RolladenSelektor" class="dropdown"><option value='offen'>offen</option>
<option selected="selected" value='Sonnenschutz'>Sonnenschutz</option>
<option value='Dämmerung'>Dämmerung</option>
<option value='gesperrt'>gesperrt</option>
<option value='geschlossen'>geschlossen</option>
</select><input type="hidden" name="cmd.RolladenSelektor" value="set"/></form></td>
Use of uninitialized value $htmlTxt in concatenation (.) or string at ./FHEM/33_readingsGroup.pm line 579.
2014.05.13 15:42:04 1: readingsGroup line 580 html_text
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
2014.05.13 15:42:04 1: readingsGroup line 580 html_text <td colspan='2'><form method="post"><input type="hidden" name="arg.RolladenWochentagSelektor" value="state"/><input type="hidden" name="dev.RolladenWochentagSelektor" value="RolladenWochentagSelektor"/><input type="hidden" name="room" value="Rolladen"/><select onchange="submit()" id="RolladenWochentagSelektor-state" informId="RolladenWochentagSelektor-state" name="val.RolladenWochentagSelektor" class="dropdown"><option value='Montag'>Montag</option>
<option value='Dienstag'>Dienstag</option>
<option value='Mittwoch'>Mittwoch</option>
<option value='Donnerstag'>Donnerstag</option>
<option value='Freitag'>Freitag</option>
<option value='Samstag'>Samstag</option>
<option value='Sonntag'>Sonntag</option>
<option value='Alle'>Alle</option>
<option selected="selected" value='Werktage'>Werktage</option>
<option value='Wochenende'>Wochenende</option>
</select><input type="hidden" name="cmd.RolladenWochentagSelektor" value="set"/></form></td>
2014.05.13 15:42:04 1: readingsGroup line 580 html_text <td colspan='2'><form method="post"><input type="hidden" name="arg.RolladenOpen" value="ab"/><input type="hidden" name="dev.RolladenOpen" value="RolladenOpen"/><input type="hidden" name="room" value="Rolladen"/>ab <select onchange="submit()" id="RolladenOpen-ab" informId="RolladenOpen-ab" name="val.RolladenOpen" class="dropdown"><option value='aus'>aus</option>
<option value='Uhrzeit'>Uhrzeit</option>
<option selected="selected" value='Sonnenaufgang'>Sonnenaufgang</option>
</select><input type="hidden" name="cmd.RolladenOpen" value="set"/></form></td>
Use of uninitialized value $htmlTxt in concatenation (.) or string at ./FHEM/33_readingsGroup.pm line 579.
2014.05.13 15:42:04 1: readingsGroup line 580 html_text
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
2014.05.13 15:42:04 1: readingsGroup line 580 html_text <td colspan='2'><form method="post"><input type="hidden" name="arg.RolladenOpen" value="Minuten"/><input type="hidden" name="dev.RolladenOpen" value="RolladenOpen"/><input type="hidden" name="room" value="Rolladen"/>Minuten <select onchange="submit()" id="RolladenOpen-Minuten" informId="RolladenOpen-Minuten" name="val.RolladenOpen" class="dropdown"><option value='-'>-</option>
<option value='0'>0</option>
<option value='15'>15</option>
<option value='30'>30</option>
<option value='45'>45</option>
<option value='60'>60</option>
</select><input type="hidden" name="cmd.RolladenOpen" value="set"/></form></td>
2014.05.13 15:42:04 1: readingsGroup line 580 html_text <td colspan='2'><form method="post"><input type="hidden" name="arg.RolladenOpen" value="mode"/><input type="hidden" name="dev.RolladenOpen" value="RolladenOpen"/><input type="hidden" name="room" value="Rolladen"/>mode <select onchange="submit()" id="RolladenOpen-mode" informId="RolladenOpen-mode" name="val.RolladenOpen" class="dropdown"><option value='-'>-</option>
<option selected="selected" value='normal'>normal</option>
<option value='soft'>soft</option>
</select><input type="hidden" name="cmd.RolladenOpen" value="set"/></form></td>
Use of uninitialized value $htmlTxt in concatenation (.) or string at ./FHEM/33_readingsGroup.pm line 579.
2014.05.13 15:42:04 1: readingsGroup line 580 html_text
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
2014.05.13 15:42:04 1: readingsGroup line 580 html_text <td colspan='2'><form method="post"><input type="hidden" name="arg.RolladenClose" value="ab"/><input type="hidden" name="dev.RolladenClose" value="RolladenClose"/><input type="hidden" name="room" value="Rolladen"/>ab <select onchange="submit()" id="RolladenClose-ab" informId="RolladenClose-ab" name="val.RolladenClose" class="dropdown"><option value='aus'>aus</option>
<option value='Uhrzeit'>Uhrzeit</option>
<option selected="selected" value='Sonnenuntergang'>Sonnenuntergang</option>
</select><input type="hidden" name="cmd.RolladenClose" value="set"/></form></td>
Use of uninitialized value $htmlTxt in concatenation (.) or string at ./FHEM/33_readingsGroup.pm line 579.
Wird die Seite mit den einzelnen dummys aufgerufen und dort ein Wert geändert, so kommen keine Log-Einträge.
Die darzustellenden Werte sind auch alle definiert.
Keine Ahnung, was da falsch ist.
Das dritte Problem ist die "0" in einer Aufklappliste. Das gehört wahrscheinlich hier nicht hin, aber ev. weißt Du ja, an wen ich das adressieren kann.
Beispiel:
define td dummy
attr td room td
attr td setList Minuten:-,0,1,2
attr td webCmd Minuten
Setzt man das reading auf 2, so ist auch das Klappmenü vorselektiert auf 2.
Setzt man das reading auf 0, so kommt der oberste Eintrag "-" stattdessen.
Der oberste Eintrag kommt immer dann, wenn das reading einen Wert hat, den es im Menü nicht finden kann.
In dem Fall "0" ist aber der Wert in der Menüliste, wird trotzdem aber nicht angezeigt.
Den "-" benötige ich, wenn ich von mehreren devices gleiche readings einsammele und die nicht vom Wert identisch sind, z.B. die Minuten nach Sonnenuntergang, wenn die Rolladen schließen sollen.
Dann kann man einen Wert auswählen und den auf allen devices dann identisch setzen.
Da ist bestimmt irgendwo in der fhemweb eine Abrage auf if(!$value... und da müsste wahrscheinlich ein If(!defined($value ... hinein?
Gruß
Elektrolurch
Hallo Andre,
zu meinem obigen post:
Könnte es sein, dass ich beim Modifier "set:" kein Event bekomme, weil es von der readingsGroup als Kommando der Form "set <devicename> <wert>" interpretiert wird?
wird der dummy solo, also ohne Einbindung in die rg angeklickt, dann kommt ja das Event an, nur nicht, wernn der dummy in einer Zeile in der rg steht.
Gruß
Elektrolurch
das set wird intern genau so weiter gereicht wie ein set aus devStateIcon oder aus webCmd. auf fhem seite wird es genau so abgearbeitet wie ein set das per telnet oder in der command box eingegeben wird.
siehst du irgendetwas im event Monitor?
gruss
andre
Hallo Andre,
an dem dummy hängt ein notify. Klicke ich auf den "set" link des dummys (das ist ein reading, dass "set" heißt) so kommt das Event im notify an. In der Zeile der readingsGroup, wo das dummy eingebaut ist, gibt es für den "set" Link weder im notify noch im Eventmonitor irgendein Ereignis. Alle anderen Readings des dummys, wie z.B. Minuten und Uhrzeit (beides sind Auswahlmenüs), funktionieren sowol direkt am dummy, als auch in der ReadingsGroup einwandfrei. Nur halt das "set" nicht.
Daher meine Vermutung, dass attr commands rg {'RolladenSelektor.set' => 'set:'}
wegen dem Schlüsselwort "set" nicht als readings - Name, sondern als set - Befehl interpretiert werden könnte.
Gruß
Elektrolurch
jetzt verstehe ich was du meinst. das hängt unter umständen davon ab wie genau es konfiguriert ist.
kannst du bitte mal ein komplettes beispiel machen das das problem zeigt. ich schaue es mir dann an.
gruss
andre
Hallo Andre,
ich hänge Dir mal die 00-utilsRolladen.cfg und die zwei Perl-Module dazu an.
Da das über dummys und einem FS20 funktioniert, sollte man das so testen können.
Die dummys RolladenSelektor,RolladenOpen,RolladenClose haben jeweils einen "set" - Knopf um die Daten der Zeitprogrammierung bei den Rolladen zu hinterlegen, bzw. den ausgewählten Rolladen direkt zu verfahren.
An den drei dummys hängen notifys und da werden die verschiedenen Einstellmöglichkeiten weiterverarbeitet (z.B. Die Uhrzeit mit ":", welches rg derzeit noch nicht mag -> kein Menü :-))
Unten in der cfg-Datei ist dann die rg definiert.
Gruß
Elektrolurch
Hallo Andre,
nochmal an einem ganz primitiven Beispiel, in der readingsGroup wird definitiv nicht der link von "set" aufgerufen,´beim dummy schon.
define td dummy
attr td room td
attr td setList Minuten:-,0,1,2,3
attr td webCmd Minuten:set
define td_rg readingsGroup <meinDummy> td:Minuten,set
attr td_rg commands {'Minuten' => 'Minuten:-,0,1,2,3,4', 'set' => 'set:'}
attr td_rg room td
define td_not notify td:.* {td_not($NAME,$EVENT);;}
# und die Sub dazu
sub td_not($$)
{
my ($name,$event) = @_;
Log(3,"td_not: name: $name event $event");
my $hash = $defs{$name};
my ($rd,$val) = split(' ',$event);
($rd) = split(':',$rd);
if($rd eq 'Minuten')
{
readingsSingleUpdate($hash,$rd,$val,1);
}
elsif($rd eq 'set')
{
readingsSingleUpdate($hash,'set','set',1);
}
} # end sub td_not
###################
Wenn man in der ReadingsGroup bei dem dummy td auf "set" klickt, kommen statt dem Event folgende Fehlermeldungen:
Use of uninitialized value $values in pattern match (m//) at ./FHEM/01_FHEMWEB.pm line 2419.
Use of uninitialized value $values in pattern match (m//) at ./FHEM/01_FHEMWEB.pm line 2394.
Use of uninitialized value $values in pattern match (m//) at ./FHEM/01_FHEMWEB.pm line 2483.
Use of uninitialized value $values in string ne at ./FHEM/01_FHEMWEB.pm line 2428.
Use of uninitialized value $values in split at ./FHEM/01_FHEMWEB.pm line 2446.
Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 580.
Bei Auswahl von "Minuten" aus dem Menü steht korrekt im Log:
2014.05.26 10:49:48 3: td_not: name: td event Minuten 3
Bitte kläre mich auf, aber ich kann da bei mir keinen Fehler erkennen....
Außerdem: versuche mal in dem Beispiel den Wert "0" für Minuten auszuwählen, dann kommt nicht "0" in der Anzeige, sondern der erste Menüeintrag, alsos "-".
Obwohl im Log korrekt steht und per singleUpdate das Reading auf 0 gesetzt wird:
2014.05.26 11:06:07 3: td_not: name: td event Minuten 0
2014.05.26 11:06:07 3: td_not return value: Minuten: 0
Irgendwie können die Menülisten nicht korrekt mit dem Wert "0" umgehen.
Und könntest Du das bei Gelegenheit mit dem ":" fixen, damit so was auch geht:
..comands {'uhrzeit' => 'Uhrzeit:19:00:20:00:21:00'}
Mit der ersatzweisen Verwendung von "\x03a.. ist nicht so schön, da dann die Definitionen unlesbar wären.
Gruß
Elektrolurch
ich dachte ich hatte das problem verstanden aber ich glaube es wird mir erst jetzt mit dem kurzen beispiel klar...
ich muss noch mal fragen was das set denn genau machen soll. der dummy kann damit nichts anfangen. als webCmd ist es unvollständig und als 'set...' kommando auch.
wenn ich es richtig verstehe soll einfach nur ein event generiert werden. dafür brauchst du in deinem commands doch nur ein mapping 'set' => "trigger $DEVICE set"
damit wird dein event getriggert.
zu der sache mit dem doppelpunkt: ich weiss jetzt woran es liegt. hab es aber noch nicht repariert. kommt heute oder morgen mit einem kleinen update.
gruss
andre
Genau, ich will ein Event Triggern, was set heißt. Mit attr td webCmd Minuten:set funktioniert es ja genau so und da Du geschrieben hast, dass die Events nur einfach "durchgereicht" werden, habe ich mich schon stark gewundert.
Aber warum funktioniert es dann mit dem Menü "Minuten"?
Das da:
'set' => "trigger $DEVICE set"
ist mir völlig neu.
Meine Bitte: Könntest Du das in die commandref mit aufnehmen, dann wäre es perfekt...
Danke.
Gruß
Elektrolurch
das das set bei den webCmds funktioniert ist zufall. es ist so als würdest du 'set <device>' eingeben. ohne parameter. auf der commandozeile wird das mit einer fehlermeldung abgefangen.
das set: funktioniert nicht weil du in der setList kein zugehöriges set definiert hast sondern nur die Minuten. und das set dort kannst du nicht konfigurieren weil es eben keine parameter hat.
in der command ref sind zwei möglichkeiten für das commands mapping beschrieben:
- ein beliebiges fhem kommando wie du es auch auf der kommando zeile scheinen würdest
- die version die ein dropdown menü oder slider oder anderes widget zur auswahl des parameters einblendet.
gruss
andre
das mit dem : bei den uhrzeiten ist repariert.
gruss
andre
Perfekt und vielen Dank.
Jetzt fehlt mir nur noch die MMöglichkeit, die erste Spalte individuell zu gestalten oder zumindest komplett auszublenden.
Ich habe ja rg's im Einsatz, in dem ich zu ein und demselben device in verschiedenen Zeilen jeweils mehrere Werte anzeigen möchte und da macht es keinen Sinn, dass in der ersten Spalte immer der device-Namen oder das alias steht. Ich würde da gerne so individuelle Worte wie:
Puffertemperatur .. und dann kommen akt,min,max
Kollektortemperatur ... akt,min,max
voranstellen.
Leider kann man mit:
attr meinerg mapping <{undef}> oder durch Löschen des Attributes "mapping" die erste Spalte nicht verschwinden lassen.
Mit ..maping< > steht zwar dann da kein Text mehr da, aber die Spalte bleibt trotzdem da.
Ich habe schon alles mögliche ausprobiert, aber ohne Erfolg.
Gruß
Elektrolurch
Hallo zusammen,
gibt es auch die Möglichkeit ein Icon größer Darzustellen, wie man das z.B. mit dem Text machen kann?
Ich würde gerne den Füllstand meiner Zisterne visualiseren, sprich ein Icon mit Behälterzeichnung und unterschiedlichem Füllstand.
Das mit den unterschiedlichen Icons in Abhängigkeit vom Füllstand bekomme ich (vermutlich 8)) hin, stellt sich nur noch die Frage wie ich die Icons größer bekomme.
Hat jemand eine Idee?
Gruß,
Stefan
die größe der icons wird über die stylesheets bestimmt. du kannst versuchen die relevanten parameter über die unterschiedlichen style attribute zu ändern.
den füllstsand kann man ausser mit icons auch noch mit direktem html code darstellen. vielleicht ist das ja auch etwas für dich. schau mal hier für ein beispiel: http://forum.fhem.de/index.php/topic,11609.msg68591.html#msg68591 (http://forum.fhem.de/index.php/topic,11609.msg68591.html#msg68591)
gruss
andre
Zitat von: justme1968 am 28 Mai 2014, 10:26:27
die größe der icons wird über die stylesheets bestimmt. du kannst versuchen die relevanten parameter über die unterschiedlichen style attribute zu ändern.
den füllstsand kann man ausser mit icons auch noch mit direktem html code darstellen. vielleicht ist das ja auch etwas für dich. schau mal hier für ein beispiel: http://forum.fhem.de/index.php/topic,11609.msg68591.html#msg68591 (http://forum.fhem.de/index.php/topic,11609.msg68591.html#msg68591)
gruss
andre
Vielen Dank für deine schnelle Rückantwort.
Mit dem styl attr in der ReadingsGroup geht da also nichts?
dich. es müsste gehen. wie oben geschrieben: du kannst versuchen die relevanten parameter über die unterschiedlichen style attribute zu ändern.
Nabend,
ist es möglich für nicht gefundene Readings Platzhalter zu erstellen, um die Tabellenstruktur zu erhalten?
Gruß
Gerd
nein das geht nicht direkt aber z.b. mit
<{ReadinsVal($DEVICE,"reading","default")}@reading>
warum haben deine devices nicht alle readings?
gruss
andre
Ich lasse mir eine Tabelle mit den RSSI Werten und Zeit des Empfangs Anzeigen, und jedes Devices empfängt aber nicht alles.
Geht das Auch mit INTERNALS? (erledigt geht auch)
Oder wenn man Temperatur und Humidity in einer Gruppe hat, aber auch Sensoren aufnehmen möchte, die bspw. nur die Temperatur können.
@stromer-12: das wäre dann InternalVal statt ReadingsVal.
gruss
andre
@matvin78: ...:temperature,<{ReadinsVal($DEVICE,"humidity","")}@humidity>
Mich wundert gerade etwas bei meiner Readingsgroup.
Und zwar habe ich da HM-SEC und HM-SEC-2 Kontakte drin, wo ich den Status und die Batterie überwache.
Nun wollte ich auch cyclicInfoMsg überwachen und habe die Definition und valueIcons abgeändert.
Komisch ist, dass bei 2 von den Kontakten nach wie vor der Begriff "on" und nicht das Icon dargestellt wird.
Bei den anderen aber schon.
Irgendwie finde ich den Fehler nicht.
Kann mir da jemand einen Tip geben?
Internals:
CFGFN
DEF .*_TK_.*:battery,state,R-cyclicInfoMsg BM_.*:battery,<> EG_wz_xx_Voralarm.*:battery,<> KG_k2_xx_Alarm.*:battery,<> .*_BM_.*:battery,<>
NAME rg_Batterie_TK
NR 69
NTFY_ORDER 50-rg_Batterie_TK
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CHANGETIME:
Content:
DG_hz_TK_Dachfenster 1
DG_wz_TK_Dachfenster 1
EG_fl_TK_Haustuer 1
EG_ku_TK_Strasse 1
EG_wc_BM_Motion 1
EG_wz_TK_Carport 1
EG_wz_TK_Terrasse 1
EG_wz_xx_Voralarm 1
KG_k2_xx_Alarm 1
OG_bz_BM_Motion 1
OG_kz_TK_SchlafenTim 1
at_addLog_DG_hz_TK_Dachfenster 1
at_addLog_DG_wz_TK_Dachfenster 1
at_addLog_EG_fl_TK_Haustuer 1
at_addLog_EG_ku_TK_Strasse 1
at_addLog_EG_wz_TK_Carport 1
at_addLog_EG_wz_TK_Terrasse 1
at_addLog_OG_kz_TK_SchlafenTim 1
no_TK_Strasse_closed 1
no_TK_Terrasse_closed 1
pl_TK_All 1
DEVICES:
ARRAY(0x9d1b334)
ARRAY(0xa10482c)
ARRAY(0x9d31de4)
ARRAY(0x9d31ea4)
ARRAY(0x9d94e44)
ARRAY(0x9d94f24)
ARRAY(0xa10483c)
ARRAY(0xa03f78c)
ARRAY(0xa0c0934)
ARRAY(0x9fff81c)
ARRAY(0x9fdc49c)
ARRAY(0xa125f14)
ARRAY(0xa072e2c)
ARRAY(0xa05bbdc)
ARRAY(0xa02f90c)
ARRAY(0xa0c00f4)
ARRAY(0xa05ba1c)
ARRAY(0x9e6598c)
ARRAY(0x9d2d9dc)
ARRAY(0xa045034)
ARRAY(0xa05bbac)
Helper:
Dblog:
Dg_hz_tk_dachfenster.battery:
Mydblog:
TIME 1402054724.58585
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Dg_hz_tk_dachfenster.state:
Mydblog:
TIME 1402067729.09723
VALUE <svg class="icon fts_window_1w green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="492pt" viewBox="0 0 468 492" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,492) scale(0.192593,-0.192593)" fill="green" stroke="none"> <path d="M73 2520 c-68 -41 -64 57 -61 -1241 3 -1145 3 -1175 22 -1200 11 -14 31 -34 45 -45 25 -19 52 -19 1138 -19 1106 0 1112 0 1140 21 15 11 38 40 51 64 l22 44 0 1143 c0 1259 3 1193 -62 1233 -33 20 -47 20 -1148 20 -1088 0 -1116 -1 -1147 -20z m2217 -765 l0 -415 -34 0 c-45 0 -86 -33 -86 -70 0 -41 34 -70 82 -70 l38 0 -2 -527 -3 -528 -1059 -3 c-774 -1 -1062 1 -1072 9 -12 10 -14 182 -14 1015 l0 1004 1075 0 1075 0 0 -415z"/> </g> </svg>
Dg_wz_tk_dachfenster.r-cyclicinfomsg:
Mydblog:
TIME 1402054762.81685
VALUE on
Dg_wz_tk_dachfenster.battery:
Mydblog:
TIME 1402054751.15109
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Dg_wz_tk_dachfenster.state:
Mydblog:
TIME 1402067729.11378
VALUE <svg class="icon fts_window_1w green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="492pt" viewBox="0 0 468 492" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,492) scale(0.192593,-0.192593)" fill="green" stroke="none"> <path d="M73 2520 c-68 -41 -64 57 -61 -1241 3 -1145 3 -1175 22 -1200 11 -14 31 -34 45 -45 25 -19 52 -19 1138 -19 1106 0 1112 0 1140 21 15 11 38 40 51 64 l22 44 0 1143 c0 1259 3 1193 -62 1233 -33 20 -47 20 -1148 20 -1088 0 -1116 -1 -1147 -20z m2217 -765 l0 -415 -34 0 c-45 0 -86 -33 -86 -70 0 -41 34 -70 82 -70 l38 0 -2 -527 -3 -528 -1059 -3 c-774 -1 -1062 1 -1072 9 -12 10 -14 182 -14 1015 l0 1004 1075 0 1075 0 0 -415z"/> </g> </svg>
Eg_fl_tk_haustuer.battery:
Mydblog:
TIME 1402067225.1402
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Eg_fl_tk_haustuer.state:
Mydblog:
TIME 1402067728.92285
VALUE <svg class="icon fts_window_1w green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="492pt" viewBox="0 0 468 492" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,492) scale(0.192593,-0.192593)" fill="green" stroke="none"> <path d="M73 2520 c-68 -41 -64 57 -61 -1241 3 -1145 3 -1175 22 -1200 11 -14 31 -34 45 -45 25 -19 52 -19 1138 -19 1106 0 1112 0 1140 21 15 11 38 40 51 64 l22 44 0 1143 c0 1259 3 1193 -62 1233 -33 20 -47 20 -1148 20 -1088 0 -1116 -1 -1147 -20z m2217 -765 l0 -415 -34 0 c-45 0 -86 -33 -86 -70 0 -41 34 -70 82 -70 l38 0 -2 -527 -3 -528 -1059 -3 c-774 -1 -1062 1 -1072 9 -12 10 -14 182 -14 1015 l0 1004 1075 0 1075 0 0 -415z"/> </g> </svg>
Eg_ku_tk_strasse.battery:
Mydblog:
TIME 1402035913.72139
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Eg_ku_tk_strasse.state:
Mydblog:
TIME 1402067728.91489
VALUE <svg class="icon fts_window_1w green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="492pt" viewBox="0 0 468 492" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,492) scale(0.192593,-0.192593)" fill="green" stroke="none"> <path d="M73 2520 c-68 -41 -64 57 -61 -1241 3 -1145 3 -1175 22 -1200 11 -14 31 -34 45 -45 25 -19 52 -19 1138 -19 1106 0 1112 0 1140 21 15 11 38 40 51 64 l22 44 0 1143 c0 1259 3 1193 -62 1233 -33 20 -47 20 -1148 20 -1088 0 -1116 -1 -1147 -20z m2217 -765 l0 -415 -34 0 c-45 0 -86 -33 -86 -70 0 -41 34 -70 82 -70 l38 0 -2 -527 -3 -528 -1059 -3 c-774 -1 -1062 1 -1072 9 -12 10 -14 182 -14 1015 l0 1004 1075 0 1075 0 0 -415z"/> </g> </svg>
Eg_wc_bm_motion.battery:
Mydblog:
TIME 1402084295.48211
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Eg_wz_tk_carport.battery:
Mydblog:
TIME 1402046946.14508
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Eg_wz_tk_carport.state:
Mydblog:
TIME 1402067728.90599
VALUE <svg class="icon fts_window_1w green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="492pt" viewBox="0 0 468 492" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,492) scale(0.192593,-0.192593)" fill="green" stroke="none"> <path d="M73 2520 c-68 -41 -64 57 -61 -1241 3 -1145 3 -1175 22 -1200 11 -14 31 -34 45 -45 25 -19 52 -19 1138 -19 1106 0 1112 0 1140 21 15 11 38 40 51 64 l22 44 0 1143 c0 1259 3 1193 -62 1233 -33 20 -47 20 -1148 20 -1088 0 -1116 -1 -1147 -20z m2217 -765 l0 -415 -34 0 c-45 0 -86 -33 -86 -70 0 -41 34 -70 82 -70 l38 0 -2 -527 -3 -528 -1059 -3 c-774 -1 -1062 1 -1072 9 -12 10 -14 182 -14 1015 l0 1004 1075 0 1075 0 0 -415z"/> </g> </svg>
Eg_wz_tk_terrasse.battery:
Mydblog:
TIME 1402062075.20193
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Eg_wz_tk_terrasse.state:
Mydblog:
TIME 1402067728.89772
VALUE <svg class="icon fts_window_1w green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="492pt" viewBox="0 0 468 492" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,492) scale(0.192593,-0.192593)" fill="green" stroke="none"> <path d="M73 2520 c-68 -41 -64 57 -61 -1241 3 -1145 3 -1175 22 -1200 11 -14 31 -34 45 -45 25 -19 52 -19 1138 -19 1106 0 1112 0 1140 21 15 11 38 40 51 64 l22 44 0 1143 c0 1259 3 1193 -62 1233 -33 20 -47 20 -1148 20 -1088 0 -1116 -1 -1147 -20z m2217 -765 l0 -415 -34 0 c-45 0 -86 -33 -86 -70 0 -41 34 -70 82 -70 l38 0 -2 -527 -3 -528 -1059 -3 c-774 -1 -1062 1 -1072 9 -12 10 -14 182 -14 1015 l0 1004 1075 0 1075 0 0 -415z"/> </g> </svg>
Eg_wz_xx_voralarm.battery:
Mydblog:
TIME 1402063136.22731
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Kg_k2_xx_alarm.battery:
Mydblog:
TIME 1402063134.44329
VALUE <img class='icon Batterie_empty' src="/fhem/images/default/Batterie.empty.png" alt="low" title="low">
Og_bz_bm_motion.battery:
Mydblog:
TIME 1402084423.73882
VALUE <img class='icon Batterie_full' src="/fhem/images/default/Batterie.full.png" alt="ok" title="ok">
Og_kz_tk_schlafentim.state:
Mydblog:
TIME 1402067728.93172
VALUE <svg class="icon fts_window_1w green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="492pt" viewBox="0 0 468 492" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,492) scale(0.192593,-0.192593)" fill="green" stroke="none"> <path d="M73 2520 c-68 -41 -64 57 -61 -1241 3 -1145 3 -1175 22 -1200 11 -14 31 -34 45 -45 25 -19 52 -19 1138 -19 1106 0 1112 0 1140 21 15 11 38 40 51 64 l22 44 0 1143 c0 1259 3 1193 -62 1233 -33 20 -47 20 -1148 20 -1088 0 -1116 -1 -1147 -20z m2217 -765 l0 -415 -34 0 c-45 0 -86 -33 -86 -70 0 -41 34 -70 82 -70 l38 0 -2 -527 -3 -528 -1059 -3 c-774 -1 -1062 1 -1072 9 -12 10 -14 182 -14 1015 l0 1004 1075 0 1075 0 0 -415z"/> </g> </svg>
Fhem:
last_update 1402124352.08163
Attributes:
alias Batterien/TF-Kontakte
group Status
icon Batterie.empty
mapping %ALIAS
valueIcon {'battery.ok' => 'Batterie.full', 'battery.low' => 'Batterie.empty', 'state.closed' => 'fts_window_1w@green', 'state.open' => 'fts_window_1w_open@red', 'R-cyclicInfoMsg.on' => 'im_checkmark@green', 'R-cyclicInfoMsg.off' => 'im_close'}
Hallo Andre,
mir ist es nicht gelungen, ein Reading, welches die Werte 0 und 1 annehmen kann, in einer readingsGroup mit den Attributen commands und valueIcon vernünftig zu verwenden.
Kurz zum Hintergrund - Dietmar hat in die Module WeekdayTimer und Heating_Control auf meinen Wunsch ein reading "disabled" eingeführt, welches beim Timer das attribut "diable" widerspiegelt. D.h. Attribut disable=1 bedeutet Reading disabled=1. Siehe auch: http://forum.fhem.de/index.php/topic,10011.msg175605.html#msg175605 (http://forum.fhem.de/index.php/topic,10011.msg175605.html#msg175605)
Die numerischen Werte 0 und 1 für "disabled" machen wie folgt Schwierigkeiten. Edit: lässt sich nicht mehr reproduzieren.
Es funktioniert nicht: Edit: Funktioniert sehr wohl.
commands { 'disabled.0' => 'set $DEVICE disable', 'disabled.1' => 'set $DEVICE enable' }
valueIcon { 'disabled.0' => 'Restart', 'disabled.1' => 'Shutdown' }
Liefert das Reading "disabled" jedoch stattdessen z.B. die Strings yes und no, funktionieren die readingsGroup Attribute einwandfrei:
commands { 'disabled.no' => 'set $DEVICE disable', 'disabled.yes' => 'set $DEVICE enable' }
valueIcon { 'disabled.no' => 'Restart', 'disabled.yes' => 'Shutdown' }
Hier für Details noch die komplette Definition der readingsGroup:
list rg_Timer_Wasser
Internals:
DEF timer_Wasser_..:disabled,+DEF,<{rg_timer_Wasser_show_conditional($DEVICE)}@disabled>
NAME rg_timer_Wasser
NR 212
NTFY_ORDER 50-rg_timer_Wasser
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
timer_Wasser_01 1
timer_Wasser_02 1
DEVICES:
ARRAY(0x16eebd8)
ARRAY(0x165c0f0)
Readings:
Fhem:
last_update 1402397337.40354
Helper:
Attributes:
alias Scheduling
commands { 'disabled.no' => 'set $DEVICE disable', 'disabled.yes' => 'set $DEVICE enable' }
group Bewässerung
notime 1
room Terrasse
sortDevices 1
style style="border:0px;background:none;box-shadow:none"
valueFormat { if ( $READING =~ m/.*DEF/ ) { my @text = split(" ", $VALUE); shift @text; return join(" ", @text) }}
valueIcon { 'disabled.no' => 'Restart', 'disabled.yes' => 'Shutdown' }
Funktionieren die Attribute commands und valueIcon mit der Syntax '<reading>.<value>' => 'command' bzw. 'icon' generell nur, wenn value ein String ist? Oder machen nur die numerischen Werte 0 und 1 (in Perl mit Sonderbedeutung) hier Probleme?
Edit: Wie Andre zwei Beiträge weiter unten ausführt, darf es da keine Probleme geben, da auch numerische Readings wie Strings behandelt werden.
Danke & Gruß
Tobias
PS: Ich gestehe schon vorweg, dass ich nicht alle Seiten dieses Threads vorher durchgegangen bin. Möglicherweise wurde die Frage also schon einmal beantwortet.
Hallo,
möglicherweise liegt das gar nicht an der readingsGroup, sondern an 01-fhemweb. Da gibt es nämlich bei der Darstellung von commands mit dem Wert 0 ein Problem.
Ich habe das Problem bei Menüs:
commands {'meinrd' => 'meinrd:aus,0,1,2,3'...
Hat meinrd den wert aus,1,2,3 wird er koorekt von fhemweb vorselektiert, bei dem Wert 0 erscheint statt dessen der oberste Menüeintrag "aus".
Denke, dass die 0 für das widgetes von webCmd ein Problem darstellt.
Gruß
Elektrolurch
ich habe es eben mit einem dummy und einem WeekdayTimer probiert und dein problem nicht nachvollziehen können.
da für die readignsGroup jedes reading ein string ist und vor allem an der stelle wo das mapping gemacht wird nur mit srings gearbeitet wird füllt mir auch kein grund ein warum es mit yes/no gehe aber 0/1 nicht.
was genau macht rg_timer_Wasser_show_conditional?
was genau meinst du mit 'vernünftig zu verwenden.' ?
kannst du das problem mit einem dumm und 'setreading <dummy> disabled 0' bzw 'setreading <dummy> disabled 1' reproduzieren?
siehst du auf der javascript konsole etwas?
gruss
andre
Hallo Andre, Elektrolurch,
peinlich - aber ich kann das Problem auch nicht mehr nachvollziehen. Habe mit zwei neuen Dummy WD-Timern eine zusätzliche RG angelegt und es hat auf Anhieb mit 0/1 auch funktioniert.
Nach dem Rückbau der ursprünglichen RG für die Bewässerungstimer funktioniert diese jetzt auch. Ich kann mir eigentlich nur erklären, dass ich beim Testen heute früher am Tag irgendwo einen kleinen Typo (z.B. disable statt disabled o.ä.) drin hatte.
Sorry und danke für eure Bereitschaft, das vermeintliche Problem nachzuvollziehen.
Gruss
Tobias
Hallo,
ich habe versucht mit einer readingsGroup Temperatur, Luftfeuchte; Soll-Temp und Batterie anzuzeigen. Das ganze wird gemessen durch ein HM-CC-TC.
Mir gelingt es aber nicht mit valueFormat °C und % auszugeben.
Was mache ich falsch?
Hier ein Screeshot und mein Code:
define Heizungswerte readingsGroup <%sani_heating>,<Ist>,<Hum>,<Soll>,<Bat> WZ_WTH:measured-temp,humidity,desired-temp,battery
attr Heizungswerte nameStyle style="color:black;;font-weight:bold"
attr Heizungswerte valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red'}
attr Heizungswerte valueStyle {($VALUE eq "00")?'style="visibility:hidden"':}
attr Heizungswerte room Technik
attr Heizungswerte valueFormat {measured-temp => '%.1f °C', humidity => '%.1f %%', desired-temp => '%.1f °C' }
Viele Grüße
measured-temp und desired-temp müssen jeweils in anführungszeichen.
gruss
andre
Zitat von: justme1968 am 13 Juni 2014, 13:10:49
measured-temp und desired-temp müssen jeweils in anführungszeichen.
gruss
andre
Danke, funktioniert!
Aber, verständnisshalber, mit welchem Hintergrund nur measured-temp und desired-temp? humidity ohne Anführungszeichen?
Grüße
alles was perl von sich als als string erkennt kann an dieser Stelle ohne anführungszeichen geschrieben werden.
gruss
andre
Hallo Andre,
mir ist da noch eine Kleinigkeit aufgefallen:
Wenn der Wert eines readings = undef ist, wird er ja nicht angezeigt. Wenn aber für den Wert ein command definiert ist, wird fhemweb aufgerufen und liefert den Wert "0" als Link zurück. Außerdem gibt perl wegen dem regex-Anweisung einen Fehler.
Habe das wie folgt ausgebessert:
# Elektrolurch: $cmd kann leer sein
if($cmd && $cmd =~ m/^([\w-]*):(\S*)?$/ ) {
Hintergrund: Wenn der Status meiner Heizungsanlage wechselt, dann werden manche einstellbaren readings undef.Ich glaube, dass das zweimal vorkommt.
Gruß
Elektrolurch
Ich bitte euch um Hilfe.
Ich nutze FHEM ausschließlich für einen Floorplan, der auf einem Display im Flur angezeigt wird.
Nun möchte ich von dutzenden Dummys, die alle einzeln auf dem Display platziert werden müssen, zu readingsGroup umschwenken, befinde mich hier noch am Anfang.
Ziel: Pro Zeile sollen alle Infos zu einem Raum dargestellt werden, dafür müssen Readings aus dem Heizungssensor und vom Fenstersensor rein. Das funktioniert soweit auch. Allerdings möchte ich auch beim Fenster-Sensor den Akku-Status als Icon sehen und dann auch wieder Icons je Fensterzustand.
So sieht die DEF aus:<>,<IST>,<SOLL>,<Ventil>,<>,<Fenster>,<>
Sensor_Wohnzimmer:measured-temp,desired-temp,actuator,battery,<{ReadingsVal("Fenster_Wohnzimmer","state","0")}@reading>,<{ReadingsVal("Fenster_Wohnzimmer","battery","0")}@reading>
Sensor_Katzenzimmer:measured-temp,desired-temp,actuator,battery,<{ReadingsVal("Fenster_Katzenzimmer","state","0")}@reading>,<{ReadingsVal("Fenster_Katzenzimmer","battery","0")}@reading>
Sensor_Schlafzimmer:measured-temp,desired-temp,actuator,battery,<{ReadingsVal("Fenster_Schlafzimmer","state","0")}@reading>,<{ReadingsVal("Fenster_Schlafzimmer","battery","0")}@reading>
Folgendes habe ich bei valueIcon, ich habe absichtlich überall zum Test erstmal das Batterie-Icon verwendet, da dieses ja teilweise funktioniert. Auch erstmal nur für das erste Fenster:{'battery.ok' => 'batterie@grey', 'battery.low' => 'batterie@red', 'state.open' => 'batterie@grey', 'Fenster_Wohnzimmer.open' => 'batterie@grey'}
Frage:
Warum wird beim obersten Fenster-Wert nicht das Batterie-Icon angezeigt, sondern das Wort "open" (siehe Anhang)? Warum wird für den Batteriewert der Sensoren das Batterie-Icon angezeigt, bei den Fensterkontakten aber nicht, obwohl das Reading auch "battery" heißt?
Was mir aufgefallen ist: Ich habe nameStyle als linksbündig formatiert, valueStyle rechtsbündig. Das funktioniert beim Namen und den Werten der Sensoren auch. Die Werte der Fensterkontakte werden aber nicht rechtsbündig dargestellt wie bei "valueStyle" eingestellt, sondern rechtsbündig wie für "nameStyle" definiert.
Ich bin eben den gesamten Thread durchgegangen, das Thema wurde mehrfach angesprochen, aber leider habe ich damit keine Lösung erzielt.
@Elektrolurch: ich schau es mir an.
@MaJu:
- es wird open statt einem icon angezeigt weil das was zwischen den <> steht kein reading ist sondern nur ein string der angezeigt wird.
- wenn du möchtest das hier ein icon angezeigt wird geht das am einfachsten in dem der <{...}> perl ausdruck direkt den namen des icons mit vorangestelltem % zurück gibt.
- du musst statt @reading den tatsächlichen namen des readings verwenden.
- wenn deine sensoren immer das schema aus dem beispiel haben und du ein passendes room attribut gesetzt hast kannst du das ganze auf eine zeile vereinfachen:Sensor_.*:measured-temp,desired-temp,actuator,battery,<{'%'.ReadingsVal("Fenster_$ROOM","state","0")}@state>,<{ReadingsVal("Fenster_$ROOM","battery","0")}@battery>
hier wird aus open und closed gleich ein %open bzw. %closed was direkt als icon angezeigt wird wenn du icons mit entsprechendem namen hast.
- alles innerhalb der <> zählt als name und nicht als value. deshalb die formatierung nach nameStyle.
gruss
andre
Hallo,
eine kurze Frage...
lasse mir den Battery-Status meine HM Komponenten anzeigen.
In der Ausgabe steht dann "alias:battery und das Symbol"
Wie bekomme ich das :battery hinter dem ALias weg?
define rg_battery readingsGroup TYPE=CUL_HM:[Bb]attery
attr rg_battery alias Batteriestatus
attr rg_battery group BatterieStatus
attr rg_battery notime 1
attr rg_battery room Technik
attr rg_battery valueIcon {'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red'}
Grüße
Phil
zum beispiel mitattr rg_battery mapping %ALIAS
gruss
andre
KORREKTUR:
Ich habe nun mal noch ein Bild "open.png" und auch eins "ok.png" gespeichert. Und nun werden diese Icons angezeigt. Die Icon-Definitionen werden hierbei scheinbar völlig ignoriert.
Hallo Andre,
danke für deine Mühe. Leider führt sie nicht zum Erfolg.
Ich habe es angepasst ('%'. mit rein und das Reading hinten geändert).[...]
Leider werden weiterhin nur Worte zurückgegeben wie zuvor, obwohl Icons im Ordner (www-images-default) vorhanden sind (Fenster_Wohnzimmer.open.png state.open.png battery.ok).
Obwohl ja sonst auch erstmal die Definitionen aus valueIcon greifen sollten.
FHEM-Version: Dev 5.5, aktuellste Updates geladen (gerade nochmal getestet) und schon mehrfach neu gestartet. Auf einen RasperryPi mit Raspbian. Bei den bisherigen Dummys funktionieren die Icons tadellos.
Ich habe es auch beim FHEM der Schwiegereltern (gleiche Hardware und Version wie bei mir) getestet, auch dort funktioniert es nicht mit den Icons.
__________________________________
Das vereinfachen auf eine Zeile ist eine super Sache, danke für das Schreiben!
Ich habe beim letzten Element auch noch '%'. vor das ReadingsVal gesetzt, da du es beim Reading davor auch reingeschrieben hast. Ist das richtig?
Für die Thermostate ("Sensor_...") klappt es, alle 3 werden mit den definierten Sachen ausgegeben. Die Fenster-Sensoren aber werden nicht dargestellt (auch wenn ich die Zeile ungeändert so nutze wie du sie geschrieben hast).
Ja, ich habe die 3 Raumnamen. Im Raum "Wohnzimmer" befinden sich das Thermostat "Sensor_Wohnzimmer" und auch "Fenster_Wohnzimmer". Die Anzeige "Lebensraum" kommt vom Alias bei "Sensor_Wohnzimmer", aber ändert ja am Raum nichts.
Da ich hierüber aber die Reihenfolge der Räume nicht mehr so einfach ändern kann, ist die Vereinfachung für mich weniger relavant. Bei 3 (bzw. 5) Räumen ist das bei der geringen Anzahl an Werten noch sehr überschaubar.
__________________________________
Und noch was Neues:
Der Zeitstempel wird nicht mehr ausgewiesen bei mehr als 1 Reading. Wie bekomme ich ihn aber doch ausgegeben?
Warum? Ich möchte den letzten Auslesezeitpunkt anzeigen lassen und wenn möglich soll er rot werden wenn für mehr als 10 Minuten keine aktuelle Meldung von einem Gerät kam.
Damit sehe ich, wenn es für den Außensensor zu schlechte Empfangsbedingungen waren und der Wert "uralt" ist bzw. wenn sich irgendein Gerät aufgehangen hat (ist bei der Entkalkungsfahrt des Venils passiert ...).
Danke ... Mario
die icon definitionen sind nur für 'normale' readings. die <> ausdrücke sind normalerweise eher statisch.
der <> ausdruck muss den namen des icons zurück geben.
wenn das bei dir Fenster_Wohnzimmer.open.png ist dann muss %Fenster_Wohnzimmer.open zurück kommen. zum beispiel durch so etwas:<{'%'."$ALIAS.".ReadingsVal(...)}>
statt dem $ALIAS. kannst du z.b. auch fts_window_1w verwenden und bekommst dann das fts_window_1w_open.svg svg icon.
der timestamp ist deshalb weg weil bei mehreren readings auf einer zeile du nicht mehr einen einzigen timestamp hast. wenn du einen möchtest kannst du mit <{ReadingsTimestamp("device","reading","")}@reading> selber bestimmen von welchem reading der timestamp sein soll.
wenn du hier etwas komplizierteres vor hast ist es besser das in eine sub in 99_myUtils.pm auszulagern und diese aufzurufen:<{meinIcon(...)}>
im wiki gibt es auch hierzu beispiele.
ich würde an deiner stelle aber nicht zu viele dinge in die gleiche readingsGroup packen. empfang prüfen würde ich z.b. nicht im raum in dem ich etwas normalerweise bediene sondern in einem extra raum system und wenn es irgendwie geht automatisch per notify benachrichtigen. je nach system das du verwendest geht das mit dem ActionDetector oder dem DeviceMonitor.
wenn du trotzdem wert darauf legst in der normalen übersicht zu sehen ob es ein problem dann lass dir nur ein allgemeines problem ja/nein anzeigen. du kannst dann immer noch genau nachschauen was es ist.
gruss
andre
Danke Andre, das mit den Icons funktioniert nun wie gewünscht.
Auch ReadingTimestamp klappt, manchmal ist ein solcher Anstoß sehr hilfreich :-)
Nur eines noch: Wie kann ich den Timestamp auf nur die Uhrzeit (möglichst auch noch ohne Sekunden) kürzen?
Bei nur 3 (bzw. 5) auszulesenden Zeitstempeln würde ich das wenn möglich gern in der readingsGroup machen.
Hallo,
Ich lasse mit dem Modul dewpoint den Taupunkt berechnen. Dieser wird ja dann unter Internals dem State hinzugefügt: Bsp.: state T:xy H:xy D:xy
Das ganze steht ja aber nicht unter Readings im State.
Wie kann ich denn Taupunkt auch auslesen und meiner ReadingsGroup hinzufügen?
Viele Grüße
phil
@MaJu: z.b. mit substr oder split den für dich relevanten treil rausschneiden.
@Phil_: du kannst in der definition von dewpoint angeben das ein normales reading erzeugt werden soll. das kannst du dann ganz normal überall verwenden. mit stateFormat bekommt du es auch wieder in den STATE deines device wenn du das möchtest.
gruss
andre
Nochmals Danke, ich wusste nicht, wo/wie ich das substr eintragen muss. Habe es mit probieren rausgefunden. Falls auch jemand anderes danach sucht:<{substr(ReadingsTimestamp("Balkon","state","0"),11,5)}@state>
Nun noch etwas. Ich möchte einzelne Werte hervorheben. In Antwort 208/209 wurde das schonmal besprochen, es klappt aber bei mir nicht.
Eigentlich müsste es rot geschrieben werden. Der String führt aber jeweils dazu, dass die gesamte Zeile nicht mehr angezeigt wird:<{nameStyle="color:red"}Balkon>
und auch:
<{{nameStyle="color:red"}ReadingsVal("Balkon","temperature","0").'°C'}@temperature>,
Wie muss der String richtig lauten?
Gruß ... Mario
Zitat von: justme1968 am 15 Juni 2014, 10:33:00
@Phil_: du kannst in der definition von dewpoint angeben das ein normales reading erzeugt werden soll. das kannst du dann ganz normal überall verwenden. mit stateFormat bekommt du es auch wieder in den STATE deines device wenn du das möchtest.
gruss
andre
Hallo,
Danke für die schnellen Antworten. Habe es teilweise hinbekommen.
Für den State:
define dew_state dewpoint dewpoint .* T H D
Für das Reading:
define dew_all dewpoint dewpoint .* temperature humidity dewpoint
Allerdings funktioniert das nur bei meinen HM-TC-IT-WM-W-EU und den
HM-WDS10-TH-O, bei den HM-CC-TCs wird nur der Taupunkt in State erzeugt, nicht die Readings.
Aber dafür ist das hier der falsche Thread.
Grüße
Philipp
Edit:
define dew_all dewpoint dewpoint .* measured-temp humidity dewpoint
So gehts ;-)[/i]
Eine weitere Frage: Ich möchte gerne zu einer Überschrift zwei Readings in den darunterliegenden Zeilen einbringen.
Ist es möglich, in einer Zeile ein Feld über 2 "Zellen" zu bringen? Wie in Excel die Funktion "Zellen verbinden". Ich hatte hier irgendwo gelesen, dass der Text dann zentriert dargestellt wird (ist genau was ich auch brauche), aber ich habe keine "Anleitung" gefunden wie das Verbinden geht.
_______
Ist es möglich, bei einem Reading einen separaten Style-Befehl mit einzubringen? (siehe 2 Posts drüber)
schau dir die commandref zu nameStyle und den anderen style attributen an. für welche werte welcher style gelten soll wird im attribut selber konfiguriert.
für die spalten gibt es das valueColumns attribut.
zu allem findest du beispiele im wiki.
gruss
andre
ZitatnameIcon
Specify the icon to be used instead of the reading name. Can be a simple string or a perl expression enclosed in {} that returns a hash that maps reading names to the icon name. e.g.:
attr devices nameIcon $DEVICE
Hallo,
Wie oben stehend kann man ja den Devicenamen durch ein deviceicon ersetzen.
ist es auch möglich ein Icon vor dem Device Namen anzeigen zu lassen, also beides?
Viele Grüsse
nicht automatisch aber mit etwas handarbeit. ich glaube auch dazu gibt es im thread oder wiki beispiele.
gruss
andre
Mmmh,
Kann im Wiki kein passendes Beispiel finden.
Nur zB.
Device:<%iconname>,<%alias>,....
Aber dann stehen Icon und Name in zwei seperaten Spalten, würde das aber beides gerne zusammen in der ersten Spalte haben.
@Andre:
Kannst du mir da auf die Sprünge helfen?
Grüße
das stimmt. zur zeit geht nur jeweils eine eigene spalte für icon und namen. du kannst aber über den style den rand dazwischen so schmal machen das es fast nicht auffällt.
gruss
andre
Ist der Rand dann aber zwischen allen Spalten ganz schmal, oder geht das auch nur zwischen erster und zweiter Spalte?
Gesendet von meinem Nexus 5 mit Tapatalk
für die icon spalte den rechten und für die namen spalte den linken rand.
Zitat von: justme1968 am 16 Juni 2014, 19:26:12
für die icon spalte den rechten und für die namen spalte den linken rand.
Wie mache ich das?
in dem du in die commandref, ins wiki, ins forum und in die css dokumentation schaust.
gruss
andre
Hallo Andre,
leider bin ich in solchen Sachen nicht so sehr fitt.
Im Forum und im Wiki kann ich nichts finden wie ich den Rand einer speziellen Spalte beeinflussen kann.
Auch die CSS Doku hilft mir leider nicht all zu sehr weiter.
Hättest du vllt doch einen Tipp für mich?
Viele Grüße
das hier vielleicht: http://de.selfhtml.org/css/eigenschaften/randabstand.htm (http://de.selfhtml.org/css/eigenschaften/randabstand.htm).
gruss
andre
Zitat von: justme1968 am 17 Juni 2014, 08:54:11
das hier vielleicht: http://de.selfhtml.org/css/eigenschaften/randabstand.htm (http://de.selfhtml.org/css/eigenschaften/randabstand.htm).
gruss
andre
Hi,
ok ich muss margin-right bzw margin-left setzen für die entsprechenden Spalten.
Ich bin aber wohl leider zu sehr Anfänger um das hinzubekommen.
Wäre super wenn mir jemand helfen könnte...
Hier mein Code zu den ReadingsGroups und die Entsprechenden Screenshots.
Die in den Screenshots markierten Bereiche sind die, um die es geht. Dort soll der Abstand der Spalten verringert werden.
define Heizungswerte readingsGroup <%sani_heating>,<>,<%temp_temperature>,<%weather_humidity>,<%fts_window_1w>,<%sani_heating_temp>,<%control_plus>,<>,<%control_minus> \
WZ_WTH:<%scene_livingroom>,<Wohnzimmer>,measured-temp,humidity,dewpoint,desired-temp,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired-temp>,desired-new,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired-temp> \
KU_WTH:<%scene_cooking>,<Küche>,measured-temp,humidity,dewpoint,desired-temp,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired-temp>,desired-new,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired-temp> \
SZ_WTH:<%scene_sleeping>,<Schlafzimmer>,measured-temp,humidity,dewpoint,desired-temp,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired-temp>,desired-new,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired-temp> \
BA_WTH_Climate:<%scene_bath>,<Bad>,measured-temp,humidity,dewpoint,desired-temp,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired-temp>,desired-new,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired-temp> \
attr Heizungswerte nameStyle style="color:black;;font-weight:bold"
attr Heizungswerte group Thermostate
attr Heizungswerte room Technik
attr Heizungswerte valueFormat {"measured-temp" => '%.1f °C', humidity => '%.0f %%', "dewpoint" => '%.1f °C', "desired-temp" => '%.1f °C' }
attr Heizungswerte valueStyle {($VALUE eq "00")?'style="visibility:hidden"':}
define BK_TH_WETTER_LINE readingsGroup BK_TH:<%temp_temperature>,temperature,<%weather_humidity>,humidity,<%temp_frost>,dewpoint
attr BK_TH_WETTER_LINE group Balkon
attr BK_TH_WETTER_LINE room Balkon
Hoffe mir kann geholfen werden... ;-)
Zitat von: justme1968 am 14 Juni 2014, 18:07:38- wenn deine sensoren immer das schema aus dem beispiel haben und du ein passendes room attribut gesetzt hast kannst du das ganze auf eine zeile vereinfachen:Sensor_.*:measured-temp,desired-temp,actuator,battery,<{'%'.ReadingsVal("Fenster_$ROOM","state","0")}@state>,<{ReadingsVal("Fenster_$ROOM","battery","0")}@battery>
hier wird aus open und closed gleich ein %open bzw. %closed was direkt als icon angezeigt wird wenn du icons mit entsprechendem namen hast.
Hallo Andre,
leider funktioniert longpoll beim Reading nicht. Ich habe folgendes Demo-Beispiel in DEF beim readingsGroup als Auszug des gesamten DEF:
Fenster_Wohnzimmer:battery,state,<>
Sensor_Wohnzimmer:<{'%'."Batterie.".ReadingsVal("Fenster_Wohnzimmer","battery","0")}@battery>,<{'%'."Fenster.".ReadingsVal("Fenster_Wohnzimmer","state","0")}@state>,measured-temp
In diesem Test wird also zweimal untereinander der Batterie- und Öffnungsstatus des Fensters ausgegeben, in der unteren Zeile auch die vom Thermostat gemessene Temperatur.
Durch das aktivierte longpoll werden die Werte sofort bei Änderung auch angezeigt (bzw. das entsprechende png-Bild). Allerdings nur bei der ersten Zeile, in der das Device direkt drin steht. Bei der zweiten Zeile ändert sich die Anzeige der gemessenen Temperatur live.
Die Ausgaben der Perl-ReadingsVal ändern sich jedoch nicht live. Erst nach einem Seiten-Refresh sind die Änderungen sichtbar.
Warum, bzw. wie kann man auch hier longpoll "aktivieren"?
"alwaysTrigger" habe ich testweise auf "1" gesetzt, aber das ändert nicht.
Hallo andre,
ich hab eine readingsGroup in einer Gruppe die ich nur wenn ich sie benötige einblenden will. (disable = 0/3). Leider steht aber auch bei disable 3 "Initialized".
Wenn ich die Gruppe lösche ist wie rg wie gewünscht verschwunden.
Könntest du dir das mal bei Zeiten ansehen?
Grüße
Hallo, da ich auch schon darüber gestolpert bin, habe ich die rg über "deleteattr myrg room" ausgeblendet.
Gruß
Elektrolurch
da ganze liegt nur indirekt an der readingsGroup sonderen daran das fhem web als fallback STATE anzeigt wenn gar nichts als html zurückgegeben wird. aber scheinbar nur wenn das ganze in einer gruppe ist.
ab morgen sollte es gehen.
gruss
andre
Hallo andre,
danke, sieht schon viel besser aus. Bekommst du das freie Feld noch komplett weg?
Grüße
leider nein. zumindest nicht innerhalb der readingsGroup. das ganze drum rum wird ja von fhemweb erzeugt und das komm mit devices die 'unsichtbar' sind nicht klar.
da würde nur ein patch für fhemweb helfen. da komme ich aber gerade leider nicht dazu.
gruss
andre
Kein Problem! Ist für mich auch so ok.
Danke für die Mühe!
Grüße
Andre, ich habe eine Bitte. Ich habe bei mir MAX! Regler in einer rg. Jetzt im Sommer habe ich
die Regler auf off gesetzt. Dann hat das state-Attribut den Wert off anstatt einer Zahl.
Bedingt durch:
valueFormat {temperature => "%.0f °C", desiredTemperature => "%.0f °C", valveposition =>"%.0f %%",maxValveSetting =>"%.0f %%" }
finden sich im Log dann unschöne Meldungen wie diese hier:
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 529.
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 529.
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 529.
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 529.
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 529.
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 529.
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 529.
Kann man dagegen etwas tun?
versuch mal ob ein zusätzliches ...,valveposition.off =>"%s",...
ausgewertet wird. ich kann aber gerade nicht nachschauen ob das an dieser stelle geht.
wenn nicht musst statt dem einfachen format string "%.0f %%" selber etwas perl code schreiben der den unterschied berücksichtig und als string in {} packen. da kannst du dann etwas in der art einbauen:..., valveposition => '{ ($VALUE eq "off")?"%s":"%.0f %%"}', ...
gruss
andre
Zitat von: justme1968 am 05 Juli 2014, 17:58:02
versuch mal ob ein zusätzliches ...,valveposition.off =>"%s",...
ausgewertet wird. ich kann aber gerade nicht nachschauen ob das an dieser stelle geht.
Perfekt hat funktioniert! Super vielen lieben Dank!
Hi, ich habe ein kleines Problem mit dem codeing:
Dieser Code hier funktioniert nicht und ich vermute weil die readigs einen "." im Namen haben. Was muss ich tun damit das klappt?
define ReadingGroup_THZ readingsGroup Heizung:<%sani_boiler_temp@BD7800>,<Wasser>,WWTemp Wechselrichter:<%scene_day@yellow>,<Sonnenminuten>,sunshine.duration Wechselrichter:<%weather_summer@orange>,<UV-Index>,UV.Index Wechselrichter:<%scene_pool@lightblue>,<Pool-Temp>,sensor.1
attr ReadingGroup_THZ valueFormat { WWTemp => '%1.f °C', sunshine.duration => '%1.f °C',sensor.1 => '%1.f °C' }
Ebenfalls toll waere wenn mir jemand sagt wie ich die Soonendauer von Minuten in Stunden umrechnen kann. Ich meine nicht "einfach durch 60 Teilen" sondern wie der code ausehen muesste.
Vielen Dank fuer die Hilfe.
anführungszeichen drum rum machen:attr ReadingGroup_THZ valueFormat { WWTemp => '%1.f °C', 'sunshine.duration' => '%1.f min','sensor.1' => '%1.f °C' }
für die umrechnung auf stunden z.b. etwas in der art:...,'sunshine.duration' => '{int($VALUE/60) ."h ". $VALUE%60 ."min";}',...
gruss
andre
hallo leute,
ich probiere gerade readingsgroup aus, und komme jetzt nicht weiter. vielleicht kann mir jemand auf die sprünge helfen. hier meine definitionen:
Internals:
DEF <Raum>,<Tist>,<Tsoll>,<Mode>,<Tnight>,<Tday>,<Hum>,<battery>,<Vist>,<Vsoll> Thermostat.(WZ|OZ|AZ|Bad|Kueche|SZ|GZ|Bad.OG):measured-temp,desired-temp,controlMode,night-temp,day-temp,humidity,battery,<{ReadingsVal("Ventil.".substr($DEVICE,11),"ValvePosition","?")}@ValvePosition>,<{ReadingsVal("Ventil.".substr($DEVICE,11),"ValveDesired","?")}@ValveDesired> Broetje:ToutIst
NAME myTemp
NR 455
NTFY_ORDER 50-myTemp
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Broetje 1
Thermostat.AZ 1
Thermostat.Bad 1
Thermostat.Bad.OG 1
Thermostat.GZ 1
Thermostat.Kueche 1
Thermostat.OZ 1
Thermostat.SZ 1
Thermostat.WZ 1
DEVICES:
ARRAY(0x14abd48)
ARRAY(0x12ac840)
ARRAY(0x14af7d8)
ARRAY(0x149bfc8)
ARRAY(0x14af1e8)
ARRAY(0x1495f30)
ARRAY(0x14afc30)
ARRAY(0x149c018)
ARRAY(0x149c128)
ARRAY(0x14abd58)
Fhem:
last_update 1404742143.40404
Helper:
Bm:
Readingsgroup_get:
cnt 1
dmx 0
mAr
max 0
tot 0
Readingsgroup_notify:
cnt 894
dmx 0
max 342
tot 11469
mAr:
HASH(0x13a4698)
HASH(0x12b7070)
Attributes:
commands { 'desired-temp' => 'desired-temp:','controlMode' => 'controlMode:' }
mapping { 'Broetje' => 'Garten','Thermostat.AZ' => 'EG Arbeitszimmer','Thermostat.SZ' => 'OG Schlafzimmer','Thermostat.WZ'=>'EG Wohnzimmer','Thermostat.Kueche' => 'EG Küche','Thermostat.GZ' => 'OG Gästezimmer','Thermostat.Bad' => 'EG Bad','Thermostat.Bad.OG' => 'OG Bad','Thermostat.OZ' => 'EG Kaminzimmer','desired-temp' => '' }
nameStyle style="color:yellow"
notime 1
room info
valueFormat { 'measured-temp' => "%2.1f °C",'ToutIst' => "%2.1f °C",'night-temp' => "%2.1f °C",'day-temp' => "%2.1f °C",'humidity' => "%2i %" }
valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red'}
ich versuche in einer zeile readings eines weiteren devices zu integrieren. mit folgendem code
<{ReadingsVal("Ventil.".substr($DEVICE,11),"ValvePosition","?")}@ValvePosition>
bekomme ich im prinzip auch die richtigen daten an die richtige stelle. leider sind diese daten vom typ "name" und nicht "value". dadurch bekommen sie die gleiche farbe wie meine überschriften. nicht so schön. das geschieht bestimmt durch die spitzen klammern. aber ohne gibt es nur ärger. ist mein vorhaben nicht umsetzbar, oder kenne ich den trick noch nicht?
eine 2. frage wäre, wie könnte ich den hintergrund einer bestimmten, kompletten zeile farblich verändern? in abhängigkeit eines readings zb.
ps: welcher thread ist eigentlich der richtige für fragen? dieser oder update readingsgroup?
gruss frank
zu 1.:
ich bin gerade dabei einzubauen das man direkt das ein reading eines anderen device referenzieren kann. das ganze wird dann so aussehen:define <rg> readingsGroup define:reading1,reading2,readingx@device,reading4
an den reading namen wird also mit @ der andere device name angehängt.
das reading ist dann ein 'echtes' reading das mit valueStyle und valueFormat beeinflusst werden kann.
es ist aber zur zeit nur möglich den anderen device namen fest einzutragen. d.h. den namen aus dem aktuellen device zu erzeugen geht noch nicht. da gibt es noch ein kleines logisches problem das ich erst lösen muss.
ich habe mal eine test version mit dem aktuellen stand angehängt.
zu 2.:
das geht zur zeit nicht. ich könnte mir vorstellen ein attribut rowStyle einzubauen.
gruss
andre
edit: aktualisierte test version im nächsten post.
ich habe das ganze noch etwas erweitert. der @device teil kann jetzt auch @{...} sein und man kann von dort eine eigene sub aufrufen die dann den passenden device namen abhängig vom aktuellen device erzeugt.
also das reading so:...,ValvePosition@{valveOfDevice($DEVICE)},...
und in 99_myUtils.pm:sub
valveOfDevice ($) {
my ($DEVICE) = @_;
return "Ventil.".substr($DEVICE,11);
}
in deinem fall enthält der code kein leerzeichen und es würde auch direkt gehen:...,ValvePosition@{"Ventil.".substr($DEVICE,11)},...
gruss
andre
ps: die readings aus einem anderen device werden wie die <{...}> variante auch noch nicht per longpoll aktualisiert. dazu muss ich erst noch ein paar dinge umbauen.
hallo andre,
vielen dank für den blitz-service. hier kommen die updates ja schneller, als man updaten kann. ;)
augenblicklich stürzt fhem regelmässig nach dem modify der definition ab. ich wollte jedes mal die direkte variante probieren, also
...,ValvePosition@{"Ventil.".substr($DEVICE,11)},...
.
da nicht zu jedem "primär"-device ein "sekundär"-device existiert, vermute ich diesen umstand als ursache. es wird also auf nicht existierende readings zugegriffen, sofern dass nicht abgefangen wird. ich werde aber nochmal die version mit 99-utils probieren, um diese fälle zu unterbinden.
gruss frank
nicht existierende readings und nicht existierende devices sollten kein problem sein. bei meinen tests geht es auch damit.
bitte kontrolliere noch mal das du keine leerzeichen eingebaut hast.
steht bei dem absturz etwas im log oder auf der console?
anbei noch mal eine aktualisierte version bei der auch longpoll für die reading@device einträge geht.
gruss
andre
im fhem.log habe ich bei global verbose=1 keine hinweise gefunden. mit der neuesten version gibt es keinen absturz. dafür auch keine daten. anbei mal ein list
Internals:
DEF <Raum>,<Tist>,<Tsoll>,<Mode>,<Tnight>,<Tday>,<Hum>,<battery>,<Vist>,<Vsoll> Thermostat.(WZ|OZ|AZ|Bad|Kueche|SZ|GZ|Bad.OG):measured-temp,desired-temp,controlMode,night-temp,day-temp,humidity,battery,ValvePosition@{"Ventil.".substr($DEVICE,11)},ValveDesired@{"Ventil.".substr($DEVICE,11)} Broetje:ToutIst
NAME myTemp
NR 455
NTFY_ORDER 50-myTemp
STATE Initialized
TYPE readingsGroup
alwaysTrigger 1
mayBeVisible 1
Content:
Broetje 1
Thermostat.AZ 1
Thermostat.Bad 1
Thermostat.Bad.OG 1
Thermostat.GZ 1
Thermostat.Kueche 1
Thermostat.OZ 1
Thermostat.SZ 1
Thermostat.WZ 1
Content2:
DEVICES:
ARRAY(0x164a5f8)
ARRAY(0x16afee8)
ARRAY(0x1680ff8)
ARRAY(0x1676300)
ARRAY(0x14970f8)
ARRAY(0x1656118)
ARRAY(0x1497628)
ARRAY(0x16b0058)
ARRAY(0x16afeb8)
ARRAY(0x1497a48)
DEVICES2:
Fhem:
last_update 1404763414.70858
Helper:
Bm:
Readingsgroup_define:
cnt 1
dmx 0
max 57
tot 57
mAr:
HASH(0x13a30d0)
myTemp readingsGroup <Raum>,<Tist>,<Tsoll>,<Mode>,<Tnight>,<Tday>,<Hum>,<battery>,<Vist>,<Vsoll> Thermostat.(WZ|OZ|AZ|Bad|Kueche|SZ|GZ|Bad.OG):measured-temp,desired-temp,controlMode,night-temp,day-temp,humidity,battery,ValvePosition@{"Ventil.".substr($DEVICE,11)},ValveDesired@{"Ventil.".substr($DEVICE,11)} Broetje:ToutIst
Readingsgroup_get:
cnt 2
dmx 0
mAr
max 0
tot 0
Readingsgroup_notify:
cnt 361
dmx 0
max 609
tot 5846
mAr:
HASH(0x13a30d0)
HASH(0x12babd0)
Attributes:
alwaysTrigger 1
commands { 'desired-temp' => 'desired-temp:' }
mapping { 'Broetje' => 'Garten','Thermostat.AZ' => 'EG Arbeitszimmer','Thermostat.SZ' => 'OG Schlafzimmer','Thermostat.WZ'=>'EG Wohnzimmer','Thermostat.Kueche' => 'EG Küche','Thermostat.GZ' => 'OG Gästezimmer','Thermostat.Bad' => 'EG Bad','Thermostat.Bad.OG' => 'OG Bad','Thermostat.OZ' => 'EG Kaminzimmer','desired-temp' => '' }
nameStyle style="color:yellow"
notime 1
room info
valueFormat { 'measured-temp' => "%0.1f °C",'ToutIst' => "%.1f °C",'night-temp' => "%.1f °C",'day-temp' => "%.1f °C",'humidity' => "%.0f %" }
valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red'}
gruss frank
ich habe den fehler gefunden.
- im {...} teil sind (wie überall sonst auch) ausser leerzeichen auch keine kommas erlaubt. die direkte version geht also in deinem beispiel auch nicht.
- wenn du die version mit sub in 99_myUtils.pm verwendest sollte deine version schon funktionieren.
- ich habe noch mal eine reparierte version angehängt die verhindert das alles leer bleibt wenn kein device für das @device gefunden wird.
gruss
andre
alles klar, besten dank.
gruss frank
Hi,
vielen Dank an "justme1968" funktioniert bestens.
.... (wenn man das Semikolon bei der Umrechnung in Stunden weglaesst).
@frank: ich habe den aktuellen stand inzwischen eingecheckt.
es wäre schön wenn du dein komplettes beispiel inklusive screenshot ins wiki stellen oder zumindest noch mal hier posten könntest.
gruss
andre
mit der myutils-methode funktioniert es bestens. auch longpoll.
ich hatte die direkt-methode noch mal mit
ValvePosition@{$DEVICE=~s/Thermostat/Ventil/}
versucht. ging leider nicht. vielleicht hast du zu dieser idee noch einen verbesserungsvorschlag? masquierung oder umschiffung mit etwas vergleichbarem wie " ", aber für komma, hättest du wohl schon erwähnt? direkt-methode wäre schon komfortabler. ;)
so etwas wie spaltensortierung (min, max nach bestimmter spalte) hast du wohl nicht im angebot? ich habe nur sortDevices (alias,devicename,sortby) entdeckt.
wiki kann ich nicht, aber screenshot im anhang und ein list hier
Internals:
DEF <Raum>,<Tist>,<Tsoll>,<Mode>,<Tnight>,<Tday>,<Hum>,<BatTC>,<Vist>,<Vsoll>,<Verr>,<BatVD> Thermostat.(WZ|OZ|AZ|Bad|Kueche|SZ|GZ|Bad.OG):measured-temp,desired-temp,controlMode,night-temp,day-temp,humidity,battery,ValvePosition@{valveOfDevice($DEVICE)},ValveDesired@{valveOfDevice($DEVICE)},R-valveErrorPos@{valveOfDevice($DEVICE)},battery@{valveOfDevice($DEVICE)} Broetje:ToutIst
NAME myTemp
NR 455
NTFY_ORDER 50-myTemp
STATE Initialized
TYPE readingsGroup
alwaysTrigger 1
mayBeVisible 1
Content:
Broetje 1
Thermostat.AZ 1
Thermostat.Bad 1
Thermostat.Bad.OG 1
Thermostat.GZ 1
Thermostat.Kueche 1
Thermostat.OZ 1
Thermostat.SZ 1
Thermostat.WZ 1
Content2:
Ventil.AZ.Nord 1
Ventil.Bad 1
Ventil.Kueche 1
Ventil.SZ 1
Ventil.WZ 1
DEVICES:
ARRAY(0x18ce010)
ARRAY(0x18cdf50)
ARRAY(0x18c3470)
ARRAY(0x18bb1e0)
ARRAY(0x18cfd40)
ARRAY(0x18ce1e0)
ARRAY(0x1884720)
ARRAY(0x17ba598)
ARRAY(0x13e03e0)
ARRAY(0x1884c60)
DEVICES2:
ARRAY(0x18ce010)
ARRAY(0x18cdf50)
ARRAY(0x18c3470)
ARRAY(0x18bb1e0)
ARRAY(0x18cfd40)
ARRAY(0x18ce1e0)
ARRAY(0x1884720)
ARRAY(0x17ba598)
ARRAY(0x13e03e0)
ARRAY(0x1884c60)
ARRAY(0x18c2a18)
ARRAY(0x1884e60)
ARRAY(0x8825f0)
ARRAY(0x1876a40)
ARRAY(0x17fa040)
ARRAY(0x17ef1e0)
ARRAY(0x18cc398)
ARRAY(0x1898008)
ARRAY(0x1884b80)
ARRAY(0x18cc338)
ARRAY(0x18c2a88)
ARRAY(0x1884d60)
ARRAY(0x18c28d8)
ARRAY(0x1884070)
ARRAY(0x180cd18)
ARRAY(0x1884cf0)
ARRAY(0x18ce170)
ARRAY(0x18cc568)
ARRAY(0x18cbdd8)
ARRAY(0x18843a0)
Fhem:
last_update 1404809349.66305
Helper:
Bm:
Readingsgroup_attr:
cnt 2
dmx 0
mAr
max 0
tot 0
Readingsgroup_define:
cnt 4
dmx 0
max 111
tot 389
mAr:
HASH(0x13a30b0)
myTemp readingsGroup <Raum>,<Tist>,<Tsoll>,<Mode>,<Tnight>,<Tday>,<Hum>,<Bat>,<Vist>,<Vsoll>,<Verr>,<Bat> Thermostat.(WZ|OZ|AZ|Bad|Kueche|SZ|GZ|Bad.OG):measured-temp,desired-temp,controlMode,night-temp,day-temp,humidity,battery,ValvePosition@{valveOfDevice($DEVICE)},ValveDesired@{valveOfDevice($DEVICE)},R-valveErrorPos@{valveOfDevice($DEVICE)},battery@{valveOfDevice($DEVICE)} Broetje:ToutIst
Readingsgroup_get:
cnt 10
dmx 0
mAr
max 0
tot 0
Readingsgroup_notify:
cnt 12245
dmx 0
max 1158
tot 244435
mAr:
HASH(0x13a30b0)
HASH(0x12b7440)
Attributes:
alwaysTrigger 1
commands { 'desired-temp' => 'desired-temp:' }
mapping { 'Broetje' => 'Garten','Thermostat.AZ' => 'EG Arbeitszimmer','Thermostat.SZ' => 'OG Schlafzimmer','Thermostat.WZ'=>'EG Wohnzimmer','Thermostat.Kueche' => 'EG Küche','Thermostat.GZ' => 'OG Gästezimmer','Thermostat.Bad' => 'EG Bad','Thermostat.Bad.OG' => 'OG Bad','Thermostat.OZ' => 'EG Kaminzimmer','desired-temp' => '' }
nameStyle style="color:yellow"
notime 1
room info
valueFormat { 'measured-temp' => "%0.1f °C",'ToutIst' => "%.1f °C",'night-temp' => "%.1f °C",'day-temp' => "%.1f °C",'humidity' => "%.0f %",'ValvePosition' => "%.0f %",'ValveDesired' => "%.0f %",'R-valveErrorPos' => "%.0f %" }
valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red'}
und myutils
######################################################
# readingsgroup
######################################################
sub valveOfDevice ($) {
my ($DEVICE) = @_;
if ($DEVICE =~ m/AZ/) {
return "Ventil.".substr($DEVICE,11).".Nord";
}
else {
return "Ventil.".substr($DEVICE,11);
}
}
gruss frank
- der =~ operator liefert nicht den wert zurück sondern die anzahl der ersetzungen. du bekommst also keinen device namen so. du musst das ergebnis auch noch zurück geben. das hier sollte gehen:ValvePosition@{$DEVICE=~s/Thermostat/Ventil/;$DEVICE;}
- das mit ersetzen durch   ist keine wirkliche lösung weil damit dann verbaut wird dasn   wirklich zu verwenden.
wenn es komplizierter wird ist die sub eigentlich eine saubere lösung und macht die def auch kürzer.
- wenn ich dazu komme baue ich den kompletten parser um. aber das ist eine größere Baustelle.
- ein sortieren könnte man per javascript einbauen. wenn es freiwillige gibt gerne :)
- das alwaysTrigger solltest du entfernen wenn du es nicht wirklich brauchst. damit werden events und damit die longpoll updates auch getriggert wenn die readingsGroup in keinem browser fenster sichtbar ist. das ist normalerweise völlig überflüssig.
- du je nach dem ob du für deine devices passende alias vergeben hast oder ein passendes room attribut vergeben hast kannst du das mapping mit $ALIAS oder $ROOM eventuell einfacher machen.
- die % anzeige solltest du mit %% maskieren sonst bekommst du fehler im log.
danke für den screensot. ich setze es selber ins wiki.
gruss
andre
danke für die vielen tipps.
das substituieren
ValvePosition@{$DEVICE=~s/Thermostat/Ventil/;$DEVICE;}
funktioniert auch wunderbar.
das mapping hätte ich auch lieber einfacher gehabt. aber mit meinen alias- und roomattributen leider nicht möglich. da die userreadings sehr viel freude bereiten, wird eine umstellung wohl nicht mehr lange dauern. ;)
übrigens: cmd-select-listen aus verschiedenen devices (hm-channel) funktionieren auch sehr gut.
gruss frank
Hallo
ich brauch mal einen Denkanstoß :-[
ich habe folgende readingsGroup gebastelt:
Internals:
DEF %sani_heating@lightblue>, <>,<Mode>,<IST-Temp>,<Batterie>,<Einstellung> HT_.*:mode,temperature,battery,desiredTemperature
NAME Heizungswerte
NR 166
NTFY_ORDER 50-Heizungswerte
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
HT_Badezimmer 1
HT_Flur 1
HT_Kueche 1
HT_Niklas 1
HT_Patrick 1
HT_Wohnzimmer_links 1
HT_Wohnzimmer_rechts 1
Content2:
DEVICES:
ARRAY(0x13bd5a8)
ARRAY(0x13c9110)
ARRAY(0x13c9160)
ARRAY(0x13c91b0)
ARRAY(0x13c9200)
ARRAY(0x13c9250)
ARRAY(0x13c92a0)
ARRAY(0x13c92f0)
Fhem:
last_update 1404971258.58113
Attributes:
commands { 'Heizungswerte.auto' => 'set $DEVICE desiredTemperature auto', 'Heizungswerte.manuell' => 'set $DEVICE desiredTemperature manual', 'desiredTemperature' => 'desiredTemperature:' }
group Heizungen
mapping { 'desiredTemperature' => '' }
nameStyle style="color:lightblue;font-weight:bold"
room Heizung
valueFormat { 'desiredTemperature' => "%.1f°C", 'temperature' => "%.1f°C" }
valueIcon {'mode.auto' => 'sani_heating_automatic@lightgreen', 'mode.manual' => 'sani_heating_manual@yellow','state.closed' => 'fts_window_1w@lightgreen', 'state.open' => 'fts_window_1w_open@red'}
jetzt möchte ich noch meine 2 Fensterkontakte in die entsprechenden Zeilen mit einem Icon sichtbar machen?
einen von MAX!
Internals:
CHANGED
DEF ShutterContact 0cade0
IODev ml
LASTInputDev ml
MSGCNT 738
NAME FK_Patrick
NR 237
STATE closed
TYPE MAX
addr 0cade0
backend ml
ml_MSGCNT 738
ml_TIME 2014-07-10 20:05:09
rferror 0
serial KEQ0841064
type ShutterContact
Readings:
2014-07-10 20:05:09 MAXLAN_error 0
2014-07-10 20:05:09 MAXLAN_errorInCommand
2014-07-10 20:05:09 MAXLAN_initialized 1
2014-07-10 20:05:09 MAXLAN_isAnswer 0
2014-07-10 20:05:09 MAXLAN_valid 1
2014-07-10 20:05:09 battery ok
2014-07-10 07:47:38 firmware 1.4
2014-07-10 07:47:38 groupid 4
2014-07-10 20:05:09 onoff 0
2014-07-10 20:05:09 state closed
2014-07-10 07:47:38 testresult 15
Internals:
interfaces switch_active;battery
Attributes:
IODev ml
devStateIcon closed:fts_window_1w@lightgreen opened:fts_window_1w_open@red
event-on-change-reading .*
fp_Oben 200,185,0,
group Fenster
room 06Patrick
und einen von Homematic:
Internals:
DEF 26937C
HMLAN1_MSGCNT 14
HMLAN1_RAWMSG E26937C,0000,185E4504,FF,FFB7,1CA64126937CAABB01011964
HMLAN1_RSSI -73
HMLAN1_TIME 2014-07-10 17:59:38
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 14
NAME FK_Wohnzimmer_mitte
NR 239
STATE tilted
TYPE CUL_HM
lastMsg No:1C - t:41 s:26937C d:AABB01 011964
protLastRcv 2014-07-10 17:59:38
protSnd 14 last_at:2014-07-10 17:59:38
protState CMDs_done
rssi_at_HMLAN1 avg:-77.5 min:-84 max:-73 lst:-73 cnt:14
Readings:
2014-07-10 07:47:40 Activity alive
2014-07-09 20:17:53 CommandAccepted yes
2014-07-09 20:17:52 D-firmware 2.4
2014-07-09 20:17:52 D-serialNr LEQ0143457
2014-07-09 20:17:53 PairedTo 0xAABB01
2014-07-09 20:17:53 R-cyclicInfoMsg off
2014-07-09 20:17:54 R-eventDlyTime 0 s
2014-07-09 20:17:54 R-ledOnTime 0.5 s
2014-07-09 20:17:54 R-msgRhsPosA closed
2014-07-09 20:17:54 R-msgRhsPosB open
2014-07-09 20:17:54 R-msgRhsPosC tilted
2014-07-09 20:17:53 R-pairCentral 0xAABB01
2014-07-09 20:17:53 R-transmDevTryMax 6
2014-07-09 20:17:54 R-transmitTryMax 6
2014-07-09 20:17:53 RegL_00: 02:01 09:00 0A:AA 0B:BB 0C:01 10:01 14:06 00:00
2014-07-09 20:17:54 RegL_01: 08:00 20:6C 21:00 22:64 30:06 00:00
2014-07-09 20:18:00 alive yes
2014-07-10 17:59:38 battery ok
2014-07-10 17:59:38 contact tilted (to HMLAN1)
2014-07-09 20:18:00 cover closed
2014-07-09 20:18:00 recentStateType info
2014-07-10 17:59:38 state tilted
Helper:
mId 0030
rxType 4
Io:
newChn +26937C,00,01,FE1F
nextSend 1405007978.42529
prefIO
rxt 0
vccu
p:
26937C
00
01
FE1F
Mrssi:
mNo 1C
Io:
HMLAN1 -71
Prt:
bErr 0
sProc 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
Rpt:
IO HMLAN1
flg A
ts 1405007978.34201
ack:
HASH(0x134d8b8)
1C8002AABB0126937C00
Rssi:
At_hmlan1:
avg -77.5
cnt 14
lst -73
max -73
min -84
Attributes:
IODev HMLAN1
actCycle 028:00
actStatus alive
autoReadReg 4_reqStatus
devStateIcon closed:fts_window_1w@lightgreen opened:fts_window_1w_open@red tilted:fts_window_1w_tilt@orange
event-on-change-reading .*
expert 2_full
firmware 2.4
fp_Unten 10,460,0,
model HM-SEC-RHS
peerIDs 00000000,
room 01Wohnzimmer
serialNr LEQ0143457
subType threeStateSensor
wenn ich das richtig verstanden habe sollte das ja jetzt funktionieren?
...,state@{$DEVICE=~m/name_des_thermostats_von_patrick/?"FK_Patrick":""},...
ungetestet. nur als denkanstoss. ;)
was ich an der Geschichte nicht ganz verstehe ist wie die Zuordnung der zusätzlichen state@{$DEVICE.... zu den vorhandenen Zeilen zu handhaben sind.
Das bedeutet ich möchte ja den FK_Patrick auch in der Zeile HT_Patrick stehen haben.
Gruß Rolf
...,state@{$DEVICE=~m/name_des_thermostats_von_patrick/?"FK_Patrick":""},...
geht leider wegen dem doppelpunkt so nicht direkt. du musst das ganze in eine sub in 99_myUtils.pm auslagern so wie weiter oben beschrieben.
also etwa so:define Heizungswerte readingsgroup %sani_heating@lightblue>, <>,<Mode>,<IST-Temp>,<Batterie>,<Einstellung> HT_.*:mode,temperature,battery,desiredTemperature,state@{FK2HT($DEVICE)}
das prinzip dahinter ist das die sub pro zeile aufgerufen wird und du das aktuelle device prüfst und wenn es das passende ist gibst du den fenster kontakt zurück. sonst nichts. wenn ein leeres device zurück kommt wird kein reading angezeigt.
gruss
andre
Danke für die Erklärung, jetzt hab ich schon mal die Logik verstanden. Dan fange ich mal an meine Programmierkenntnisse aufzufrischen ;D
Gruß Rolf
gibt es eigentlich eine möglichkeit, die readings an eine bestimmte spalte zu binden?
ich habe eine titelzeile mit ca 10 namen (spalten). wenn dann in den folgenden zeilen readings fehlen (zb momentan nicht definiert/existent), rücken ja die nachfolgenden readings der zeile um die fehlenden positionen nach vorne. fehlt gleich das erste reading, ist die zuordnung der übrigen schon völlig durcheinander. ich hoffe das ist verständlich.
gruss frank
nein. das geht zur zeit nicht.
das problem ist das die readings in der definition reguläre ausdrücke sind und die position dort nichts über die endgültige position in der tabelle aussagt und mir bis jetzt noch nichts vernünftiges eingefallen war.
du hast mich aber eben auf eine idee gebracht :)
gruss
andre
Zitatdu hast mich aber eben auf eine idee gebracht :)
da kann ich ja jetzt gar nicht mehr einschlafen. ;)
gruss frank
sie hier: http://forum.fhem.de/index.php?board=19.0 (http://forum.fhem.de/index.php?board=19.0)
gruss
andre
ich möchte wettericons vom weather modul in readingsgroup einfügen. diese befinden sich in fhem/www/images/default/weather.
- kann/muss dieser pfad irgendwo eingetragen werden?
- wo müssen sich die icons befinden?
- welche formate (png, svg, gif, ...) sind für icons erlaubt?
gruss frank
ps: da muss ich wohl mal zu svn.
edit: der link von andre sollte bestimmt dieser sein. http://forum.fhem.de/index.php/topic,25297.0.html (http://forum.fhem.de/index.php/topic,25297.0.html)
die icons müssen da sein wo fhem sie auch sonst findet. die formate könne alles sein was fhem auch sonst versteht.
alle icons die du in der übersicht bei 'Select Icon' siehst kannst du verwenden.
du musst einfach nur den namen des icons mit vorangestelltem % in einem <> angeben oder mit <{}> zurück geben oder mit valueIcon zuordnen.
gruss
andre
Hallo Zusammen,
bin gerade am basteln meiner readingsGroup für meine Heizungen.
Funktioniert soweit sehr gut, allerdings habe ich ein Problem mit dem Einbinden des Dropdown für die desired-Temp.
Wenn ich attr myTemp commands { 'desired-temp' => 'desired-temp:' }
das angebe, erscheint zwar ein Dropdown, aber nicht nur mit der Temperature, sondern mit dem Namen und der Temperatur (siehe Bild im Anhang).
Hier meine Config:
define temperatures readingsGroup <%sani_heating_temp>,<Act>,<Soll>,<Ist>,<Modus>,<Fenster>,<Batterie>,< >,< >,< >,< > TYPE=FHT:actuator,desired-temp,measured-temp,mode,window,battery
attr temperatures alias Heizungen
attr temperatures commands { 'desired-temp' => 'desired-temp:' }
attr temperatures group Info
attr temperatures icon temp_temperature
attr temperatures mapping %ALIAS
attr temperatures noheading 0
attr temperatures room Heizung
attr temperatures valueFormat {"desired-temp" => "%.1f °C", "measured-temp" => "%.1f °C", "temperature" => "%.1f °C", "humidity" =>"%.1f %%", "voc" =>"%.0f CO2" }
attr temperatures valueIcon {'battery.ok' => 'batterie', 'battery.low' => 'batterie@red', 'window.open'=>'fts_window_2w_open_lr', 'window.closed'=>'fts_window_2w', 'mode.auto'=>'sani_heating_automatic', 'mode.manual'=>'sani_heating_manual'}
dein bild fehlt :)
wenn du das level vor dem drop down weg bekommen willst musst du es mit mapping auf einen leeren/unsichtbaren string mappen.
gruss
andre
Super, Danke, das wars.
Bild habe ich trotzdem nochmal angefügt ;D
Zitatalle icons die du in der übersicht bei 'Select Icon' siehst kannst du verwenden.
danke das war es. wen es noch interessiert der pfad lautet: fhem/www/images/default. die icons aus dem weathermodul liegen eine ebene tiefer und sind so nicht erreichbar. also habe ich sie erstmal rüberkopiert. wahrscheinlich bis zum nächsten update. wenn man hier etwas reinkopiert, muss fhem erst rebooten, damit es die neuen icons kennt.
frage:
ich habe readings definiert. ...icon,fc1_icon,fc2_icon...
die icon namen lauten wie der wert der readings. mit zb
attr valueicon {'battery.ok' => 'batterie@lightgreen','battery.low' => 'batterie@red','icon' => '%VALUE','fc1_icon' => '%VALUE','fc2_icon' => '%VALUE','fc3_icon' => '%VALUE','fc4_icon' => '%VALUE','fc5_icon' => '%VALUE'}
bekomme ich die icons auch angezeigt.
gibt es einen trick dieses zu vereinfachen? so etwas funktioniert leider nicht.
'.*icon' => '%VALUE'
ausserdem. gibt es möglichkeiten die icons in der grösse zu manipulieren? zb ...@50%.
gruss frank
du kannst den pfad zu den icons einfach deim icon Path attribut der fhemweb instanz hinzufügen. dann musst du nichts kopieren.
wenn du openautiomation und fhemsvg mit in den iconPath steckst bekommst du noch eine reihe icons mehr.
wenn du den iconPath änderst oder neue icons hin kopierst musst du ein 'set <webinstanz> rereadicons' machen damit die neuen icons bekannt sind.
du kannst das mappng der icons abkürzen wenn du die perl code variante verwendest und alles in eine eigene sub steckst und die icons über einen if/elsif/else baum selber zuweist.
du kannst du auch <{'%'.ReadingsVal($DEVICE,'reading',"")}@reading> verwenden statt die readings anzugeben und mit valueIcon zu mappen.
die größe der icons kannst du nur über die style attribute oder die css files ändern.
gruss
andre
Zum Wetter: bei mir heißen die Icons zum Beispiel Wetter.03.png.
Mit folgendem Attr im readingsGroup klappt das Mapping:
attr Wetter valueIcon {'fc1_code' => 'Wetter.%VALUE', 'fc2_code' => 'Wetter.%VALUE', 'fc3_code' => 'Wetter.%VALUE', 'fc4_code' => 'Wetter.%VALUE', 'fc5_code' => 'Wetter.%VALUE'}
hallo maju,
das mapping ansich klappt bei mir ja. ich wollte nur gerne aus 5 einzelnen mappings ein gemeinsames mapping erzeugen. da die readings alle ähnliche namen haben, dachte ich, man könnte da etwas einfaches zusammenbauen.
mit einer ausgelagerten funktion geht das dann wohl auch, aber das möchte ich mir eigentlich auch wiederum ersparen.
trotzdem danke für den hinweis.
gruss frank
Hallo
ich wollte nur danke sagen, euer Denkanstoß und ein wenig "perl Grundkurs" haben zu einem "fast" zufriedenstellenden Ergebnis geführt ;D
Mit folgender DEF:
%sani_heating@lightblue>, <>,<Mode>,<IST-Temp>,<Batterie>,<Einstellung>,<Fenster> HT_.*:mode,temperature,battery,desiredTemperature,state@{FK2HT($DEVICE)}
und sub in 99_myUtils.pm:
sub FK2HT ($) {
my ($DEVICE) = @_;
{
return "FK_".substr($DEVICE,3);
}
}
Ach ja und für die Optik noch:
valueIcon {'mode.auto' => 'sani_heating_automatic@lightgreen', 'mode.manual' => 'sani_heating_manual@yellow','state.closed' => 'fts_window_1w@lightgreen', 'state.opened' => 'fts_window_1w_open@red'}
Für HT_Wohnzimmer_mitte noch ein dummy (gibt ja kein HT in der mitte weil dort die Terrassentür ist ;) )
Jetzt müsste ich nur noch die Spalte für das Fenster-Icon bei HT_Wohnzimmer_mitte nach hinten schieben können?
Hat hier noch jemand eine Idee??
Gruß
Rolf
@frank: Leider weiß ich auch keine Vereinfachung. Auch "fc[1-5]_code" oder "fc[1|2|3|4|5]_code" wird ignoriert.
Vielleicht kann mir jemand helfen, ich stelle mich da wahrlich doof an. Wie kann ich die Breite einer Spalte anpassen? Ich benötige teilweise Abstände zwischen den Texten, habe im Moment einfach etliche leere Spalten eingefügt. Das ist aber alles andere als übersichtlich.
YahooWetter:<heute>,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc2_day_of_week,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc3_day_of_week,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc4_day_of_week,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc5_day_of_week
YahooWetter:fc1_code,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc2_code,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc3_code,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc4_code,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc5_code
YahooWetter:fc1_high_c,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc2_high_c,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc3_high_c,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc4_high_c,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc5_high_c
YahooWetter:fc1_low_c,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc2_low_c,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc3_low_c,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc4_low_c,<>,<>,<>,<>,<>,<>,<>,<>,<>,<>,fc5_low_c
Danke.
@ andre
iconpath und rereadicons war genau das richtige. danke.
Zitatdie größe der icons kannst du nur über die style attribute oder die css files ändern.
meinst du die style attribute von readingsgroup?
@rolf
4 leere spalten einfügen. ...,< >,< >,< >,< >,...
gruss frank
harry66: das icon verschieben geht ab morgen mit valueColumn. siehe hier: http://forum.fhem.de/index.php/topic,25297.0.html
@MaJu: das geht mit dem alten valueColumns attribut.
@frank: du musst probieren ob es mit einem der style attribute geht oder du das css direkt erweitern musst.
gruss
andre
@Andre:
Danke, leider verstehe ich "valueColumns" nicht genau.
Damit gebe ich also für alle Werte oder Überschriften der ReadingsGroup an, über wie viele Spalten sie gehen sollen? Ich hatte die Hoffnung, das geht einzeln.
Also das oben genannte Beispiel dann in etwa so:
YahooWetter:<heute>,<'colspan="5"'>,fc2_day_of_week,<'colspan="2"'>,fc3_day_of_week,<'colspan="3"'>,fc4_day_of_week,<'colspan="5"'>,fc5_day_of_week
YahooWetter:fc1_code,<>,fc2_code,<>,fc3_code,<>,fc4_code,<>,fc5_code
YahooWetter:fc1_high_c,<>,fc2_high_c,<>,fc3_high_c,<>,fc4_high_c,<>,fc5_high_c
YahooWetter:fc1_low_c,<>,fc2_low_c,<>,fc3_low_c,<>,fc4_low_c,<>,fc5_low_c
das funktioniert genauso wie alle anderen auch:
und
attr <name> valueColumn { <reading> => 3 }
gruss
andre
attr <name> valueColumns { <reading> => 'colspan="4"' }
Danke Andre
jetzt ist es Perfekt ;D ;D ;D
Gruß
Rolf
Seit dem vorletzten Update bekomme ich öfters die Meldung...
Use of uninitialized value $regex in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 553.
An meinen ReadingsGroup habe ich eigentlich nichts geändert.
hab die warnung behoben.
gruss
andre
ps: deine zeilennummer hat nicht ganz gestimmt. du bist nicht auf dem aktuellsten stand.
Guten Morgen...
ja stimmt, mit ersterem Update war es noch die 553, einen? Tag später mit dem nächsten Update später ist es die 559. Hab noch mal ein Update gemacht, eine readingsGroup.pm war diesmal aber nicht dabei. Mein Logfile schwillt leider noch immer mit Meldung an und der Zeilennummer 559.
die files für das update werden ein mal pro tag gegen 8 ihr zusammengestellt. die reparierte version steht also morgen per update zur verfügung.
gruss
andre
alles klar...danke
Hallo und Hilfe...
zunächst mal Vielen Dank an den Entwickler für das tolle Modul. Ich weiß nicht wie es ohne gehen würde. :)
Nun zu meinem Problem im Zusammenhang mit dem Modul.
Im Sommer, also jetzt, habe ich alle meine Thermostate auf OFF stehen. In dem Moment, als ich das erste auf OFF gestellt hatte, wurde und wird mein Log mit der Meldung
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 892.
Argument "off" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 606.
überflutet. Mit ist klar, dass OFF oder ON keine Zahl ist, aber diese Einstellung wird nunmal für die Thermostate angeboten und auch ausgeführt und genutzt. Es sind immer nur die beiden Zeilen 892 und 606.
Meine Logs sind kaum noch scrollbar und extrem unübersichtlich geworden, da diese Meldungen mehrfach pro Sekunde eingetragen werden. Auch FHEM wird dadurch bei mir etwas träger in der Reaktion.
Ich hoffe, ich bin mit der Meldung im richtigen Threat. :) Eingesetzt wird die MAX-Hardware.
Vielen Dank im voraus für die Hilfe.
schau mal hier: http://forum.fhem.de/index.php/topic,14425.msg181577.html#msg181577 (http://forum.fhem.de/index.php/topic,14425.msg181577.html#msg181577)
gruss
andre
Beruhigend, dass ich nicht der einzige war, dem das passiert ist.
Du kannst im valueFormat statt die Ausgabe der Temperatur als Zahl mit %d(bzw. %.1f) einfach %s verwenden.
Gruß
Elektrolurch
$s
Hallo,
vielen Dank für den Tip. Wie in den verlinkten Threat zu lesen, war es bei mir aber nicht das Problem mit dem valveposition Reading. Das gibt bei OFF immer ne 0 aus. Das Reading desiredTemperature übermittelt hier das ON oder OFF, welches dann auch im Reading STATE auftaucht. Seitdem ich den Tip dann auf das desiredTemperature Reading angewendet hatte, kamen keine neuen Meldungen mehr im Log vor.
Bei mir sieht die Zeile jetzt so aus:
attr Erdgeschoss valueFormat { 'desiredTemperature.off' => "%s", 'desiredTemperature' => "%.1f°;C", 'temperature' => "%.1f°;C", 'valveposition' => "%.0f %%" }
Vielen Dank nochmal. Jetzt bläht sich endlich das Log nicht mehr so aus. :D
ich würde gerne die farbe der values des readings dewpoint in abhängigkeit des readings measured-temp einstellen. die readings beziehen sich auf das selbe device in der gleichen zeile. kann das funktionieren und ich mache etwas falsch? oder funktioniert das erst in einer zukünftigen version? ;)
der folgende code ist ein ausschnitt vom attr valuestyle.
elsif($READING eq "dewpoint"){
if($DEVICE.measured-temp > ($VALUE + 3)){'style="color:lightgreen"'}
elsif($DEVICE.measured-temp > $VALUE){'style="color:yellow"'}
else{'style="color:orangered"'}}
gruss frank
du musst dir den wert von measured-temp jeweils selber mir ReadingsVal holen. readibgsGroup übergibt dir immer nur die werte für das aktuelle reading.
gruss
andre
du musst dir den wert von measured-temp jeweils selber mir ReadingsVal holen. readibgsGroup übergibt dir immer nur die werte für das aktuelle reading.
gruss
andre
danke, perfekt.
gruss frank
Hallo zusammen,
das Modul readingsGroup ist spitze!
Ich nutze mehrere Türkontakte. Für diese habe ich mit valueIcon 'state.open' => '...', 'state.closed' => '...' Türsymbole gesetzt.
Einer dieser Türkontakte ist aber am Garagentor eingebaut. Kann ich für diesen einen ein anderes Symbol setzen? So etwas wie 'Tor:state.open' => '...' 'Tor:state.closed' => '...'?
Vielen Dank,
Philip
'state.closed' => '{if($DEVICE eq "Tuer"){return tuer_icon}elsif($DEVICE eq "Tor"){return tor_icon}}'
eventuell so etwas.
gruss frank
nein. das geht nicht direkt über das mapping.
du kannst entweder wie im beispiel von frank auf die perl code version ausweichen
oder du kannst mit valueFormat das closed und open für die garage in etwas anderes umwandeln. z.b. garageOpen und garageClosed und dies dann im valueIcon verwesen
oder wenn es sich sowieso um state dreht die icons schon im original device mit devStateIcon zuweisen und dann in der readingsGroup dann einfach %devStateIcon als mappng verwenden. die readingsGroup nimmt dan das aktuelle devStateIcon des device.
gruss
andre
Vielen Dank, mit %devStateIcon hat es geklappt. Wald -> Bäume 8)
Gruß, Philip
Ausrichtung 1.Spalte mit SVG bei Style SmallScreen
Hallo und vielen Dank für das tolle Modul.
Ich habe ein Problem bei Verwendung eines Styles vom Typ SmallScreen (darksmallscreen, ios7smallscreen und [default] smallscreen):
Es handelt sich um eine Anrufliste mit der svg-Garfik in der ersten Spalte. Beim Style Smallscreen wird diese erste Spalte unnötig breit -breiter als alle anderen Elemente des rooms- dargestellt, während gleichzeitig die svg-Grafik ganz rechts in der Spalte sitzt.
Wie bekomme ich im Smallscreen die readingsgroup-Tabelle passend?
Als Anlage 2 Screenshots.
Vielen Dank für jede Hilfe oder Anpassung des Moduls,
awel
bitte poste mal die definition deiner readingsGroup.
am aller besten wäre es wenn du das problem mit ein paar dummys reproduzieren kannst und dann die konfiguration poststes.
gruss
andre
Hallo Andre,
Danke für die schnelle Reaktion. Das Ganze ist ein Beispielprojekt aus dem Wiki, ohne Änderungen 1:1 übernommen (Callmonitor mit Anruferliste und Zusatzfunktionen (http://www.fhemwiki.de/wiki/Callmonitor_mit_Anruferliste_und_Zusatzfunktionen)).
Readingsgroup lautet darin wie folgt:
# Anzeige der Anrufliste generieren:
define Anrufliste readingsGroup my_callmonitor:A0,B0,C0,D0,E0 my_callmonitor:A1,B1,C1,D1,E1 my_callmonitor:A2,B2,C2,D2,E2 my_callmonitor:A3,B3,C3,D3,E3 my_callmonitor:A4,B4,C4,D4,E4
#attr Anrufliste fp_9_Telefon 370,206,0,Anrufliste
attr Anrufliste mapping  
attr Anrufliste nameStyle style="font-weight:bold"
attr Anrufliste noheading 0
attr Anrufliste nolinks 1
attr Anrufliste nostate 1
attr Anrufliste notime 1
attr Anrufliste room 0_Überblick
attr Anrufliste style style="font-size:20px"
attr Anrufliste valueIcon {'A0.out_connected' => 'phone_call_out@lightgreen', 'A0.out_notconnected' => 'phone_call_out@red','A0.in_connected' => 'phone_call_in@lightgreen','A0.in_notconnected' => 'phone_call_in@red', 'A0.AB' => 'audio_volume_mid@lightgreen', 'A1.out_connected' => 'phone_call_out@lightgreen', 'A1.out_notconnected' => 'phone_call_out@red','A1.in_connected' => 'phone_call_in@lightgreen','A1.in_notconnected' => 'phone_call_in@red', 'A1.AB' => 'audio_volume_mid@lightgreen','A2.out_connected' => 'phone_call_out@lightgreen', 'A2.out_notconnected' => 'phone_call_out@red','A2.in_connected' => 'phone_call_in@lightgreen','A2.in_notconnected' => 'phone_call_in@red', 'A2.AB' => 'audio_volume_mid@lightgreen','A3.out_connected' => 'phone_call_out@lightgreen', 'A3.out_notconnected' => 'phone_call_out@red','A3.in_connected' => 'phone_call_in@lightgreen','A3.in_notconnected' => 'phone_call_in@red', 'A3.AB' => 'audio_volume_mid@lightgreen','A4.out_connected' => 'phone_call_out@lightgreen', 'A4.out_notconnected' => 'phone_call_out@red','A4.in_connected' => 'phone_call_in@lightgreen','A4.in_notconnected' => 'phone_call_in@red', 'A4.AB' => 'audio_volume_mid@lightgreen'}
Als Anfänger interpretiere ich mal:
- die erste Spalte mit Readingsnamen wird nicht ausgeblendet,
- sondern der Inhalt dieser Spalte wird auf ein geschütztes Leerzeichen gesetzt, da mapping=  ist
- und vermutlich hat das Smallscreen-Formatierungs-Problem nichts mit dem Spalteninhalt svg zu tun sondern damit, denn
- wenn man die erste Spalte mit nonames=1 ausblendet, klappt's auch mit dem Smallscreen - allerdings ohne den Abstand bzw. Rand, den die Leerspalte lieferte
Ich habe noch etwas mit readingsGroup ohne Grafiken oder Icons gespielt: Da scheint generell bei Smallscreen-Styles die erste Namensspalte deutlich breiter angezeigt zu werden als bei den anderen Styles.
Welches css spielt da in der Kombination bei allen Smallscreens nicht richtig mit readingsGroup zusammen, bei den Normalen Bildschirmbreiten/Styles allerdings doch?
Gruss
Achim
ja da ganze hängt mit dem css zusammen. nonames ist neu. das gibt es erst seit kurzem. davor war das mapping auf der einzige weg 'nichts' in der ersten spate anzuzeigen. schau mal was passiert wenn du nonames verwendest und mit <> noch eine zusätzliche spalte vor alle anderen setzt.
aber eigentlich sollte mit nonames und ohne extra spalte der platz optimal ausgenutzt werden.
gruss
andre
dann ist da wohl in denn css der SmallScreens noch eine kleine Macke, wenn die sich so anders verhalten.
Ich habe jetzt mit nonames die Spalte ausgeblendet und in dem valueStyle ein padding-left und ein padding-right eingefügt, um kleine Abstände zwischen den Tabellenzellen zu erhalten.
Sieht sogar besser aus als vorher ;D
Danke für Deine Mühen und einen schönen Urlaub
Achim
es wäre schön wenn jemand das um wiki ergänzen würde.
gruss
andre
Hallo Andre,
ist auch ein DropDownfeld für ein Dummy oder ein Device möglich. Also dort wo man zum Beispiel Werte über setList eintragen kann? Und wenn es bereits funktionieren sollte, wie kann ich dies einbinden?
Danke
Gruß
Tino
um anklickbare links oder dropdown menüs zu bekommen ist das commands attribut.
beispiele im wiki oder hier im forum.
gruss
andre
Hallo Andre, vielleicht kannst du mir weiterhelfen? Ich habe eine Readingsgroup, ähnlich der im WIKI, für die Heizung. Der Name der Readingsgroup ist Heizungswerte2. Ich brauche diese Readingsgroup OHNE den Namen "Heizungswerte2" in einem Floorplan. Hast du eine Idee, wie ich den Namen unterdrücken kann?
define notifyHeizungUpDown notify .*:desired-new.* { myUtils_HeizungUpDownNotify($NAME,$EVTPART1);; }
attr notifyHeizungUpDown DbLogExclude .*
define Heizungswerte2 readingsGroup <%sani_heating>, < >,<Act>,<Soll>,<Ist> \
Bad_Heizung_ClimRT_tr|Kueche_Heizung_ClimRT_tr|SZ_Heizung_links_ClimRT_tr|SZ_Heizung_rechts_ClimRT_tr|Kinderzimmer_Heizung_links_ClimRT_tr|Kinderzimmer_Heizung_rechts_ClimRT_tr|Flur_Heizung_Clima|WZ_links_Heizung_Clima|WZ_rechts_Heizung_Clima:ValvePosition,desired-temp,measured-temp,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired.*>,desired.new,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired.*>
attr Heizungswerte2 fp_Heizung_FP 40,250,0,
attr Heizungswerte2 fp_Status 120,1050,0,
attr Heizungswerte2 group Thermostate
attr Heizungswerte2 nameStyle style="color:yellow"
attr Heizungswerte2 room Heizung
attr Heizungswerte2 valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red', 'window.closed' => 'fts_window_1w@lightgreen', 'window.open' => 'fts_window_1w_open@red'}
attr Heizungswerte2 valueStyle {($VALUE eq "00")?'style="visibility:hidden"':''}
#
VG
Frank
attr Heizungswerte2 noheading 1
gruss
andre
Danke, solche "Feinheiten" kennt der DAU natürlich nicht :)
VG
Frank
Hallo, Andre,
Du hattest mir mal bei Readingsgroup geholfen, folgendes zu erstellen:
define Stromverbrauch readingsGroup <%time_eco_mode>,<Ampere>,<Watt>,<Gesamt>,<°C> TYPE=FBDECT:current,power,energy,temperature
attr Stromverbrauch group Verbrauch
attr Stromverbrauch nameStyle style="color:yellow;;font-weight:bold"
attr Stromverbrauch room FHT
attr Stromverbrauch valueFormat { return $VALUE if( $READING ne "energy");; $VALUE=~s/ Wh//;; sprintf('%.3f kWh', $VALUE/1000) }
attr Stromverbrauch valueStyle style="text-align:right"
Nun wird ja die Temperatur inzwischen angezeigt, und ich möchte die auch nutzen. Leider sieht das Ergebnis nicht so toll aus. Kannst du mir noch einmal helfen, dass nur die Gradzahl angezeigt und der Rest ausgeblendet wird? Ich bekomme das nicht gebacken. Guck mal Bild unten. Für dich ist das bestimmt ein Klacks. :-)
abschneiden kannst du das z.b. mit$VALUE=~s/ .measured.//
das baust du in ein eigenes if an den anfang deines valueFormat. z.b. so:attr Stromverbrauch valueFormat { if( $READING eq "temperature"){ $VALUE=~s/ .measured.//;return $VALUE;} return $VALUE if( $READING ne "energy"); $VALUE=~s/ Wh//; sprintf('%.3f kWh', $VALUE/1000) }
oder vielleicht auf dauer übersichtlicher so:attr Stromverbrauch valueFormat { energy => '{$VALUE=~s/ Wh//; sprintf('%.3f kWh', $VALUE/1000) }', temperature => '{$VALUE=~s/ C .*/ °C/};$VALUE}' }
gruss
andre
das oben ist zum direkten eintragen im web frontend. als nichts extra maskiert oder verdoppelt.
Danke für die detaillierte Erklärung und die Lösung. Wie immer sehr gut verständlich.
Beispiel 1 funktioniert, Beispiel 2 nicht. Ist aber nicht schlimm, denn es läuft ja.
Hi,
ich habe den FritzBox Callmonitor um die UserReadings F0-F4 erweitert. Im entsprechenden Modul 99_MyUtilsTelefon.pm dann ebenfalls Coding an bestimmten Stellen eingefügt, die das jeweilige valueIcon gleich mitliefert. Beispielsweise
if ( $lastPhoneEvent[$callID] eq "call" )
{
if ( $intCallDuration eq 0 )
{
$A[$callID] = "out_notconnected";
$F[$callID] = "phone_ring_out\@red";
# hier notieren was passieren soll, wenn es ein eingehender Anruf war,
# der nicht angenommen wurde
Ergebnis siehe Bild userReadings.
Dann dachte ich, solle das valueIcon dynamisch aus den userReadings F0-F4 gezogen werden. Und an dieser Stelle bin ich dann hängen geblieben. Wäre dies überhaupt möglich, damit ich nicht diesen ellenlangen Konstrukt verwenden muss:
attr Anrufliste valueIcon { 'A0.out' => 'phone_call@lightgreen', 'A0.in_connected' => 'phone_call@red', 'A0.AB' => 'audio_volume_mid@lightgreen', 'A1.out' => 'phone_call@lightgreen', 'A1.in_connected' => 'phone_call@red', 'A1.AB' => 'audio_volume_mid@lightgreen', 'A2.out' => 'phone_call@lightgreen', 'A2.in_connected' => 'phone_call@red', 'A2.AB' => 'audio_volume_mid@lightgreen', 'A3.out' => 'phone_call@lightgreen', 'A3.in_connected' => 'phone_call@red', 'A3.AB' => 'audio_volume_mid@lightgreen', 'A4.out' => 'phone_call@lightgreen', 'A4.in_connected' => 'phone_call@red', 'A4.AB' => 'audio_volume_mid@lightgreen' }
Ich habe natürlich schon ein wenig rumprobiert:
attr Anrufliste valueIcon { "A%" => ReadingsVal("$DEVICE","F%","0") }
oder
attr Anrufliste valueIcon { state => 'FritzBox:F*' }
Aber ich glaub da bin ich jetzt auf dem Holzweg. Wie gesagt, eventuell ist es ja gar nicht möglich sowas zu verwenden?
Grüße,
Michael
es geht zur zeit tatsächlich nur über die lange version und nicht dynamisch.
der perl ausdruck wird zur zeit ein mal am anfang vor dem aufbau der html tabelle ausgewertet und nicht wie bei den meisten anderen attributen dynamisch für jedes reading neu.
der code ist zwar schon da aber noch nicht aktiv weil ich angst habe das es nicht ganz rückwärts kompatibel ist.
ich versuche das noch mal anzugehen wenn ich die readingsGroup etwas aufgeräumt habe. ich weiss aber noch nicht wann ich dazu komme.
gruss
andre
ps: eventuell geht es dynamisch wenn du zuerst mit valueFormat dynamisch aus dem wert den icon namen machst und dann in valueIcon einfach nur noch $VALUE verwendest.
Zitat von: justme1968 am 19 August 2014, 22:46:24
ps: eventuell geht es dynamisch wenn du zuerst mit valueFormat dynamisch aus dem wert den icon namen machst und dann in valueIcon einfach nur noch $VALUE verwendest.
Wäre prima, wenn dies im Standard implementiert werden würde. Das mit valueFormat würde aber m.E. bedeuten, dass ich dort auch sämtliche möglichen Werte bezogen auf die "Spalte" A0 angeben müsste.
Sowas wie
attr AnrufListe valueFormat { "A0.out" => "phone_call@lightgreen"}
Da würde ich mir aber rein gar nichts sparen, sondern nur von valueIcon nach valueFormat verlagern. Oder ich kapiers nicht ganz, wie das anders zu lösen wäre.
Michael
in valueFormat kannst du eine perl routine setzen die dann dymanisch für jedes reading aufgerufen wird.
aber noch mal zurück. du hast als reading wert schon dynamisch den namen des richtigen icon stehen? so wie es auf dem screenshot oben ist ? dan brauchst du doch nur ein einfachesattr AnrufListe valueIcon %VALUE
gruss
andre
Hmm ja, sieht so aus, als ob es damit möglich wäre ;) nur woher weiß das Script von welcher Variablen Ax bis Fx es den Wert lesen soll? Das Icon steht in F0 - F4.
Wenn ich es so mache wie von dir vorgeschlagen, dann kommt das heraus wie es im Anhang zu sehen ist >:(
Michael
Hallo
Bin noch ziemlicher Anfänger, und hab ein Problem mit readingsgroups.
Wie im Anhang zu sehen, möchte ich die Werte lauf Grafik anordnen.
Kann mir da jemand helfen ?
Danke
Hallo Idi,
ich vermute mal es handelt sich um unterschiedliche devices. Du findest folgend als Beispiel eine meiner Definitionen unterschiedlicher devices in einer readingsGroup:
<%sani_heating@darkblue>,<%temperature_humidity@darkblue>,<%temp_inside@darkblue>,<SOLL FH>,<Modus FH>,<SOLL HK>,<Modus HK>,<%sani_heating_temp@darkblue>,<>,<> ^(?!File).*(Wohnzimmer|Esszimmer|Kueche|Buero|DieleWindfang|GaesteToilette)(_TC):humidity,measured-temp,desired-temp,controlMode@{$DEVICE."_Climate"},desired-temp@{$DEVICE=~s/_TC//g;$DEVICE."_HK_Clima"},controlMode@{$DEVICE=~s/_TC//g;$DEVICE."_HK_Clima"},actuator,battery,battery@{$DEVICE=~s/_TC//g;$DEVICE."_HK"}
Der erste screenshot zeigt wie es aussieht.
Der zweite den code mit den unterschiedlichen Zugriffen, es handelt sich dabei um TC und DN Thermostate.
- gelb: Definition der header-Zeile
- violet: Filtern auf die TCs und deren readings, die benötigt werden
- grün: Attribute controlMode aus den TC-Climate channel
- rosa: Attribute aus dem DN-Climate channel
ciao walter
Hallo wkarl
Erstmal danke für deine Antwort.
Leider ist mir das noch alles etwas zu viel.
Wie könnte das in meinem Fall jetzt aussehen um gewünschtes Ergebnis zu erlangen ?
Es gibt die beiden Devices, die es gilt neben einander dar zu stellen.
Besten Dank nochmal
Hallo nochmal
Möcht mich nochmal bedanken.
Habs jetzt trotzdem hinbekommen.
Hallo Andre,
habe da ein kleines Problem mit der Aktualisierung der Bildschirmanzeige einer readingsGroup, obwohl die readings geschrieben wurden, wird die Anzeige nicht aktualisiert. Erst nach Drücken von F5.
Also:
define Anrufliste readingsGroup <Pos>,<Art>,<Datum>,<Name>,<Nummer>,<Dauer> meineFB:A0,B0,C0,D0,E0 meineFB:A1,B1,C1,D1,E1 meineFB:A2,B2,C2,D2,E2 meineFB:A3,B3,C3,D3,E3 meineFB:A4,B4,C4,D4,E4
mapping {'meineFB' => '{sprintf("%d.",$ROW-1);}'}
noheading 0
nolinks 1
nostate 1
notime 1
room Telefon
Nutze aktuellen Firefox.
attr WEB longpoll 1
ist auch gesetzt.
Die Werte werden mit folgendem Code in die readings geschrieben:
my $update = 1;
...
readingsBeginUpdate($hash);
for ($i=$maxlines;$i>0; $i--)
{
foreach $j ('A'..'F')
{
my $k = $j . ($i-1);
$tt = $rhash->{$k}{VAL};
next if(!defined($tt));
# $tt = ReadingsVal($meineFB,$j.($i-1),"-");
readingsBulkUpdate($hash,$j.$i,$tt,$update);
} # end j
} # end i
foreach my $k ('A'..'F')
{
# Log3($name,4,"Updater first line: k $k val $callmem{$ID}{$k}");
readingsBulkUpdate($hash,$k."0",$callmem{$ID}{$k},$update);
}
readingsEndUpdate($hash, $update);
meine FB ist vom type FB_CALLMONITOR
Sollte also eigentlich alles richtig sein.
Einen Tipp, woran es liegen könnte?
Gruß
Elektrolurch
ich versuche das nachzustellen sobald ich dazu komme. da ich weder fritzbox noch callmonitor habe wäre es hilfreich wenn du mir eine komplette konfiguration (inklusive dummys) machen kannst bein der das problem auftritt.
in der zwischenzeit schau mal bitte im event monitor ob events von der readingsGroup kommen.
schau dir auch mit
firebug mal die fhem web seite an. die einzelnen zellen der tabelle sollten ein inform id tag haben zu dem das event jeweils passen muss.
gruss
andre
Hallo Andre,
danke für das Angebot. Jetzt habe ich für den Test eine Umstellung gemacht und speichere die Informationen der Anrufe nicht mehr bei der Fritzbox, sondern in einem eigenen dummy -> und siehe da, jetzt wird zumindest bei einem Anruf die erste Zeile aktualisiert. Tue mich da beim Testen wegen Scrrenreader etwas schwer, kann ja auch noch sein, dass der das Update auf dem Scrren nicht mitbekommt.
Mich wundert das etwas, da müsste ja das FBCallMonitor - Modul etwas mit den Events machen, wenn ich da readings hinterlege, die ihm ursprünglich ja nicht bekannt waren....
Werde da mal weiter forschen....
Gruß
Elektrolurch
Zitat von: justme1968 am 26 August 2014, 18:04:52
schau dir auch mit
firebug mal die fhem web seite an. die einzelnen zellen der tabelle sollten ein inform id tag haben zu dem das event jeweils passen muss.
Andre,
ich habe das jetzt mal geprüft, siehe angehängte Datei und hier als Ausschnitt noch eingefügt, Taebllenzeile 1, Spalte 1 sowie Spalte 2
<td informid="Anrufliste-FritzBox.A0">
<div informid="Anrufliste-FritzBox.B0">11:19:08 27.08.2014</div>
Ich weiß jetzt nicht genau was "zum event passen" genau bedeutet. Deshalb hier der Auszug aus der fhem.cfg:
define FritzBox FB_CALLMONITOR 192.168.6.1:1012
attr FritzBox local-area-code 0xxxx
attr FritzBox reverse-search all
attr FritzBox reverse-search-cache 1
attr FritzBox reverse-search-cache-file ./log/FritzBox_Cache.txt
attr FritzBox reverse-search-phonebook-file ./log/FritzBox_Telefonbuch.xml
attr FritzBox userReadings eing0 eing1 eing2 eing3 eing4 A0 A1 A2 A3 A4 B0 B1 B2 B3 B4 C0 C1 C2 C3 C4 D0 D1 D2 D3 D4 E0 E1 E2 E3 E4 F0 F1 F2 F3 F4
attr FritzBox verbose 0
attr FritzBox unique-call-ids 1
define FileLog_FritzBox FileLog ./log/FritzBox-%Y.log FritzBox
attr FileLog_FritzBox logtype text
# Normale Anrufe
#define not.FBCallNotify notify FritzBox:.* { FB_TelefonMonitor ($NAME,$EVENT);; }
define not.FBCallNotify notify FritzBox:.* { FB_TelefonMonitor ($EVENT);; }
attr not.FBCallNotify room Telefon
attr not.FBCallNotify sortby C01
define Anrufliste readingsGroup FritzBox:A0,B0,C0,D0,E0 FritzBox:A1,B1,C1,D1,E1 FritzBox:A2,B2,C2,D2,E2 FritzBox:A3,B3,C3,D3,E3 FritzBox:A4,B4,C4,D4,E4
attr Anrufliste mapping  
attr Anrufliste nameStyle style="font-weight:bold"
attr Anrufliste noheading 0
attr Anrufliste nolinks 1
attr Anrufliste nostate 1
attr Anrufliste notime 1
attr Anrufliste room Telefon
attr Anrufliste style style="font-size:20px"
attr Anrufliste valueIcon {'A0.out_connected' => 'phone_ring_out@green', 'A0.in_connected' => 'phone_ring_in@green', 'A0.AB' => 'audio_volume_mid@lightgreen', 'A0.in_notconnected' => 'phone_ring_in@red', 'A0.out_notconnected' => 'phone_ring_out@red', 'A1.out_connected' => 'phone_ring_out@green', 'A1.in_connected' => 'phone_ring_in@green', 'A1.AB' => 'audio_volume_mid@lightgreen', 'A1.in_notconnected' => 'phone_ring_in@red', 'A1.out_notconnected' => 'phone_ring_out@red', 'A2.out_connected' => 'phone_ring_out@green', 'A2.in_connected' => 'phone_ring_in@green', 'A2.AB' => 'audio_volume_mid@lightgreen', 'A2.in_notconnected' => 'phone_ring_in@red', 'A2.out_notconnected' => 'phone_ring_out@red', 'A3.out_connected' => 'phone_ring_out@green', 'A3.in_connected' => 'phone_ring_in@green', 'A3.AB' => 'audio_volume_mid@lightgreen', 'A3.in_notconnected' => 'phone_ring_in@red', 'A3.out_notconnected' => 'phone_ring_out@red', 'A4.out_connected' => 'phone_ring_out@green', 'A4.in_connected' => 'phone_ring_in@green', 'A4.AB' => 'audio_volume_mid@lightgreen','A4.in_notconnected' => 'phone_ring_in@red', 'A4.out_notconnected' => 'phone_ring_out@red', }
Also mein Event heißt schon Mal anders, als die IDs im HTML Coding. Weiß nicht, ob du das gemeint hast?
Grüße,
Michael
Mal ein etwas anderes Problem mit den readingsGroup. Ich habe MAX Fensterkontakte, die beispielsweise wie folgt lauten: KellerHeizung, KellerWerkstatt, GarageRechts, GarageLinks.
Während die mit Keller tatsächlich den Zustand von Fenster (opened,closed) repräsentieren, sind geben die mit Garage den Zustand der Garagentore an.
Ich möchte jetzt den Zustand der Fenster mit den Symbolen der Fenster und den Zustand der Garagentore mit anderen Symbolen darstellen. Da aber der Zustand nur über das Reading state geht, und dort immer der gleiche Inhalt drin steht, kann ich nicht unterscheiden, ob der Zustand von den Fenstern oder den Toren kommt. Zumindest ich kann es bisher nicht:
Das folgende Attribut stellt derzeit ALLE Kontakte mit dem Symbol Fenster offen oder Fenster geschlossen dar. Das mit den Toren kann ich, wie gesagt, momentan nicht:
attr Oeffnungszeiten valueIcon {'state.closed' => 'fts_window_roof@green', 'state.opened' => 'fts_window_roof_open_2@red', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red'}
Die Symbole, die ich für die Tore verwenden möchte: closed:fts_garage_door_100@green opened:fts_garage@red.
Dann habe ich noch ein kleines Darstellungsproblem, siehe angefügtes Bild.
define Oeffnungszeiten readingsGroup <%temp_temperature>,< >,<Raum>,<Zustand>,<Batterie> TYPE=MAX:state,battery
attr Oeffnungszeiten alias Öffnungszeiten
attr Oeffnungszeiten mapping %ALIAS
attr Oeffnungszeiten room Keller
attr Oeffnungszeiten notime 1
attr Oeffnungszeiten valueIcon {'state.closed' => 'fts_window_roof@green', 'state.opened' => 'fts_window_roof_open_2@red', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red'}
attr Oeffnungszeiten nameStyle style=color:yellow;;font-weight:bold;;text-align:left
Und zwar mit den Überschriften und den Werten. Die Überschriften sind zu weit rechts, die Werte würden passen. Im Wiki sind bei allen Beispielen die Überschriften und die darunter stehenden Werte immer unter einander.
Kann mir hier jemand einen Tipp geben?
Danke,
Michael
zu der frage mit den unterschiedlichen symbolen für tür und garage gibt es weiter oben schon etwas. du hast beim mapping auch zugriff auf device namen.
du hast vor ein leeres <> zu viel in der überschriften zeile.
alles andre muss ich mir in ruhe anschauen. vermutlich erst nächste woche.
gruss
andre
Hallo,
ich baue mir gerade eine ReadingsGroup zur Handbedienung meiner Heizkörper (hm-cc-rt-dn) zusammen. Hierbei möchte ich nicht den Wert desired-temp setzen, sondern den Wert für controlManu. Da es für controlManu aber kein Reading gibt, dachte ich, ich könnte den Wert von desired-temp zur Auswahl des korrekten Wertes des Liste controlManu nehmen - funktioniert aber leider nicht :(
Hat jemand eine Idee, wie ich den korrekten Wert in der Liste vorselektieren kann?
Hier meine ReadingGroup:
define DG.wz.HZ.Heizkoerperventil.RG readingsGroup <%sani_heating>,< >,< >,< >,< >,< >,< > <Ist>,<Soll>,<Mode>,<bis>,<Bat>,<Ventil> DG.wz.HZ.Heizkoerperventil.Clima:measured-temp,desired-temp,controlMode,<{getHeatingModeUntil($DEVICE)}@controlMode>,battery@{getHeatingDeviceName($DEVICE)},ValvePosition,<{getHeatingStateIcon($DEVICE)}@state>,<{getHeatingStateValue($DEVICE)}@state>
attr DG.wz.HZ.Heizkoerperventil.RG commands { 'desired-temp' => 'desired-temp:' }
attr DG.wz.HZ.Heizkoerperventil.RG fp_Wohnzimmer 341,343,0,
attr DG.wz.HZ.Heizkoerperventil.RG mapping {'desired-temp' => ''}
attr DG.wz.HZ.Heizkoerperventil.RG nameStyle style="color:yellow;;font-weight:bold;;text-align:center"
attr DG.wz.HZ.Heizkoerperventil.RG noheading 1
attr DG.wz.HZ.Heizkoerperventil.RG nonames 1
attr DG.wz.HZ.Heizkoerperventil.RG room Wohnzimmer
attr DG.wz.HZ.Heizkoerperventil.RG valueFormat { 'measured-temp' => "%0.1f°;C",'ValvePosition' => "%.0f%%"}
attr DG.wz.HZ.Heizkoerperventil.RG valueIcon {'battery.ok' => 'batterie_lightgreen', 'battery.low' => 'batterie_red', 'state' => '%VALUE', 'controlMode.manual' => 'sani_heating_manual', 'controlMode.auto' => 'sani_heating_automatic'}
attr DG.wz.HZ.Heizkoerperventil.RG valueStyle style="text-align:center"
Zu Info noch die Auszüge aus der myUtils:
sub
getHeatingStateIcon($)
{
my ($device) = @_;
if ($device !~ /.Clima$/)
{
$device = $device.'.Clima';
}
my $state = Value($device);
if ($state =~ /^set_controlManu/)
{
return '%CMDs_pending';
}
else
{
return '%CMDs_done';
}
}
sub
getHeatingStateValue($)
{
my ($device) = @_;
if ($device !~ /.Clima$/)
{
$device = $device.".Clima";
}
my $state = Value($device);
if ($state =~ /^set_controlManu/)
{
my @values=split(/ /,$state);
return $values[1].'°C';
}
else
{
return ' ';
}
}
sub
getHeatingModeUntil($)
{
my ($device) = @_;
if ($device !~ /.Clima$/)
{
$device = $device.".Clima";
}
my $controlMode = ReadingsVal($device, "controlMode", " ");
$device = $device.".at.DoAuto";
my $until = InternalVal($device, "NTM", " ");
if ($until eq " ")
{
return "";
}
else
{
if ($controlMode eq "auto")
{
return '%CMDs_pending';
}
else
{
return $until;
}
}
}
sub
getHeatingDeviceName($)
{
my ($device) = @_;
if ($device !~ /.Clima$/)
{
return $device;
}
else
{
my @values=split(/.Clima/,$device);
return $values[0];
}
}
Ronny
erzeuge dir das controllManu reading einfach selber. per setreading oder user reading.
gruss
andre
Dank für den Tip, so geht's :)
Hallo,
eine Frage aus Neugierde und da ich keinen Informationen dazu finde: schalte controlManu automatisch in den manuellen Status, falls das device vorher im Status auto war? Oder welchen Zweck hat diese Option?
Danke und ciao walter
Zitat von: wkarl am 28 August 2014, 11:32:18
schalte controlManu automatisch in den manuellen Status, falls das device vorher im Status auto war? Oder welchen Zweck hat diese Option?
Genau so ist es, und ich schalte dann mit einem at nach 1,5h wieder in Auto, sodass dann wieder das Auto-Soll aktiviert wird...
Zitat von: justme1968 am 27 August 2014, 14:06:25
du hast vor ein leeres <> zu viel in der überschriften zeile.
Danke Andre,
wenn ich das < > entferne, ich hatte das schon Mal vor dem Posten probiert, dann sieht es so aus, wie unten angefügt. Hat also auch nicht wirklich viel gebracht :(
Michael
ich sehe im screenshot drei spalten überschrift, zwei spalten icons und in der dfinition noch viel mehr readings.
readings die es im device nicht gibt werden von der readingsGroup ausgelassen und alle folgenden spalten rutschen eins nach links.
wenn du das nicht willst musst du das valueColum attribut verwenden und einem reading eine feste spalte zuweisen.
gruss
andre
define Oeffnungszeiten readingsGroup <%temp_temperature>,<Raum>,<Zustand>,<Batterie> TYPE=MAX:state,battery
Bin nicht der Spezi, aber ich habe hier ein Symbol, den Raum (mit Alias aus den jeweiligen Geräten), den eine Spalte mit State und eine weitere mit Battery.
Welche Readings hast du außer state und battery noch im Auge?
Meine Definition sollte doch im Grunde genommen das gleiche sein, wie hier im Wiki unter "Heizungswerte inklusive Batterie- und Fensterstatus" beschrieben:
define Heizungswerte readingsGroup <%sani_heating>,< >,<Act>,<Soll>,<Ist> TYPE=FHT:actuator,desired-temp,measured-temp,<%18>,<%20>,<%22>,window,battery
Das Ergebnis, im Bild angefügt, sieht dann allerdings anders aus, wie bei mir. Oder macht es einen Unterschied, weil ich noch zusätzlich attr Oeffnungszeiten mapping %ALIAS
verwendet habe?
Ich denke nicht, aber wo ist dann mein Problem? Die zusätzliche Überschrift "Raum"? Ja, das war es! Das bedeutet, dass das Symbol auch eine eigene Überschrift ist und zu der Spalte mit den Raumnamen gehört. Ich kann der readingsGroup also kein Symbol geben und an gleicher Stelle nicht auch noch einen Text zuweisen?
Michael
Zitat von: justme1968 am 27 August 2014, 14:06:25
zu der frage mit den unterschiedlichen symbolen für tür und garage gibt es weiter oben schon etwas. du hast beim mapping auch zugriff auf device namen.
Andre,
meine Frage hat sich erledigt: mit dem Hinweis von dir weiter vorne im Thread
Zitatoder wenn es sich sowieso um state dreht die icons schon im original device mit devStateIcon zuweisen und dann in der readingsGroup dann einfach %devStateIcon als mappng verwenden. die readingsGroup nimmt dan das aktuelle devStateIcon des device.
konnte ich es folgendermassen lösen:
attr Oeffnungszeiten valueIcon {state => '%devStateIcon', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red'}
Danke und Grüße,
Michael
Hallo Zusammen,
ich habe einen PCA in FHEM integriert und möchte jetzt gerne die Verbrauchsdaten grafisch aufbereiten und anzeigen. Dazu versuche ich mich an dem Beispiel aus dem WIKI (readingsgroup), sieht ja einfach aus.
Es gelingt mir aber nicht, die Werte (z.B. kwh) sichtbar zu machen, was mache ich falsch oder was habe ich vergessen :(
#Verbrauch_Gartenpumpe
define Verbrauch_Gartenpumpe readingsGroup Type=PCA301:state,power,consumptionTotal
attr Verbrauch_Gartenpumpe group Gartenpumpe
attr Verbrauch_Gartenpumpe mapping %room %alias
attr Verbrauch_Gartenpumpe room Garten
attr Verbrauch_Gartenpumpe valueFormat {power => "%.1f", consumptionTotal => "%.2f kWh"}
define SVG_FileLog_PCA301_0EB4A7_1 SVG FileLog_PCA301_0EB4A7:SVG_FileLog_PCA301_0EB4A7_1:CURRENT
ich bin irgendwie ratlos, kann doch eigentlich nicht so schwer sein...
VG
Pit
als erstes mal "TYPE". ebenso "ALIAS" und "ROOM".
gruss frank
Hallo Pit,
Doku zu SVG und Filelog gelesen?
ZitatNormalerweise müssen SVG-Geräte nicht manuell erzeugt werden, da FHEMWEB es für den Nutzer einfach macht: man muss in der Detailansicht eines FileLogs wechseln und auf "Create SVG instance" klicken.
vg Jens
Hallo Zusammen,
ich habe den Code über die WebIf eingegeben, ohne Anführungsstriche wie im WIKI Codeschnipsel ReadingsGroup vorgesehen.
Eigentlich möchte ich in einem ersten Schritt nur die Grafik "RgVerbrauchPCA301" aus diesem WIKI erstellen, erst einmal nur mit den Werten wie "kwh", Formatierung kommt dann später.
Hat das etwas mit dieser "SVG-Instanz" zu tun :-[
VG
Pit
beachtest du die tips gar nicht, oder hast du es nicht verstanden? http://forum.fhem.de/index.php/topic,14425.msg196924.html#msg196924 (http://forum.fhem.de/index.php/topic,14425.msg196924.html#msg196924)
du musst auf gross- und kleinschreibung achten. also:
define Verbrauch_Gartenpumpe readingsGroup TYPE=PCA301:state,power,consumptionTotal
gruss frank
Hallo Pit,
wenn Du keine "Diagramm-Grafik" brauchst, SVG bitte weglassen und die Tipps von frank beherzigen.
also
#Verbrauch_Gartenpumpe
define Verbrauch_Gartenpumpe readingsGroup TYPE=PCA301:state,power,consumptionTotal
attr Verbrauch_Gartenpumpe group Gartenpumpe
attr Verbrauch_Gartenpumpe mapping %ROOM %ALIAS
attr Verbrauch_Gartenpumpe room Garten
attr Verbrauch_Gartenpumpe valueFormat {power => "%.1f", consumptionTotal => "%.2f kWh"}
Hallo Zusammen,
sorry, ich war blind.... :-[
VG
PIT
Dieser Fix von Rudi führt offenbar dazu, dass die Dropdowns (mit Kommandos) in der ReadingsGroup nicht mehr funktionieren. Das entsprechende Modul (bei mir Squeezebox) erhält dann offenbar falsche Kommandos:
http://forum.fhem.de/index.php/topic,26897.0/topicseen.html (http://forum.fhem.de/index.php/topic,26897.0/topicseen.html)
Bei der alten Version des Dropdowns ohne Javascript und reload der Seite hat das wunderbar funktioniert.Praktisch find' ich ein Dropdown ohne reload dennoch.
DEF:
<%audio_sound> TYPE=SB_PLAYER:power,prev,playStatus,next,volume,currentArtist,currentTitle,favorites,shuffle,repeat,sync
command (für Favoritenauswahl):
'favorites'=>'favorites:'
das muss ich mir anschauen. betrifft es die raum übersicht, einen floorplan oder beides?
gruss
andre
Sorry für die fehlende Info. Ich nutze keinen Floorplan. Es wurde nur in einem Raum getestet.
hab gerade getestet und der normalen übersicht im frontend geht es. es ist also vermutlich im floorplan?
gruss
andre
Wie gesagt, kein Floorplan. So wie das Log aussieht, wird dort offenbar kein
set <device> favorites <name>
gesendet, sondern ein
set <device> <name>
Zitat2014.09.09 10:10:04.113 3: SB_PLAYER_Set: unsupported command given
2014.09.09 10:10:04.112 5: SB_PLAYER_Set: called with AntenneThuering
2014.09.09 10:09:55.742 5: SB_PLAYER_Set: called with ?
2014.09.09 10:09:51.523 5: SB_PLAYER_Set: called with ?
2014.09.09 10:09:50.548 5: SB_PLAYER_Get: SqueezeboxBuero: unkown argument
2014.09.09 10:09:50.548 1: SB_PLAYER_Get: called with SqueezeboxBuero ?
2014.09.09 10:09:50.546 5: SB_PLAYER_Set: called with ?
(Log ist von unten nach oben zu lesen)
Man muss noch dazu sagen, dass das Device kein reading favorites hat. Dieses setze ich per setreading. Das Kommando funktioniert jedoch direkt und auch ohne das neue Dropdown.
ups. sorry für das durcheinander.
hab es gerade auch gesehen.
gruss
andre
Und ich habe festgestellt, dass es gar nichts mit der readingsGroup zu tun hat:
http://forum.fhem.de/index.php/topic,26313.msg198626.html#msg198626 (http://forum.fhem.de/index.php/topic,26313.msg198626.html#msg198626)
ich auch :)
Sorry, dass ich dich zuerst aufgescheucht habe. Hätte das zuerst mit webCmd testen sollen. Aber so habe ich wenigstens einen Fürsprecher ;)
Hi,
ich versuche gerade mit Hilfe der readingsGroup die Zustände der MAX! Fensterkontakte als auch deren Batteristatus abzubilden.
Die funktioniert soweit mit
define Oeffnungszeiten readingsGroup <Raum>,<Zustand>,<Batterie> TYPE=MAX:state,battery
Mein Problem ist jetzt, dass auch mein Test-Heizungsthermostat, ebenfalls von MAX!, auch mit angezeigt wird.
Die Gerätenamen der Fensterkontakte sind nicht anhand des Namens alle auf einmal greifbar: FensterKind1, FensterKind2, KellerFensterSueden, KellerFensterPartyraum, Garagentuer, KellerTuer usw. so dass ich auch nicht irgendetwas wie ... Fenster(Kind1|Kind2):state,battery...
verwenden kann.
Kann mir jemand einen Tipp geben wie ich es doch noch gebacken bekomme?
Danke,
Michael
Hi Michael,
probier mal sowas:
define Oeffnungszeiten readingsGroup FensterKind1:state,battery FensterKind2:state,battery KellerFensterSueden:state,battery KellerFensterPartyraum:state,battery Garagentuer:state,battery KellerTuer:state,battery
Gruß
Spiff
Prima Danke! Das hat mir schon Mal einen Anhaltspunkt geliefert wie ich es machen kann:
define Oeffnungszeiten readingsGroup Fenster.*:state,battery Keller.*:state,battery Garage.*:state,battery KellerFenster.*:state,battery Terasse.*:state,battery
Ist zwar ein wenig unübersichtlich, aber es läuft.
Dann habe ich noch ein Thema mit dieser Definition hier zu meinem Max! Thermostat:
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll-Temp>,<Ist-Temp>,<Modus>,<Batterie> Heizung(Eltern|):valveposition,desiredTemperature,temperature,mode,battery
attr Heizungswerte mapping %ROOM
attr Heizungswerte nameStyle style=color:yellow;;font-weight:bold
attr Heizungswerte valueFormat {temperature => "%.0f °C", desiredTemperature => "%.0f °C", valveposition =>"%.0f %%" }
attr Heizungswerte room Heizungswerte
attr Heizungswerte valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red', 'mode.manual' => 'sani_heating_manual@red', 'mode.auto' => 'sani_heating_automatic@green'}
Ich würde bei dieser Defintion davon ausgehen, dass ein Symbol (sani_heating_automatic bzw. sani_heating_manual) für den Modus Auto (mode.auto) bzw. Modus Manuell (mode.manual) angezeigt wird. Tut es aber nicht. Stattdessen bleibt der jeweilige Text stehen.
Was mache ich falsch?
Michael
Hallo,
erstmal muss ich sagen, dass dies ein prima Modul ist, das sehr mächtig ist. Ich habe mir u.a. eine ReadingsGroup zur Bedienung meiner Heizkörper im Floorplan gemacht. Und da habe ich ein Problem mit dem/eine Frage zum LongPoll. Hier zunächst meine ReadingsGroup:
define DG.wz.HZ.Heizkoerperventil.RG readingsgroup <%sani_heating>,<>,<>,<>
DG.wz.HZ.Heizkoerperventil.Clima:<Ist>,measured-temp,<>,<>
DG.wz.HZ.Heizkoerperventil.Clima:<Soll>,controlManu,<{getHeatingStateIcon($DEVICE)}@state>,<{getHeatingStateValue($DEVICE)}@state>
DG.wz.HZ.Heizkoerperventil.Clima:<Mode>,controlMode,<{getHeatingModeUntil($DEVICE)}@controlMode>,<>
DG.wz.HZ.Heizkoerperventil.Clima:<Bat>,battery@{getHeatingDeviceName($DEVICE)},<>,<>
DG.wz.HZ.Heizkoerperventil.Clima:<Ventil>,ValvePosition,<>,<>
Diese stellt u.a. die Ist-Temperatur dar und bietet die Möglichkeit, die Soll-Temperatur aus einer Dropdownliste auszuwählen (diese setzt das Heizkörperventil in den Handmodus). Die Übernahme der Soll-Temperatur beim HM-CC-RC-DN dauert eine Weile: zunächst wird der state des Geräts DG.wz.HZ.Heizkoerperventil.Clima auf "set_controlManu xx.x" gesetzt. Wenn dies der Fall ist, wird in der ReadingsGroup eine Sanduhr und die zu setzende Temperatur angezeigt.
Außerdem wird durch ein notify ein at aktiviert, welches das Heizkörperventil nach 1,5h wieder in Automatik setzt. Daher wird neben dem Symbol für den Modus beim Handbetrieb auch der Zeitpunkt für das Rücksetzen angezeigt. Soweit der Plan und bei manueller Aktualisierung klappt das auch (siehe Anhang).
Nun zu meinen Problemen:
1. Zum einen habe ich gehofft, dass durch <{Funktion()}@reading> bei Aktualisierung des reading auch die Funktion erneut aufgerufen und der aktualisiert wird. Das schein jedoch wenn dann nur sporadisch zu funktionieren. Kann es vielleicht sein, dass es Probleme gibt, wenn ich mehrmals das gleiche reading (z.B. @state) nutze?
2. Zum anderen habe ich das Problem, dass in der Zelle für das Icon der Handbedienung (Zeile 3 Spalte 3) und dem Zeitpunkt für das Rücksetzen in Automatik (Zeile 4 Spalte 3) manchmal gleiche Werte drin stehen. Ein Blick in den HTML-Quellcode der Seite bringt mich zu folgender Vermutung: scheinbar wird die informid (ich meine, die ist für das LongPoll da) aus Name der ReadingsGroup + Name des Gerätes + Spalte zusammengebaut, was dazu führt, dass die div-Container in den beiden Zellen die gleiche informid (DG.wz.HZ.Heizkoerperventil.RG-DG.wz.HZ.Heizkoerperventil.Clima.i2.item) haben.
Kann jemand etwas dazu sagen?
Vielen Dank
Ronny
das hängt beides zusammen. zur zeit gibt es die mehr oder weniger implizite annahme das pro device ein reading nur ein mal in der readingsGroup vorkommt.
bei mehrfach verwendung kann es dann sein das manches nicht so funktioniert wie erwartet.
ich muss mal schauen was man hier tun kann.
gruss
andre
Ich muss mich noch mal melden, da ich voller Begeisterung gerade festgestellt habe, dass sich meine kleine Funktion (http://forum.fhem.de/index.php/topic,26913.0.html) zum Verstecken von Floorplan-Inhalten eins zu eins so in einer ReadingsGroup einsetzen lässt: So habe ich ein Chart-Symbol in meiner ReadingsGroup, mit welchem ich mir durch anklicken den Chart der Heizung (DG.wz.PL.Klima) einblenden kann:
<{hideButtonHTML("KlimaDiagramm", "DG.wz.PL.Klima", "/fhem/images/default/chart.png", "40")}>
Ich kann mich nur wiederholen: Super Modul
hier im wiki (http://www.fhemwiki.de/wiki/ReadingsGroup#Links_und_Trigger (http://www.fhemwiki.de/wiki/ReadingsGroup#Links_und_Trigger)) ist auch etwas das zu dem thema passt. mit den passenden html Elementen vor dem eigentlichen 'button' kannst du ihn z.b. auch ganz ans ende hinter die readingsGroup bekommen und und z.b. auch elemente oder deren aussehen in der readingsGroup beeinflusse.
gruss
andre
Ich habe gerade die Idee, unwichtige Zeilen der readingsGroup standardmäßig auszublenden und mittels Button einzublenden. Meine Idee momentan ist, zwei readingsGroups übereinander zu legen und die untere mittels Button einzublenden. Gibt es noch eine andere Möglichkeit z.B. für einzelne Zeilen das visible-Attribut zu setzen?
wenn die valueFormat ein undef liefert wird das reading ausgeblendet, wenn eine komplette zeile kein reading enthält wird die komplette zeile ausgeblendet. schau mal im wiki. da gibt es glaube ich auch dazu ein beispiel wie man den inhalt dynamisch ändern kann. die readings und zeilen sind aber wirklich komplett weg und werden beim longpoll update nicht berücksichtigt. zum wieder einblenden muss dann die readingsGroup bzw die ganze seite aktualisiert werden.
ansonsten bin ich gerade dabei ein row/column/cell style einzubauen (siehe hier: http://forum.fhem.de/index.php/topic,25195.msg185665.html#msg185665) (http://forum.fhem.de/index.php/topic,25195.msg185665.html#msg185665)). ist aber noch nicht ganz fertig. damit könnte man dann über visibility zeilen/spalten/elemente unsichtbar machen und auch wieder einblenden ohne das alles neu aufgebaut werden muss. irgendwo ist aber noch ein kleiner fehler drin :)
gruss
andre
Zitat von: Roaster am 09 September 2014, 22:24:28
Dann habe ich noch ein Thema mit dieser Definition hier zu meinem Max! Thermostat:
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll-Temp>,<Ist-Temp>,<Modus>,<Batterie> Heizung(Eltern|):valveposition,desiredTemperature,temperature,mode,battery
attr Heizungswerte mapping %ROOM
attr Heizungswerte nameStyle style=color:yellow;;font-weight:bold
attr Heizungswerte valueFormat {temperature => "%.0f °C", desiredTemperature => "%.0f °C", valveposition =>"%.0f %%" }
attr Heizungswerte room Heizungswerte
attr Heizungswerte valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red', 'mode.manual' => 'sani_heating_manual@red', 'mode.auto' => 'sani_heating_automatic@green'}
Ich würde bei dieser Defintion davon ausgehen, dass ein Symbol (sani_heating_automatic bzw. sani_heating_manual) für den Modus Auto (mode.auto) bzw. Modus Manuell (mode.manual) angezeigt wird.
Niemand eine Idee zu den nicht dargestellten Symbolen bei Readings mode (auto/manual)?
Was wird denn stattdessen angezeigt? Wird der Name des Symbols angezeigt, dann findet er das Symbol nicht.
Zitat von: RoBra81 am 11 September 2014, 14:50:10
Was wird denn stattdessen angezeigt? Wird der Name des Symbols angezeigt, dann findet er das Symbol nicht.
Der Wert des Readings wird angezeigt: auto bzw. manual. Ich habe gerade nochmals den Namen des Symbols gecheckt, beide existieren.
Hast du mal einen Screenshot? Ich habe keine MAX!-Komponenten.
Kein Problem...
gerade eben mit deinen value icons in meiner definition und auch deiner komplette definition getestet und es geht beides ...
das problem muss also woanders sein.
ist dein fhem aktuell ?
gruss
andre
Es sieht so aus, als wären die Icon-Verzeichnisse richtig definiert, sonst würde er das Gruppensymbol nicht anzeigen. Ich frag trotzdem:
Ist dein Verzeichnis, in dem die beiden Icons drin sind, für dein fhemweb definiert?
attr WEB iconPath fhemSVG:openautomation:default
Was passiert, wenn du das auf jeden Fall funktionierende Batteriesymbol (und erstmal nur das) verwendest?
attr Heizungswerte valueIcon {'mode.manual' => 'batterie@lightgreen', 'mode.auto' => 'batterie@red'}
Gruß
Spiff
Sieht für mich erstmal so aus, als müsste es gehen. Wie gesagt, wenn er das Symbol nicht finden würde, würde der Name des Symbols dastehen. Da der Wert dasteht, findet er das Mapping gar nicht. Wenn deine gepostete Version mit deiner Konfiguration übereinstimmt sehe ich erstmal keine Fehler (Gro- und Kleinschreibung, Leerzeichen, ...). Vielleicht hat ja das Reading an sich ein Leerzeichen zu viel, das man einfach nicht sieht? Nur so eine Idee, da ich ansonsten ratlos bin: Kannst du dir mal den Quelltext der HTML-Seite ansehen (im Chrome zum Beispiel sehr einfach durch Rechtsklick auf das 'auto' -> Element untersuchen) und gucken, ob zwischen den <div></div> wirklich nur 'auto' ohne zusätzliche Leerzeichen steht?
Zitat von: Spiff am 11 September 2014, 15:29:49
Ist dein Verzeichnis, in dem die beiden Icons drin sind, für dein fhemweb definiert?
attr WEB iconPath fhemSVG:openautomation:default
Davon gehe ich aus, da die anderen Icons auch funktionieren. Die genannte Zeile habe ich dennoch nicht in der fhem.cfg.
Zitat von: Spiff am 11 September 2014, 15:29:49
Was passiert, wenn du das auf jeden Fall funktionierende Batteriesymbol (und erstmal nur das) verwendest?
attr Heizungswerte valueIcon {'mode.manual' => 'batterie@lightgreen', 'mode.auto' => 'batterie@red'}
Auch das ändert nichts...
OHH MANN ich bin so blöd! Mit den Tests, die du vorgeschlagen hast, habe ich nun festgestellt dass ich eine zweite Zeile mit attr Heizungswerte valueIcon drin hatte ::) Nach dem Entfernen hat sich mein Problem jetzt auch in Luft aufgelöst.Danke an euch alle fürs Lesen und die Fehlersuche!
Michael
noch ein grund die fhem.cfg nicht direkt zu bearbeiten sondern so viel wie nur möglich im frontend und der detail ansicht zu machen.
gruss
andre
Ja, wieder mal erwischt ;)
Zu meiner Verteidigung muss ich sagen, dass ich in meinem Fall das Beispiel aus dem Wiki zu readingsGroup kopiert und mit anderen Beispielen aus dem Forum ergänzt habe.
Und das WebUi ist auch nicht gerade bedienfreundlich, gerade was bspw .die Definition zu valueIcon angeht. Da ist die Eingabezeile einfach viel zu kurz und da gibt es noch zig andere Beispiele bei denen ich den Text erst in einem externen Editor aufbauen muss um diesen dann in das entspr. Wertefeld zu kopieren.
Zitat von: justme1968 am 11 September 2014, 16:50:37
noch ein grund die fhem.cfg nicht direkt zu bearbeiten sondern so viel wie nur möglich im frontend und der detail ansicht zu machen.
Dann aber daran gewöhnen, im richtigen Augenblick die Config zu speichern... ::)
Aber ist doch super, dass es jetzt funktioniert.
Gruß,
Spiff
Hallo,
ich probiere gerade mit der readingsGroup herum und wollte ein Icon darstellen, wenn ein Wert größer als eine Konstante ist:
define HK11_fp readingsGroup HK11_Clima:ValvePosition
attr HK11_fp fp_Status 467,197,0,
attr HK11_fp noheading 1
attr HK11_fp nolinks 1
attr HK11_fp nonames 1
attr HK11_fp notime 1
attr HK11_fp room EG_Buero
attr HK11_fp valueFormat {if($VALUE > 10){'ValvePosition' =>"on"}else{'ValvePosition' => 'off'}}
attr HK11_fp valueIcon {'ValvePosition' => 'HKV_Kueche_Sw_01.%VALUE'}
Es gibt ein Icon mit Heizungssymbol und ein leeres Icon. Das Icon wird dargestellt, wenn ValvePosition > 10 ist. Das klappt soweit. 8)
Allerdings würde ich gern auch noch die Temperatur anzeigen:
define HK11_temp_fp readingsGroup HK11_Clima:measured-temp\
HK11_Clima:desired-temp
attr HK11_temp_fp fp_Status 460,73,0,
attr HK11_temp_fp noheading 1
attr HK11_temp_fp nolinks 1
attr HK11_temp_fp nonames 1
attr HK11_temp_fp notime 1
attr HK11_temp_fp room EG_Buero
attr HK11_temp_fp valueFormat {"measured-temp" => "%.1f°C","desired-temp" => "%.1f°C" }
attr HK11_temp_fp valueStyle style="font-size:20px"
Das klappt auch schon mal.
Was ich dann aber nicht hin bekommen habe: Die beiden Readings in eines zusammen zu fassen. Eigentlich müsste ich nur das define zusammenfassen und das valueFormat anpassen. Ich bin aber immer an dem "if" gescheitert :-[ Irgendwie so ähnlich müsste das aussehen, aber ich blicks nicht:
attr HK11_fp valueFormat {"measured-temp" => "%.1f°C","desired-temp" => "%.1f°C", (if($VALUE > 10){'ValvePosition' =>"on"}else{'ValvePosition' => 'off'}}
Wie muss das aussehen?
Gruß und Dank,
Herr 3x
zum beispiel so:attr HK11_fp valueFormat {"measured-temp" => "%.1f°C", "desired-temp" => "%.1f°C", "ValvePosition" => '{return "on" if($VALUE > 10); return "off"}' }
gruss
andre
ps: das dein erstes beispiel wirklich geht kann ich nicht so ganz glauben. wenn doch dann ist es zufall. die syntax ist falch.
Hallo Andre,
danke für den Hinweis, allerdings erzeugt das ein "Unknown command return, try help." Sollte nicht innerhalt der {} perl-code ausgeführt werden?
Über den Syntaxfehler würde ich mich natürlich freuen, nur aus korrigierten Fehlern kann ich lernen ;)
Danke
Herr 3x
wo und wann genau erzeugt das den fehler?
du musst die zeile genau wie sie ist in der device detail ansicht im fhemweb eingeben nach dem du neben attr valueFormat ausgewählt hast bzw. auf valueFormat in der liste der attribute geklickt hast. danach auf attr klicken.
gruss
andre
Ah, o.k. ich habe die in die fhem.cfg kopiert. Über das fhemweb klappt es.
Der Unterschied ist dann ein ;; statt eines ;.
Wenn ich jetzt noch aus valvePosition ein ValvePosition mache funktioniert es! :)
Vielen Dank.
Ach ja, kann man das nicht ins Wiki aufnehmen? Einen Iconkomperator habe ich bei den Beispielen vermisst.
Grüße
Herr 3x
ZitatAch ja, kann man das nicht ins Wiki aufnehmen?
Klasse Idee von Dir, wir brauchen noch Wiki-Schreiber. Und bitte mit Bild (edit: nicht von Dir, screenshot von readingsgroup reicht..). Wenn Du noch keinen Wiki-Zugang hast, Mail an Peter... ;)
Gruß, Christian
Hallo,
ich habe ja weiter oben beschrieben, wie ich mir einen Button zum dynamischen einblenden von Floorplan-Inhalten in die ReadingsGroup gebaut habe. Nun möchte ich statt der PNG-Symbole gern die vorhandenen SVG-Symbole verwenden. Dies gelingt insofern, dass ich sie normal im IMG-Tag ins HTML einbauen kann. Ich würde jedoch gern von der Möglichkeit der Farbwahl (symbol@farbe) Gebrauch machen. Wie kann ich die SVGs in meiner MyUtils so in den HTML-Code einbauen, dass es wie z.B. in der ReadingsGroup funktioniert (da wird das SVG ja scheinbar auseinander genommen und direkt ins HTML eingebaut). Alternativ brächte ich in der ReadingsGroup eine Möglichkeit, statt eines set xx yy-commands eine JavaScript-Funktion der Floorplanseite aufzurufen. Ginge das denn?
Noch eine andere Frage: Kann man die Größe der Icons in der ReadingsGroup konfigurieren?
Vielen Dank
Ronny
das einfärben der svg icons geht nur wenn sie in die seite eingebettet sind weil genau dabei die farb definition innerhalb des svg geändert wird.
explizit kannst du so ein icon mit etwas in dieser art einbetten: <{FW_makeImage(...)}>. aber das icon hat dann keinen namen und du kannst kein commands mapping machen. du musst also alles inklusive des onClick selber bauen.
du kannst aber einfach <%xyz> verwenden und dann <rg>.<xyz> per commands mappen. wenn xyz schon ein passendes icon ist wird es statt dem text xyz angezeigt. wenn nicht kannst du es per valueIcon auf den passenden icon namen inklusive farbe mappen. das icon muss hierbei aber innerhalb der readingsGroup sein.
wenn du command z.b. auf 'trigger <rg> abc' mappst kannst dann direkt (oder per notify das an der rg hängt) über diese methode hier: http://www.fhemwiki.de/wiki/Browsersteuerung,_Seiten_per_JS_autom._aufrufen (http://www.fhemwiki.de/wiki/Browsersteuerung,_Seiten_per_JS_autom._aufrufen) direkt java script aufrufen.
die idee dahinter ist das fhemweb automatisch alle fhemweb_xxx.js files nachladen kann und dort die per trigger versendeten longpoll daten ankommen und ausgewertet werden können.
die große der icons solltest du über einen passenden style eintrag konfigurieren können.
gruss
andre
Hallo,
würde gerne in einer readingsGroup das Attribut eines devices per Menü änderbar machen.
define Anrufliste readingsGroup TM:A0,B0,C0,D0 TM:<Monitor-Type>,?monitor-type
attr Anrufliste commands {'monitor-type' => 'monitor-type:all,incoming,outgoing,missed-calls'}
generiert mir ja leider nur einen set TM monitor-type all
Befehl an fhem.
.
Jemand eine Idee, wie man ohne große Klimmzüge ein Attribut so setzen kann?
Gruß
Elektrolurch
ich glaube das einfachste ist den umweg über einen dummy zu gehen und dann per notify auf den dummy das attribut zu setzen
gruss
andre
ich glaube das einfachste ist den umweg über einen dummy zu gehen und dann per notify auf den dummy das attribut zu setzen.
gruss
andre
Hallo Andre, habe heute mit der "Heizperiode" begonnen, da die Temperaturen frostig sind :)
Dabei habe ich festgestellt, dass nach betätigen des up Buttons, dieser nicht wieder in die "Ausgangslage" zurückgeht. Die Utils stammt aus dem WIKI. Anbei ein Screenshot um das Verhalten zu verdeutlichen. Betätigt habe ich Bad HZ up.
Hast du einen Tipp?
VG
Frank
umgekehrt wird ein schuh draus :)
bei allen devices die noch nicht bedient wurden hat der button die falsche lage. so ist es zumindest zur zeit gebaut. wenn du alle ein mal bedient hat zappelt später nichts mehr. das finde ich besser als ein button der sich beim bedienen erst einmal bewegt und dann wieder zurück.
gruss
andre
Alles klar, wie gesagt lange nicht bedient. Danke Andre.
VG
Frank
Hi,
ich bin nach wie vor auf der Suche nach einer Vereinfachung dieser Monsterzeile hier in einer readingsGroup:
attr Anrufliste2 valueIcon { 'A0.incoming' => 'phone_ring_in@green', 'A0.incoming_noconnect' => 'phone_ring_in@red', 'A0.outgoing' => 'phone_ring_out@green', 'A0.outgoing_noconnect' => 'phone_ring_out@red', 'A0.AB' => 'phone_answersing@blue', 'E0.connected' => 'phone_ring@yellow', 'A1.incoming' => 'phone_ring_in@green', 'A1.incoming_noconnect' => 'phone_ring_in@red', 'A1.outgoing' => 'phone_ring_out@green', 'A1.outgoing_noconnect' => 'phone_ring_out@red', 'A1.AB' => 'phone_answersing@blue', 'E1.connected' => 'phone_ring@yellow', 'A2.incoming' => 'phone_ring_in@green', 'A2.incoming_noconnect' => 'phone_ring_in@red', 'A2.outgoing' => 'phone_ring_out@green', 'A2.outgoing_noconnect' => 'phone_ring_out@red', 'A2.AB' => 'phone_answersing@blue', 'E2.connected' => 'phone_ring@yellow', 'A3.incoming' => 'phone_ring_in@green', 'A3.incoming_noconnect' => 'phone_ring_in@red', 'A3.outgoing' => 'phone_ring_out@green', 'A3.outgoing_noconnect' => 'phone_ring_out@red', 'A3.AB' => 'phone_answersing@blue', 'E3.connected' => 'phone_ring@yellow', 'A4.incoming' => 'phone_ring_in@green', 'A4.incoming_noconnect' => 'phone_ring_in@red', 'A4.outgoing' => 'phone_ring_out@green', 'A4.outgoing_noconnect' => 'phone_ring_out@red', 'A4.AB' => 'phone_answersing@blue', 'E4.connected' => 'phone_ring@yellow' }
Wie man sieht wiederholen sich die Werte bzw. die Readings. Kann man das nicht einfacher und vor allem wartungsfreundlicher fassen?
Die komplette Definition sieht wie folgt aus:
define Anrufliste2 readingsGroup <Pos>,<Art>,<Datum>,<Name>,<Nummer>,<Dauer> CallMon:A0,B0,C0,D0,E0 CallMon:A1,B1,C1,D1,E1 CallMon:A2,B2,C2,D2,E2 CallMon:A3,B3,C3,D3,E3 CallMon:A4,B4,C4,D4,E4
attr Anrufliste2 mapping {'CallMon' => '{sprintf("%d.",$ROW-1);;}'}
attr Anrufliste2 nameStyle style="font-weight:bold"
attr Anrufliste2 style style="font-size:20px"
attr Anrufliste2 noheading 0
attr Anrufliste2 nolinks 1
attr Anrufliste2 nostate 1
attr Anrufliste2 notime 1
attr Anrufliste2 room Telefon2
attr Anrufliste2 valueIcon { 'A0.incoming' => 'phone_ring_in@green', 'A0.incoming_noconnect' => 'phone_ring_in@red', 'A0.outgoing' => 'phone_ring_out@green', 'A0.outgoing_noconnect' => 'phone_ring_out@red', 'A0.AB' => 'phone_answersing@blue', 'E0.connected' => 'phone_ring@yellow', 'A1.incoming' => 'phone_ring_in@green', 'A1.incoming_noconnect' => 'phone_ring_in@red', 'A1.outgoing' => 'phone_ring_out@green', 'A1.outgoing_noconnect' => 'phone_ring_out@red', 'A1.AB' => 'phone_answersing@blue', 'E1.connected' => 'phone_ring@yellow', 'A2.incoming' => 'phone_ring_in@green', 'A2.incoming_noconnect' => 'phone_ring_in@red', 'A2.outgoing' => 'phone_ring_out@green', 'A2.outgoing_noconnect' => 'phone_ring_out@red', 'A2.AB' => 'phone_answersing@blue', 'E2.connected' => 'phone_ring@yellow', 'A3.incoming' => 'phone_ring_in@green', 'A3.incoming_noconnect' => 'phone_ring_in@red', 'A3.outgoing' => 'phone_ring_out@green', 'A3.outgoing_noconnect' => 'phone_ring_out@red', 'A3.AB' => 'phone_answersing@blue', 'E3.connected' => 'phone_ring@yellow', 'A4.incoming' => 'phone_ring_in@green', 'A4.incoming_noconnect' => 'phone_ring_in@red', 'A4.outgoing' => 'phone_ring_out@green', 'A4.outgoing_noconnect' => 'phone_ring_out@red', 'A4.AB' => 'phone_answersing@blue', 'E4.connected' => 'phone_ring@yellow' }
Gruß,
Michael
Trau mich fast nicht zu fragen, aber warum bekomme ich immer eine Leerzelie?
Soviel kann doch hier nihct falsch sein, oder?
define reading_Bahnhof readingsGroup Bahnhofstrasse:temperature
attr reading_Bahnhof mapping Temperatur Bahnhofstrasse
attr reading_Bahnhof noheading 1
attr reading_Bahnhof nostate 1
attr reading_Bahnhof room Wetter
Wie gesagt, ich bekomme die Temperatur angezeigt, nur leider anschließend noch eine leere Zeile?
Was fehlt denn da?
Danke.
klar geht das einfacher. nicht die hash version verwenden sondern per perl if/elsif schauen ob es incomming, outgoing, ... ist und den icon namen zurück liefern.
gruß
andre
zeig mal bitte ein list auf deine readingsGroup und einen screenshot.
gruss
andre
Also wenn ich gemeint war:
Screenshot bekomme ich gerade nicht hin. Sitze an einem raspberry und weiß nicht wie das da geht.
Es wird halt eine leere Zeile unter der Zeile mit der Temperatur dargestellt.
Die readingsgroup habe ich ja oben geposted. Mehr ist da nicht.
Habe hier im Forum auch nach Leerzeile gesucht. Das gab's schon einmal und wurde aber wohl behoben?
So, jetzt an einem anderen Rechner. Screenshot der Leerzeile
und die cfg dazu
ich möchte die ausgabe vonlist reading_Bahnhof
gruss
andre
Bin Anfänger, sorry:
Internals:
CFGFN
DEF Bahnhofstrasse:temperature
NAME reading_Bahnhof
NR 464
NTFY_ORDER 50-reading_Bahnhof
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Bahnhofstrasse 1
Content2:
DEVICES:
ARRAY(0x1083fc8)
Fhem:
lastDefChange 14
last_update 1411810846.46233
Attributes:
group Wetterstationen
mapping Temperatur Bahnhofstrasse
noheading 1
nostate 1
room Wetter
das schaut komisch aus. gibt es das problem auch wenn die readingsGroup nicht in einer gruppe steckt?
welche version hast du? ausgabe vonversion
gruss
andre
Ja, auch wenn nicht in einer Gruppe
6262 16.7.2014
Hallo,
ich hoffe ich darf hier diese Frage stellen, wollte eigentlich keinen eigenen Thread dafür aufmachen.
Wie schaffe ich es, zusätzlich zu diesem Valuestyle:
valueStyle { if($DEVICE eq "Aussentemperatur" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'}elsif($DEVICE eq "Aussentemperatur" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'}elsif($DEVICE eq "Aussentemperatur" && $READING eq "temperature" && $VALUE < 5) { 'style="color:blue"'}elsif($READING eq "rel-Humidity-outside" && $VALUE > 65) { 'style="color:red"'}elsif($READING eq "rel-Humidity-outside" && $VALUE > 60) { 'style="color:orange"'}else{'style="color:white"'} }
auch noch für alle Attribute geltend text-center dazu zu bekommen?
Ich tüfftle schon so lange herum aber leider reichen meine Kentnisse wohl nicht aus :(
Danke!
Mfg
Manuel
@Pjg: ich kann das problem nicht reproduzieren. bitte zeig mir mal ein list von Bahnhofstrasse und schau mal ob es mit einem anderen style auch passiert.
gruss
andre
Zitat von: justme1968 am 27 September 2014, 12:51:27
klar geht das einfacher. nicht die hash version verwenden sondern per perl if/elsif schauen ob es incomming, outgoing, ... ist und den icon namen zurück liefern.
Andre, du kannst mich jetzt schlagen oder vielleicht auch einfach weiterhelfen 8)
Ich habe das nun auf verschiedene Art und Weise probiert, aber es klappt bei mir nicht. Ich habe grundsätzlich ein Verständnisproblem, wenn ich mir die verschiedenen Möglichkeiten Coding direkt in den Attributen der readingsGroup einzufügen. Wenn ich mir den Wikieintrag so betrachte, dann gibt es für mich (als Laie) zig verschieden Mlglichkeit hier was eigenes einzubauen - zumindest hat es für mich den Anschein.
Ich habe so etwas in der Art probiert:
attr Anrufliste2 valueIcon { if ( $VALUE =~ "incoming" ) ? "phone_ring_in@green" }
und weiteres Conding, das ich versucht habe aus anderen gefundenen Schnipseln zusammen zu bauen.
Im Wiki finde ich beispielsweise so etwas:
attr rg valueFormat {($VALUE eq '1')?"fts_window_roof":"fts_window_roof_open_2"}
Dies betrifft zwar das Format, aber ich dachte, so ähnlich kann ich auch bei valueIcon vorgehen. Ich ging davon aus, dass $VALUE den Wert der jeweiligen Spalte und Zeile enthält und in meinem Fall incoming, outgoing und so weiter liefert, das ich dann durch einnen Symbolnamen ersetzen kann - funktioniert aber nicht.
Dann habe ich, auch aus dem Wiki, noch folgendes genommen
attr culRSSI valueStyle {return undef if($READING =~ m/TIME/); ($VALUE <= -85)?'style="color:red"':($VALUE <= -80)?'style="color:yellow"':undef}
Natürlich auch wieder auf das Attribut valueIcon umgemünzt, aber das gelang mmir auch wieder nicht so richtig.
Ich denke ich habe das Grundprinzip der readingsGroup und von $VALUE und $READING nich nicht richtig verstanden und wie man Perl-Code an entsprechender Stelle einbauen kann.
Vielleicht kann man den Wiki-Eintrag für eigenen Perl-Code bei valueIcon bei Gelegenheit ergänzen?
Gruß,
Michael
in etwa so:attr Anrufliste2 valueIcon { if ( $VALUE =~ "incoming_noconnect" ) { return "phone_ring_in@red";}; if ( $VALUE =~ "incoming" ) { return "phone_ring_in@green";} }
aber ich würde empfehlen es so zu machen:
eine sub in 99_myUtils.pm das das icon liefert:sub myPhoneIcon($)
{
my($value) = @_;
Log 3, $value;
my $icon = "phone_ring_in";
$icon = "phone_ring_out" if( $value =~ /outgoing/ );
my $color = "green";
$color = "red" if( $value =~ m/noconnect/ );
Log 3, $icon ."@". $color;
return $icon ."@". $color;
}
und in der readingsGroup nur die sub aufrufen:attr Anrufliste2 valueIcon {myPhoneIcon($VALUE);}
die Log... zeilen kannst du dann raus schmeißen wenn es so geht wie du willst.
gruss
andre
Hallo,
der letzte Post passt ja fast zu meinem Problem. Da mir die Definition von "valueIcon" zu viel wird, wollte ich dies auch in eine sub auslagern. Aber irgendwie funktioniert das nicht. Es wird leider nur der Wert angezeigt.
sub readingGroupValueIcon($$$) {
my($DEVICE,$READING,$VALUE) = @_;
Log 3, "readingGroupValueIcon() Device: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";
if($READING eq "controlMode") {
return 'sani_heating_automatic@green' if $VALUE eq "auto";
return 'sani_heating_automatic@orange' if $VALUE eq "set_auto";
return 'sani_heating_manual@red' if $VALUE eq "manual";
return 'sani_heating_manual@orange' if $VALUE eq "set_manual";
}
}
attr rg_Heizungswerte valueIcon { readingGroupValueIcon($DEVICE,$READING,$VALUE);; }
oder
attr rg_Heizungswerte valueIcon { readingGroupValueIcon($DEVICE,$READING,$VALUE); }
In die sub gelangt man aber erst garnicht.
Hat jemand eine Ahnung?`
Vielen Dank.
nimm mal bitte die version von hier:http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485 (http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485). wenn das noch nicht geht schreib es mal bitte so:attr rg_Heizungswerte valueIcon {"{ readingGroupValueIcon($DEVICE,$READING,$VALUE); }"}
gruss
andre
Super. Die neue Version funktioniert. kommt die mit dem nächsten Update?
Danke noch für die schnelle Antwort.
Gibt es eine Möglichkeit eines "entweder oder" für meinen Fall bei "batteryLevel|battery"?
Dann könnte man den doppelten Eintrag von "Wohnzimmer Wohnzimmer_Wandthermostat" entfernen. Dieses Device hat nämlich das Reading battery UND batteryLevel.
define rg_Batteriewerte readingsGroup \bWohnzimmer_Heizung\b|\bWohnzimmer_Wandthermostat\b|\bKinderzimmer_Heizung\b|\bKinderzimmer_Fenster\b:batteryLevel|battery
attr rg_Batteriewerte nameStyle style="font-weight:bold"
attr rg_Batteriewerte room Status
attr rg_Batteriewerte alias Batteriewerte
attr rg_Batteriewerte mapping %ROOM %ALIAS
attr rg_Batteriewerte sortDevices 1
das geht nicht direkt. aber du kannst dir ein valueFormat bauen das bei den zeilen die du ignorieren willst ein undef zurück gibt. zum beispiel in dem du prüfst ob das device beide readings hat.
gruß
andre
Es liegt tatsächlich am Style.
Ich verwende ios7, da kommt die Leerzeile. Bei den anderen nicht.
Und nun?
Wo muss ich da Eingreifen um die weg zu bekommen?
Jetzt aber:
wenn ich die Zeit raus nehme (notime), dann bekomme ich auch bei ios7 keine Leerzeile mehr.
Es gibt also eine unterschiedliche Anzahl von Zeichen pro Zeile?
Hallo,
ich versuche jetzt schon eine Weile mit dem Wiki ein festes Icon vorne in jede Zeile meiner ReadingsGroup zu bekommen, schaffe es aber nicht.
Es handelt sich um Funksteckdosen von ELRO (IT) die nur das Reading "state" haben.
Definition (Alias und state erscheint) :
define RG_Steckdosen readingsGroup TYPE=IT:state
attr RG_Steckdosen mapping %ALIAS
attr RG_Steckdosen notime 1
Bei diesem Ansatz erscheint zwar das Icon aber kein Alias mehr :
define RG_Steckdosen readingsGroup TYPE=IT:<%ge_wht_steckdose>,state
Das geht auch nicht :
attr RG_Steckdosen mapping <%ge_wht_steckdose> %ALIAS
Hat jemand eine Lösung hierzu ?
Danke im Voraus
das geht zum beispiel so:define RG_Steckdosen readingsGroup TYPE=IT:<%ge_wht_steckdose>,<{AttrVal($DEVICE,"alias",$DEVICE)}>,state
gruss
andre
Perfekt !
muchas gracias .....
Zitat von: justme1968 am 29 September 2014, 07:36:06
das geht nicht direkt. aber du kannst dir ein valueFormat bauen das bei den zeilen die du ignorieren willst ein undef zurück gibt. zum beispiel in dem du prüfst ob das device beide readings hat.
gruß
andre
Das habe ich gemacht. Sollte dann das Modul diese Zeile automatisch ignorieren oder muss ich da noch was machen?
undef ohne anführungszeichen.
gruß
andre
Zu früh gefreut. Leider nein.
sub readingsGroupValueFormat($$$) {
my($DEVICE,$READING,$VALUE) = @_;
Log 3, "readingsGroupValueFormat() DEVICE: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";
if ($READING eq "batteryLevel" or $READING eq "battery") {
my $batteryLevelValue = ReadingsVal($DEVICE,"batteryLevel","undef");
my $batteryValue = ReadingsVal($DEVICE,"battery","undef");
# Falls beide Readings existieren und der aktuelle Reading = "battery", dann diesen ignorieren
if ($batteryLevelValue ne "undef" and $batteryValue ne "undef" and $READING eq "battery") {
return 'undef';
}
}
}
Ohne Anführungszeichen = auch ohne Hochkomma, wenn ich mich nicht irre.
sub readingsGroupValueFormat($$$) {
my($DEVICE,$READING,$VALUE) = @_;
Log 3, "readingsGroupValueFormat() DEVICE: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";
if ($READING eq "batteryLevel" or $READING eq "battery") {
my $batteryLevelValue = ReadingsVal($DEVICE,"batteryLevel","undef");
my $batteryValue = ReadingsVal($DEVICE,"battery","undef");
# Falls beide Readings existieren und der aktuelle Reading = "battery", dann diesen ignorieren
if ($batteryLevelValue ne "undef" and $batteryValue ne "undef" and $READING eq "battery") {
return undef;
}
}
}
Gruß
Spiff
ohne anführungszeichen. weder doppelt noch einfach. ganz ohne.
sub readingsGroupValueFormat($$$) {
my($DEVICE,$READING,$VALUE) = @_;
return undef if( $READING eq "battery" && ReadingsVal($DEVICE,"batteryLevel", undef) );
return $VALUE;
}
gruss
andre
Wenn nur undef zurückgegeben wird, wird wieder die Zeile mit dem Batteriesymbol angezeigt.
sub readingsGroupValueFormat($$$) {
my($DEVICE,$READING,$VALUE) = @_;
Log 3, "readingsGroupValueFormat() DEVICE: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";
return "%0.1f °C" if($READING eq "desired-temp");
return "%0.1f °C" if($READING eq "measured-temp");
return "%0.1f %%" if ($READING eq "ValvePosition");
# Falls beide Readings existieren und der aktuelle Reading = "battery", dann diesen ignorieren
return undef if( $READING eq "battery" && ReadingsVal($DEVICE,"batteryLevel", undef) );
return $VALUE;
}
bitte teste das mal mit der offiziellen version die per update kommt. nicht. mit der aus dem thread. es kann sein das es genau da noch einen fehler gibt.
ich habe die version hier: http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485 (http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485) noch mal aktualisiert. bitte nimm diese zum testen.
danke
andre
Ok.
1. Über das Update habe ich keine aktuelle bekommen.
2. Deine aktualisierte funzt prima.
Vielen Dank für diesen schnellen Support.
Dann überlege ich mir mal noch weitere Dinge ;)
Zitat von: justme1968 am 28 September 2014, 20:33:55
in etwa so:attr Anrufliste2 valueIcon { if ( $VALUE =~ "incoming_noconnect" ) { return "phone_ring_in@red";}; if ( $VALUE =~ "incoming" ) { return "phone_ring_in@green";} }
aber ich würde empfehlen es so zu machen:
eine sub in 99_myUtils.pm das das icon liefert:sub myPhoneIcon($)
{
my($value) = @;
Log 3, $value;
my $icon = "phone_ring_in";
$icon = "phone_ring_out" if( $value =~ /outgoing/ );
my $color = "green";
$color = "red" if( $value =~ m/noconnect/ );
Log 3, $icon ."@". $color;
return $icon ."@". $color;
}
Andre, ich bekomme beim Speichern der 99_MyUtils.pm diesen Fehler hier angezeigt:
Zitatsyntax error at ./FHEM/99_MyUtils.pm line 89, near "@; Log " Global symbol "$value" requires explicit package name at ./FHEM/99_MyUtils.pm line 89.
Zeile 89 enthält in diesem Fall
Log 3, $value;
Edit: denke ich habe den Fehler gefunden:
my($value) = @;
Hier fehlte der underscore :D
Ansonsten funktionierts prima, musste noch die ein oder andere kleine Anpassung vornehmen, aber als Grundlage hat's mir sehr gut weitergeholfen - DANKE!
Michael
ja. stimmt. war nur schnell ohne testen hingeschrieben...
hab es oben korrigiert.
gruß
andre
Zitat von: justme1968 am 29 September 2014, 21:25:21
ja. stimmt. war nur schnell ohne testen hingeschrieben...
Macht nichts ich hab' den Fehler ja sogar Mal selbst gefunden und dafür dass du es einfach so geschrieben hast: meine Respekt hast du :-*
Danke,
Michael
Zitat von: justme1968 am 29 September 2014, 20:59:42
bitte teste das mal mit der offiziellen version die per update kommt. nicht. mit der aus dem thread. es kann sein das es genau da noch einen fehler gibt.
Dazu muss ich jetzt doch noch was fragen. Hätte ich nicht per Update heute eine aktuelle bekommen müssen?
Ist deine Aktualisierung aus http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485 (http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485) nicht im SVN enthalten? Zumindest deine Änderungen von gestern hätte ich doch bekommen müssen
die version ist noch nicht eingecheckt. ich hatte die aktuelle alte version aus dem svn gemeint. hab mich undeutlich ausgedrückt.
Hallo Andre, habe heute im Log eine Fehlermeldung welche die Heizungs ReadingsGroup betrifft. In meiner 99_myUtils:
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
#Heizung regeln in readingsGroup
sub
myUtils_HeizungUpDown($$)
{
my($DEVICE,$CMD) = @_;
my $icon = $CMD;
my $VALUE = ReadingsVal($DEVICE,"desired-new","20" );
$VALUE = ReadingsVal($DEVICE,"desired-temp","20" )
if( !$VALUE || $VALUE == 0 );
my $link;
if( $CMD eq "up" ) {
$icon = "control_arrow_upward";
$VALUE += 1;
if( $VALUE <= 24 ) {
$icon .= "\@red";
$link = "setreading $DEVICE desired-new $VALUE";
}
} elsif( $CMD eq "down" ) {
$icon = "control_arrow_downward";
$VALUE -= 1;
if( $VALUE >= 18 ) {
$icon .= "\@blue";
$link = "setreading $DEVICE desired-new $VALUE";
}
}
my $notify = "notifyHeizungUpDown";
if( !defined($defs{$notify}) ) {
CommandDefine(undef,
"$notify notify .*:desired-new.* "
."{ myUtils_HeizungUpDownNotify(\$NAME,\$EVTPART1); }" );
}
my $ret = "%$icon";
$ret .= "%$link" if( $link );
return $ret;
}
sub
myUtils_HeizungUpDownNotify($$)
{
my($DEVICE,$VALUE) = @_;
return if( $VALUE == 0 );
my $at = "triggerHeizungUpDown_$DEVICE";
CommandDelete(undef, $at) if( defined($defs{$at}) );
CommandDefine(undef,
"$at at +00:00:03 "
."{my \$v = ReadingsVal(\"$DEVICE\",\"desired-new\",undef);"
."fhem(\"set $DEVICE desired-temp \$v\") if( \$v );"
."fhem(\"setreading $DEVICE desired-new 00\");}" );
return undef;
}
Bringt seit heute folgende Fehlermeldung:
[Wed Oct 1 21:33:07 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct 1 21:33:07 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
[Wed Oct 1 21:33:50 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct 1 21:33:50 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
[Wed Oct 1 21:35:52 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct 1 21:35:52 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
In Line 33 : $VALUE -= 1;
In Line 25 : $VALUE += 1;
Vorher gehen die RT´s auf off, da die Außentemperatur über 18°C geht:
im Log:
2014.10.01 11:00:28 3: CUL_HM set 16_LED_11 led green
2014.10.01 11:08:40 3: CUL_HM set Kueche_Heizung_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set Flur_Heizung_Clima controlManu off
2014.10.01 11:08:40 3: CUL_HM set Bad_Heizung_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set Kinderzimmer_Heizung_links_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set Kinderzimmer_Heizung_rechts_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set SZ_Heizung_links_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set SZ_Heizung_rechts_ClimRT_tr controlManu off
[Wed Oct 1 11:08:42 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct 1 11:08:42 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
[Wed Oct 1 11:08:44 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct 1 11:08:44 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
[Wed Oct 1 11:08:54 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct 1 11:08:55 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
Danach fangen die Meldungen an. Habe gerade mal die letzten Septembertage nachgesehen, da trat die Meldung nicht auf.
VG
Frank
das desired einen nicht numerischen wert haben kann wird in dieser version nicht berücksichtigt.
in der nächsten version wird das auch gehen.
ein erster workaround wäre nach zeile 20 etwas in der art einzubauen:$VALUE = 20 if( $VALUE eq "off" );
gruss
andre
Hallo Andre, Zeile 20 ist gleich nach dem Header/Kommentar, Zeile 21 ist: package main; in welche sub müsste es? Arbeite auf dem MAC mit Editra, hab mal einen Screenshot angehangen.
VG
Frank
zeile 20 in 99_myUtils vor my $link; oder als zusätzliches oder im if direkt davor.
gruss
andre
Alles klar, war irrtümlicher Weise in der readingsGroup.pm unterwegs. ;)
P.S. Danke Andre, Meldungen sind weg!
VG
Frank
Ich würde mir gerne ein readingsGroup mit mehreren Icons erstellen und damit dummys ein/ausschalten.
Ist sowas möglich ? Wenn ja hat mir jemand einen Tip wie ich das realisieren kann ?
Gruß Christoph
natürlich geht das.
beschreib doch mal etwas genauer wie es aussehen und funktionieren soll.
ansonsten gibt es im wiki beispiele für alles mögliche.
gruss
andre
Hallo,
ich bekomme in einer ReadingsGroup keine Symbole angezeigt,
siehe Anhang. Die Zugriffsrechte stimmen. Ich habe ja auch einmal
auf die Dateien in /images/default und einmal auf das SVG- Verzeichnis
verwiesen. Mehrfach neu gestartet.
Wo ist hier wieder mal mein Fehler???
Viele Grüße,
Johannes
was siehst du stat dessen in der readingsGroup?
siehst du die icons auf der 'Select icon' seite?
mach mal ein list auf das muelltermin device.
gruss
andre
Hallo,
in der ReadingsGroup sehe ich den Namen des Termins.
Hier: Gelber_Sack. Es soll aber das Bild dorthin.
Die Bilder sind da: Ich sehe sie, wenn ich "select Icon" klicke.
Ein "list muelltermine" ergibt:
*****
Internals:
DEF Muell 0
INTERVAL 43200
KALENDER Muell
MODES modeStart
NAME muelltermin
NR 187
STATE Initialized
TYPE CALVIEW
CHANGETIME:
Readings:
2014-10-04 18:11:48 14-10-04@15:00-Muellabfuhr Muellabfuhr
Attributes:
DbLogExclude .*
maxreadings 1
*****
Nochmal ein "list Muellabfuhrtermin":
*****
Internals:
DEF muelltermin
NAME Muellabfuhrtermin
NR 188
NTFY_ORDER 50-Muellabfuhrtermin
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
muelltermin 1
Content2:
DEVICES:
ARRAY(0xc97630)
Fhem:
lastDefChange 1
last_update 1412439108.68079
Attributes:
DbLogExclude .*
group Termine
nonames 1
notime 1
room Termine
valueIcon {'Muellabfuhr' => 'ampel_gruen', 'Gelber_Sack' => 'ampel_gelb'}
*****
Ich habe jetzt schon andere Symbole probiert und heute ist "testweise" Muellabfuhr statt Gelber_Sack.
Aber irgendwie zeigt mir fhem nur den Text des Termins an, kein Symbol.
-Solls am Modul CALVIEW liegen (das ist ja kein offizielles welches...)? Aber das sortiert doch nur...
Viele Grüße,
Johannes
das reading in deinem device hat nicht den wert Muellabfuhr sondern 14-10-04@15:00-Muellabfuhr Muellabfuhr, da kann valueIcon nicht greifen. du musst zuerst den wert mit valueFormat passend machen. z.b. etwas in der art:attr muelltermin valueFormat { return "Muellabfuhr" if( $VALUE =~ m/Muellabfuhr$/); return "Gelber_Sack" if( $VALUE =~ m/Gelber_Sack$/ );}
oder vielleicht geht es auch universeller so:attr muelltermin valueFormat { if( $VALUE =~ m/\s(.*)$/) { return $1; } }
danach kann valueIcon greifen.
gruss
andre
Hallo Andre,
Danke für die schnelle Antwort!
Du meintest bestimmt "attr MUELLABFUHRTERMIN valueIcon...
Das hab ich jetzt so gemacht mit jeweils ein return Muellabfuhr_NEU und Gelber_Sack_NEU.
Hat so nicht direkt geholfen, aber so scheint es zu klappen:
*****
attr Muellabfuhrtermin valueFormat { return "tonne_grau" if( $VALUE =~ m/Muellabfuhr$/); return "tonne_gelb" if( $VALUE =~ m/Gelber_Sack$/ );}
UND:
attr Muellabfuhrtermin valueIcon %VALUE
*****
DAS zeigt mir jetzt die graue Tonne.
Morgen sollte es dann die gelbe Tonne sein.
Ich warte lieber in Echtzeit ab, da ich die Techniken des Triggerns etc. eh' nicht verinnerlicht habe.
Ich werde berichten ob es geklappt hat.
Vielen Dank nochmal, denn dieses Konstrukt werde ich wohl noch öfter brauchen...
Nachtrag: Gelber Sack geht auch.
Viele Grüße,
Johannes
Hallo Andre,
ich versuche gerade das Beispiel mit dem Heizungs UP, DOWN Pfeilen aus dem Wiki umzusetzen. So wie es im Wiki steht hat es bei mir nicht auf anhieb funktioniert. Die Pfeil-Links wurden nach dem klicken nicht aktualisiert also hab ich das @desired-temp auf @desired-new geändert. Anschließend funktioniert es bei mir.
Ich will in einer Zeile die Pfeile und Werte aus dem PID Modul anzeigen lassen.
Die Solltemperatur wird aber über ein kleines Hilfsmodul (Überwacht Fensterkontakte und setzte Temperaturen nach Zeitplan) gesetzt und nicht direkt ins PID Modul geschrieben. Das Modul schreibt bei Freigabe (zB Fenster geschlossen) den Wert dann ins PID Modul das die FHT-Ventile ansteuert.
Mein erster Versuch sah so:
szHeizung:<%sani_heating_temp>,<{rgLink("szHeizung","detail","Heizung")}>,<{myUtils_HeizungUpDown("szHeizungSollTemp","up")}@desired-new>,SollGrIst,<{myUtils_HeizungUpDown("szHeizungSollTemp","down")}@desired-new>,measured,actuation,<{rgLink("szFensterkontakt","detail",rgFensterMapping(ReadingsVal("szFensterkontakt","state","")))}@window>
szHeizung = PID Device
szHeizungSollTemp = Solltemp Device/Modul
Leider hängt wieder am aktualisieren der Links nach dem ersten mal klicken nachdem im PID-Device nicht das Reading desired-new vorhanden ist. Also hab ich versucht nach dem @ einen Perl aufruf zu setzten der die ReadingsVal aus szHeizungSollTemp ausließt. Funktioniert aber leider nicht :(
szHeizung:<%sani_heating_temp>,<{rgLink("szHeizung","detail","Heizung")}>,<{myUtils_HeizungUpDown("szHeizungSollTemp","up")}@{ReadingsVal("szHeizungSollTemp","desired-new","")}>,SollGrIst,<{myUtils_HeizungUpDown("szHeizungSollTemp","down")}@{ReadingsVal("szHeizungSollTemp","desired-new","")}>,measured,actuation,<{rgLink("szFensterkontakt","detail",rgFensterMapping(ReadingsVal("szFensterkontakt","state","")))}@window>
Hast du eine Idee?
Grüße
der beispiel code geht davon aus das alles in einem reading steckt. das ist nötig damit die readingsGroup per notify mit bekommt wenn sich an dem wert etwas ändert. steck deine soll temperatur auch einfach mit setreading in ein device.
ich bin übrigens gerade dabei die heizungssteuerung noch mal komplett zu überarbeiten und dann auch so ein widget wie auf dem screenshot unten einzubauen. das ganze ist dann (fast) völlig device unabhängig und wird mit max, hm, fs20 und eigenbau steuerungen gehen. dauert aber noch ein klein wenig.
gruss
andre
Ok ich versuche das mal.
Den Screenshot hab ich schon in deinem anderen Thread gesehen, schaut echt super aus! Auf das, und die anderen dinge die in dem Thread stehen freue ich mich schon sehr! ;)
Grüße
Edit:
Ich habe wiedermal viel zu kompliziert gedacht. Der Sollwert steht ja eh im PID Modul. Nun schreibe ich in der myUtils_HeizungUpDownNotify die solltemp hardcodete ins jeweilige Solltemp Device und hab nun auch hier die anschließenden prüfungen im modul bis das Widget fertig ist! :)
Hi,
hat schon Mal jemand die readingsGroup zum Einstellen/Darstellen der Heizungswerte von MAX! Heizkörperthermostaten verwendet, so wie hier: http://forum.fhem.de/index.php/topic,26479.msg203580.html#msg203580 (http://forum.fhem.de/index.php/topic,26479.msg203580.html#msg203580) für die HM Thermostate?
Ich denke zwar ich könnte es mir über Try and Error wahrscheinlich selbst erstellen, aber warum das Rad neu erfinden? Einen Teil habe ich bereits gelöst, um noch die Wochentags-Werte in die Thermostate zurückzuschreiben, da hänge ich momentan, weil mir das Format noch nicht so ganz klar ist.
Also, wenn jemand bereits funktionierendes Coding hat, um für die MAX! Thermostate die Heizwerte je Wochentag einstellen zu können, wäre ich dankbar wenn er dies hier Mal zur Verfügung stellen könnte.
Danke,
Michael
die original version die in diesem thread hier: http://forum.fhem.de/index.php/topic,19126.0.html (http://forum.fhem.de/index.php/topic,19126.0.html) entstanden ist (nicht der von dir verlinkte) war für max.
gruss
andre
Zitat von: justme1968 am 05 Oktober 2014, 20:36:17
die original version die in diesem thread hier: http://forum.fhem.de/index.php/topic,19126.0.html (http://forum.fhem.de/index.php/topic,19126.0.html) entstanden ist (nicht der von dir verlinkte) war für max.
Hmm, ja danke, die Möglichkeit kannte ich schon und so ähnlich läuft es ja auch bei mir bereits, ich habe lediglich Up-/Down Pfeile zum Einstellen der Temperatur verwendet.
Mein Plan wäre allerdings, wie im verlinkten Artikel, für jeden Wochentag erstens den Beginn und das Ende der Heizzeit und zweitens die dann gewünschte Temperatur einzustellen - nur eben für Max! Geräte.
Aber wie gesagt, wenn dies jemand bereits so oder so ähnlich im Einsatz hat - gerne her damit ;D
Michael
Wie kann ich denn in einer readingsGroup mit DropDown-Feld für das Setzen der Temperatur (desiredTemperature) die Schriftgröße innerhalb des Dropdowns verändern.
Mit valueStyle komme ich an alle Werte aber nicht an die in der DropDownListe.
#########################
# Heizung ReadingsGroup #
#########################
define RG_Heizungswerte readingsGroup TYPE=MAX:<%hc_wht_regler>,<{AttrVal($DEVICE,"alias",$DEVICE)}>,temperature,battery,desiredTemperature
attr RG_Heizungswerte alias Heizungswerte
attr RG_Heizungswerte commands { 'Heizungswerte.auto' => 'set $DEVICE desiredTemperature auto', 'Heizungswerte.manuell' => 'set $DEVICE desiredTemperature manual', 'desiredTemperature' => 'desiredTemperature:' }
attr RG_Heizungswerte fp_Tablet 100,750,0,
attr RG_Heizungswerte group Heizung
attr RG_Heizungswerte mapping { 'desiredTemperature' => '' }
attr RG_Heizungswerte room Heizung
attr RG_Heizungswerte valueFormat { 'desiredTemperature' => "%.1f°;C", 'temperature' => "%.1f°;C" }
attr RG_Heizungswerte valueIcon {'battery.ok' => 'batteryfull_32', 'battery.low' => 'batteryleer_32'}
#attr Heizungswerte nameStyle style="color:blue;;font-weight:bold"
attr RG_Heizungswerte valueStyle { if ($READING eq "desiredTemperature") {'style="font-size:20px"'} else {'style="font-size:10px"'} }
schau mal ob du mit dem normalen style attribut weiter kommst. d.h. das als default für alles in der readingsGroup inklusive dem drop down menü setzen und dann für alles andere mit den spezifischeren optionen wieder überschreiben.
gruss
andre
Hallo zusammen,
wenn ich folgendes mache
define rg_Systemstatus readingsGroup \
sysmon:,<CPU Temperatur>,cpu_temp_avg,<CPU Frequenz>,cpu1_freq \
sysmon:,<System up time>,uptime_text,<FHEM up time>,fhemuptime_text
attr rg_Systemstatus alias Systemstatus
attr rg_Systemstatus room 00 Übersicht
wird nur der Rahmen der readingsGroup ohne Inhalt angezeigt.
SYSMON habe ich wie folgt definiert:
define sysmon SYSMON 1 1 1 10
Darstellen wollte ich das ähnlich wie im Beispiel:
http://www.fhemwiki.de/wiki/ReadingsGroup#Wertabh.C3.A4ngige_Farbgebung (http://www.fhemwiki.de/wiki/ReadingsGroup#Wertabh.C3.A4ngige_Farbgebung)
Vielen Dank
die , jeweils nach dem : sind überflüssig oder stören sogar. ich weiss aber nicht ob es daran liegt. ansonsten schreib mal bitte das komplette define in eine zeile.
mach mal bitte ein list auf die readingsGroup.
ist dein fhem aktuell?
gruss
andre
Zitat
die , jeweils nach dem : sind überflüssig oder stören sogar. ich weiss aber nicht ob es daran liegt.
Hatte ich schon probiert. Daran lag es nicht. So steht es aber auch im Wiki.
Zitat
ansonsten schreib mal bitte das komplette define in eine zeile.
Hatte ich auch schon probiert. Daran lag es auch nicht.
Zitat
ist dein fhem aktuell?
Aber sicher doch (zu diesem Zeitpunkt)
Zitat
mach mal bitte ein list auf die readingsGroup.
Mache ich heute abend.
Folgendes funktionierte übrigens:
define rg_Systemstatus readingsGroup sysmon
Die Leerzeichen (und das einsame Komma am Anfang) scheinen zu stören - so geht's (bei mir):
define rg_Systemstatus readingsGroup \
sysmon:<>,<CPU_Temperatur>,cpu_temp_avg,<CPU_Frequenz>,cpu1_freq \
sysmon:<>,<System_up_time>,uptime_text,<FHEM_up_time>,fhemuptime_text
attr rg_Systemstatus alias Systemstatus
attr rg_Systemstatus room 00 Übersicht
Zitat von: RoBra81 am 17 Oktober 2014, 12:47:48
Die Leerzeichen (und das einsame Komma am Anfang) scheinen zu stören - so geht's (bei mir):
Mit den <> vor dem Komma hatte ich auch schon probiert ohne Erfolg.
Vermutlich hängts dann an den Leerzeichen. Ist natürlich blöd da ich dann die Text noch ummappen muss.
Vielen Dank. Ich werde es heute Abend probieren.
Ok. funktioniert. Es ist das Leerzeichen.
Folgendermaßen funktioniert es:
define rg_Systemstatus readingsGroup \
sysmon:,<CPU_Temperatur>,cpu_temp_avg,<CPU_Frequenz>,cpu1_freq \
sysmon:,<System_up_time>,uptime_text,<FHEM_up_time>,fhemuptime_text
attr rg_Systemstatus alias Systemstatus
attr rg_Systemstatus room 00 Übersicht
Aber glücklich bin ich damit nicht:
- Ich hätte gerne die Anzeige des Devices sysmon unterdrückt
- Die Underscores im Text sind nicht schön
Eigentlich so wie im Beispiel:
http://www.fhemwiki.de/wiki/ReadingsGroup#Alle_Readings_eines_Ger.C3.A4tes.2C_mit_Ausnahme_von... (http://www.fhemwiki.de/wiki/ReadingsGroup#Alle_Readings_eines_Ger.C3.A4tes.2C_mit_Ausnahme_von...)
zeig mal bitte einen screenshot.
wenn du möchtest das der device name nicht auftaucht dann setzt das nonames atribut.
mach das komma nach dem doppelpunkt weg. das macht wirklich keinen sinn.
die leerzeichen bekommst du in der aktuellen version am einfachsten in den text wenn statt dessen jeweils schreibst.
gruss
andre
soweit so gut. Bis auf die Darstellung der Leerzeichen mit
Anhang anbei.
wo ist das problem ?
Wenn ich anstatt dem Underscore ein mache, kann das nicht aufgelöst werden.
Das hängt wohl am Semikolon.
nicht die config direkt bearbeiten sondern im frontend in der detail ansicht DEF klicken und dort editieren.
gruss
andre
Ich werd bekloppt. Das hat funktioniert. Vielen Dank.
Hab meinen Denkfehler auch gefunden. Ich hätte in der cfg auch ;; machen müssen ;)
Ich hätte da noch was weiteres:
Gibt es eine komfortable Möglichkeit das Modul Weather inkl. den Icons zu integrieren, wie es z.B. mit
define wl_Wohnort weblink htmlCode {WeatherAsHtml("we_Wohnort")}
möglich ist?
Vielen Dank.
Hi,
ich hänge Mal wieder mit der readingsGroup ::)
Ich habe insgesamt fünf Devices, deren Werte ich zum Teil untereinander als auch nebeneinander darstellen möchte. Siehe zunächst Mal Screenshot1.
Es gibt dort die Gruppe Garage mit den Zeile 1-3 und die Gruppe switch mit den Zeilen 1-2. Ich habe das gewünschte Ergebnis in Screenshot 2 angefügt.
Kurzum, die Zeilen 1-2 aus Gruppe switch sollten neben den analog numerierten Werten stehen. Dabei aber nur die Attribute WebCmd und battery. Für die dritte Zeile Garagentür gibt es kein entsprechendes Device!
Folgende Definition meiner readingsGroup hat mich schon fast zum Ergebnis geführt, aber die Werte (WebCmd, Battery) aus Gruppe switch bekomme ich noch nicht neben die Werte der Gruppe Garage.
define Garage readingsGroup <%fts_garage>,<Tor>,<Batterie>,<Taster>,<Batterie> (GaragenTorRechts|GaragenTorLinks|GaragenTuer):state,battery :state,battery,GaragentorRechtsToggle:webCmd,battery,GaragentorLinksToggle:webCmd,battery
attr Garage mapping %ALIAS
attr Garage nameStyle style=color:yellow;;font-weight:bold
attr Garage room Garage
attr Garage notime 1
attr Garage valueIcon {state => '%devStateIcon', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red'}
Kann mir vielleicht jemand noch einen Tipp geben?
Gruß,
Michael
wenn du einen wert aus einem anderen device zusätzlich mit in einer Zeile anzeigen möchtest geht das mit der form <regex>@<device>
battery ist aber ziemlich sicher kein ttribut sondern ein reading.
das webCmd attribut kannst du mit +webCmd@device genau so mit anzeigen. aber es wird nur angezeigt. es ist nicht anklickbar. um etwas anklickbar zu machen musst du das commands attribut verwenden.
gruss
andre
Ich bin gerade dabei für meine Heizkörperbedienung eine ReadingsGroup zu bauen. Momentan bin ich soweit zufrieden, dass ich den aktuellen Stand für alle Heizkörper/Räume vervielfältigen würde. Da ich mir aber nicht sicher bin, ob ich nicht doch irgendwann etwas ändern möchte, wollte ich mal fragen, ob es möglich ist, eine komplette ReadingsGroup in eine Funktion in die myUtils auszulagern (nur die def, keine Attribute)? Ich hätte das gern irgendwie zentral, sodass ich meine Anpassungen immer gleich für alle Floorplans habe...
Vielen Dank
Ronny
nein. das geht nicht. nur die attribute kannst du auslagern.
du kannst aber im web frontend auf DEF klicken und das was dort steht per copy und paste in ein andere DEF kopieren.
ansonsten gibt es noch copy
gruss
andre
Hallo,
ich möchte mir mal wieder eine ReadingsGroup zusammenstellen und bin am verzweifeln: Ist es möglich, für eine Icon ein ColSpan (und vielleicht sogar einen style mit width und height) zu definieren? Ich bekomme den colspan für ein reading hin, bräuchte es aber auch für Icons (und auch bei Namen ala <heute> bräuchte ich es und habe es noch nicht hinbekommen)...
Vielen Dank
Ronny
mit der eingecheckten version geht beides noch nicht.
in meiner version hier habe ich es schon eingebaut. schau dir mal die version von hier: http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485 (http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485) an. da könnte es für die namen eventuell schon gehen. oder über das cellStyle attribut für jede beliebige zelle.
ich fasse demnächst die ganzen test versionen zusammen und checke es ein.
je nach layout könnte eventuell ein workaround für dich über style beides global für die ganze readingsGroup vorzugeben und dann für jedes element das beides nicht gesetzt haben soll explizit wieder zurück zu setzen.
gruss
andre
Hallo,
ich habe bereits die Version aus dem Link, es geht aber trotzdem nicht: zum einen kann ich das colspan gar nicht mit style sondern nur mit ValueColumns setzen und da kann ich wie gesagt nur Value-Zellen die keine Icons sind beeinflussen. Zum anderen kann ich zwar width setzen, dies hat aber leider keinen Einfluss auf die Icons...
Vielleicht kommt da ja in einer neuen Version noch etwas für mich :-)
Ronny
Hi,
ist es möglich eine feste Breite für eine Spalte festzulegen?
Habe mehrere RGs die alle ähnlich aussehen sollen, jedoch nicht immer die gleiche Anzahl an Elementen in einer Zeile haben. Darunter wird ein SVG platziert, dass die gleiche breite wie die RG hat.
Falls es dazu keine saubere Lösung gibt muss ich wohl einfach leere Spalten dazwischen einfügen.
Edit: seit gestern sieht meine Readingsgroup in der Firma so aus (siehe Anhang).
Es wurden zwischen noch funktionieren und nicht mehr funktioniereren "nur" eine Funktion in den myUtils bearbeitet, und ein update der Module
10_CUL_HM.pm
91_eventTypes.pm
durchgeführt.
define rg_12170_1 readingsGroup <Beleuchtung>,<Status>,<>,<Fenster>,<>,<Status>,<Batterie>\
EIB_1118:<Beleuchtung.1>,state,<>,<Fenster.1>,<>,state@CUL_HM_HM_SEC_SC_2_26AA3B,battery@CUL_HM_HM_SEC_SC_2_26AA3B\
EIB_1117:<Beleuchtung.2>,state,<>,<Fenster.2>,<>,state@CUL_HM_HM_SEC_SC_2_26AA4E,battery@CUL_HM_HM_SEC_SC_2_26AA4E\
EIB_1116:<Beleuchtung.3>,state,<>,<Fenster.3>,<>,state@CUL_HM_HM_SEC_SC_2_26AC38,battery@CUL_HM_HM_SEC_SC_2_26AC38\
CUL_HM_HM_SEC_SC_2_26B663:<>,<>,<>,<Fenster.4>,<>,state@CUL_HM_HM_SEC_SC_2_26B663,battery@CUL_HM_HM_SEC_SC_2_26B663\
<>,<>,<>,<>,<>,<>,<>\
<Raumklima>,<>,<>,<Heizung>,<Temperatur>,<Ventil>,<Batterie>\
CUL_HM_HM_CC_RT_DN_255103:<Solltemperatur>,dayTemp@d_ClimaControl_12170,<>,<Heizung.1>,measured-temp,actuator,battery\
CUL_HM_HM_CC_RT_DN_25510C:<>,<Start>,<Ende>,<Heizung.2>,measured-temp,actuator,battery\
CUL_HM_HM_CC_RT_DN_25528E:<Werktag>,weekday_start@d_ClimaControl_12170,weekday_end@d_ClimaControl_12170,<Heizung.3>,measured-temp,actuator,battery\
CUL_HM_HM_CC_RT_DN_255617:<Samstag>,saturday_start@d_ClimaControl_12170,saturday_end@d_ClimaControl_12170,<Heizung.4>,measured-temp,actuator,battery\
<>,<>,<>,<>,<>,<>,<>\
<Klimaanlage>,<Power>,<Status>,<Richtung>,<Temperatur>,<Geschwindigkeit>,<Filter>\
<Klimaanlage.1>,<%control_standby@lightgreen>,<kühlen>,<2>,<23.6 °C>,<%vent_ventilation_level_2>,<%sani_water_tap@lightgreen>\
<Klimaanlage.2>,<%control_standby@lightgreen>,<kühlen>,<2>,<22.9 °C>,<%vent_ventilation_level_1>,<%sani_water_tap@lightgreen>
attr rg_12170_1 commands {'EIB_1118.state' => 'trigger ntfy_toggle EIB_1118', 'EIB_1117.state' => 'trigger ntfy_toggle EIB_1117', 'EIB_1116.state' => 'trigger ntfy_toggle EIB_1116', 'dayTemp' => 'dayTemp:', 'weekday_start' => 'weekday_start:', 'weekday_end' => 'weekday_end:', 'saturday_start' => 'saturday_start:', 'saturday_end' => 'saturday_end:'}
attr rg_12170_1 mapping {'dayTemp' => '', 'weekday_start' => '', 'weekday_end' => '', 'saturday_start' => '', 'saturday_end' => ''}
attr rg_12170_1 nameStyle {($READING eq "Beleuchtung"||$READING eq "Status"||$READING eq "Fenster"||$READING eq "Batterie"||$READING eq "Raumklima"||$READING eq "Heizung"||$READING eq "Temperatur"||$READING eq "Ventil"||$READING eq "Klimaanlage"||$READING eq "Power"||$READING eq "Richtung"||$READING eq "Geschwindigkeit"||$READING eq "Filter")?'style="font-size:20px;;color:
attr rg_12170_1 noheading 1
attr rg_12170_1 nonames 1
attr rg_12170_1 room 1.2.170:Antriebstechnik
attr rg_12170_1 sortby 10
attr rg_12170_1 valueFormat {'measured-temp' => "%0.1f °;C", 'actuator' => "%0.1f %%" }
attr rg_12170_1 valueIcon {'state.on' => 'li_wht_on', 'state.off' => 'li_wht_off', 'state.closed' => 'fts_window_1w','state.open' => 'fts_window_1w_tilt', 'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red'}
attr rg_12170_1 valueStyle style="font-size:16px"
Was fehlt sind die Freitexte die in <> stehen.
rg funktioniert wieder, es fehlte nur ein Teil des nameStyle attr -.-
Grüße
Igami
Hallo,
ich brauche mal einen Tipp:
Habe folgende ReadingsGroup:
<>,<Player>,<Sender>,<>,<Status>
Sonos_Buero:<%icoSONOSPLAYER_icon-S3.png>,<Büro>,currentSender,currentAlbum,transportState,
Jetzt möchte ich mit dem Attribut valueStyle in Abhöngigkeit vom transportState die Farbe vom Reading "currentSender" ändern, kriege es aber nicht hin:
{
if($READINGS eq "currentSender" && ReadingsVal($DEVICE, "transportState", "") eq "PLAYING" )
{
'style="color:green"'
}
elseif ($READINGS eq "currentSender" && ReadingsVal($DEVICE, "transportState", "") eq "STOPPED" )
{
'style="color:red"'
}
}
Wo mache ich den logischen Fehler?
Spartacus
es gibt keine $READINGS variable und es muss elsif statt elseif heissen.
also etwa so:{
if($READING eq "currentSender" && ReadingsVal($DEVICE, "transportState", "") eq "PLAYING" ) {
'style="color:green"'
} elsif ($READING eq "currentSender" && ReadingsVal($DEVICE, "transportState", "") eq "STOPPED" ) {
'style="color:red"' }
}
ein blick ins log file hätte zu beiden einen hinweis bringen müssen.
gruss
andre
Halle,
yep! Besten Dank! Das war es. Allerdings wird die Farbe nur bei einem Refresh im Browser geändert. Ist das so korrekt? Ich habe das im Wiki so verstanden, dass hier direkt geändert wird, wenn sich der state von "PLAYING" auf "STOPPED" ändert.
Christian
wenn du möchtest das sich die farbe live ändert musst du entweder das reading einfärben das sich ändert. also bei transportState oder du muss dir <{...}@reading> version verwenden weil die readingsGroup sonst nicht weiß das transportState einfluss auf die darstellung von currentSender hat.
gruß
andre
Hi Andre,
sorry! Aber das raffe ich nicht!
Zitat von: justme1968 am 23 Oktober 2014, 13:00:26
wenn du möchtest das sich die farbe life ändert musst du entweder das reading einfärben das sich ändert. also bei transportState oder du muss dir <{...}@reading> version verwenden weil die readingsGroup sonst nicht weiß das transportState einfluss auf die darstellung von currentSender hat.
gruß
andre
Kann man das irgendwo an einem Beispiel sehen? Habe keine Ahnung wonach ich suchen soll! Brauche noch nen Tipp! Sorry!
Christian
Hallo,
gibt es irgendeine Möglichkeit die Ausgabe zu sortieren bzw. zu gruppieren?
Beispiel:
Es gibt mehrere Räume mit mehreren Heizungsthermostaten. Manche Räume haben auch noch ein Wandthermostat.
Nun möchte ich alle Thermostate eines Raumes gruppiert haben und falls in diesem Raum noch ein Wandthermostat existiert dieses an erster Stelle aufführen.
Code sieht ungefähr folgendermaßen aus (bitte Syntaxfehler ignorieren da frei aus dem Kopf erstellt):
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist> .*thermostat.*_Clima$:ValvePosition,desired-temp,measured-temp
Ergebnis soll sein:
Bad_Wandthermostat_Clima...
Bad_Heizungsthermostat_1_Clima...
Bad_Heizungsthermostat_2_Clima...
Kinderzimmer1_Heizungsthermostat_1_Clima...
Kinderzimmer1_Heizungsthermostat_2_Clima...
Kinderzimmer2_Wandthermostat_Clima...
Kinderzimmer2_Heizungsthermostat_1_Clima...
Kinderzimmer2_Heizungsthermostat_2_Clima...
Wohnzimmer_Heizungsthermostat_1_Clima...
Wohnzimmer_Heizungsthermostat_2_Clima...
Wohnzimmer_Heizungsthermostat_3_Clima...
Vermeiden möchte ich folgendes:
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist> \
Bad_Wandthermostat_Clima$:ValvePosition,desired-temp,measured-temp \
Bad_Heizungsthermostat_1_Clima$:ValvePosition,desired-temp,measured-temp \
Bad_Heizungsthermostat_2_Clima$:ValvePosition,desired-temp,measured-temp \
Kinderzimmer1_Heizungsthermostat_1_Clima$:ValvePosition,desired-temp,measured-temp \
Kinderzimmer1_Heizungsthermostat_2_Clima$:ValvePosition,desired-temp,measured-temp \
Kinderzimmer2_Wandthermostat_Clima$:ValvePosition,desired-temp,measured-temp \
Kinderzimmer2_Heizungsthermostat_1_Clima$:ValvePosition,desired-temp,measured-temp \
Kinderzimmer2_Heizungsthermostat_2_Clima$:ValvePosition,desired-temp,measured-temp \
Wohnzimmer_Heizungsthermostat_1_Clima$:ValvePosition,desired-temp,measured-temp \
Wohnzimmer_Heizungsthermostat_2_Clima$:ValvePosition,desired-temp,measured-temp \
Wohnzimmer_Heizungsthermostat_3_Clima$:ValvePosition,desired-temp,measured-temp
Ich hoffe es kann einer verstehen was ich meine ???
Vielen Danke.
Gruß Daniel
du hast fünf möglichkeiten...
1. du setzt das sortDevices attribut und verwendest das sortby attribut
2. du setzt das sortDevices attribut und alle wird alphabetisch sortiert. deine wandthermostate landen dann aber jeweils am ende der gruppe. da kannst du aber durch sanftes umbenennen gegensteuern.
3. du kannst von hand gruppieren und die regex so wählen das du nicht alles hinschreiben musst:define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist> \
Bad_W.*Clima$:ValvePosition,desired-temp,measured-temp \
Bad_H.*Clima$:ValvePosition,desired-temp,measured-temp \
Kinderzimmer1.*Clima$:ValvePosition,desired-temp,measured-temp \
Kinderzimmer2_W.*Clima$:ValvePosition,desired-temp,measured-temp \
Kinderzimmer2.*Clima$:ValvePosition,desired-temp,measured-temp \
Wohnzimmer.*Clima$:ValvePosition,desired-temp,measured-temp
4. du kannst alles so wie in deinem beispiel explizit hin schreiben
5. du verwendest pro raum eine eigene readingsGroup
gruss
andre
@Spartacus: etwas in der art:
- statt currentSender direkt in der liste anzugeben gibst du ,...<{ReadingsVal($DEVICE,"currentSender","")@ currentSender|transportState}
- statt valueFormat steckst du deine farbgebung in nameFormat
- für alle anderen werte setzt du ein default valueFormat mit der normalen farbe.
das ganze ist leider etwas umständlich. die readingsGroup weiss ja nicht das der eine wert einfluss auf die farbe des anderen haben soll und aktualisiert die farbe nicht automatisch.
einfacher ist wenn du direkt den wert einfärbst von dem die farbe auch abhängt.
gruss
andre
Hallo,
also irgendwie habe ich die Syntax nicht durchblickt. Je länger ich mit den readingsGroup spiele desto verwirrter bin ich. Deshalb hier noch einmal ein paar Fragen und ein Überblick, was überhaupt Ziel der Anzeige über readingsGroup ist:
Diese Zeile im DEF-Bereich
Sonos_Buero:<%icoSONOSPLAYER_icon-S3.png>,<Büro>,currentSender,transportState,
erzeugt Folgende Dartstellung:
Sonos_Buero -> ist das DEVICE
<%ico...> -> Das Bild des Players
<Büro> -> Ausgabe des Textes "Büro"
currentSender -> Reading des Devices.currentSender
transportState -> Reading des Devices.transportState
Warum funktioniert bsp. ein Leerzeichen in den spitzen Klammern nicht z.B <Player Büro>?
Was will ich überhaupt erreichen...
Es soll neben dem Symbol des Players und dessen Name ein Button angezeigt werden, der den transportState anzeigt. Neben dem Button soll angezeigt werden, was gerade abgespielt wird. Dabei gibt es zwei Möglichkeiten:
1. Radiosender: Anzeige des readings "currentSender"
2. mp3: Anzeige des readings "currentAlbum (alternativ currentTitle)
Dabei tauchen folgende Probleme auf:
Der Wert der Readings "currentSender" bzw. "currentAlbum" wird nur gelöscht, wenn das jeweils andere Medium abgespielt wird. Wird der Player angehalten (z.B Druck auf den "Stop"-Button) bleibt der Wert des zuletzt abgespielten Mediums (currentSender oder currentAlbum) erhalten. Deshalb sollte hier das jeweils gültige Reading nur beim transportState=PLAYING angezeigt werden. Wenn der transportState = STOPPED ist, sollte entweder nichts angezeigt werden, oder man könnte den Wert des zuletzt abgespielte Readings (currentSender oder currentAlbum)in einer blassen Farbe anzeigen.
Hier mein Ansatz, der so leider nicht funzt:
Sonos_Buero:<%icoSONOSPLAYER_icon-S3.png>,<Büro>, {if(ReadingsVal("$DEVICE","currentSender","") eq "") {"currentAlbum"}else{"currentSender"}} ,transportState,
Das Symbol in der readingsGroup zeigt an, ob der Player läuft, oder angehalten ist. Man kann auch durch einen Klick auf das Symbol zwischen "Play" und "Stop" umschalten. Das funktioniert mit nachstehendem Code:
commands:
{ 'transportState.PLAYING' => 'set $DEVICE Stop', 'transportState.STOPPED' => 'set $DEVICE Play' }
valueIcon:
{'transportState.PLAYING' => 'remotecontrol/black_btn_PLAY', 'transportState.STOPPED' => 'remotecontrol/black_btn_STOP'}
valueStyle:
{if($READING eq "currentSender" && ReadingsVal($DEVICE, "transportState", "") eq "PLAYING" ) { 'style="color:green"' } elsif ($READING eq "currentSender" && ReadingsVal($DEVICE, "transportState", "") eq "STOPPED" ) { 'style="color:red"' } }
Im Moment bin ich etwas überfordert, und weiß nicht so recht, wie ich das vernünftig aufgleisen kann und wo ich anfangen soll!
Sparatcus
ein Lesezeichen funktioniert nicht weil es das trennzeichen zwischen verschiedenen devices ist. du kannst einfach statt des leerzeichens verwenden, also
...,<Player Büro>,....
das was bei dir nicht funktioniert funktioniert aus den folgenden gründen nicht:
- da sind zu viele leerzeichen an stellen an denen sie nicht hin gehören
- ...,{...},... ist keine gültige syntax und ist so auch nirgendwo beschrieben. es muss immer ...,<{...}>,... heißen
- du machst dir das leben unnötig schwer in dem du alles ins define packen willst bzw den kompletten code in ein attribut packst.
es ist viel einfacher und übersichtlicher den code in eine sub in 99_myUtis zu stecken und im define und attribut nur noch aufzurufen. - das ausblenden eines wertes ist vielleicht viel einfacher :) und es hilft oft nicht nur in der readingsGroup zu denken sondern readings schon ausserhalb 'vorzubereiten'.
im folgenden setze ich mal voraus das dir das nicht anzeigen lieber wäre als das farbig machen.
zwei ideen in der readingsGroup:
- schau dir mal die doku zum valueFormat attribut an. wenn du an der passenden stelle undef zurück gibst wird das reading übersprungen. d.h. das einfachste ist es du steckst in das define deiner readingsGroup beide readings currentSender und currentAlbum und sorgst über valueFormat dafür das das gerade nicht aktive reading nicht angezeigt wird. z.b. über den readingsTimestamp.
- du verwendest ...,<{myDisplay($DEVICE)}@currentSender|currentAlbum> und legst in 99_myUtils eine sub myDisplay an die dir abhängig vom timestamp das neuere von currentSender und currentAlbum zurück gibt.
und zwei ideen zum ausserhalb vorbereiten:
- für dein sonos device legst du ein notify an das sobald transportState auf STOPPED geht löschst du mit deletereading currentSender und currentAlbum.
- du kannst auch über ein solches notify immer jeweils das neueste der beiden currentSender und currentAlbum in ein neues reading currentX kopieren (und dieses bei stop löschen) und dann currentX in der readingsGroup anzeigen.
damit das ganze auch dann funktioniert wenn auf stop gedrückt wird musst du eine der ersten beiden ideen (die sind dazu da das bei play jeweils das richtige reading angezeigt wird) mit einer der letzten beiden (die sind dazu da das bei stop kein falsches reading mehr angezeigt wird) kombinieren.
gruss
andre
ps: ich würde den play/stop knopf links vom titel anzeigen dann bewegt sich der knopf nicht horizontal abhängig von der tiel länge.
Hallo Andre,
ganz, ganz lieben Dank für die Tipps! Das hilft mir auf jeden Fall weiter!
Das userReading habe ich im Sonos angelegt und kopiere nun je nach Mucke currentSender oder currentAlbum rein, das klappt auch schon!
Ich melde mich, wenn ich weitere Unterstützung brauche!
Christian
Hallo,
ich bin wieder am Werk!
Zitat von: justme1968 am 23 Oktober 2014, 20:43:21
......
- du kannst auch über ein solches notify immer jeweils das neueste der beiden currentSender und currentAlbum in ein neues reading currentX kopieren (und dieses bei stop löschen) und dann currentX in der readingsGroup anzeigen.
........
Ich habe jetzt mal Folgendes ausprobiert:
userReadings:
[/list]
currentX {if(ReadingsVal("Sonos_Buero", "currentSender", "") eq "" ) {ReadingsVal("Sonos_Buero", "currentAlbum", "")} else {ReadingsVal("Sonos_Buero", "currentSender", "")}}
Notify:
define Sonos_Buero_Stop notify Sonos_Buero:transportState:.STOPPED
deletereading Sonos_Buero currentX
Das currentX lasse ich nun in meiner readingsGroup anzeigen.
Wahlweise steht nun currentAlbum oder currentSender drin. Wenn ich den Player anhalte, dann wird currentX gelöscht.
Allerdings wird dies auch erst nach einem Browser-Refresh in der readingsGroup angezeigt. Außerdem verändert sich die Größe des Anzeigefensters der Gruppe.
Das mit dem automatischen Refresh habe ich noch nicht durchblickt.
Christian
diese zeile currentX {if(ReadingsVal("Sonos_Buero", "currentSender", "") eq "" ) {ReadingsVal("Sonos_Buero", "currentAlbum", "")} else {ReadingsVal("Sonos_Buero", "currentSender", "")}}
verstehe ich nicht. hier fehlt der zusammenhang.
ich vermute das ist dein notify? ann geht es auch noch etwas einfacher denke ich:define currentX notify Sonos_Buero:currentSender|currentAlbum setreading Sonos_Buero currentX $EVTPART1
damit wird einfach currentX jeweils mit dem neuesten der beiden readings überschrieben.
das mit dem löschen war mein fehler. du musst das currentX reading auf einen leeren string setzen statt es zu löschen. ein gelöschtes reading erzeugt kein event.
statt einem leeren string kannst du natürlich auch jeden anderen text verwenden falls du auch bei nicht spielen etwas anzeigen willst. hier kannst du dann auch mit valueStyle ansetzen und anders einfärben.
die größe ändert sich natürlich abhängig vom inhalt so lange du über ein style attribut keine feste größe vorgibst.
gruss
andre
Hi Andre,
ok! Danke.
attr Sonos_Buero userReadings currentX {if(ReadingsVal("Sonos_Buero", "currentSender", "") eq "" ) {ReadingsVal("Sonos_Buero", "currentAlbum", "")} else {ReadingsVal("Sonos_Buero", "currentSender", "")}}
Hiermit lege ich das userReading an und schreibe curretAlbum oder current Sender hinein. Wird die Betriebsart vom Radio-Mode in den mp3-Mode geschaltet, wird currentSender automatisch gelöscht, umgekehrt wird currentAlbum gelöscht, wenn ich in den Radio-Mode zurückkehre. Dehalb ist m.E. sichergestellt, dass hier immer das aktuelle Reading in currentX geschrieben wird.
Christian
P.S.
define currentX notify Sonos_Buero:currentSender|currentAlbum setreading Sonos_Buero currentX $EVTPART1
Dieses notify funktioniert nicht! In currentX steht dann alles Mögliche, aber nicht currentSender bzw. currentAlbum. Mit meinem userReading stehen zumindet die korrekten Werte in currentX drin.
Hallo,
so! Das hier funktioniert soweit ganz gut!
attr Sonos_Buero userReadings currentX
{
if(ReadingsVal("Sonos_Buero", "transportState", "") eq "STOPPED" )
{
sprintf('nichts')
}
elsif(ReadingsVal("Sonos_Buero", "currentSender", "") eq "" )
{
ReadingsVal("Sonos_Buero", "currentAlbum", "")
}
elsif(ReadingsVal("Sonos_Buero", "currentAlbum", "") eq "")
{
ReadingsVal("Sonos_Buero", "currentSender", "")
}
}
Wenn ich jetzt das Reading cuurentX in der readingsGroup anzeigen lasse,
dann wechselt die Anzeige auch korrekt zwischen
Radiosender, Album und "nichts"
...ist das jetzt Zufall, bzw. nachvollziehbar?
Christian.
kein zufall sondern ziemlich genau das was ich oben vorgeschlagen hatte.
gruss
andre
Hi andre,
;D ...aber ich brauche die notifys nicht! Das "userReading" ist der gesamte Code! Jetzt muss ich das nur noch einfärben...
btw. wie kann man eigentlich den Wert eines Readings löschen? Habe irgendwie nen Knoten im Kopf!
Bis bald,
Sparatcus
du nimmst statt einem notify userReadings. das ist vom code menge her nicht wirklich ein unterschied. aber du hast weniger devices.
und das du nicht genau nachbaust was ich vorgeschlagen habe sondern selber was gefunden hast ist doch schön :)
gruss
andre
Zitatund das du nicht genau nachbaust was ich vorgeschlagen habe sondern selber was gefunden hast ist doch schön :)
.... war Zufall! :)
btw.
wie kann man eigentlich den Wert eines Readings löschen? Habe irgendwie nen Knoten im Kopf! Muss noch andere ReadingInhalte im Device löschen. z.B. den RDS-Text, der bei Stop nicht automatisch gelöscht wird und mit "deletereading" lösche ich das ganze Reading und nicht den Wert. Das will ich ja nicht!
Thanks,
Christian
das löschen bzw. mit 'nichts' füllen würde mit readingsSingleUpdate($defs{<device>},"<reading>", "", 1); gehen.
ps: du kannst in deinem userReadings statt Sonos_Buero auch $name verwenden. das ist automatisch das device zu dem die userReadings gehören.
gruss
andre
Genial! Besten Dank!
Ich lerne.......
Spartacus
Hi,
jetzt muss ich doch noch mal nachhaken!
Die readingsGroup sieht so aus:
Sonos_Buero:<%icoSONOSPLAYER_icon-S3.png>,<Büro>,transportState,<es läuft...>,currentX,<br>,<{rgMarquee(ReadingsVal($DEVICE,"currentPlaying",""))}>,<>,<>,<>
In der zweiten Zeile lasse ich das Reading currentPlaying anzeigen, welches genau wie das currentX, als userReading ermittelt wird. In der myutils sieht das so aus:
sub rgMarquee($)
{
my ($txt) = @_;
return "<marquee scrollamount=2 width=\"220\">$txt</marquee>";
}
Schalte ich nun zwischen Radio und mp3 um, wird automatisch das currentX aktualisiert. Allerding funktioniert das beim Lauftext erst nach Browser Resfresh. Warum klappt das beim currentX automatisch und beim currentPlaying nicht? Wenn ich die Readings im Device direkt anschaue, ändern sich beide zusammengesetzten Readings sofort!
Hier das userReading:
attr Sonos_Buero userReadings currentX
{
if(ReadingsVal("Sonos_Buero", "transportState", "") eq "STOPPED" )
{
sprintf('nichts')
}
elsif(ReadingsVal("Sonos_Buero", "currentSender", "") eq "" )
{
ReadingsVal("Sonos_Buero", "currentAlbum", "")
}
elsif(ReadingsVal("Sonos_Buero", "currentAlbum", "") eq "")
{
ReadingsVal("Sonos_Buero", "currentSender", "")
}
}, currentPlaying
{
if(ReadingsVal("Sonos_Buero", "transportState", "") eq "STOPPED" )
{
sprintf('kein Titel')
}
elsif(ReadingsVal("Sonos_Buero", "currentSenderInfo", "") eq "" )
{
ReadingsVal("Sonos_Buero", "currentTitle", "")
}
elsif(ReadingsVal("Sonos_Buero", "currentTitle", "") eq "")
{
ReadingsVal("Sonos_Buero", "currentSenderInfo", "")
}
}
Christian.
du musst bei der <{...}> variante angeben welches reading dahinter steht wenn die aktualisierung greifen soll weil die readingsGroup sonst nicht weiss bei welchem reading da etwas aktualisiert werden soll.
es muss also so aussehen:...,<{rgMarquee(ReadingsVal($DEVICE,"currentPlaying",""))}@currentPlaying>,...
gruss
andre
Hi andre,
Stimmt, das hättest Du ja schon gesagt! Was mich verwirrt ist, warum das bei dem currentX ohne diese Angabe funktionier. Das verstehe ich jetzt nicht. Muss das dann nicht im ersten Teil der Anweisung auch angegeben werden?
Gruss,
Christian.
currentX ist der reading name und die reasingsGroup weiß das es ein reading ist.
<{...}> ist ein beliebiger perl ausdruck bei dem die readingsGroup nicht automatisch weiß um welches reading es geht.
Hi Zusammen,
gibt es eine möglichkeit in der ReadingsGroup den Alias noch an einer anderen Stelle auszugeben?
device:alias
so inetwa. Ich muss es aber in einer Form bekommen, dass ich auch noch die Spaltenweite auf 3 setzen kann.
Danke und
Grüße
Igami
wenn es über mehr als eine spalte gehen soll geht es in der offiziellen version noch nicht. in der nächsten version wird es gehen.
gruss
andre
Hallo!
Gibt es eine Möglichkeit in einem <> einen : zu schreiben? Es soll ein Text (Uhrzeit) zB 00:00 angezeigt werden.
<00:00> funktioniert nicht <00:00> ebenso nicht.
Grüße
versuch mal \x3a
ansonsten den string aus einer sub zurückliefen.
gruß
andre
Zitat von: justme1968 am 02 November 2014, 15:09:39
versuch mal \x3a
Funktioniert leider nicht.
Zitat von: justme1968 am 02 November 2014, 15:09:39
ansonsten den string aus einer sub zurückliefen.
So klappt es
zB:
<{giveColon("00","00")}>
99_myUtils.pm:
#-------------------------------------------------------------------------#
#-------------- giveColon($text1,$text2) --------------#
#- Gibt einen Doppelpunkt zwischen $text1 und $text2 zurück -#
#- Return: $text1:$text2 -#
#-------------------------------------------------------------------------#
sub giveColon($$){
my ($text1,$text2) = @_;
return "$text1:$text2";
}
Danke für den Tipp!
Grüße
für sowas habe ich mir einen Dummy angelegt
define d_label dummy
setattr d_label 0000 00:00
in der rg dann einfach
...,0000@d_label,...
nutze ich auch wenn ich Überschriften über mehrere Spalten schreiben will.
Grüße
Igami
Hallo, ich hab mal die Heizungswerte inklusive Batterie- und Fensterstatus aus dem Beispielen verwendet.
Kann mir jemand sagen wie ich bei einem Fenstergriff Kontakt das Fenstersymbol in die Heizungswerte bekomme.
Danke
icons bekommst du über das valueIcon attribut.
gruss
andre
Ja, die sind ja drinn. Hab es erstmal genauso wie im Beispiel übernommen.
Batterie zeigt er an, aber vom Fenster keine spur.
Muss ich vielleicht statt window ne dem Griffkontakt was anderes eingeben?
define Heizungswerte readingsGroup <%sani_heating>,< >,<Act>,<Soll>,<Ist> TYPE=FHT:actuator,desired-temp,measured-temp,<%18>,<%20>,<%22>,window,battery
wie heißt denn das reading?
Heizungswerte inklusive Batterie- und FensterstatusHeizungswerte inklusive Batterie- und Fensterstatus
bitte?
Na, von der Seite http://www.fhemwiki.de/wiki/ReadingsGroup (http://www.fhemwiki.de/wiki/ReadingsGroup)
Gibt es die Möglichkeit einen weblink in eine Readingsgroup einzubauen? Ich nutze aus Anzeigegründen das Attribut nonames, würde aber trotzdem gerne an anderer Stelle auf das Device springen können.
Grüße
Igami
am einfachsten in dem du dir in 99_myUtils.pm eine sub definierst die den passenden html link zurück gibt und diese dann einfach aufrufst. etwa so:
...,<{myLink($DEVICE)}>,...
sub
myLink($;$){
my ($device,$name) = @_;
$name = $device if( !$name );
return "<a href=\"/fhem?detail=$device\">$name</a>";
}
gruss
andre
Besten Dank, funktioniert.
Nun habe ich nur wieder das Problem, dass ich den return Wert gerne wieder über zwei Spalten schreiben, und gezielt formatieren will, aber der hat ja nun keinen Namen mehr.
Habe das bisher über
valueStyle {($READING eq "alias" )?'style="font-size:11px;font-weight:bold;text-align:left"': 'style="text-align:right"'}
Wenn du da auch noch eine Idee hättest.
Grüße
Igami
formatieren geht im prinzip über nameStyle. aber nicht so spezifisch. du kannst aber selber in der sub ein div um den link bauen und dort stylen.
wenn du die beta version aus dem forum verwendest kannst du cellStyle verwenden.
das zweispaltig machen geht erst demnächst.
gruß
andre
wenn deine devices einen alias haben und du den anklickbar darstellen willst kannst du statt der idee von oben auch ...,?alias,... in der readingsGroup verwenden und mit valueFormat den link drum rum bauen. dann hast du auch einen namen für valueStyle und valueColumns.
gruß
andre
Bitte noch etwas genauer, habe nun folgendes Probiert
'alias' => '<a href=/fhem?detail=$DEVICE\>$READING</a>'
wird auch korrekt angezeigt und ist anklickbar, nur dann bekomme ich 'Unknown command'.
Danke und
Grüße
Igami
du hast hinter $DEVICE ein \ zu viel.
gruss
andre
Das kam noch aus dem Perl code :-[
Aber auch ohne das funktioniert es nicht.
das $READING habe ich auch noch zu $VALUE geändert, aber das wäre ja nur eine Anzeige Sache, damit ich nicht 'alias' sondern den Wert von alias bekomme.
also noch eine Idee?
Grüße
Igami
ich habe es gerade bei mir getestet und es geht...
{ 'alias' => '<a href=/fhem?detail=$DEVICE>$VALUE</a>' }
vergleiche bitte mal die url aus einem solchen link mit der url von einer stelle aus der es funktioniert. z.b. ohne nonames.
gruss
andre
Habe nun eine neue rg zum testen erstellt.
define rg_link readingsgroup CUL_HM_HM_CC_RT_DN_KEQ0575305:?alias
attr rg_link commands { 'alias' => '<a href=/fhem?detail=$DEVICE>$VALUE</a>' }
Es funktioniert nicht. Beim Namen bekomme ich ganz normal den link angezeigt, beim alias nix.
# $Id: 33_readingsGroup.pm 6262 2014-07-16 07:46:03Z justme1968 $
Woran könnte das noch liegen?
nicht commands. valueFormat.
gruss
andre
:-[
Vielen Dank, nun geht's. :)
Grüße
Igami
hallo,
ich möchte ein value eines readings erst splitten und anschliessend mit einem prozentzeichen als einheit formatieren. ich bekomme im log aber immer ein fehler:
2014.11.05 14:38:14.146 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/33_readingsGroup.pm line 922.
die anzeige ist aber korrekt. in valueformat gebe ich folgendes ein:
{'ValvePosition'=>'{sprintf("%.0f %%",[split(" ", $VALUE)]->[0])}'}
was kann ich tun?
versuch es mal so:{'ValvePosition'=>'{sprintf("%.0f ",[split(" ", $VALUE)]->[0]) ."%"}'}
wenn das nicht hilft: geh mal in das 33_readingsGroup.pm file und ändere genau über der zeile mit der fehlermeldung das $value_format =~ m/%/
in ein$value_format =~ m/%.+/
gruss
andre
danke, fast. so funktioniert es (endlich). :)
{'ValvePosition'=>'{sprintf("%.0f ",[split(" ", $VALUE)]->[0]) ."%%"}'}
schade, habe jetzt erst dein edit gesehen.
gruss frank
Hallo, ich bekomme das irgendwie nicht hin dem dem textField.
Ich habe es nach dem Beispiel versucht, aber ich sehe keine Textfelder.
define Strom dummy
define Gas dummy
define Verbrauch_rg readingsGroup Strom:Datum,Art,Verbrauch,speichern Gas:Datum,Art,Verbrauch,speichern
attr Verbrauch_rg alias Verbrauchsdaten
attr Verbrauch_rg commands {'Datum' => 'Datum:textField','Art' => 'Art:Ablesung,Abrechnung','Verbrauch' => 'Verbrauch:textField','Strom.speichern' => 'speichern:'}
attr Verbrauch_rg nolinks 0
attr Verbrauch_rg notime 1
attr Verbrauch_rg room Energie
Gruß
cerberus
readingsGroup ignoriert readings die nicht vorhanden sind. du musst sie ein mal mit setreading anlegen.
gruss
andre
Ah...super und danke, sowas hatte ich mir fast gedacht.
Hallo zusammen,
ich hätte eine Frage zu der Darstellung aus dem Anhang:
Gibt es auch die Möglichkeit die Devices als Spaltenüberschrift zu setzen? Dann wären die Devices in der 1. Zeile und in der 2. Zeile dann der Wert des Readings.
Vielen Dank.
MfG
Daniel
ud kannst mit <br> einen zeilenumbuch einbauen.
gruss
andre
Ich glaube du hast mich missverstanden. Eigentlich das ganze Teil um 90 Grad im Uhrzeigesinn drehen.
Die Readingsgroupe hätte dann nur 2 Zeilen und mehr Spalten. Den Spaltentext würde ich dann natürlich noch kleiner machen (weniger Zeichen).
achso...
das geht zur zeit nicht. ich muss mal überlegen ob sich das einfach einbauen lässt.
gruss
andre
Brauchen tu ich das eigentlich für die Anwesenheitsansicht aus dem Anhang.
Alle nebeneinander würde besser aussehen finde ich und man würde keinen Platz verschwenden.
wenn es eine feste liste von von geräten ist kannst du dir von hand helfen in dem du alles in der form reading@device selber hinschreibst. etwa so:define <rg> readingsGroup d1:+NAME,+NAME@d2,+NAME@d3 d1:state,state@d2,state@d3
d1,d2 und d3 sind jeweils die devices. du solltest das nonames attribut setzen.
das ganze funktioniert aber nur für eine feste liste von devices.
wenn du die namen anklickbar haben möchtest geht das über ein passendes valueFormat. siehe etwas eine seite vorher in diesem thread.
gruss
andre
Vielen Dank. Soweit so gut. Habs hinbekommen. Der Link hat etwas gedauert.
Aber geht das nicht irgendwie einfacher? Das define
define rg_Anwesenheit readingsGroup \
presence_Handy_DC:<{createLink($DEVICE,'Daniel')}>,<{createLink('presence_Handy_MJ','Melanie')}@presence_Handy_MJ>,<{createLink('presence_Media_Onkyo','Onkyo')}@presence_Media_Onkyo>,<{createLink('presence_Media_Raspbmc','Raspbmc')}@presence_Media_Raspbmc>,<{createLink('presence_Media_Wii','Wii ;U')}@presence_Media_Wii>,<{createLink('presence_Notebook_DC','NB ;Daniel')}@presence_Notebook_DC>,<{createLink('presence_Notebook_MJ','NB ;Melanie')}@presence_Notebook_MJ> \
presence_Handy_DC:state,state@presence_Handy_MJ,state@presence_Media_Onkyo,state@presence_Media_Raspbmc,state@presence_Media_Wii,state@presence_Notebook_DC,state@presence_Notebook_MJ
attr rg_Anwesenheit alias Anwesenheit
attr rg_Anwesenheit group Anwesenheit
attr rg_Anwesenheit mapping { rgMapping($DEVICE,$READING,$VALUE);; }
attr rg_Anwesenheit nameStyle style="font-weight:bold"
attr rg_Anwesenheit noheading 0
attr rg_Anwesenheit nonames 1
attr rg_Anwesenheit nostate 1
attr rg_Anwesenheit notime 1
attr rg_Anwesenheit room 00 Übersicht
attr rg_Anwesenheit valueFormat { rgValueFormat($DEVICE,$READING,$VALUE);; }
attr rg_Anwesenheit valueIcon { rgValueIcon($DEVICE,$READING,$VALUE);; }
attr rg_Anwesenheit valueStyle { rgValueStyle($DEVICE,$READING,$VALUE);; }
kommt mir etwas zu kompliziert vor.
Noch eine 2. Sache: Mit
attr rg_Anwesenheit style style="border:0px;background:none;box-shadow:none"
wollte ich noch den doppelten Rahmen um die readingsGroup entfernen. So wie es im Wiki steht.
Nach einem Reload kommt aber:
Unknown command border:0px, try help.
Unknown command background:none, try help.
Unknown command box-shadow:none", try help.
das ist nicht wirklich kompliziert :)
es geht leider zur zeit nicht einfacher weil alles 'von hand' gemacht wird.
für die laufzeit macht es aber fast keinen unterschied.
gib das attribut im frontend in das entsprechende feld ein und editiere nicht direkt das config file. sonst musst du dich ums maskieren der fhem sonderzeichen selber kümmern.
gruss
andre
Zitatgib das attribut um
frontens in das entsprechende feld ein und editiere nicht direkt das config file. sonst musst du dich ums maskieren der fhem sonderzeichen selber kümmern.
Das hat funktioniert. Mache momentan alles in der config.
Bin das nicht gewohnt über das Frontend. Dauert für mich irgendwie länger.
Aber ich sollte das wohl umstellen. Kann man ja überall im Forum lesen.
Und das nächste:
Ist es bei dem Attribut style nicht möglich Perl-Code anzugeben wie z.B. bei dem Attribut valueStyle?
Folgendes geht nicht:
attr rg_Anwesenheit style { rgStyle($DEVICE,$READING,$VALUE);; }
folgendes geht:
attr rg_Anwesenheit style style="text-align:center"
style gilt global für die ganze readingsGroup. da macht etwas dynamisches mit $DEVICE und $READING keinen sinn und diese variablen sind nicht gesetzt. du solltest eine entsprechende meldung im log sehen.
gruss
andre
Ich lagere nur gerne redundante Sachen aus. Und wenn ich das Zeugs im style-Attribut in mehreren readingsgroups nutze, dann wäre das für mich ein Kanditat um diesen Code in die MyUtils zu verlagern.
Aber jetzt weiß ich ja bescheid.
Im Log hatte ich schon geschaut und nichts gesehen.
Steht bei mir auf
attr global verbose 3
man müsste ja eigentlich auch valueFormat für sowas missbrauchen können, oder? Mit den entsprechenden Tags reinformatiert?
@dancatt: perl code wird in der nächsten version auch für style gehen. eventuell geht es auch jetzt schon. aber eben nicht die variablen die du verwendet hattest.
@doggiebert: es kommt einfach drauf an für welche teile des layout der style sein soll. an den rahmen um alles kommt man z.b. per valueStyle nicht ran.
Ich hab eine RG mit drei Zeilen/Devices im Floorplan. Sobald eine Zeile etwas länger ist, erfolgt im floorplan ein unerwünschter Umbruch; allerdings nur im Firefox auf meinem Android Smartphone, nicht jedoch im Firefox unter Win7 ... so als würde der Platz für die Darstellung der RG im Browser rechts beschränkt ...
du kannst im style die breite für den text vorgeben. dann gibt es einen umbruch. die floorplan stylesheets scheinen unterschiedlich interpretiert zu werden.
gruss
andre
Zitat von: justme1968 am 08 November 2014, 09:12:23
@dancatt: perl code wird in der nächsten version auch für style gehen. eventuell geht es auch jetzt schon. aber eben nicht die variablen die du verwendet hattest.
Vielen Dank schon mal.
Für welche Variablen dann? Wenn ich den Code in die MyUtils auslagern möchte, muss ich eventuell ja an den TYPE kommen.
Anhand des TYPES, DEVICES und READINGS entscheide ich was ich wie mache.
Beispiel:
sub rgValueIcon($$$)
{
my($DEVICE,$READING,$VALUE) = @_;
my $TYPE = getType($DEVICE);
#.......
if($TYPE eq "CUL_HM") {
if ($DEVICE =~ m/thermostat/) {
if ($READING eq "batteryLevel") {
return 'measure_battery_100@green' if $VALUE > 3.0;
return 'measure_battery_75@green' if $VALUE > 2.7;
return 'measure_battery_50@green' if $VALUE > 2.4;
return 'measure_battery_25@orange' if $VALUE > 2.1;
return 'measure_battery_0@red' if $VALUE <= 2.1;
}
if($READING eq "controlMode") {
# ......
}
if ($DEVICE =~ m/_Fensterkontakt$/) {
if ($READING eq "battery") {
#.....
}
elsif ($TYPE eq "SYSMON") {
#.....
}
elsif ($TYPE eq "holiday") {
if ($DEVICE eq "hol_Abfall") {
#.....
}
elsif ($TYPE eq "TM") {
if ($DEVICE eq "CallMon") {
#.....
}
elsif ($TYPE eq "PRESENCE") {
if ($DEVICE =~ m/presence_Handy_/) {
#.....
}
}
Kann ich bei valueIcon auch auf "device.state.reading" mappen?
Zitat von: justme1968 am 08 November 2014, 09:58:50
du kannst im style die breite für den text vorgeben
Danke Andre - wieder mal ;)
Der Vollständigkeit halber:
style="width:320px;font-size:18px"
P.S. Weiß jemand jetzt vlt. noch, wie man im floorplan um die RG einen Rahmen oder eine Box bekommt 8)
@dancatt: DEVICE und READING bezieht sich ja jeweils auf eine zeile oder ein element in der readingsGroup. das macht für ein attribut das fur die ganze readingsGroup gilt keinen sinn. das einzige auf das du hier zugreifen kannst ist $d. das ist der name der readingsGroup selber. wie gesagt style gilt global. für die ganze readingsGroup.
@stromer-12: nein. das geht nicht direkt. du kannst aber zwei stufig vorgehen und mit valueFormat zuerst den value in $READING.$VALUE zusammenfassen oder irgend einen anderen value bauen und dann in valueIcon diesen mit dem device verwenden.
@grappa24: schau dir einfach an wie der rahmen im normalen style gemacht wird und dann fügst du das in den readingsGroup style ein.
gruss
andre
Zitat von: Badflex am 04 November 2014, 15:27:40
Muss ich vielleicht statt window bei dem Griffkontakt was anderes eingeben?
define Heizungswerte readingsGroup <%sani_heating>,< >,<Act>,<Soll>,<Ist> TYPE=FHT:actuator,desired-temp,measured-temp,<%18>,<%20>,<%22>,window,battery
Das hier ist der Kontakt
(http://up.picr.de/20065457ca.png)
Hat jemand einen Rat?
Zitat von: justme1968 am 08 November 2014, 14:14:49
@grappa24: schau dir einfach an wie der rahmen im normalen style gemacht wird und dann fügst du das in den readingsGroup style ein
cool, ich glaube, ich muss mich doch mal mit WebDesign befassen ... 8)
style="width:320px;font-size:18px;border-style:solid"
Hi, wollte jetzt auch mal readingsGroup nutzen um ein paar reagings aus dem enignma2 Modul über Buttons auf meinem Floorplan zu steuern.
Dafür habe ich die readingsGroup so definiert:
define rg_VU_Ultimo readingsGroup VU_Ultimo:channel,power,volume
Das list der readingsGroup sieht auch glaub ich ganz gut aus.
Internals:
CFGFN
DEF VU_Ultimo:channel,power,volume
NAME rg_VU_Ultimo
NR 331
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x18ede28)
Fhem:
lastDefChange 6
last_update 1415469883.8841
Attributes:
Nur wie definiere ich jetzt für die 3 readings Buttons(power), bzw. Pulldown Menü (Channel) slider (Volumen), so das auch der aktuelle Status angezeigt wird
Danke
das icon für power über valueIcon, anklickbar machen, slider und menü über das commands attribut.
gruss
andre
Zitat von: justme1968 am 08 November 2014, 21:59:55
das icon für power über valueIcon, anklickbar machen, slider und menü über das commands attribut.
gruss
andre
Hi, danke für deinen Hinweis,
habs jetzt mal versucht wie in der Commandref zu lösen
Für den Power On/Of
attr rg_VU_Ultimo valueIcon {state => '%devStateIcon'} attr rg_VU_Ultimo valueIcon { "power.on" => "On", "power.off" => "Off" }
Für das Volumen
attr rg_VU_Ultimo commands { volume => "volume:slider,0,1,100" }
ein list ergibt jetzt
Internals:
DEF VU_Ultimo:channel,power,volume
NAME rg_VU_Ultimo
NR 199
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x716398)
Fhem:
lastDefChange 1
last_update 1415551237.76745
Attributes:
commands { volume => "volume:slider,0,1,100" }, { 'channel' => 'channel:' }
valueIcon {state => '%devStateIcon'} attr rg_VU_Ultimo valueIcon { "power.on" => "On", "power.off" => "Off" }
Allerdings kann ich den Reciever weder an noch aus stellen und auch Volumen lässt sich nicht einstellen.
Was hab ich noch falsch gemacht?
Danke
eine ganze menge. vielleicht schaust du dir die beispiele im forum, wiki und commandref noch mal ganz genau an.
es gehört jeweils alles in einen hash und du hast keine kommandos für power angegeben. es sollte etwa so aussehen:
attr rg_VU_Ultimo commands { volume => "volume:slider,0,1,100", channel => 'channel:', 'power.on' => "set $DEVICE off", 'power.off' => "set $DEVICE on" }
attr rg_VU_Ultimo valueIcon { state => '%devStateIcon', 'power.on' => "On", 'power.off' => "Off" }
gruss
andre
Zitat von: justme1968 am 09 November 2014, 18:33:19
eine ganze menge. vielleicht schaust du dir die beispiele im forum, wiki und commandref noch mal ganz genau an.
es gehört jeweils alles in einen hash und du hast keine kommandos für power angegeben. es sollte etwa so aussehen:
attr rg_VU_Ultimo commands { volume => "volume:slider,0,1,100", channel => 'channel:', 'power.on' => "set $DEVICE off", 'power.off' => "set $DEVICE on" }
attr rg_VU_Ultimo valueIcon { state => '%devStateIcon', 'power.on' => "On", 'power.off' => "Off" }
gruss
andre
Schade, hatte gehoft keine ganze Menge :-( Der Slider für die Lautstärke funktionierte sogar, wenn ich den channel noch nicht definiert hatte und umgekehrt auch:-) Nur zusammen nicht.
Hab mir deinen Code jetzt mal vorgenommen, allerdings bekomme ich damit nur den On/Off status richtig angezeigt, der rest geht nicht
Hab es jetzt mal hiermit probiert:
attr rg_VU_Ultimo commands { volume => "volume:slider,0,1,100", channel => 'channel:'}
attr rg_VU_Ultimo valueIcon { state => '%devStateIcon', 'power.on' => "on", 'power.off' => "Off" }
Damit wird der Status On/Off richtig angezeigt und es ist möglich die Lautstärke und den Sender auszuwählen, allerdings gibts noch das problem wenn ich z.b. die Lautstärkte auf
Zitat100
gestellt habe und dann den Sender wechsel, wird die Lautstärke wieder als
Zitat0
angezeigt, was sie aber nicht ist, sie ist immer noch 100 und auch die anzeige des channels wird nicht immer akktualisiert, kann das an der readingsGroup liegen oder ist das eher ein Problem des enigma2 Moduls?
Werd jetzt noch mal am On/Off bastel, mal sehn was ich da noch ändern muss
Danke erstmal
EDIT
Bin ein ganzes Stück weiter, denk ich :-)
Der code sieht jetzt so aus:
attr rg_VU_Ultimo commands { volume => "volume:slider,0,1,100", channel => 'channel:', 'power.on' => 'set $DEVICE off', 'power.off' => 'set $DEVICE on' }
attr rg_VU_Ultimo valueIcon { state => '%devStateIcon', 'on' => "on", 'off' => "Off" }
Damit wird die Lautstärkeregelung (wird nicht aktualisiert), die channel auswahl ( wird nicht aktualisiert) und der Button zum anklicken für On/off (kann ihn nicht Testen, sonst bekomme ich die Rote Karte gezeigt :-) ) angezeigt.
Jetzt muss nur noch der Status aktualisiert werden, was könnte da noch falsch sein? Im device wird er aktualisiert.
Ein anderes Problem ist noch das ich die readingsGroup auf einem Floorplan platziert habe, da wird auch alles angezeigt, bis auf den Slider, was kann das sein?
Im Log gibts dazu auch diesen Fehler:
2014.11.09 20:51:31.602 2: ENIGMA2 set VU_Ultimo volume NaN
Danke
ZitatJetzt muss nur noch der Status aktualisiert werden
das funktioniert zur zeit nur, indem du die browserseite neu lädst.
Zitat von: frank am 10 November 2014, 10:20:45
das funktioniert zur zeit nur, indem du die browserseite neu lädst.
Das heißt, wenn ich z.b den Channel Wechsel ist es normal das die Lautstärke mit 0 angezeigt wird obwohl die 100 ist?
wenn alles passt sollten die werte auch in der readings group aktualisiert werden.
bitte konfiguriere mal volume und channel als webCmd und schaue ob die aktualisierung hier funktioniert.
gruss
andre
Zitat von: justme1968 am 10 November 2014, 13:22:53
wenn alles passt sollten die werte auch in der readings group aktualisiert werden.
bitte konfiguriere mal volume und channel als webCmd und schaue ob die aktualisierung hier funktioniert.
gruss
andre
Wahrscheinlich blöde frage aber wie erstelle ich den slider bei webcmd?
hab mal ein wenig gegooglet und ihn dann so wie im list zusehen definiert, allerding erhalte ich damit garkeinen slider
Internals:
DEF VU_Ultimo:channel,power,volume
NAME rg_VU_Ultimo
NR 199
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x843240)
Fhem:
lastDefChange 1
last_update 1415647988.62329
Attributes:
fp_Reciever 239,205,0,
webCmd "volume:slider,0,1,100"
du brauchst zusätzlich das widgetoverride attribut wenn das modul den slider nicht selber anbietet.
also du meinst so?
Internals:
DEF VU_Ultimo:channel,power,volume
NAME rg_VU_Ultimo
NR 199
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x843240)
Fhem:
lastDefChange 1
last_update 1415647988.62329
Attributes:
fp_Reciever 239,205,0,
webCmd "volume:slider,0,1,100"
widgetOverride 1
leider keine änderung
Bekomme im Log dann auch diese Fehler:
2014.11.10 22:11:00.216 1: PERL WARNING: Use of uninitialized value $orig in string ne at ./FHEM/33_readingsGroup.pm line 1012.
2014.11.10 22:11:00.218 1: PERL WARNING: Use of uninitialized value $attrVal in string ne at ./FHEM/33_readingsGroup.pm line 1012.
2014.11.10 22:11:00.404 1: PERL WARNING: Use of uninitialized value $a in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 2594.
In line 1012 steht
Zitatif( $orig ne $attrVal ) {
und in FHEMWEB in line 2594 steht
Zitat$str =~ s/\b($n)\b(:[^ ]*)?/$1:$a/g;
zum einen musst du beide attribute auf das original device setzen und zum anderen so:
attr VU_Ultimo widgetOverride volume:slider,0,1,100
attr VU_Ultimo webCmd volume
widgetOverride aber nur wenn volume im enigma modul kein slider ist.
ansonsten schau doch mal in die commandref zu beiden attributen.
Zitat von: justme1968 am 10 November 2014, 22:25:20
zum einen musst du beide attribute auf das original device setzen und zum anderen so:
attr VU_Ultimo widgetOverride volume:slider,0,1,100
attr VU_Ultimo webCmd volume
widgetOverride aber nur wenn volume im enigma modul kein slider ist.
ansonsten schau doch mal in die commandref zu beiden attributen.
Hallo,
werd mir das heute Abend nochmal genauer ansehen wenn ich zuhause bin, allerdings im Orginal Device ist Volumen schon ein Slider, damit müsste ich ja wenn ich dich richtog verstehe nur noch
attr VU_Ultimo webCmd volume
setzen?
ja. und für die readinsgGroup reicht dann ein volume => "volume:" als mapping
gruss
andre
Also das Device sieht jetzt so aus:
Internals:
CHANGED
DEF 192.168.188.24 0444 90 root 1tina9
INTERVAL 90
NAME VU_Ultimo
NR 198
STATE on
TYPE ENIGMA2
Readings:
2014-11-11 20:33:32 acg
68
2014-11-11 00:09:05 apid -
2014-11-11 20:33:32 ber
1096439113
2014-11-11 00:09:05 channel -
2014-11-11 00:09:05 currentMedia -
2014-11-11 00:09:05 currentTitle -
2014-11-09 12:00:52 enigmaversion 2014-11-03-vti-master
2014-11-11 00:09:05 eventcurrenttime -
2014-11-11 00:09:05 eventcurrenttime_hr -
2014-11-11 00:09:05 eventcurrenttime_next -
2014-11-11 00:09:05 eventcurrenttime_next_hr -
2014-11-10 21:23:39 eventdescription -
2014-11-10 21:23:39 eventdescription_next -
2014-11-11 00:09:05 eventduration -
2014-11-11 00:09:05 eventduration_hr -
2014-11-11 00:09:05 eventduration_next -
2014-11-11 00:09:05 eventduration_next_hr -
2014-11-11 00:09:05 eventname -
2014-11-11 00:09:05 eventname_next -
2014-11-11 00:09:05 eventremaining -
2014-11-11 00:09:05 eventremaining_hr -
2014-11-11 00:09:05 eventremaining_next -
2014-11-11 00:09:05 eventremaining_next_hr -
2014-11-11 00:09:05 eventstart -
2014-11-11 00:09:05 eventstart_hr -
2014-11-11 00:09:05 eventstart_next -
2014-11-11 00:09:05 eventstart_next_hr -
2014-11-11 00:09:05 eventtitle -
2014-11-11 00:09:05 eventtitle_next -
2014-11-08 21:07:07 fpversion 0
2014-11-09 12:00:52 imageversion Release 7.0.1 2014-07-17
2014-11-11 00:09:05 input -
2014-11-08 18:24:20 iswidescreen -
2014-11-08 21:07:07 lanmac 00:1d:ec:03:5f:16
2014-11-08 21:07:07 model ultimo
2014-11-11 20:33:31 mute off
2014-11-11 00:09:05 nextTitle -
2014-11-11 00:09:05 onid -
2014-11-11 00:09:05 pcrpid -
2014-11-11 00:09:05 pmtpid -
2014-11-11 20:31:59 power on
2014-11-11 20:31:59 presence present
2014-11-11 00:09:05 providername -
2014-11-08 18:26:51 recordings 0
2014-11-11 00:09:05 servicename -
2014-11-11 00:09:05 servicereference -
2014-11-11 00:09:05 servicevideosize -
2014-11-11 00:09:05 sid -
2014-11-11 20:33:32 snr
60
2014-11-11 20:33:32 snrdb
60
2014-11-11 20:31:59 state on
2014-11-11 00:09:05 tsid -
2014-11-08 21:07:07 tuner_a Vuplus DVB-C NIM(CXD1978) (DVB-C)
2014-11-08 21:07:07 tuner_b Vuplus DVB-C NIM(CXD1978) (DVB-C)
2014-11-11 00:09:05 txtpid -
2014-11-11 00:09:05 videoheight -
2014-11-11 00:09:05 videowidth -
2014-11-11 20:33:31 volume 100
2014-11-11 00:09:05 vpid -
2014-11-08 21:07:07 webifversion 1.7.5
Helper:
ADDRESS 192.168.188.24
AVAILABLE 1
PASSWORD 1tina9
PORT 0444
USER root
lastFullUpdate 1415734321.90127
lastInput
Bouquet:
Radio:
Bayern_3:
sRef 1:0:2:6EF2:44D:1:FFFF0152:0:0:0:
Tv:
13th_street:
sRef 1:0:1:2A:4:85:FFFF0000:0:0:0:
Das_erste_hd:
sRef 1:0:19:2B5C:41B:1:FFFF014A:0:0:0:
Das_vierte:
sRef 1:0:1:D168:2714:F001:FFFF0000:0:0:0:
Discovery_hd:
sRef 1:0:19:82:6:85:FFFF0000:0:0:0:
Disney_ch._hd:
sRef 1:0:19:C36F:2720:F001:FFFF0000:0:0:0:
Disney_junior:
sRef 1:0:1:1A:1:85:FFFF0000:0:0:0:
Disney_xd:
sRef 1:0:1:1C:1:85:FFFF0000:0:0:0:
Einsplus:
sRef 1:0:1:7033:41B:1:FFFF014A:0:0:0:
Einsfestival:
sRef 1:0:1:7032:41B:1:FFFF014A:0:0:0:
Fox_hd:
sRef 1:0:19:7C:6:85:FFFF0000:0:0:0:
Fox_serie:
sRef 1:0:1:10:1:85:FFFF0000:0:0:0:
Heimatkanal:
sRef 1:0:1:16:1:85:FFFF0000:0:0:0:
N24:
sRef 1:0:1:D17B:2718:F001:FFFF0000:0:0:0:
Natgeo_hd:
sRef 1:0:19:70:D:85:FFFF0000:0:0:0:
Nat_geo_wild_hd:
sRef 1:0:19:76:C:85:FFFF0000:0:0:0:
National_geographic:
sRef 1:0:1:D:4:85:FFFF0000:0:0:0:
Prosieben_hd:
sRef 1:0:19:C35F:271D:F001:FFFF0000:0:0:0:
Prosieben_maxx:
sRef 1:0:1:CF11:2721:F001:FFFF0000:0:0:0:
Rtl:
sRef 1:0:1:D161:2710:F001:FFFF0000:0:0:0:
Rtl_crime:
sRef 1:0:1:1B:4:85:FFFF0000:0:0:0:
Rtl_ii:
sRef 1:0:1:D163:2713:F001:FFFF0000:0:0:0:
Rtl_nitro:
sRef 1:0:1:CF76:2712:F001:FFFF0000:0:0:0:
Rtl_passion:
sRef 1:0:1:1D:4:85:FFFF0000:0:0:0:
Sat.1_gold:
sRef 1:0:1:D04C:2726:F001:FFFF0000:0:0:0:
Sat.1_hd:
sRef 1:0:19:C362:271F:F001:FFFF0000:0:0:0:
Super_rtl:
sRef 1:0:1:D162:2713:F001:FFFF0000:0:0:0:
Sky_action_hd:
sRef 1:0:19:74:D:85:FFFF0000:0:0:0:
Sky_krimi:
sRef 1:0:1:17:4:85:FFFF0000:0:0:0:
Spiegel_geschichte:
sRef 1:0:1:34:4:85:FFFF0000:0:0:0:
Syfy:
sRef 1:0:1:24:1:85:FFFF0000:0:0:0:
Tele_5:
sRef 1:0:1:CF0A:2718:F001:FFFF0000:0:0:0:
Tnt_serie_hd:
sRef 1:0:19:7B:6:85:FFFF0000:0:0:0:
Vox:
sRef 1:0:1:D164:2713:F001:FFFF0000:0:0:0:
Zdf_hd:
sRef 1:0:19:2B66:437:1:FFFF01C2:0:0:0:
Zdfinfo:
sRef 1:0:1:6D6B:437:1:FFFF01C2:0:0:0:
Arte_hd:
sRef 1:0:19:2B70:271E:F001:FFFF0000:0:0:0:
Kabel_eins_hd:
sRef 1:0:19:C359:271E:F001:FFFF0000:0:0:0:
N-tv:
sRef 1:0:1:D166:2713:F001:FFFF0000:0:0:0:
Sixx_hd:
sRef 1:0:19:C363:2716:F001:FFFF0000:0:0:0:
Zdf.kultur:
sRef 1:0:1:6D70:437:1:FFFF01C2:0:0:0:
Zdf_neo:
sRef 1:0:1:6D6E:437:1:FFFF01C2:0:0:0:
Channels:
radio:
BAYERN_3
tv:
ProSieben_HD
SAT.1_HD
RTL
kabel_eins_HD
13th_Street
VOX
Fox_HD
Fox_Serie
Das_Vierte
TNT_Serie_HD
RTL_II
SUPER_RTL
RTL_Crime
RTL_NITRO
RTL_Passion
SAT.1_Gold
Discovery_HD
sixx_HD
TELE_5
Syfy
arte_HD
Sky_Krimi
Sky_Action_HD
Disney_Junior
Disney_XD
Das_Erste_HD
ZDF_HD
Einsfestival
EinsPlus
Heimatkanal
n-tv
N24
Nat_Geo_Wild_HD
NatGeo_HD
National_Geographic
Spiegel_Geschichte
zdf.kultur
ZDFinfo
zdf_neo
ProSieben_MAXX
Disney_Ch._HD
Attributes:
bouquet-radio 1:7:2:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.radio" ORDER BY bouquet
bouquet-tv 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet
devStateIcon on:rc_GREEN:off off:rc_YELLOW:on absent:rc_STOP:on
http-method POST
https 1
icon dreambox
webCmd volume
und die rd
Internals:
DEF VU_Ultimo:channel,power,volume
NAME rg_VU_Ultimo
NR 199
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x8308d8)
Fhem:
lastDefChange 1
last_update 1415734230.83738
Attributes:
fp_Reciever 239,205,0,
webCmd volume => "volume:"
widgetOverride 1
Wird in der rd kein Slider angezeigt
Seltsam ist doch das der Slider im FHEMWEB in der rd angezeigt wird, wenn ich dann die rd aber auf dem Floorplan platziere alles angezeigt wird, ausser der slider!?
Hab jetzt noch mal das attribut wie oben gesetzt in der rd
{ volume => "volume:slider,0,1,100", channel => 'channel:'}
Dann wird der Slider nur auf dem FP nicht angezeigt, im rd schon.
Wenn ich dann im FP auf die "0" klicke (die wohl jetzt den Slider darstellen soll) kommt im Log diese Meldung:
2014.11.11 21:03:55.707 2: ENIGMA2 set VU_Ultimo volume NaN
WO kommt jetzt NaN her?
Hallo,
habe mal eine Frage:
Habe diese ReadingsGroup gebaut:
define rgSchalter readingsGroup <%light_outdoor>,<Halogenstrahler>,<%ein>,<%aus>,<%Timer>
attr rgSchalter commands {'rgSchalter.ein' => 'set EnO_switch_00000003 on', 'rgSchalter.aus' => 'set EnO_switch_00000003 off', 'rgSchalter.Timer' => 'set EnO_switch_00000003 on-for-timer 10'}
attr rgSchalter notime 1
Über die Buttons %ein %aus %Timer schalte ich mein EnOcean device. Ich kriege es aber nicht hin, diese Variablen so abzuändern:
%Ein, %Aus, %5 Minuten.
Bei %Aus macht er mir immer ein Lampensymbol und das Leerzeichen bei %5 Minuten frisst er nicht.
Kann man das ändern?
Christian
NACHTRAG: Das Leerzeichen bei %5 Minuten frisst er doch, nur das Lampensymbol bei Aus kriege ich nicht weg! Könnte man eine Beschreibung für die %-Variablen anzeigen lassen?
@Tommy82: der slider für das volume im webCmd attribut taucht in der raum ansicht beim device auf. das ist erst mal nur um zu prüfen ob der slider aktualisiert wird wenn das volume sich ändert.
es gibt noch ein problem mit dem floorplan der manche der kommandos nicht anzeigt. ich bin noch nicht dazu gekommen mir das anzuschauen.
am besten eins nach dem anderen:
- schauen das volume im der normalen raum ansicht im device mit update funktioniert
- dann die readingsGroup in der raum ansicht.
- dann der floorplan
@Spartacus: <%...> ist dazu da icons darzustellen. wenn du den text willst statt der icons must du das % weg lassen. lehrreichen an dieser stelle sind nicht erlaubt. du kannst z.b. dafür schreiben.
statt den device namen im commands mapping immer wieder hin zu schreiben kannst du auch $DEVICE verwenden.
gruss
andre
Hi andre,
wenn ich das % weglasse, kann ich die Texte aber nicht anklicken...
define rgSchalter readingsGroup EnO_switch_00000003:<%light_outdoor>,<Halogenstrahler>,<%ein>,<%aus>,<%5 Minuten>
attr rgSchalter commands {'rgSchalter.ein' => 'set $DEVICE on', 'rgSchalter.aus' => 'set $DEVICE off', 'rgSchalter.5 Minuten' => 'set $DEVICE on-for-timer 10'}
attr rgSchalter notime 1
"ein", "aus" und "5 Minuten" sind keine Readings vom Device! Da gibt es nur state mit "on" und "off". Ich baue damit nur eine Krücke um das nicht funktionierenden eventMap abzulösen! Funktioniert ja soweit auch ganz gut, nur "%Aus" bzw "Aus" klappt nicht! Dann kommt bei "%Aus" das Lampensymbol und nicht der Text als Link.
Spartacus
ok. verstanden.
das icon bei %Aus kommt weil du irgendwo ein icon Aus hast.
wenn du das Aus icon nicht brauchst entferne es aus deinem icon pfad oder also workaround kannst du auch ein dahinter hängen.
gruss
andre
Hi,
Danke Dir, habe keine Ahnung wo das Aus-Icon sein soll! das muss irgendwo per Default herkommen. Muss ich mal die Piktogramme alle durchgehen, da heisst bestimmt eines Aus.
Der Workaround ist aber auch OK. Nur finde ich es sehr uncool einen Workaround für einen Workaround anzuwenden 8)
Christian
Zitat von: justme1968 am 11 November 2014, 22:09:21
@Tommy82: der slider für das volume im webCmd attribut taucht in der raum ansicht beim device auf. das ist erst mal nur um zu prüfen ob der slider aktualisiert wird wenn das volume sich ändert.
es gibt noch ein problem mit dem floorplan der manche der kommandos nicht anzeigt. ich bin noch nicht dazu gekommen mir das anzuschauen.
am besten eins nach dem anderen:
- schauen das volume im der normalen raum ansicht im device mit update funktioniert
Im Device und in der normalen Raumansicht funktioniert das update, und der slider wird korrekt dargestellt.
Zitat- dann die readingsGroup in der raum ansicht.
in der readingsGroup wird im Raum der slider richtig dargestellt, aber nicht geupdatet
Zitat- dann der floorplan
Dort wird der Slider nicht dargestellt
Wenn das List des Devices so aussieht:
Internals:
CHANGED
DEF 192.168.188.24 444 90 root 1tina9
INTERVAL 90
NAME VU_Ultimo
NR 198
STATE absent
TYPE ENIGMA2
Readings:
2014-11-12 20:25:27 acg 0
2014-11-11 21:07:35 apid -
2014-11-12 20:25:27 ber 0
2014-11-11 21:07:35 channel -
2014-11-11 21:07:35 currentMedia -
2014-11-11 21:07:35 currentTitle -
2014-11-09 12:00:52 enigmaversion 2014-11-03-vti-master
2014-11-11 21:07:35 eventcurrenttime -
2014-11-11 21:07:35 eventcurrenttime_hr -
2014-11-11 21:07:35 eventcurrenttime_next -
2014-11-11 21:07:35 eventcurrenttime_next_hr -
2014-11-11 20:48:42 eventdescription -
2014-11-11 20:48:42 eventdescription_next -
2014-11-11 21:07:35 eventduration -
2014-11-11 21:07:35 eventduration_hr -
2014-11-11 21:07:35 eventduration_next -
2014-11-11 21:07:35 eventduration_next_hr -
2014-11-11 21:07:35 eventname -
2014-11-11 21:07:35 eventname_next -
2014-11-11 21:07:35 eventremaining -
2014-11-11 21:07:35 eventremaining_hr -
2014-11-11 21:07:35 eventremaining_next -
2014-11-11 21:07:35 eventremaining_next_hr -
2014-11-11 21:07:35 eventstart -
2014-11-11 21:07:35 eventstart_hr -
2014-11-11 21:07:35 eventstart_next -
2014-11-11 21:07:35 eventstart_next_hr -
2014-11-11 21:07:35 eventtitle -
2014-11-11 21:07:35 eventtitle_next -
2014-11-08 21:07:07 fpversion 0
2014-11-09 12:00:52 imageversion Release 7.0.1 2014-07-17
2014-11-11 21:07:35 input -
2014-11-08 18:24:20 iswidescreen -
2014-11-08 21:07:07 lanmac 00:1d:ec:03:5f:16
2014-11-08 21:07:07 model ultimo
2014-11-12 20:25:27 mute -
2014-11-11 21:07:35 nextTitle -
2014-11-11 21:07:35 onid -
2014-11-11 21:07:35 pcrpid -
2014-11-11 21:07:35 pmtpid -
2014-11-12 20:25:27 power off
2014-11-12 20:43:49 presence absent
2014-11-11 21:07:35 providername -
2014-11-08 18:26:51 recordings 0
2014-11-11 21:07:35 servicename -
2014-11-11 21:07:35 servicereference -
2014-11-11 21:07:35 servicevideosize -
2014-11-11 21:07:35 sid -
2014-11-12 20:25:27 snr 0
2014-11-12 20:25:27 snrdb 0
2014-11-12 20:25:27 state absent
2014-11-11 21:07:35 tsid -
2014-11-08 21:07:07 tuner_a Vuplus DVB-C NIM(CXD1978) (DVB-C)
2014-11-08 21:07:07 tuner_b Vuplus DVB-C NIM(CXD1978) (DVB-C)
2014-11-11 21:07:35 txtpid -
2014-11-11 21:07:35 videoheight -
2014-11-11 21:07:35 videowidth -
2014-11-12 20:25:27 volume -
2014-11-11 21:07:35 vpid -
2014-11-08 21:07:07 webifversion 1.7.5
Helper:
ADDRESS 192.168.188.24
AVAILABLE 0
PASSWORD xyz
PORT 444
USER root
lastInput
Attributes:
bouquet-radio 1:7:2:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.radio" ORDER BY bouquet
bouquet-tv 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet
devStateIcon on:rc_GREEN:off off:rc_YELLOW:on absent:rc_STOP:on
http-method POST
https 1
icon dreambox
webCmd channel:input
Das list der readingsGroup sieht dann so aus:
Internals:
DEF VU_Ultimo:channel,power,volume
NAME rg_VU_Ultimo
NR 199
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x844a40)
Fhem:
lastDefChange 1
last_update 1415821419.25639
Attributes:
commands { volume => "volume:slider,0,1,100", channel => 'channel:'}
fp_Reciever 239,205,0,
valueIcon { state => '%devStateIcon', 'power.on' => "on", 'power.off' => "Off" }
widgetOverride 1
Interessant ist auch das ich durch zufall festgestellt habe das der slider auf dem floorplan auf meinem iphone (Safari) dargestellt wird, habs dann nochmal am PC mit meinem Standartbrowser (Opera) versucht, kein slider, hab dann Firefox genommen, kein Slider, hab dann mal Safari auf dem PC installiert, und der slider ist wieder da.
Sieht doch dann eher nach einem Browser problem aus oder?
Habs dann trotzdem noch mal wie hier von dir beschrieben versucht
[quote author=justme1968 link=topic=14425.msg217663#msg217663 date=1415654720]
zum einen musst du beide attribute auf das original device setzen und zum anderen so:
attr VU_Ultimo widgetOverride volume:slider,0,1,100
attr VU_Ultimo webCmd volume
widgetOverride aber nur wenn volume im enigma modul kein slider ist.
[/quote]
Also hab ich im device nur das Attribut
Zitatattr VU_Ultimo webCmd volume
gesetzt, da der Slider im enigma2 Modul bei Volumen gesetzt ist, so das webcmd im Device so aussieht
webCmd channel:input:volume
In der rd hab ich nichts zu oben stehendem list geändert
Allerdings wird in der rd der Wert des Volumen Sliders trotzdem nicht aktualisiert
Der on/off Button funktioniert und wird auch aktualisiert, einzig der Slider wird nicht aktualisiert bzw. auf dem FP nicht angezeigt (ausser in Safari)
Hi,
ich habe hier folgende Definition einer readingsGroup, die ich der Einfachheithalber gekürzt habe, aber letztendlich von den Vorgaben von Igami, hier stammt http://forum.fhem.de/index.php/topic,26479.msg214965.html#msg214965 (http://forum.fhem.de/index.php/topic,26479.msg214965.html#msg214965)
define rg_heizungswerte3 readingsGroup <%sani_heating>,< >,Heizung@d_Label ht_(.*|):battery,impossible@{$DEVICE},alias
attr rg_heizungswerte3 valueColumns { 'Heizung' => 'colspan="2"' , 'alias' => 'colspan="2"' }
attr rg_heizungswerte3 room Heizungswerte
attr rg_heizungswerte3 nonames 1
Ich hätte jetzt erwartet, dass ich folgende Anzeige ähnlich der von Igami erhalte, siehe Screenshot 1. Stattdessen erhalte ich die Anzeige von Screenshot 2 - nämlich gar nichts :-\
Das mit dem d_Label ist auch unter dem oben stehenden Link beschrieben bzw. in Verwendung. Igami hat dies so erklärt, dass wenn dies nicht mit einem Dummy Device gemacht wird, auch kein colspan funktioniert.
Mir drängt sich schön langsam der Gedanke auf, dass ich eine andere Version der readingsGroup verwende als Igami. Ich wollte das Problem trotzdem hier reinstellen, da ich das mit der Version nicht bestätigen kann.
Der Vollständigkeithalber nocht die Definition von d_Label:
ZitatInternals:
NAME d_Label
NR 399
STATE Sonntag Sonntag
TYPE dummy
Readings:
2014-11-12 23:34:20 Dienstag Dienstag
2014-11-12 23:34:20 Donnerstag Donnerstag
2014-11-12 23:34:20 Freitag Freitag
2014-11-12 23:34:20 Heizung Heizung
2014-11-12 23:34:20 Mittwoch Mittwoch
2014-11-12 23:34:20 Montag Montag
2014-11-12 23:34:20 Samstag Samstag
2014-11-12 23:34:20 Sonntag Sonntag
2014-11-12 23:34:20 Status Status
2014-11-12 23:34:20 Temperatur Temperatur
2014-11-12 23:34:20 state Sonntag Sonntag
Attributes:
Ach ja, wenn ich hingehend <Heizung> verwende, dann funktionierts. Es muss also einen kleinen aber feinen Unterschied zwischen meiner readingsGroup (-Version) und der von Igami.
Kann hier bitte jemand Mal drüber schauen mit mehr Erfahrung als ich?
Danke,
Michael
Edit: ich denke hier http://forum.fhem.de/index.php/topic,14425.msg212733.html#msg212733 (http://forum.fhem.de/index.php/topic,14425.msg212733.html#msg212733) steht die Antwort zu meinem Problem, oder? Aber wo kann man jetzt genau die Beta Version ziehen?
Versuch es mal mit
define rg_heizungswerte3 readingsGroup d_Label:<%sani_heating>,< >,Heizung ht_.*:battery,?alias
attr rg_heizungswerte3 valueColumns { 'Heizung' => 'colspan="2"' , 'alias' => 'colspan="2"' }
attr rg_heizungswerte3 room Heizungswerte
attr rg_heizungswerte3 nonames 1
Güße
Igami
Igami,
Retter in der Not ;D Ich wollte eigentlich nicht dich wieder belästigen mit diesem Problem, da ich dachte, dass es ein generelles RG Problem ist. Mittlerweile hat sich rausgestellt, dass ich einen Teil deines Subs makefine() noch nicht ganz zum Laufen gebracht habe. Es war der Teil
#alias als Reading hinzufügen
my @climas = split('\n', fhem('LIST (CUL_HM_|)HM_CC_RT_DN_(......|..........)_Clima'));
foreach my $clima (@climas){
my $alias = AttrVal($clima,'alias',$clima);
fhem("setreading $clima alias $alias")
}
den ich zwar umbauen musste, aber letztendlich habe ich jetzt dort wo der alias stehen soll auch einen Ausgabe.
Danke trotzdem für dein Eingreifen in diesem Thread.
Grüße,
Michael
Wir sehen uns dann wieder in deinem Beitrag ::)
Den Teil gibt es bei mir schon gar nicht mehr. Attribute kann man in der readingsgroup mit einem vorgestellem ? auslesen, das wusste ich nur zu dem Zeitpunkt noch nicht.
Was könnte mein aktualiserung der rd noch verhindern?
Guten Morgen Andre,
ich versuche zur Zeit ähnlich wie Tommy82 einen Slider in der rG anzuzeigen.
Leider gelingt mir das nicht, weitere Informationen als die letzten drei Seiten hier im Thread finde ich nicht.
Weder in der CommandRef noch im Wiki.
Vielleicht kannst du mal eine Beispiel Konfiguration anhand eines Dummys zeigen.
In meinem Fall soll eh ein Dummy den eingestellten wert an meine 99_AudioUtils weiterreichen und hier an das entsprechende Device oder die Device Gruppe weitergeleitet werden.
Ich fand gerade das hier:
Zitat von: justme1968 am 10 September 2014, 09:18:15
@Hoschiq:
du musst hier tatsächlich zwischen dummys und 'echten' devices unterscheiden.
ein echtes device hat normalerweise ein zum reading passendes set kommando und dieses soll ausgeführt werden. der dummy hat dieses passende set kommando nicht deshalb landet der komplette string in state. das verhalten ist also erst mal korrekt. setreading wäre für die normalen devices verkehrt.
nur wenn es sich wirklich um einen dummy handelt (oder eventuell auch für devices die kein passendes set anbieten) ist setreading das richtige. ersteres sollte meiner meinung nach passieren, zu letzterem hat rudi sicher was zu sagen.
gruss
andre
Hier half nun, ein setreading volume volume 22 brachte mir einen Slider in die Ansicht.
btw: nun könnte ich doch endlich dreierlei Slider im Licht & Farbe Tab einbauen um den Hues Farbe Sättigung und Helligkeit zu geben, oder?
Ich habe mal auf die Schnelle ein (nicht aufgehübschtes) RGB-Beispiel zusammengeklickt:
Ein Dummy:
define rgbdummy dummy
attr rgbdummy setlist hue:slider,0,1,100 color:slider,0,1,255 sat:slider,0,1,100
Ein notify für die readings im dummy:
define rgbdummy.not rgbdummy:.* setreading rgbdummy $EVENT
und noch die readingsgroup:
define rgb readingsgroup rgbdummy:hue rgbdummy:color rgbdummy:sat
attr rgb commands { hue => 'hue:', color => 'color:', sat => 'sat:'}
Damit die readingsgroup etwas anzeigt, müssen die Werte einmalig im Dummy gesetzt werde -> damit werden dann die Readings angelegt...
Ronny
es gibt hier: http://forum.fhem.de/index.php/topic,29110.msg219025.html#msg219025 (http://forum.fhem.de/index.php/topic,29110.msg219025.html#msg219025) eine test version für readingsGroup bei der man mit ! vor einem reading namen erzwingen kann das ein reading auch dann dargestellt wird wenn es (noch) nicht vorhanden ist.
das hilft z.b. in allen fällen in denen dummys im spiel sind.
es ist damit auch möglich statt <abc> !abc zu schreiben um einen reinen text zu bekommen. im gegensatz zur <...> variante kann man diesen text aber dann auch per commands, valueStyle, valueFormat, valueColumns, ... formatieren. d.h. anklickbar oder über mehrere spalten gehen lassen. der   (oder dummy) workaround for texte mit leerzeichen sind auch nicht mehr nötig da man das abc einfach per 'abc' => 'A B C' value format ändern kann.
das funktioniert auch in verbindung mit der reading@device variante und in verbindung mit + und ? für internals und attribute.
gruss
andre
die probleme mit dem longpoll update muss ich mir in ruhe anschauen. das mit dem floorplan auch.
gruss
andre
Zitat von: justme1968 am 11 November 2014, 22:09:21
@Tommy82: der slider für das volume im webCmd attribut taucht in der raum ansicht beim device auf. das ist erst mal nur um zu prüfen ob der slider aktualisiert wird wenn das volume sich ändert.
es gibt noch ein problem mit dem floorplan der manche der kommandos nicht anzeigt. ich bin noch nicht dazu gekommen mir das anzuschauen.
am besten eins nach dem anderen:
- schauen das volume im der normalen raum ansicht im device mit update funktioniert
- dann die readingsGroup in der raum ansicht.
- dann der floorplan
gruss
andre
Hallo Andre,
in der detail Ansicht des Devices wird das Volumen aktualisiert, also klappt es ja vom grundsatz her.
In der Raumübersicht der enigma Devices wird auch eine Volumen Slider angezeigt, dieser wird allerdings nicht aktualiesiert.
in der ReadingsgRoup wird der Volumen Slider auch nicht aktualisiert
Was kann ich probieren?
ich bin dran.
gruss
andre
Hi, also der Slider wird jetzt zumindest auf meinem FP angezeigt, in meiner css war eine { zuwenig.
Allerdings wird der State nicht aktualisiert, Status wird immer auf 0 gesetzt
Kann ich in der Anzeige der rd auch einen Zeilenumbruch machen? Hätte den Slider gerne in der nächsten Zeile
Hi,
ist es möglich die Eingabefelder einer readingsGroup auch anzupassen?
Erstens in Bezug auf die Schriftgröße und zweitens die Eingabefelder in eine Richtung, in meinem Fall nach oben bis zum roten Strich, zu verschieben, siehe Screenshot?
Gruß,
Michael
Hallo,
ich bastle auch gerade wieder an der Visualisierung!
Ich habe zwei readingGroups in eine Gruppe gepackt und möchte das jetzt ausrichten.
Das Beste wäre, wenn die Icons untereinander stehen. Wie kann man das erreichen?
Christian
Warum packst du das nicht in eine readingsGroup?
Zitat von: igami am 16 November 2014, 15:55:47
Warum packst du das nicht in eine readingsGroup?
Hi,
das wird m.E. zu unübersichtlich mit den verlinkten commands! habe es aber noch nicht versucht.
Hier mal der Code...
# Gartenbeleuchtung manuell schalten, 60 min-Timer
#
define rg.01.GA.ss.SA.Licht readingsGroup GA.ss.SA.Licht:<%light_outdoor>,<Gartenlicht>,state,!Ein,!Aus,!60Minuten
attr rg.01.GA.ss.SA.Licht alias Gartenlicht
attr rg.01.GA.ss.SA.Licht commands {'Ein' => 'set $DEVICE on', 'Aus' => 'set $DEVICE off', '60Minuten' => 'set $DEVICE on-for-timer 3600'}
attr rg.01.GA.ss.SA.Licht group Beleuchtung
attr rg.01.GA.ss.SA.Licht notime 1
attr rg.01.GA.ss.SA.Licht room 05-Garten
attr rg.01.GA.ss.SA.Licht style style="border:0px;;background:none;;box-shadow:none"
attr rg.01.GA.ss.SA.Licht valueFormat { '60Minuten' => '60 Minuten' }
attr rg.01.GA.ss.SA.Licht valueIcon { state => '%devStateIcon' }
# Gartenbeleuchtung manuell schalten, 60 min-Timer
#
# Halogenstrahler
#
define rg.01.GH.ss.SA.Strahler readingsGroup GH.ss.SA.Strahler:<%light_outdoor>,<Strahler>,state,!Ein,!Aus,!10Minuten
attr rg.01.GH.ss.SA.Strahler alias Halogenstrahler
attr rg.01.GH.ss.SA.Strahler commands {'Ein' => 'set $DEVICE on', 'Aus' => 'set $DEVICE off', '10Minuten' => 'set $DEVICE on-for-timer 600'}
attr rg.01.GH.ss.SA.Strahler group Beleuchtung
attr rg.01.GH.ss.SA.Strahler notime 1
attr rg.01.GH.ss.SA.Strahler room 05-Garten
attr rg.01.GH.ss.SA.Strahler style style="border:0px;;background:none;;box-shadow:none"
attr rg.01.GH.ss.SA.Strahler valueFormat { '10Minuten' => '10 Minuten' }
attr rg.01.GH.ss.SA.Strahler valueIcon { state => '%devStateIcon' }
Spartacus
P.S.
Ich nutze die Testversion der ReadingsGroup um !Ein und !Aus als Link für die Commands zu verwenden....aber wenn es nicht anders geht, muss ich das wohl machen!
die spalten- und gesamtbreiten der readingsGroups sind werden vom browser automatisch abhängig vom inhalt bestimmt und sind bei unterschiedlichen readingsGroups unabhängig voneinander so lange du keine vorgaben machst.
gruß
andre
Zitat von: justme1968 am 16 November 2014, 16:55:58
die spalten- und gesamtbreiten der readingsGroups sind werden vom browser automatisch abhängig vom inhalt bestimmt und sind bei unterschiedlichen readingsGroups unabhängig voneinander so lange du keine vorgaben machst.
gruß
andre
Hi andre,
bedeutet dass, dass ich das im stylesheet (wie im wiki unter styling beschrieben) in Spalten aufteilen muss? Oder was genau meinst Du mit ".....so lange du keine vorgaben machst. "
Christian.
das bedeutet das du die spalten und/oder die gesamt breite per style setzen musst.
gruss
andre
Hm!
sorry, aber kannst Du mir nen kleinen Tipp geben, wo ich die Befehle für Spaltenbreite /Weite finden kann? Gibt es da irgendeine Übersicht?
Bin damit noch überfordert! :-[
sorry!
Christian
P.S. Habe es jetzt doch in eine Gruppe gebaut. Ist doch einfacher für mich!
Hallo,
eines habe ich noch nicht hingekriegt....
Die Hintergrundfarbe und die Zeilenhöhe. Wie passe ich das mit style an. Kann ich das zeilenweise ändern, oder ist dann jede Zeile gleich hoch!
Hintergrund:
die Zeilen mit Icons sind höher als die mit Text. Das sieht in einer Gruppe dann etwas unglücklich aus.......
die Farben der Zeilen wechsel zwischen hellgrau und schwarz. Um es optisch abzusetzen, würde ich gerne
mehrere Zeilen gleich einfärben.
Danke,
Christian
die breite kannst du z.b. über die width/min-width/max-width eigenschaft festlegen.
mehr zu readingsGroup und css findest du hier: http://www.fhemwiki.de/wiki/ReadingsGroup#readingsGroup_Styling_mit_CSS (http://www.fhemwiki.de/wiki/ReadingsGroup#readingsGroup_Styling_mit_CSS)
mehr zu css findest du z.b. hier: http://de.selfhtml.org/css/ (http://de.selfhtml.org/css/)
zum zeilen einfärben nimm am besten die test version von hier: http://forum.fhem.de/index.php/topic,29110.0.html (http://forum.fhem.de/index.php/topic,29110.0.html) und das cellStyle attribut.
gruss
andre
Hallo!
Ich möchte die Werte meiner WS0002 Sensoren mittels readingsGroup auf meinem Floorplan darstellen.
Allerdings bekomme ich eine Fehlermeldung beim Start von FHEM, wenn ich mittels valueFormat für die Temperatur °C und für Luftfeuchte % anzeigen lassen möchte.
2014.11.18 17:56:25 1: PERL WARNING: Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 612.
2014.11.18 17:56:25 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/33_readingsGroup.pm line 612.
Steckt da ein Fehler in meiner attr Zeile?
attr WS0002 valueFormat { "temperature" => "%.1f°C", "humidity" => "%.0f%" }
Hmpf... ein Blick ins Wiki hätte auch geholfen... :-\
Es fehlt noch ein 2tes "%"...
Hat sich somit erledigt.
Hallo,
ich kriege das irgendwie nicht sauber formatiert:
# Heizung manuell schalten, 60 min-Timer
#
define rg.01.GH.ss.SA.Heizung readingsGroup GH.ss.SA.Heizung:<%light_outdoor>,<Heizung>,state,!Ein,!Aus,!60Minuten
attr rg.01.GH.ss.SA.Heizung alias Heizung schalten
attr rg.01.GH.ss.SA.Heizung cellStyle {'c:2' => 'style="text-align:left"','c:4' => 'style="text-align:right"','c:5' => 'style="text-align:right"','c:6' => 'style="text-align:right"'}
attr rg.01.GH.ss.SA.Heizung commands {'Ein' => 'set $DEVICE on', 'Aus' => 'set $DEVICE off', '60Minuten' => 'set $DEVICE on-for-timer 3600'}
attr rg.01.GH.ss.SA.Heizung notime 1
attr rg.01.GH.ss.SA.Heizung room 05-Gartenhaus
attr rg.01.GH.ss.SA.Heizung style style="width:820px"
attr rg.01.GH.ss.SA.Heizung valueFormat { '60Minuten' => '60 Minuten' }
attr rg.01.GH.ss.SA.Heizung valueIcon { state => '%devStateIcon' }
#
# Ventilator manuell schalten, 60 min-Timer
#
define rg.01.GH.ss.SA.Ventilator readingsGroup GH.ss.SA.Ventilator:<%light_outdoor>,<Ventilator>,state,!Ein,!Aus,!60Minuten
attr rg.01.GH.ss.SA.Ventilator alias Ventilator schalten
attr rg.01.GH.ss.SA.Ventilator cellStyle {'c:2' => 'style="text-align:left"','c:4' => 'style="text-align:right"','c:5' => 'style="text-align:right"','c:6' => 'style="text-align:right"'}
attr rg.01.GH.ss.SA.Ventilator commands {'Ein' => 'set $DEVICE on', 'Aus' => 'set $DEVICE off', '60Minuten' => 'set $DEVICE on-for-timer 3600'}
attr rg.01.GH.ss.SA.Ventilator notime 1
attr rg.01.GH.ss.SA.Ventilator room 05-Gartenhaus
attr rg.01.GH.ss.SA.Ventilator style style="width:820px"
attr rg.01.GH.ss.SA.Ventilator valueFormat { '60Minuten' => '60 Minuten' }
attr rg.01.GH.ss.SA.Ventilator valueIcon { state => '%devStateIcon' }
Spalte 4 wrd nicht rechtsbündig ausgerichtet! Was mache ich da noch falsch? Alles scheint an dem Status-Symbol zu liegen. Die beiden Devices möchte ich nicht in einer Gruppe haben, da es unterschiedliche Funktionen sind...man könnte es auch nach links ausrichten, geht aber auch nicht!
Spartacus
Zitat von: Tommy82 am 16 November 2014, 14:50:41
Hi, also der Slider wird jetzt zumindest auf meinem FP angezeigt, in meiner css war eine { zuwenig.
Allerdings wird der State nicht aktualisiert, Status wird immer auf 0 gesetzt
Kann ich in der Anzeige der rd auch einen Zeilenumbruch machen? Hätte den Slider gerne in der nächsten Zeile
Hi Andre, bist du schon weitergekommen mir dem aktualisiseren? bzw. kann ich da irgendwie helfen?
Kann ich einen Zeilenumbruch einbauen, so das der Slider in der nächsten Zeile angezeigt wird?
Danke
@Spartacus: dein problem ist das sich deine attribute auf den unterschiedlichen ebenen gegenseitig überschreiben und dann z.b. die breite genau für die elemente für die die cellStyle angibst nicht gesetzt ist. fang damit an cellStyle und style beide weg zu machen und dann nur die breite für die spalte mit dem device namen zu setzen. das ist die einzige spalte die sich unterscheidet. also nur {'c:2' => 'style="width:60px"'}. danach sollte alle andere automatisch passen.
@Tommy82: ich hatte noch keine zeit es mir genauer anzuschauen.
eine zeilenumbruch bekommst du mit einem <br>
gruss
andre
Hi andre,
hätte schwören können, dass ich das schon ausprobiert hatte! Aber es geht jetzt! Ich habe es entsprechend formatieren können!
Danke für die Hilfe,
Christian.
Zitat von: justme1968 am 19 November 2014, 00:16:09
@Tommy82:
eine zeilenumbruch bekommst du mit einem <br>
gruss
andre
Wo muss ich das <br> setzen?
Hallo,
ich habe einen RT DN und würde mir gerne folgendes bauen.
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist> CUL_HM_HM_CC_RT_DN_26EFBD:actuator,desired-temp,measured-temp,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired-temp>,desired-new,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired-temp>,window,battery
Jetzt kommt die Window Meldung aber auf dem Window Kanal. Lässt sich das irgendwie einbauen?
Viele Grüße
einfach den device namen mit @ an den reding namen anhängen.
du kannst auch den channel namen automatisch aus dem device namen ableiten: http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices (http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices)
gruss
andre
@Tommy82:
ZitatWo muss ich das <br> setzen?
da da wo der zeielnumbruch hin soll:
...,reading3,<br>,reading4,..
oder du trennst es mit einem leerzeichen auf:
device:reading1,reading2 device:reading3,reading4
Zitat von: justme1968 am 19 November 2014, 22:47:09
@Tommy82:
da da wo der zeielnumbruch hin soll:...,reading3,<br>,reading4,..
oder du trennst es mit einem leerzeichen auf:device:reading1,reading2 device:reading3,reading4
Perfekt, vielen Danke. Wenn du jetzt noch die aktualisierung des Sliders hinbekommst, dann klappt erstmal alles:-)
Danke
Hi,
ich wollte jetzt eine rd für mein HM_dc_rt-dn anlegen, und die Temperatur über einen slider regeln.
Ich will die Temp in 0,5 er Schritten ändern.
Allerdings gehts nur in 1.0er schritten, kann ich das ändern?
Internals:
DEF Gaeste_WC_Clima:desired-temp,measured-temp Heizung_Flur_Clima:desired-temp,measured-temp Heizung_Tuer_ClimRT_tr:desired-temp,measured-temp Kueche_Clima:desired-temp,measured-temp
HeizungFenster_Clima:desired-temp,measured-temp
NAME rd_Heizungs_Slider
NR 222
NTFY_ORDER 50-rd_Heizungs_Slider
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
Heizung_Flur_Clima 1
Heizung_Tuer_ClimRT_tr 1
Kueche_Clima 1
Content2:
DEVICES:
ARRAY(0x1536970)
ARRAY(0x153ad30)
ARRAY(0x14bcda0)
ARRAY(0x14bfbb0)
Fhem:
lastDefChange 3
last_update 1416600429.24046
Attributes:
commands { 'desired-temp' => 'controlManu:slider,5,0.5,30' }
style style="font-size:20px;color:lightgray"
Wie kann ich eine überschrift "Eingestellte Temperatur" und Gemessene Temperatur drüber setzen?
Kann man den Slider auch verlängern?
Danke
wenn du einen slider mit mit fliekkomma zahlen möchtest musst du an die definition noch ein ,1 anhängen. siehe commandref.
du kannst eine überschrift nur über ganze spalten setzen.
gruss
andre
Zitat von: justme1968 am 21 November 2014, 21:32:10
wenn du einen slider mit mit fliekkomma zahlen möchtest musst du an die definition noch ein ,1 anhängen. siehe commandref.
du kannst eine überschrift nur über ganze spalten setzen.
gruss
andre
Hallo Andre,
irgendwie find ich in der commandref nicht was du meinst....
Bin ansonsten ein Stückweiter und hab die Überschriften hinbekommen,
hab allerdings noch das Problem das ich zum einen die Bezeichnung nicht linksbündig bekomme und zum anderen das der Slider den Ist Wert anzeigt und nicht den Eingestellten Soll wert.
Wie kann ich das noch hinbekommen?
Danke
such einfach in der commandref nach slider:
Zitatif the modifier is of the form ":slider,<min>,<step>,<max>[,1]", then a javascript driven slider is displayed. The optional ,1 at the end avoids the rounding of floating-point numbers.
style="text-align:left;" hilft nicht ?
zum desired problem kann ich nicht wirklich etwas sagen. ich habe keine hm thermostate.
gruss
andre
Super, danke.
Nur wie stell ich beim slider jetzt noch die Soll Temperatur ein? Zeigt immer noch die Ist Temperatur im slider
Wie kommst du drauf, dass die Ist-Temperatur angezeigt wird, da stehen doch teilweise verschiedene Werte bei Ist- und Soll-Temperatur in deinem Screenshot? Kannst du mal deinen Code für die ReadingsGroup posten?
Hi,
wie ist es möglich Icons auszurichten?
Wenn ich mir nur den Text des Readigns anzeigen lasse ist es mittig ausgerichtet und geht ggf. über zwei Spalten. Wird es auf ein Icon gemappt ist es links ausgerichtet und spricht auch nicht mehr auf valueColumns an.
Zuerst habe ich vermutet, dass ich den Namen des Icon eintragen muss, jedoch wird es bei mir im else Teil behandelt.
attr rg_09_2 valueStyle
{($READING eq "alias"
||$READING eq "Start"
||$READING eq "Hysterese"
||$READING eq "Modus"
||$READING eq "Status"
)?'style="font-size:20px;;color:RoyalBlue;;text-align:center"'
:($READING eq "hysteresis"
)?'style="font-size:16px;;text-align:right"'
:'style="font-size:16px;;text-align:center"'}
Grüße
Igami
Zitat von: RoBra81 am 22 November 2014, 00:23:29
Wie kommst du drauf, dass die Ist-Temperatur angezeigt wird, da stehen doch teilweise verschiedene Werte bei Ist- und Soll-Temperatur in deinem Screenshot? Kannst du mal deinen Code für die ReadingsGroup posten?
Wieso es da im Screenshot Differenzen gibt versteh ich auch nicht, um aktuelle Screen ist es wieder identisch, da werden soll Temperaturen angezeigt
Hier der Code
Internals:
DEF <Gerät>,<Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp Heizung_Flur_Clima:desired-temp,measured-temp
Kueche_Clima:desired-temp,measured-temp
Heizung_Tuer_ClimRT_tr:desired-temp,measured-temp
HeizungFenster_Clima:desired-temp,measured-temp
NAME rd_Heizungs_Slider
NR 222
NTFY_ORDER 50-rd_Heizungs_Slider
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
HeizungFenster_Clima 1
Heizung_Flur_Clima 1
Heizung_Tuer_ClimRT_tr 1
Kueche_Clima 1
Content2:
DEVICES:
ARRAY(0x131a4e8)
ARRAY(0x131a488)
ARRAY(0x131a4b8)
ARRAY(0x131a4c8)
ARRAY(0x14dbb70)
ARRAY(0x14dbbb0)
Fhem:
lastDefChange 1
last_update 1416607661.31152
Attributes:
commands { 'desired-temp' => 'controlManu:slider,5,0.5,30,1' }
fp_Heizung 215,207,0,
mapping {'Gaeste_WC_Clima' => 'Gäste WC', 'Heizung_Flur_Clima' => 'Heizung Flur', 'Heizung_Tuer_ClimRT_tr' => 'Heizung Wohnzimmer Tür', 'Kueche_Clima' => 'Küche', 'HeizungFenster_Clima' => 'Heizung Wohnzimmer Fenster'}
nameStyle style="color:yellow;font-weight:bold"
style style="font-size:20px;color:lightgray;text-align:left"
Heute Morgen fällt mir aber noch ein neues Problem auf, wenn ich normalerweise im device die soll Temperaturen ändere werden diese zu vorgegebenen Zeit wieder von meiner Templist überschrieben, wenn ich sie in der rd über den Slider ändere Belieben sie bestehen. Was so nicht sein soll, nach dem manuellen setzen der Soll Temperaturen sollen dann anschließend wieder die normalen Templist greifen!
Was könnte da noch falsch sein?
Zitat von: Tommy82 am 22 November 2014, 08:22:42
Hier der Code
[...]
Was könnte da noch falsch sein?
Du solltest dein commands Attribut noch mal überdenken
Grüße
Igami
@igami: du kannst für ein icon nicht style=text-align verwenden... du kannst aber das icon alignment in das passenden valueColumns attribut mit einbauen.
attr <device> valueColumns { <reading> => 'colspan="3" align="center"' }
gruss
andre
Zitat von: justme1968 am 22 November 2014, 10:33:40du kannst für ein icon nicht style=text-align verwenden... du kannst aber das icon alignment in das passenden valueColumns attribut mit einbauen.
Irgendwie nachvollziehbar, ist ja kein Text mehr...
Habe es nun zu
attr rg_09_2 valueColumns
{'alias' => 'colspan="3"'
, 'Hysterese' => 'colspan="2"'
, 'Status' => 'colspan="2"'
, 'state' => 'colspan="2" align="center"'
}
geändert. Jedoch wird bei state (das Waschmaschinen Icon unten rechts) weder colspan noch align angenommen. Auch wenn ich statt state scene_washing_machine in Kombinationen mit % oder @red @green nehme funktioniert es nicht.
Das sind alles Formatierungen wie ich sie in Dokumentationen über css nachlesen kann? Das Thema steht nämlich auch noch auf meinem Zettel :)
Grüße
Igami
schau mal ins log und den html debugger ob du irgendwelche meldungen siehst. da kannst du auch schauen ob ob er die attribute eingebaut hat. verwendest du die aktuelle version von readinvsGroup oder sie fest version aus dem anderen thread? die ist erst ab morgen per update verdügbar. es kann sein das es erst mit dieser version geht. ich erinnere mich gerade nicht.
steht alles in der html/css doku. selfhtml ist eine mögliche seite wo du mehr findest.
gruss
andre
Zitat von: igami am 22 November 2014, 08:28:41
Du solltest dein commands Attribut noch mal überdenken
Grüße
Igami
Danke für den Wink mim Zaunpfahl, jetzt klappts
@Andre,
in diesem Fall wird der Slider auch sauber aktualisiert auf dem Floorplan, also scheint es so als ob es eher am enigma2 Modul liegt das er nicht aktualisiert wird!?
ich wüsste jetzt zwar nicht wie das passieren kann... das schaue ich mir auf jeden fall noch an.
Ja, wäre super wenn du dir das bei gelegenheit mal angucken könntest, aber wie gesagt, beim Heizungsslider funktioniert es problemlos.
Wollte jetzt beim enigma2 noch das on, off icon je Status ändern, allerdings bekomme ich das icon welche ich gerne höätte nicht angezeigt.
Was hab ich noch falsch gemacht?
Danke
Internals:
DEF VU_Ultimo:channel,power,<br>,volume
NAME rg_VU_Ultimo
NR 198
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x1465d58)
Fhem:
lastDefChange 1
last_update 1416690412.05728
Attributes:
commands { volume => "volume:slider,0,1,100", channel => 'channel:', 'power.on' => 'set $DEVICE off', 'power.off' => 'set $DEVICE on' }
fp_Reciever 245,264,5,
valueIcon { state => '%devStateIcon', 'on' => "on:dreambox@green", 'off' => "off" }
widgetOverride 1
du hast den reading namen nicht angegeben:
valueIcon { state => '%devStateIcon', 'power.on' => 'dreambox@green', 'power.off' => 'off' }
gruss
andre
Hi Andre,
ändert sich in der rd leider nichts.
Internals:
DEF VU_Ultimo:channel,power,<br>,volume
NAME rg_VU_Ultimo
NR 198
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x1466d08)
Fhem:
lastDefChange 1
last_update 1416752950.53511
Attributes:
commands { volume => "volume:slider,0,1,100", channel => 'channel:', 'power.on' => 'set $DEVICE off', 'power.off' => 'set $DEVICE on' }
fp_Reciever 245,264,5,
valueIcon { state => '%devStateIcon', 'power.on' => "dreambox@green", 'power.off' => "off" }
widgetOverride 1
Das List des enigma2 modules sieht so aus:
Internals:
DEF 192.168.188.24 444 90 root 1tina9
INTERVAL 90
NAME VU_Ultimo
NR 197
STATE on
TYPE ENIGMA2
model ultimo
Readings:
2014-11-23 15:33:35 acg
68
2014-11-23 15:30:44 apid 256
2014-11-23 15:33:35 ber
1096449641
2014-11-23 15:30:44 channel Sky_Bundesliga_2
2014-11-23 15:30:44 currentMedia 1:0:D3:106:2:85:FFFF0000:0:0:0:
2014-11-23 15:30:44 currentTitle Live BL: Hamburger SV - Werder Bremen, 12. Spieltag
2014-11-09 12:00:52 enigmaversion 2014-11-03-vti-master
2014-11-23 15:33:36 eventcurrenttime 1416753212.87
2014-11-23 15:33:36 eventcurrenttime_hr 15:33:32
2014-11-23 15:33:36 eventcurrenttime_next 1416753212.95
2014-11-23 15:33:36 eventcurrenttime_next_hr 15:33:32
2014-11-23 15:30:44 eventdescription Fußball: Bundesliga Hamburger SV - Werder Bremen, 12. Spieltag
2014-11-23 15:30:44 eventdescription_next Momentan kein Programm
2014-11-23 15:30:44 eventduration 11100
2014-11-23 15:30:44 eventduration_hr 03:05:00
2014-11-23 15:30:44 eventduration_next 43500
2014-11-23 15:30:44 eventduration_next_hr 12:05:00
2014-11-23 15:30:44 eventname Live BL: Hamburger SV - Werder Bremen, 12. Spieltag
2014-11-23 15:30:44 eventname_next Sky FuÃball Bundesliga
2014-11-23 15:33:36 eventremaining 8488
2014-11-23 15:33:36 eventremaining_hr 02:21:28
2014-11-23 15:30:44 eventremaining_next 43500
2014-11-23 15:30:44 eventremaining_next_hr 12:05:00
2014-11-23 15:30:44 eventstart 1416750600
2014-11-23 15:30:44 eventstart_hr 14:50:00
2014-11-23 15:30:44 eventstart_next 1416761700
2014-11-23 15:30:44 eventstart_next_hr 17:55:00
2014-11-23 15:30:44 eventtitle Live BL: Hamburger SV - Werder Bremen, 12. Spieltag
2014-11-23 15:30:44 eventtitle_next Sky FuÃball Bundesliga
2014-11-08 21:07:07 fpversion 0
2014-11-09 12:00:52 imageversion Release 7.0.1 2014-07-17
2014-11-23 15:30:44 input tv
2014-11-08 18:24:20 iswidescreen -
2014-11-08 21:07:07 lanmac 00:1d:ec:03:5f:16
2014-11-08 21:07:07 model ultimo
2014-11-23 15:30:41 mute off
2014-11-23 15:30:44 nextTitle Sky FuÃball Bundesliga
2014-11-23 15:30:44 onid 133
2014-11-23 15:30:44 pcrpid 255
2014-11-23 15:30:44 pmtpid 96
2014-11-23 15:30:33 power on
2014-11-23 15:30:33 presence present
2014-11-22 22:33:48 providername -
2014-11-08 18:26:51 recordings 0
2014-11-23 15:30:44 servicename Sky Bundesliga 2
2014-11-23 15:30:44 servicereference 1:0:D3:106:2:85:FFFF0000:0:0:0:
2014-11-23 15:30:44 servicevideosize 720x576
2014-11-23 15:30:44 sid 262
2014-11-23 15:33:35 snr
60
2014-11-23 15:33:35 snrdb
60
2014-11-23 15:30:33 state on
2014-11-23 15:30:44 tsid 2
2014-11-08 21:07:07 tuner_a Vuplus DVB-C NIM(CXD1978) (DVB-C)
2014-11-08 21:07:07 tuner_b Vuplus DVB-C NIM(CXD1978) (DVB-C)
2014-11-23 15:30:44 txtpid 32
2014-11-23 15:30:44 videoheight 576
2014-11-23 15:30:44 videowidth 720
2014-11-23 15:30:41 volume 100
2014-11-23 15:30:44 vpid 255
2014-11-08 21:07:07 webifversion 1.7.5
Helper:
ADDRESS 192.168.188.24
AVAILABLE 1
PASSWORD 1tina9
PORT 444
USER root
lastFullUpdate 1416753035.93687
lastInput tv
Bouquet:
Radio:
Bayern_3:
sRef 1:0:2:6EF2:44D:1:FFFF0152:0:0:0:
Tv:
13th_street:
sRef 1:0:1:2A:4:85:FFFF0000:0:0:0:
Das_erste_hd:
sRef 1:0:19:2B5C:41B:1:FFFF014A:0:0:0:
Das_vierte:
sRef 1:0:1:D168:2714:F001:FFFF0000:0:0:0:
Discovery_hd:
sRef 1:0:19:82:6:85:FFFF0000:0:0:0:
Disney_ch._hd:
sRef 1:0:19:C36F:2720:F001:FFFF0000:0:0:0:
Disney_junior:
sRef 1:0:1:1A:1:85:FFFF0000:0:0:0:
Disney_xd:
sRef 1:0:1:1C:1:85:FFFF0000:0:0:0:
Einsplus:
sRef 1:0:1:7033:41B:1:FFFF014A:0:0:0:
Einsfestival:
sRef 1:0:1:7032:41B:1:FFFF014A:0:0:0:
Fox_hd:
sRef 1:0:19:7C:6:85:FFFF0000:0:0:0:
Fox_serie:
sRef 1:0:1:10:1:85:FFFF0000:0:0:0:
Heimatkanal:
sRef 1:0:1:16:1:85:FFFF0000:0:0:0:
N24:
sRef 1:0:1:D17B:2718:F001:FFFF0000:0:0:0:
Natgeo_hd:
sRef 1:0:19:70:D:85:FFFF0000:0:0:0:
Nat_geo_wild_hd:
sRef 1:0:19:76:C:85:FFFF0000:0:0:0:
National_geographic:
sRef 1:0:1:D:4:85:FFFF0000:0:0:0:
Prosieben_hd:
sRef 1:0:19:C35F:271D:F001:FFFF0000:0:0:0:
Prosieben_maxx:
sRef 1:0:1:CF11:2721:F001:FFFF0000:0:0:0:
Rtl:
sRef 1:0:1:D161:2710:F001:FFFF0000:0:0:0:
Rtl_crime:
sRef 1:0:1:1B:4:85:FFFF0000:0:0:0:
Rtl_ii:
sRef 1:0:1:D163:2713:F001:FFFF0000:0:0:0:
Rtl_nitro:
sRef 1:0:1:CF76:2712:F001:FFFF0000:0:0:0:
Rtl_passion:
sRef 1:0:1:1D:4:85:FFFF0000:0:0:0:
Sat.1_gold:
sRef 1:0:1:D04C:2726:F001:FFFF0000:0:0:0:
Sat.1_hd:
sRef 1:0:19:C362:271F:F001:FFFF0000:0:0:0:
Super_rtl:
sRef 1:0:1:D162:2713:F001:FFFF0000:0:0:0:
Sky_action_hd:
sRef 1:0:19:74:D:85:FFFF0000:0:0:0:
Sky_krimi:
sRef 1:0:1:17:4:85:FFFF0000:0:0:0:
Spiegel_geschichte:
sRef 1:0:1:34:4:85:FFFF0000:0:0:0:
Syfy:
sRef 1:0:1:24:1:85:FFFF0000:0:0:0:
Tele_5:
sRef 1:0:1:CF0A:2718:F001:FFFF0000:0:0:0:
Tnt_serie_hd:
sRef 1:0:19:7B:6:85:FFFF0000:0:0:0:
Vox:
sRef 1:0:1:D164:2713:F001:FFFF0000:0:0:0:
Zdf_hd:
sRef 1:0:19:2B66:437:1:FFFF01C2:0:0:0:
Zdfinfo:
sRef 1:0:1:6D6B:437:1:FFFF01C2:0:0:0:
Arte_hd:
sRef 1:0:19:2B70:271E:F001:FFFF0000:0:0:0:
Kabel_eins_hd:
sRef 1:0:19:C359:271E:F001:FFFF0000:0:0:0:
N-tv:
sRef 1:0:1:D166:2713:F001:FFFF0000:0:0:0:
Sixx_hd:
sRef 1:0:19:C363:2716:F001:FFFF0000:0:0:0:
Zdf.kultur:
sRef 1:0:1:6D70:437:1:FFFF01C2:0:0:0:
Zdf_neo:
sRef 1:0:1:6D6E:437:1:FFFF01C2:0:0:0:
Channels:
radio:
BAYERN_3
tv:
ProSieben_HD
SAT.1_HD
RTL
kabel_eins_HD
13th_Street
VOX
Fox_HD
Fox_Serie
Das_Vierte
TNT_Serie_HD
RTL_II
SUPER_RTL
RTL_Crime
RTL_NITRO
RTL_Passion
SAT.1_Gold
Discovery_HD
sixx_HD
TELE_5
Syfy
arte_HD
Sky_Krimi
Sky_Action_HD
Disney_Junior
Disney_XD
Das_Erste_HD
ZDF_HD
Einsfestival
EinsPlus
Heimatkanal
n-tv
N24
Nat_Geo_Wild_HD
NatGeo_HD
National_Geographic
Spiegel_Geschichte
zdf.kultur
ZDFinfo
zdf_neo
ProSieben_MAXX
Disney_Ch._HD
Attributes:
bouquet-radio 1:7:2:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.radio" ORDER BY bouquet
bouquet-tv 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet
devStateIcon on:dreambox@green:off off:dreambox@red:on absent:dreambox@yellow:on
fp_Home 397,1436,0,
http-method POST
https 1
icon dreambox
webCmd channel:input:volume
Allerdings wird auch das STATE der rdwohl nicht richtig aktualisiert!?
Hi Andre,
hab gerade gesehen das ich noch zwei Fehler im Log in zusammenhang mit der rd habe.
2014.11.24 19:56:15.671 1: PERL WARNING: Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 722.
2014.11.24 19:56:15.674 3: stacktrace:
2014.11.24 19:56:15.675 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (722)
2014.11.24 19:56:15.677 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (783)
2014.11.24 19:56:15.678 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1370)
2014.11.24 19:56:15.681 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (737)
2014.11.24 19:56:15.682 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (393)
2014.11.24 19:56:15.684 3: main::FW_Read called by /mod/external/usr/share/fhem/fhem.pl (2928)
2014.11.24 19:56:15.685 3: main::CallFn called by /mod/external/usr/share/fhem/fhem.pl (598)
2014.11.24 19:56:15.720 1: PERL WARNING: Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 722.
2014.11.24 19:56:15.722 3: stacktrace:
2014.11.24 19:56:15.724 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (722)
2014.11.24 19:56:15.725 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (783)
2014.11.24 19:56:15.727 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1370)
2014.11.24 19:56:15.728 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (737)
2014.11.24 19:56:15.730 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (393)
2014.11.24 19:56:15.732 3: main::FW_Read called by /mod/external/usr/share/fhem/fhem.pl (2928)
2014.11.24 19:56:15.733 3: main::CallFn called by /mod/external/usr/share/fhem/fhem.pl (598)
Was ist da bei mir noch falsch?
Danke
Hallo Andre,
seit dem update wird meine ReadingsGroup nicht mehr korrekt angezeigt
1. Überschriften fehlen
2. "<>" hat kein Effekt mehr
Hat sich hier was geändert?
<%sani_heating>,<Ist>,<Soll>,<Luftfeuchtigkeit>,<Ventil>,<Modus>,<Temperaturprofil>,<Lock>
WZ_W.*Climate$:measured-temp,desired-temp,humidity,<>,controlMode,state@{'dummy_WZ_Heizung_Schalter'},R-btnLock@{getDevice($DEVICE)}
WZ_H.*Clima$:<>,<>,<>,ValvePosition,<>,<>,R-btnLock@{getDevice($DEVICE)}
SZ_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{'dummy_SZ_Heizung_Schalter'},R-btnLock@{getDevice($DEVICE)}
KL_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{'dummy_KL_Heizung_Schalter'},R-btnLock@{getDevice($DEVICE)}
BZ_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{'dummy_BZ_Heizung_Schalter'},R-btnLock@{getDevice($DEVICE)}
@Tommy82: schau bitte noch mal die ' bei valueIcon an.
die warnunge sollten ab morgen weg sein. irgendetwas ist mit deinem commands mapping noch komisch.
bitte zeig mal die komplette aktuelle definition.
den fehler kann ich nicht reproduzieren.
hast du fhem nach dem update komplett neu gestartet?
mach mal bitte ein list auf das device und ein {Dumper $defs{name}}
gruss
andre
Zitat von: justme1968 am 24 November 2014, 20:30:17
@Tommy82: schau bitte noch mal die ' bei valueIcon an.
die warnunge sollten ab morgen weg sein. irgendetwas ist mit deinem commands mapping noch komisch.
bitte zeig mal die komplette aktuelle definition.
Hi, ich hab ja megrere rd, das wo das @ heute Morgen war ist die hier:
Internals:
DEF VU_Ultimo:channel,power,<br>,volume
NAME rg_VU_Ultimo
NR 194
NTFY_ORDER 50-rg_VU_Ultimo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x199d0e8)
Fhem:
lastDefChange 12
last_update 1416857852.00191
Helper:
DEF
Commands:
channel channel:
power.off set $DEVICE on
power.on set $DEVICE off
volume volume:slider,0,1,100
Valueicon:
power.off off
power.on dreambox
state %devStateIcon
Attributes:
commands { volume => "volume:slider,0,1,100", channel => 'channel:', 'power.on' => 'set $DEVICE off', 'power.off' => 'set $DEVICE on' }
fp_Reciever 245,264,5,
valueIcon { state => '%devStateIcon', 'power.on' => "dreambox", 'power.off' => "off" }
widgetOverride 1
Hab aber noch ein rd Ankiegen 8),
habe über
define rg_Einbruchalarm_Schalter readingsGroup Alarmanlage_Schalter:state
attr rg_Einbruchalarm_Schalter commands { 'On' => "set $DEVICE Off", 'Off' => "set $DEVICE On", 'Auto' => "set $DEVICE Auto" }
attr rg_Einbruchalarm_Schalter valueIcon { state => '%devStateIcon', 'On' => "on", 'Off' => "Off", 'Auto' => "Auto" }
diese rd angelegt
Internals:
CFGFN
DEF Alarmanlage_Schalter:state
NAME rg_Einbruchalarm_Schalter
NR 440
NTFY_ORDER 50-rg_Einbruchalarm_Schalter
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Alarmanlage_Schalter 1
Content2:
DEVICES:
ARRAY(0x1a59bb0)
Fhem:
lastDefChange 12
last_update 1416857778.56239
Helper:
DEF
commands { 'On' => "set $DEVICE Off", 'Off' => "set $DEVICE On", 'Auto' => "set $DEVICE Auto" }
Valueicon:
Auto Auto
Off Off
On on
state %devStateIcon
Attributes:
commands { 'On' => "set $DEVICE Off", 'Off' => "set $DEVICE On", 'Auto' => "set $DEVICE Auto" }
valueIcon { state => '%devStateIcon', 'On' => "on", 'Off' => "Off", 'Auto' => "Auto" }
webCmd Auto:On:Off
Die rd soll ein den aktuellen Status
ZitatAuto:On:Off
anzeigen und 3 Buttons bieten (Auto:On:Off) womit man den status ändern kann.
Das Device sieht so aus:
Internals:
NAME Alarmanlage_Schalter
NR 228
STATE Auto
TYPE dummy
Readings:
2014-11-24 14:35:42 state Auto
Attributes:
webCmd Auto:On:Off
Bis jetzt zeigt mir die rd nur den Status an
Hallo,
Ich habe für einen Raum mehrere Temperatursensoren, de ich mittels readingsgroup in einer Zeile darstellen möchte.
GA..TF.DS18B20.cdm:<%temp_outside>,<Außen>,temperature, GH..TF.DS18B20.cdm:<%temp_inside>,<Innen>,temperature
Aber so funktioniert das nicht. Es wird in zwei Zeilen dargestellt.
Geht das irgendwie?
Spartacus
ja - nimm den Space raus...
Zitat von: justme1968 am 24 November 2014, 20:37:42
hast du fhem nach dem update komplett neu gestartet?
mach mal bitte ein list auf das device und ein {Dumper $defs{name}}
Ja. Habe neu gestartet.
list rg_Heizungsstatus
Internals:
CFGFN
DEF <%sani_heating>,<Ist>,<Soll>,<Luftfeuchtigkeit>,<Ventil>,<Modus>,<Temperaturprofil>,<Lock>
WZ_W.*Climate$:measured-temp,desired-temp,humidity,<>,controlMode,state@{'dummy_WZ_Heizung_Schalter'},R-btnLock@{getDevice($DEVICE)}
WZ_H.*Clima$:<>,<>,<>,ValvePosition,<>,<>,R-btnLock@{getDevice($DEVICE)}
SZ_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{'dummy_SZ_Heizung_Schalter'},R-btnLock@{getDevice($DEVICE)}
KL_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{'dummy_KL_Heizung_Schalter'},R-btnLock@{getDevice($DEVICE)}
BZ_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{'dummy_BZ_Heizung_Schalter'},R-btnLock@{getDevice($DEVICE)}
NAME rg_Heizungsstatus
NR 90
NTFY_ORDER 50-rg_Heizungsstatus
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CHANGETIME:
Content:
BZ_Heizungsthermostat_Clima 1
KL_Heizungsthermostat_Clima 1
SZ_Heizungsthermostat_Clima 1
WZ_Heizungsthermostat_Clima 1
WZ_Wandthermostat_Climate 1
Content2:
BZ_Heizungsthermostat 1
KL_Heizungsthermostat 1
SZ_Heizungsthermostat 1
WZ_Heizungsthermostat 1
WZ_Wandthermostat 1
dummy_BZ_Heizung_Schalter 1
dummy_KL_Heizung_Schalter 1
dummy_SZ_Heizung_Schalter 1
dummy_WZ_Heizung_Schalter 1
DEVICES:
ARRAY(0x1f55f40)
ARRAY(0x1f74bf8)
ARRAY(0x1f542d0)
ARRAY(0x1bb23c8)
ARRAY(0x1f50cd8)
ARRAY(0x9268b0)
DEVICES2:
ARRAY(0x1f55f40)
ARRAY(0x1f74bf8)
ARRAY(0x1f542d0)
ARRAY(0x1bb23c8)
ARRAY(0x1f50cd8)
ARRAY(0x9268b0)
ARRAY(0x1e50c00)
ARRAY(0x1f69028)
ARRAY(0x194e558)
ARRAY(0x1742b10)
ARRAY(0x926dc0)
ARRAY(0x194f820)
ARRAY(0x1f50ca8)
ARRAY(0x1f5fd40)
ARRAY(0x1f509f0)
Helper:
Dblog:
Bz_heizungsthermostat_clima.valveposition:
Dblog:
TIME 1416870615.73027
VALUE 0.0 %
Bz_heizungsthermostat_clima.controlmode:
Dblog:
TIME 1416870615.75676
VALUE <svg class="icon sani_heating_automatic green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="472pt" viewBox="0 0 468 472" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,472) scale(0.159184,-0.159184)" fill="green" stroke="none"> <path d="M1257 2951 c-57 -12 -70 -31 -75 -106 l-4 -65 -114 0 -114 0 0 45 c0 63 -22 113 -54 121 -15 3 -58 4 -96 2 -91 -5 -110 -22 -117 -107 l-6 -61 -112 0 -113 0 -7 62 c-11 89 -32 108 -125 108 -74 0 -123 -16 -134 -45 -3 -9 -6 -41 -6 -71 l0 -54 -68 0 c-96 0 -102 -8 -102 -137 0 -125 6 -133 103 -133 l67 0 0 -505 0 -505 -75 0 c-92 0 -95 -4 -95 -130 0 -124 4 -130 89 -130 l67 0 12 -62 c7 -38 20 -70 34 -85 21 -23 29 -25 105 -21 105 4 122 18 130 107 l6 61 113 0 114 0 0 -32 c0 -52 19 -106 43 -123 13 -9 44 -15 83 -15 114 0 144 25 144 120 l0 50 115 0 115 0 0 -41 c0 -52 24 -103 56 -118 32 -14 109 -13 154 2 42 15 60 47 60 110 l0 47 48 0 c27 0 57 7 70 16 20 14 22 23 22 119 0 125 -6 135 -86 135 l-54 0 0 500 0 500 49 0 c69 0 90 20 98 91 7 71 -3 144 -23 164 -10 10 -35 15 -70 15 l-54 0 0 38 c0 47 -16 107 -33 120 -17 14 -115 21 -160 13z m93 -936 l-1 -845 -34 0 -35 0 0 845 0 845 35 0 35 0 0 -845z m-1000 -5 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m500 0 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m-170 0 l0 -500 -115 0 -115 0 0 500 0 500 115 0 115 0 0 -500z m498 -2 l-3 -503 -112 -3 -113 -3 0 506 0 505 115 0 115 0 -2 -502z"/> <path d="M1644 2755 c-20 -31 -17 -206 4 -227 8 -8 46 -14 100 -16 117 -5 134 7 140 101 2 37 1 82 -2 101 -11 59 -26 66 -131 66 -90 0 -95 -1 -111 -25z m146 -110 c0 -32 -2 -35 -30 -35 -28 0 -30 3 -30 35 0 32 2 35 30 35 28 0 30 -3 30 -35z"/> <path d="M2665 1502 c-33 -4 -65 -11 -72 -15 -20 -13 -33 -77 -34 -172 -1 -49 -4 -80 -6 -68 -2 13 -16 32 -30 43 -23 18 -40 20 -158 20 -128 0 -132 -1 -156 -26 l-24 -26 0 -339 0 -339 28 -27 c27 -28 29 -28 156 -28 122 0 131 1 155 24 14 13 27 33 28 45 3 18 7 15 20 -16 9 -20 25 -41 36 -47 31 -16 236 -14 277 3 55 23 57 41 53 501 -3 424 -5 444 -45 459 -27 11 -162 15 -228 8z m175 -487 l0 -395 -90 0 -90 0 0 395 0 395 90 0 90 0 0 -395z m-380 -95 l0 -300 -90 0 -90 0 0 300 0 300 90 0 90 0 0 -300z"/> <path d="M1854 1150 c-41 -17 -54 -49 -55 -140 -1 -47 -4 -75 -6 -64 -2 12 -15 32 -29 45 -22 21 -37 24 -131 27 -123 5 -175 -7 -201 -45 -15 -24 -17 -50 -14 -208 2 -99 5 -188 8 -198 11 -35 57 -47 179 -47 120 0 166 12 179 45 3 9 7 71 8 138 l2 122 5 -126 c4 -85 10 -131 20 -142 23 -28 82 -39 193 -35 96 3 109 5 132 27 l26 24 0 267 0 267 -26 24 c-24 22 -34 24 -147 26 -67 2 -132 -2 -143 -7z m226 -310 l0 -220 -90 0 -90 0 0 220 0 220 90 0 90 0 0 -220z m-390 -70 l0 -150 -85 0 -85 0 0 150 0 150 85 0 85 0 0 -150z"/> <path d="M2694 416 c-69 -30 -104 -99 -104 -203 0 -108 46 -182 125 -202 93 -23 173 22 200 113 57 192 -68 358 -221 292z m91 -62 c28 -11 45 -60 45 -133 0 -71 -12 -120 -33 -133 -7 -4 -26 -8 -44 -8 -50 0 -63 28 -63 138 0 85 2 95 25 117 25 26 41 30 70 19z"/> <path d="M1577 413 c-8 -15 -127 -381 -127 -393 0 -7 16 -10 47 -8 47 3 47 3 58 48 l11 45 61 3 61 3 7 -33 c14 -69 13 -68 66 -68 59 0 61 -21 -20 230 l-57 175 -51 3 c-28 2 -53 -1 -56 -5z m78 -162 c9 -35 14 -65 12 -68 -3 -2 -23 -3 -44 -1 l-40 3 20 73 c11 41 23 70 27 65 5 -4 16 -37 25 -72z"/> <path d="M1842 263 c4 -177 12 -205 67 -237 44 -26 142 -27 189 -2 53 27 62 63 62 241 l0 155 -45 0 -45 0 0 -144 c0 -182 -5 -196 -64 -196 -35 0 -48 5 -56 19 -5 11 -10 86 -10 170 l0 151 -51 0 -51 0 4 -157z"/> <path d="M2210 385 l0 -35 60 0 60 0 2 -167 3 -168 48 -3 47 -3 0 170 0 171 60 0 60 0 0 35 0 35 -170 0 -170 0 0 -35z"/> </g> </svg>
Bz_heizungsthermostat_clima.desired-temp:
Dblog:
TIME 1416870615.74153
VALUE 17.0 °C
Bz_heizungsthermostat_clima.measured-temp:
Dblog:
TIME 1416870615.71966
VALUE 20.2 °C
Kl_heizungsthermostat_clima.valveposition:
Dblog:
TIME 1416858892.08802
VALUE 0.0 %
Kl_heizungsthermostat_clima.controlmode:
Dblog:
TIME 1416858892.11453
VALUE <svg class="icon sani_heating_automatic green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="472pt" viewBox="0 0 468 472" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,472) scale(0.159184,-0.159184)" fill="green" stroke="none"> <path d="M1257 2951 c-57 -12 -70 -31 -75 -106 l-4 -65 -114 0 -114 0 0 45 c0 63 -22 113 -54 121 -15 3 -58 4 -96 2 -91 -5 -110 -22 -117 -107 l-6 -61 -112 0 -113 0 -7 62 c-11 89 -32 108 -125 108 -74 0 -123 -16 -134 -45 -3 -9 -6 -41 -6 -71 l0 -54 -68 0 c-96 0 -102 -8 -102 -137 0 -125 6 -133 103 -133 l67 0 0 -505 0 -505 -75 0 c-92 0 -95 -4 -95 -130 0 -124 4 -130 89 -130 l67 0 12 -62 c7 -38 20 -70 34 -85 21 -23 29 -25 105 -21 105 4 122 18 130 107 l6 61 113 0 114 0 0 -32 c0 -52 19 -106 43 -123 13 -9 44 -15 83 -15 114 0 144 25 144 120 l0 50 115 0 115 0 0 -41 c0 -52 24 -103 56 -118 32 -14 109 -13 154 2 42 15 60 47 60 110 l0 47 48 0 c27 0 57 7 70 16 20 14 22 23 22 119 0 125 -6 135 -86 135 l-54 0 0 500 0 500 49 0 c69 0 90 20 98 91 7 71 -3 144 -23 164 -10 10 -35 15 -70 15 l-54 0 0 38 c0 47 -16 107 -33 120 -17 14 -115 21 -160 13z m93 -936 l-1 -845 -34 0 -35 0 0 845 0 845 35 0 35 0 0 -845z m-1000 -5 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m500 0 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m-170 0 l0 -500 -115 0 -115 0 0 500 0 500 115 0 115 0 0 -500z m498 -2 l-3 -503 -112 -3 -113 -3 0 506 0 505 115 0 115 0 -2 -502z"/> <path d="M1644 2755 c-20 -31 -17 -206 4 -227 8 -8 46 -14 100 -16 117 -5 134 7 140 101 2 37 1 82 -2 101 -11 59 -26 66 -131 66 -90 0 -95 -1 -111 -25z m146 -110 c0 -32 -2 -35 -30 -35 -28 0 -30 3 -30 35 0 32 2 35 30 35 28 0 30 -3 30 -35z"/> <path d="M2665 1502 c-33 -4 -65 -11 -72 -15 -20 -13 -33 -77 -34 -172 -1 -49 -4 -80 -6 -68 -2 13 -16 32 -30 43 -23 18 -40 20 -158 20 -128 0 -132 -1 -156 -26 l-24 -26 0 -339 0 -339 28 -27 c27 -28 29 -28 156 -28 122 0 131 1 155 24 14 13 27 33 28 45 3 18 7 15 20 -16 9 -20 25 -41 36 -47 31 -16 236 -14 277 3 55 23 57 41 53 501 -3 424 -5 444 -45 459 -27 11 -162 15 -228 8z m175 -487 l0 -395 -90 0 -90 0 0 395 0 395 90 0 90 0 0 -395z m-380 -95 l0 -300 -90 0 -90 0 0 300 0 300 90 0 90 0 0 -300z"/> <path d="M1854 1150 c-41 -17 -54 -49 -55 -140 -1 -47 -4 -75 -6 -64 -2 12 -15 32 -29 45 -22 21 -37 24 -131 27 -123 5 -175 -7 -201 -45 -15 -24 -17 -50 -14 -208 2 -99 5 -188 8 -198 11 -35 57 -47 179 -47 120 0 166 12 179 45 3 9 7 71 8 138 l2 122 5 -126 c4 -85 10 -131 20 -142 23 -28 82 -39 193 -35 96 3 109 5 132 27 l26 24 0 267 0 267 -26 24 c-24 22 -34 24 -147 26 -67 2 -132 -2 -143 -7z m226 -310 l0 -220 -90 0 -90 0 0 220 0 220 90 0 90 0 0 -220z m-390 -70 l0 -150 -85 0 -85 0 0 150 0 150 85 0 85 0 0 -150z"/> <path d="M2694 416 c-69 -30 -104 -99 -104 -203 0 -108 46 -182 125 -202 93 -23 173 22 200 113 57 192 -68 358 -221 292z m91 -62 c28 -11 45 -60 45 -133 0 -71 -12 -120 -33 -133 -7 -4 -26 -8 -44 -8 -50 0 -63 28 -63 138 0 85 2 95 25 117 25 26 41 30 70 19z"/> <path d="M1577 413 c-8 -15 -127 -381 -127 -393 0 -7 16 -10 47 -8 47 3 47 3 58 48 l11 45 61 3 61 3 7 -33 c14 -69 13 -68 66 -68 59 0 61 -21 -20 230 l-57 175 -51 3 c-28 2 -53 -1 -56 -5z m78 -162 c9 -35 14 -65 12 -68 -3 -2 -23 -3 -44 -1 l-40 3 20 73 c11 41 23 70 27 65 5 -4 16 -37 25 -72z"/> <path d="M1842 263 c4 -177 12 -205 67 -237 44 -26 142 -27 189 -2 53 27 62 63 62 241 l0 155 -45 0 -45 0 0 -144 c0 -182 -5 -196 -64 -196 -35 0 -48 5 -56 19 -5 11 -10 86 -10 170 l0 151 -51 0 -51 0 4 -157z"/> <path d="M2210 385 l0 -35 60 0 60 0 2 -167 3 -168 48 -3 47 -3 0 170 0 171 60 0 60 0 0 35 0 35 -170 0 -170 0 0 -35z"/> </g> </svg>
Kl_heizungsthermostat_clima.desired-temp:
Dblog:
TIME 1416858892.09907
VALUE 17.0 °C
Kl_heizungsthermostat_clima.measured-temp:
Dblog:
TIME 1416858892.07713
VALUE 20.4 °C
Sz_heizungsthermostat_clima.valveposition:
Dblog:
TIME 1416858907.08278
VALUE 12.0 %
Sz_heizungsthermostat_clima.controlmode:
Dblog:
TIME 1416858907.10929
VALUE <svg class="icon sani_heating_automatic green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="472pt" viewBox="0 0 468 472" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,472) scale(0.159184,-0.159184)" fill="green" stroke="none"> <path d="M1257 2951 c-57 -12 -70 -31 -75 -106 l-4 -65 -114 0 -114 0 0 45 c0 63 -22 113 -54 121 -15 3 -58 4 -96 2 -91 -5 -110 -22 -117 -107 l-6 -61 -112 0 -113 0 -7 62 c-11 89 -32 108 -125 108 -74 0 -123 -16 -134 -45 -3 -9 -6 -41 -6 -71 l0 -54 -68 0 c-96 0 -102 -8 -102 -137 0 -125 6 -133 103 -133 l67 0 0 -505 0 -505 -75 0 c-92 0 -95 -4 -95 -130 0 -124 4 -130 89 -130 l67 0 12 -62 c7 -38 20 -70 34 -85 21 -23 29 -25 105 -21 105 4 122 18 130 107 l6 61 113 0 114 0 0 -32 c0 -52 19 -106 43 -123 13 -9 44 -15 83 -15 114 0 144 25 144 120 l0 50 115 0 115 0 0 -41 c0 -52 24 -103 56 -118 32 -14 109 -13 154 2 42 15 60 47 60 110 l0 47 48 0 c27 0 57 7 70 16 20 14 22 23 22 119 0 125 -6 135 -86 135 l-54 0 0 500 0 500 49 0 c69 0 90 20 98 91 7 71 -3 144 -23 164 -10 10 -35 15 -70 15 l-54 0 0 38 c0 47 -16 107 -33 120 -17 14 -115 21 -160 13z m93 -936 l-1 -845 -34 0 -35 0 0 845 0 845 35 0 35 0 0 -845z m-1000 -5 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m500 0 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m-170 0 l0 -500 -115 0 -115 0 0 500 0 500 115 0 115 0 0 -500z m498 -2 l-3 -503 -112 -3 -113 -3 0 506 0 505 115 0 115 0 -2 -502z"/> <path d="M1644 2755 c-20 -31 -17 -206 4 -227 8 -8 46 -14 100 -16 117 -5 134 7 140 101 2 37 1 82 -2 101 -11 59 -26 66 -131 66 -90 0 -95 -1 -111 -25z m146 -110 c0 -32 -2 -35 -30 -35 -28 0 -30 3 -30 35 0 32 2 35 30 35 28 0 30 -3 30 -35z"/> <path d="M2665 1502 c-33 -4 -65 -11 -72 -15 -20 -13 -33 -77 -34 -172 -1 -49 -4 -80 -6 -68 -2 13 -16 32 -30 43 -23 18 -40 20 -158 20 -128 0 -132 -1 -156 -26 l-24 -26 0 -339 0 -339 28 -27 c27 -28 29 -28 156 -28 122 0 131 1 155 24 14 13 27 33 28 45 3 18 7 15 20 -16 9 -20 25 -41 36 -47 31 -16 236 -14 277 3 55 23 57 41 53 501 -3 424 -5 444 -45 459 -27 11 -162 15 -228 8z m175 -487 l0 -395 -90 0 -90 0 0 395 0 395 90 0 90 0 0 -395z m-380 -95 l0 -300 -90 0 -90 0 0 300 0 300 90 0 90 0 0 -300z"/> <path d="M1854 1150 c-41 -17 -54 -49 -55 -140 -1 -47 -4 -75 -6 -64 -2 12 -15 32 -29 45 -22 21 -37 24 -131 27 -123 5 -175 -7 -201 -45 -15 -24 -17 -50 -14 -208 2 -99 5 -188 8 -198 11 -35 57 -47 179 -47 120 0 166 12 179 45 3 9 7 71 8 138 l2 122 5 -126 c4 -85 10 -131 20 -142 23 -28 82 -39 193 -35 96 3 109 5 132 27 l26 24 0 267 0 267 -26 24 c-24 22 -34 24 -147 26 -67 2 -132 -2 -143 -7z m226 -310 l0 -220 -90 0 -90 0 0 220 0 220 90 0 90 0 0 -220z m-390 -70 l0 -150 -85 0 -85 0 0 150 0 150 85 0 85 0 0 -150z"/> <path d="M2694 416 c-69 -30 -104 -99 -104 -203 0 -108 46 -182 125 -202 93 -23 173 22 200 113 57 192 -68 358 -221 292z m91 -62 c28 -11 45 -60 45 -133 0 -71 -12 -120 -33 -133 -7 -4 -26 -8 -44 -8 -50 0 -63 28 -63 138 0 85 2 95 25 117 25 26 41 30 70 19z"/> <path d="M1577 413 c-8 -15 -127 -381 -127 -393 0 -7 16 -10 47 -8 47 3 47 3 58 48 l11 45 61 3 61 3 7 -33 c14 -69 13 -68 66 -68 59 0 61 -21 -20 230 l-57 175 -51 3 c-28 2 -53 -1 -56 -5z m78 -162 c9 -35 14 -65 12 -68 -3 -2 -23 -3 -44 -1 l-40 3 20 73 c11 41 23 70 27 65 5 -4 16 -37 25 -72z"/> <path d="M1842 263 c4 -177 12 -205 67 -237 44 -26 142 -27 189 -2 53 27 62 63 62 241 l0 155 -45 0 -45 0 0 -144 c0 -182 -5 -196 -64 -196 -35 0 -48 5 -56 19 -5 11 -10 86 -10 170 l0 151 -51 0 -51 0 4 -157z"/> <path d="M2210 385 l0 -35 60 0 60 0 2 -167 3 -168 48 -3 47 -3 0 170 0 171 60 0 60 0 0 35 0 35 -170 0 -170 0 0 -35z"/> </g> </svg>
Sz_heizungsthermostat_clima.desired-temp:
Dblog:
TIME 1416858907.09399
VALUE 22.0 °C
Sz_heizungsthermostat_clima.measured-temp:
Dblog:
TIME 1416858907.07198
VALUE 23.9 °C
Wz_heizungsthermostat_clima.valveposition:
Dblog:
TIME 1416858948.35549
VALUE 41.0 %
Wz_wandthermostat_climate.controlmode:
Dblog:
TIME 1416858687.10783
VALUE <svg class="icon sani_heating_automatic green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="472pt" viewBox="0 0 468 472" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,472) scale(0.159184,-0.159184)" fill="green" stroke="none"> <path d="M1257 2951 c-57 -12 -70 -31 -75 -106 l-4 -65 -114 0 -114 0 0 45 c0 63 -22 113 -54 121 -15 3 -58 4 -96 2 -91 -5 -110 -22 -117 -107 l-6 -61 -112 0 -113 0 -7 62 c-11 89 -32 108 -125 108 -74 0 -123 -16 -134 -45 -3 -9 -6 -41 -6 -71 l0 -54 -68 0 c-96 0 -102 -8 -102 -137 0 -125 6 -133 103 -133 l67 0 0 -505 0 -505 -75 0 c-92 0 -95 -4 -95 -130 0 -124 4 -130 89 -130 l67 0 12 -62 c7 -38 20 -70 34 -85 21 -23 29 -25 105 -21 105 4 122 18 130 107 l6 61 113 0 114 0 0 -32 c0 -52 19 -106 43 -123 13 -9 44 -15 83 -15 114 0 144 25 144 120 l0 50 115 0 115 0 0 -41 c0 -52 24 -103 56 -118 32 -14 109 -13 154 2 42 15 60 47 60 110 l0 47 48 0 c27 0 57 7 70 16 20 14 22 23 22 119 0 125 -6 135 -86 135 l-54 0 0 500 0 500 49 0 c69 0 90 20 98 91 7 71 -3 144 -23 164 -10 10 -35 15 -70 15 l-54 0 0 38 c0 47 -16 107 -33 120 -17 14 -115 21 -160 13z m93 -936 l-1 -845 -34 0 -35 0 0 845 0 845 35 0 35 0 0 -845z m-1000 -5 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m500 0 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m-170 0 l0 -500 -115 0 -115 0 0 500 0 500 115 0 115 0 0 -500z m498 -2 l-3 -503 -112 -3 -113 -3 0 506 0 505 115 0 115 0 -2 -502z"/> <path d="M1644 2755 c-20 -31 -17 -206 4 -227 8 -8 46 -14 100 -16 117 -5 134 7 140 101 2 37 1 82 -2 101 -11 59 -26 66 -131 66 -90 0 -95 -1 -111 -25z m146 -110 c0 -32 -2 -35 -30 -35 -28 0 -30 3 -30 35 0 32 2 35 30 35 28 0 30 -3 30 -35z"/> <path d="M2665 1502 c-33 -4 -65 -11 -72 -15 -20 -13 -33 -77 -34 -172 -1 -49 -4 -80 -6 -68 -2 13 -16 32 -30 43 -23 18 -40 20 -158 20 -128 0 -132 -1 -156 -26 l-24 -26 0 -339 0 -339 28 -27 c27 -28 29 -28 156 -28 122 0 131 1 155 24 14 13 27 33 28 45 3 18 7 15 20 -16 9 -20 25 -41 36 -47 31 -16 236 -14 277 3 55 23 57 41 53 501 -3 424 -5 444 -45 459 -27 11 -162 15 -228 8z m175 -487 l0 -395 -90 0 -90 0 0 395 0 395 90 0 90 0 0 -395z m-380 -95 l0 -300 -90 0 -90 0 0 300 0 300 90 0 90 0 0 -300z"/> <path d="M1854 1150 c-41 -17 -54 -49 -55 -140 -1 -47 -4 -75 -6 -64 -2 12 -15 32 -29 45 -22 21 -37 24 -131 27 -123 5 -175 -7 -201 -45 -15 -24 -17 -50 -14 -208 2 -99 5 -188 8 -198 11 -35 57 -47 179 -47 120 0 166 12 179 45 3 9 7 71 8 138 l2 122 5 -126 c4 -85 10 -131 20 -142 23 -28 82 -39 193 -35 96 3 109 5 132 27 l26 24 0 267 0 267 -26 24 c-24 22 -34 24 -147 26 -67 2 -132 -2 -143 -7z m226 -310 l0 -220 -90 0 -90 0 0 220 0 220 90 0 90 0 0 -220z m-390 -70 l0 -150 -85 0 -85 0 0 150 0 150 85 0 85 0 0 -150z"/> <path d="M2694 416 c-69 -30 -104 -99 -104 -203 0 -108 46 -182 125 -202 93 -23 173 22 200 113 57 192 -68 358 -221 292z m91 -62 c28 -11 45 -60 45 -133 0 -71 -12 -120 -33 -133 -7 -4 -26 -8 -44 -8 -50 0 -63 28 -63 138 0 85 2 95 25 117 25 26 41 30 70 19z"/> <path d="M1577 413 c-8 -15 -127 -381 -127 -393 0 -7 16 -10 47 -8 47 3 47 3 58 48 l11 45 61 3 61 3 7 -33 c14 -69 13 -68 66 -68 59 0 61 -21 -20 230 l-57 175 -51 3 c-28 2 -53 -1 -56 -5z m78 -162 c9 -35 14 -65 12 -68 -3 -2 -23 -3 -44 -1 l-40 3 20 73 c11 41 23 70 27 65 5 -4 16 -37 25 -72z"/> <path d="M1842 263 c4 -177 12 -205 67 -237 44 -26 142 -27 189 -2 53 27 62 63 62 241 l0 155 -45 0 -45 0 0 -144 c0 -182 -5 -196 -64 -196 -35 0 -48 5 -56 19 -5 11 -10 86 -10 170 l0 151 -51 0 -51 0 4 -157z"/> <path d="M2210 385 l0 -35 60 0 60 0 2 -167 3 -168 48 -3 47 -3 0 170 0 171 60 0 60 0 0 35 0 35 -170 0 -170 0 0 -35z"/> </g> </svg>
Wz_wandthermostat_climate.desired-temp:
Dblog:
TIME 1416858938.03996
VALUE 22.5 °C
Wz_wandthermostat_climate.humidity:
Dblog:
TIME 1416858938.05035
VALUE 58.0 %
Wz_wandthermostat_climate.measured-temp:
Dblog:
TIME 1416858938.02947
VALUE 22.5 °C
Fhem:
lastDefChange 7
last_update 1416858143.11551
Helper:
DEF
mapping { rgMapping($DEVICE,$READING,$VALUE); }
nameStyle style="font-weight:bold"
valueFormat { rgValueFormat($DEVICE,$READING,$VALUE); }
valueIcon { rgValueIcon($DEVICE,$READING,$VALUE); }
valueStyle { rgValueStyle($DEVICE,$READING,$VALUE); }
Commands:
R-btnLock trigger ntfy_toggleBtnLock $DEVICE
Attributes:
alias Heizungsstatus
commands { 'R-btnLock' => 'trigger ntfy_toggleBtnLock $DEVICE' }
group Heizungsstatus
mapping { rgMapping($DEVICE,$READING,$VALUE); }
nameStyle style="font-weight:bold"
room 0.01_Übersicht
valueFormat { rgValueFormat($DEVICE,$READING,$VALUE); }
valueIcon { rgValueIcon($DEVICE,$READING,$VALUE); }
valueStyle { rgValueStyle($DEVICE,$READING,$VALUE); }
{Dumper $defs{name}} Teil 1
$VAR1 = {
'Helper' => {
'DBLOG' => {
'BZ_Heizungsthermostat_Clima.measured-temp' => {
'dbLog' => {
'VALUE' => '20.2 °C',
'TIME' => '1416870615.71966'
}
},
'KL_Heizungsthermostat_Clima.desired-temp' => {
'dbLog' => {
'VALUE' => '17.0 °C',
'TIME' => '1416858892.09907'
}
},
'SZ_Heizungsthermostat_Clima.desired-temp' => {
'dbLog' => {
'VALUE' => '22.0 °C',
'TIME' => '1416858907.09399'
}
},
'KL_Heizungsthermostat_Clima.ValvePosition' => {
'dbLog' => {
'VALUE' => '0.0 %',
'TIME' => '1416858892.08802'
}
},
'SZ_Heizungsthermostat_Clima.ValvePosition' => {
'dbLog' => {
'VALUE' => '12.0 %',
'TIME' => '1416858907.08278'
}
},
'WZ_Wandthermostat_Climate.controlMode' => {
'dbLog' => {
'VALUE' => '<svg class="icon sani_heating_automatic green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="472pt" viewBox="0 0 468 472" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,472) scale(0.159184,-0.159184)" fill="green" stroke="none"> <path d="M1257 2951 c-57 -12 -70 -31 -75 -106 l-4 -65 -114 0 -114 0 0 45 c0 63 -22 113 -54 121 -15 3 -58 4 -96 2 -91 -5 -110 -22 -117 -107 l-6 -61 -112 0 -113 0 -7 62 c-11 89 -32 108 -125 108 -74 0 -123 -16 -134 -45 -3 -9 -6 -41 -6 -71 l0 -54 -68 0 c-96 0 -102 -8 -102 -137 0 -125 6 -133 103 -133 l67 0 0 -505 0 -505 -75 0 c-92 0 -95 -4 -95 -130 0 -124 4 -130 89 -130 l67 0 12 -62 c7 -38 20 -70 34 -85 21 -23 29 -25 105 -21 105 4 122 18 130 107 l6 61 113 0 114 0 0 -32 c0 -52 19 -106 43 -123 13 -9 44 -15 83 -15 114 0 144 25 144 120 l0 50 115 0 115 0 0 -41 c0 -52 24 -103 56 -118 32 -14 109 -13 154 2 42 15 60 47 60 110 l0 47 48 0 c27 0 57 7 70 16 20 14 22 23 22 119 0 125 -6 135 -86 135 l-54 0 0 500 0 500 49 0 c69 0 90 20 98 91 7 71 -3 144 -23 164 -10 10 -35 15 -70 15 l-54 0 0 38 c0 47 -16 107 -33 120 -17 14 -115 21 -160 13z m93 -936 l-1 -845 -34 0 -35 0 0 845 0 845 35 0 35 0 0 -845z m-1000 -5 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m500 0 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m-170 0 l0 -500 -115 0 -115 0 0 500 0 500 115 0 115 0 0 -500z m498 -2 l-3 -503 -112 -3 -113 -3 0 506 0 505 115 0 115 0 -2 -502z"/> <path d="M1644 2755 c-20 -31 -17 -206 4 -227 8 -8 46 -14 100 -16 117 -5 134 7 140 101 2 37 1 82 -2 101 -11 59 -26 66 -131 66 -90 0 -95 -1 -111 -25z m146 -110 c0 -32 -2 -35 -30 -35 -28 0 -30 3 -30 35 0 32 2 35 30 35 28 0 30 -3 30 -35z"/> <path d="M2665 1502 c-33 -4 -65 -11 -72 -15 -20 -13 -33 -77 -34 -172 -1 -49 -4 -80 -6 -68 -2 13 -16 32 -30 43 -23 18 -40 20 -158 20 -128 0 -132 -1 -156 -26 l-24 -26 0 -339 0 -339 28 -27 c27 -28 29 -28 156 -28 122 0 131 1 155 24 14 13 27 33 28 45 3 18 7 15 20 -16 9 -20 25 -41 36 -47 31 -16 236 -14 277 3 55 23 57 41 53 501 -3 424 -5 444 -45 459 -27 11 -162 15 -228 8z m175 -487 l0 -395 -90 0 -90 0 0 395 0 395 90 0 90 0 0 -395z m-380 -95 l0 -300 -90 0 -90 0 0 300 0 300 90 0 90 0 0 -300z"/> <path d="M1854 1150 c-41 -17 -54 -49 -55 -140 -1 -47 -4 -75 -6 -64 -2 12 -15 32 -29 45 -22 21 -37 24 -131 27 -123 5 -175 -7 -201 -45 -15 -24 -17 -50 -14 -208 2 -99 5 -188 8 -198 11 -35 57 -47 179 -47 120 0 166 12 179 45 3 9 7 71 8 138 l2 122 5 -126 c4 -85 10 -131 20 -142 23 -28 82 -39 193 -35 96 3 109 5 132 27 l26 24 0 267 0 267 -26 24 c-24 22 -34 24 -147 26 -67 2 -132 -2 -143 -7z m226 -310 l0 -220 -90 0 -90 0 0 220 0 220 90 0 90 0 0 -220z m-390 -70 l0 -150 -85 0 -85 0 0 150 0 150 85 0 85 0 0 -150z"/> <path d="M2694 416 c-69 -30 -104 -99 -104 -203 0 -108 46 -182 125 -202 93 -23 173 22 200 113 57 192 -68 358 -221 292z m91 -62 c28 -11 45 -60 45 -133 0 -71 -12 -120 -33 -133 -7 -4 -26 -8 -44 -8 -50 0 -63 28 -63 138 0 85 2 95 25 117 25 26 41 30 70 19z"/> <path d="M1577 413 c-8 -15 -127 -381 -127 -393 0 -7 16 -10 47 -8 47 3 47 3 58 48 l11 45 61 3 61 3 7 -33 c14 -69 13 -68 66 -68 59 0 61 -21 -20 230 l-57 175 -51 3 c-28 2 -53 -1 -56 -5z m78 -162 c9 -35 14 -65 12 -68 -3 -2 -23 -3 -44 -1 l-40 3 20 73 c11 41 23 70 27 65 5 -4 16 -37 25 -72z"/> <path d="M1842 263 c4 -177 12 -205 67 -237 44 -26 142 -27 189 -2 53 27 62 63 62 241 l0 155 -45 0 -45 0 0 -144 c0 -182 -5 -196 -64 -196 -35 0 -48 5 -56 19 -5 11 -10 86 -10 170 l0 151 -51 0 -51 0 4 -157z"/> <path d="M2210 385 l0 -35 60 0 60 0 2 -167 3 -168 48 -3 47 -3 0 170 0 171 60 0 60 0 0 35 0 35 -170 0 -170 0 0 -35z"/> </g> </svg>',
'TIME' => '1416858687.10783'
}
},
'KL_Heizungsthermostat_Clima.measured-temp' => {
'dbLog' => {
'VALUE' => '20.4 °C',
'TIME' => '1416858892.07713'
}
},
'WZ_Wandthermostat_Climate.measured-temp' => {
'dbLog' => {
'VALUE' => '22.5 °C',
'TIME' => '1416858938.02947'
}
},
'BZ_Heizungsthermostat_Clima.desired-temp' => {
'dbLog' => {
'VALUE' => '17.0 °C',
'TIME' => '1416870615.74153'
}
},
'SZ_Heizungsthermostat_Clima.measured-temp' => {
'dbLog' => {
'VALUE' => '23.9 °C',
'TIME' => '1416858907.07198'
}
},
'BZ_Heizungsthermostat_Clima.ValvePosition' => {
'dbLog' => {
'VALUE' => '0.0 %',
'TIME' => '1416870615.73027'
}
},
'WZ_Wandthermostat_Climate.humidity' => {
'dbLog' => {
'VALUE' => '58.0 %',
'TIME' => '1416858938.05035'
}
},
'WZ_Heizungsthermostat_Clima.ValvePosition' => {
'dbLog' => {
'VALUE' => '41.0 %',
'TIME' => '1416858948.35549'
}
},
'BZ_Heizungsthermostat_Clima.controlMode' => {
'dbLog' => {
'VALUE' => '<svg
{Dumper $defs{name}} Teil 2
class="icon sani_heating_automatic green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="472pt" viewBox="0 0 468 472" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,472) scale(0.159184,-0.159184)" fill="green" stroke="none"> <path d="M1257 2951 c-57 -12 -70 -31 -75 -106 l-4 -65 -114 0 -114 0 0 45 c0 63 -22 113 -54 121 -15 3 -58 4 -96 2 -91 -5 -110 -22 -117 -107 l-6 -61 -112 0 -113 0 -7 62 c-11 89 -32 108 -125 108 -74 0 -123 -16 -134 -45 -3 -9 -6 -41 -6 -71 l0 -54 -68 0 c-96 0 -102 -8 -102 -137 0 -125 6 -133 103 -133 l67 0 0 -505 0 -505 -75 0 c-92 0 -95 -4 -95 -130 0 -124 4 -130 89 -130 l67 0 12 -62 c7 -38 20 -70 34 -85 21 -23 29 -25 105 -21 105 4 122 18 130 107 l6 61 113 0 114 0 0 -32 c0 -52 19 -106 43 -123 13 -9 44 -15 83 -15 114 0 144 25 144 120 l0 50 115 0 115 0 0 -41 c0 -52 24 -103 56 -118 32 -14 109 -13 154 2 42 15 60 47 60 110 l0 47 48 0 c27 0 57 7 70 16 20 14 22 23 22 119 0 125 -6 135 -86 135 l-54 0 0 500 0 500 49 0 c69 0 90 20 98 91 7 71 -3 144 -23 164 -10 10 -35 15 -70 15 l-54 0 0 38 c0 47 -16 107 -33 120 -17 14 -115 21 -160 13z m93 -936 l-1 -845 -34 0 -35 0 0 845 0 845 35 0 35 0 0 -845z m-1000 -5 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m500 0 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m-170 0 l0 -500 -115 0 -115 0 0 500 0 500 115 0 115 0 0 -500z m498 -2 l-3 -503 -112 -3 -113 -3 0 506 0 505 115 0 115 0 -2 -502z"/> <path d="M1644 2755 c-20 -31 -17 -206 4 -227 8 -8 46 -14 100 -16 117 -5 134 7 140 101 2 37 1 82 -2 101 -11 59 -26 66 -131 66 -90 0 -95 -1 -111 -25z m146 -110 c0 -32 -2 -35 -30 -35 -28 0 -30 3 -30 35 0 32 2 35 30 35 28 0 30 -3 30 -35z"/> <path d="M2665 1502 c-33 -4 -65 -11 -72 -15 -20 -13 -33 -77 -34 -172 -1 -49 -4 -80 -6 -68 -2 13 -16 32 -30 43 -23 18 -40 20 -158 20 -128 0 -132 -1 -156 -26 l-24 -26 0 -339 0 -339 28 -27 c27 -28 29 -28 156 -28 122 0 131 1 155 24 14 13 27 33 28 45 3 18 7 15 20 -16 9 -20 25 -41 36 -47 31 -16 236 -14 277 3 55 23 57 41 53 501 -3 424 -5 444 -45 459 -27 11 -162 15 -228 8z m175 -487 l0 -395 -90 0 -90 0 0 395 0 395 90 0 90 0 0 -395z m-380 -95 l0 -300 -90 0 -90 0 0 300 0 300 90 0 90 0 0 -300z"/> <path d="M1854 1150 c-41 -17 -54 -49 -55 -140 -1 -47 -4 -75 -6 -64 -2 12 -15 32 -29 45 -22 21 -37 24 -131 27 -123 5 -175 -7 -201 -45 -15 -24 -17 -50 -14 -208 2 -99 5 -188 8 -198 11 -35 57 -47 179 -47 120 0 166 12 179 45 3 9 7 71 8 138 l2 122 5 -126 c4 -85 10 -131 20 -142 23 -28 82 -39 193 -35 96 3 109 5 132 27 l26 24 0 267 0 267 -26 24 c-24 22 -34 24 -147 26 -67 2 -132 -2 -143 -7z m226 -310 l0 -220 -90 0 -90 0 0 220 0 220 90 0 90 0 0 -220z m-390 -70 l0 -150 -85 0 -85 0 0 150 0 150 85 0 85 0 0 -150z"/> <path d="M2694 416 c-69 -30 -104 -99 -104 -203 0 -108 46 -182 125 -202 93 -23 173 22 200 113 57 192 -68 358 -221 292z m91 -62 c28 -11 45 -60 45 -133 0 -71 -12 -120 -33 -133 -7 -4 -26 -8 -44 -8 -50 0 -63 28 -63 138 0 85 2 95 25 117 25 26 41 30 70 19z"/> <path d="M1577 413 c-8 -15 -127 -381 -127 -393 0 -7 16 -10 47 -8 47 3 47 3 58 48 l11 45 61 3 61 3 7 -33 c14 -69 13 -68 66 -68 59 0 61 -21 -20 230 l-57 175 -51 3 c-28 2 -53 -1 -56 -5z m78 -162 c9 -35 14 -65 12 -68 -3 -2 -23 -3 -44 -1 l-40 3 20 73 c11 41 23 70 27 65 5 -4 16 -37 25 -72z"/> <path d="M1842 263 c4 -177 12 -205 67 -237 44 -26 142 -27 189 -2 53 27 62 63 62 241 l0 155 -45 0 -45 0 0 -144 c0 -182 -5 -196 -64 -196 -35 0 -48 5 -56 19 -5 11 -10 86 -10 170 l0 151 -51 0 -51 0 4 -157z"/> <path d="M2210 385 l0 -35 60 0 60 0 2 -167 3 -168 48 -3 47 -3 0 170 0 171 60 0 60 0 0 35 0 35 -170 0 -170 0 0 -35z"/> </g> </svg>',
'TIME' => '1416870615.75676'
}
},
'KL_Heizungsthermostat_Clima.controlMode' => {
'dbLog' => {
'VALUE' => '<svg class="icon sani_heating_automatic green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="472pt" viewBox="0 0 468 472" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,472) scale(0.159184,-0.159184)" fill="green" stroke="none"> <path d="M1257 2951 c-57 -12 -70 -31 -75 -106 l-4 -65 -114 0 -114 0 0 45 c0 63 -22 113 -54 121 -15 3 -58 4 -96 2 -91 -5 -110 -22 -117 -107 l-6 -61 -112 0 -113 0 -7 62 c-11 89 -32 108 -125 108 -74 0 -123 -16 -134 -45 -3 -9 -6 -41 -6 -71 l0 -54 -68 0 c-96 0 -102 -8 -102 -137 0 -125 6 -133 103 -133 l67 0 0 -505 0 -505 -75 0 c-92 0 -95 -4 -95 -130 0 -124 4 -130 89 -130 l67 0 12 -62 c7 -38 20 -70 34 -85 21 -23 29 -25 105 -21 105 4 122 18 130 107 l6 61 113 0 114 0 0 -32 c0 -52 19 -106 43 -123 13 -9 44 -15 83 -15 114 0 144 25 144 120 l0 50 115 0 115 0 0 -41 c0 -52 24 -103 56 -118 32 -14 109 -13 154 2 42 15 60 47 60 110 l0 47 48 0 c27 0 57 7 70 16 20 14 22 23 22 119 0 125 -6 135 -86 135 l-54 0 0 500 0 500 49 0 c69 0 90 20 98 91 7 71 -3 144 -23 164 -10 10 -35 15 -70 15 l-54 0 0 38 c0 47 -16 107 -33 120 -17 14 -115 21 -160 13z m93 -936 l-1 -845 -34 0 -35 0 0 845 0 845 35 0 35 0 0 -845z m-1000 -5 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m500 0 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m-170 0 l0 -500 -115 0 -115 0 0 500 0 500 115 0 115 0 0 -500z m498 -2 l-3 -503 -112 -3 -113 -3 0 506 0 505 115 0 115 0 -2 -502z"/> <path d="M1644 2755 c-20 -31 -17 -206 4 -227 8 -8 46 -14 100 -16 117 -5 134 7 140 101 2 37 1 82 -2 101 -11 59 -26 66 -131 66 -90 0 -95 -1 -111 -25z m146 -110 c0 -32 -2 -35 -30 -35 -28 0 -30 3 -30 35 0 32 2 35 30 35 28 0 30 -3 30 -35z"/> <path d="M2665 1502 c-33 -4 -65 -11 -72 -15 -20 -13 -33 -77 -34 -172 -1 -49 -4 -80 -6 -68 -2 13 -16 32 -30 43 -23 18 -40 20 -158 20 -128 0 -132 -1 -156 -26 l-24 -26 0 -339 0 -339 28 -27 c27 -28 29 -28 156 -28 122 0 131 1 155 24 14 13 27 33 28 45 3 18 7 15 20 -16 9 -20 25 -41 36 -47 31 -16 236 -14 277 3 55 23 57 41 53 501 -3 424 -5 444 -45 459 -27 11 -162 15 -228 8z m175 -487 l0 -395 -90 0 -90 0 0 395 0 395 90 0 90 0 0 -395z m-380 -95 l0 -300 -90 0 -90 0 0 300 0 300 90 0 90 0 0 -300z"/> <path d="M1854 1150 c-41 -17 -54 -49 -55 -140 -1 -47 -4 -75 -6 -64 -2 12 -15 32 -29 45 -22 21 -37 24 -131 27 -123 5 -175 -7 -201 -45 -15 -24 -17 -50 -14 -208 2 -99 5 -188 8 -198 11 -35 57 -47 179 -47 120 0 166 12 179 45 3 9 7 71 8 138 l2 122 5 -126 c4 -85 10 -131 20 -142 23 -28 82 -39 193 -35 96 3 109 5 132 27 l26 24 0 267 0 267 -26 24 c-24 22 -34 24 -147 26 -67 2 -132 -2 -143 -7z m226 -310 l0 -220 -90 0 -90 0 0 220 0 220 90 0 90 0 0 -220z m-390 -70 l0 -150 -85 0 -85 0 0 150 0 150 85 0 85 0 0 -150z"/> <path d="M2694 416 c-69 -30 -104 -99 -104 -203 0 -108 46 -182 125 -202 93 -23 173 22 200 113 57 192 -68 358 -221 292z m91 -62 c28 -11 45 -60 45 -133 0 -71 -12 -120 -33 -133 -7 -4 -26 -8 -44 -8 -50 0 -63 28 -63 138 0 85 2 95 25 117 25 26 41 30 70 19z"/> <path d="M1577 413 c-8 -15 -127 -381 -127 -393 0 -7 16 -10 47 -8 47 3 47 3 58 48 l11 45 61 3 61 3 7 -33 c14 -69 13 -68 66 -68 59 0 61 -21 -20 230 l-57 175 -51 3 c-28 2 -53 -1 -56 -5z m78 -162 c9 -35 14 -65 12 -68 -3 -2 -23 -3 -44 -1 l-40 3 20 73 c11 41 23 70 27 65 5 -4 16 -37 25 -72z"/> <path d="M1842 263 c4 -177 12 -205 67 -237 44 -26 142 -27 189 -2 53 27 62 63 62 241 l0 155 -45 0 -45 0 0 -144 c0 -182 -5 -196 -64 -196 -35 0 -48 5 -56 19 -5 11 -10 86 -10 170 l0 151 -51 0 -51 0 4 -157z"/> <path d="M2210 385 l0 -35 60 0 60 0 2 -167 3 -168 48 -3 47 -3 0 170 0 171 60 0 60 0 0 35 0 35 -170 0 -170 0 0 -35z"/> </g> </svg>',
'TIME' => '1416858892.11453'
}
},
'SZ_Heizungsthermostat_Clima.controlMode' => {
'dbLog' => {
'VALUE' => '<svg class="icon sani_heating_automatic green" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="472pt" viewBox="0 0 468 472" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,472) scale(0.159184,-0.159184)" fill="green" stroke="none"> <path d="M1257 2951 c-57 -12 -70 -31 -75 -106 l-4 -65 -114 0 -114 0 0 45 c0 63 -22 113 -54 121 -15 3 -58 4 -96 2 -91 -5 -110 -22 -117 -107 l-6 -61 -112 0 -113 0 -7 62 c-11 89 -32 108 -125 108 -74 0 -123 -16 -134 -45 -3 -9 -6 -41 -6 -71 l0 -54 -68 0 c-96 0 -102 -8 -102 -137 0 -125 6 -133 103 -133 l67 0 0 -505 0 -505 -75 0 c-92 0 -95 -4 -95 -130 0 -124 4 -130 89 -130 l67 0 12 -62 c7 -38 20 -70 34 -85 21 -23 29 -25 105 -21 105 4 122 18 130 107 l6 61 113 0 114 0 0 -32 c0 -52 19 -106 43 -123 13 -9 44 -15 83 -15 114 0 144 25 144 120 l0 50 115 0 115 0 0 -41 c0 -52 24 -103 56 -118 32 -14 109 -13 154 2 42 15 60 47 60 110 l0 47 48 0 c27 0 57 7 70 16 20 14 22 23 22 119 0 125 -6 135 -86 135 l-54 0 0 500 0 500 49 0 c69 0 90 20 98 91 7 71 -3 144 -23 164 -10 10 -35 15 -70 15 l-54 0 0 38 c0 47 -16 107 -33 120 -17 14 -115 21 -160 13z m93 -936 l-1 -845 -34 0 -35 0 0 845 0 845 35 0 35 0 0 -845z m-1000 -5 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m500 0 l0 -840 -35 0 -35 0 0 840 0 840 35 0 35 0 0 -840z m-170 0 l0 -500 -115 0 -115 0 0 500 0 500 115 0 115 0 0 -500z m498 -2 l-3 -503 -112 -3 -113 -3 0 506 0 505 115 0 115 0 -2 -502z"/> <path d="M1644 2755 c-20 -31 -17 -206 4 -227 8 -8 46 -14 100 -16 117 -5 134 7 140 101 2 37 1 82 -2 101 -11 59 -26 66 -131 66 -90 0 -95 -1 -111 -25z m146 -110 c0 -32 -2 -35 -30 -35 -28 0 -30 3 -30 35 0 32 2 35 30 35 28 0 30 -3 30 -35z"/> <path d="M2665 1502 c-33 -4 -65 -11 -72 -15 -20 -13 -33 -77 -34 -172 -1 -49 -4 -80 -6 -68 -2 13 -16 32 -30 43 -23 18 -40 20 -158 20 -128 0 -132 -1 -156 -26 l-24 -26 0 -339 0 -339 28 -27 c27 -28 29 -28 156 -28 122 0 131 1 155 24 14 13 27 33 28 45 3 18 7 15 20 -16 9 -20 25 -41 36 -47 31 -16 236 -14 277 3 55 23 57 41 53 501 -3 424 -5 444 -45 459 -27 11 -162 15 -228 8z m175 -487 l0 -395 -90 0 -90 0 0 395 0 395 90 0 90 0 0 -395z m-380 -95 l0 -300 -90 0 -90 0 0 300 0 300 90 0 90 0 0 -300z"/> <path d="M1854 1150 c-41 -17 -54 -49 -55 -140 -1 -47 -4 -75 -6 -64 -2 12 -15 32 -29 45 -22 21 -37 24 -131 27 -123 5 -175 -7 -201 -45 -15 -24 -17 -50 -14 -208 2 -99 5 -188 8 -198 11 -35 57 -47 179 -47 120 0 166 12 179 45 3 9 7 71 8 138 l2 122 5 -126 c4 -85 10 -131 20 -142 23 -28 82 -39 193 -35 96 3 109 5 132 27 l26 24 0 267 0 267 -26 24 c-24 22 -34 24 -147 26 -67 2 -132 -2 -143 -7z m226 -310 l0 -220 -90 0 -90 0 0 220 0 220 90 0 90 0 0 -220z m-390 -70 l0 -150 -85 0 -85 0 0 150 0 150 85 0 85 0 0 -150z"/> <path d="M2694 416 c-69 -30 -104 -99 -104 -203 0 -108 46 -182 125 -202 93 -23 173 22 200 113 57 192 -68 358 -221 292z m91 -62 c28 -11 45 -60 45 -133 0 -71 -12 -120 -33 -133 -7 -4 -26 -8 -44 -8 -50 0 -63 28 -63 138 0 85 2 95 25 117 25 26 41 30 70 19z"/> <path d="M1577 413 c-8 -15 -127 -381 -127 -393 0 -7 16 -10 47 -8 47 3 47 3 58 48 l11 45 61 3 61 3 7 -33 c14 -69 13 -68 66 -68 59 0 61 -21 -20 230 l-57 175 -51 3 c-28 2 -53 -1 -56 -5z m78 -162 c9 -35 14 -65 12 -68 -3 -2 -23 -3 -44 -1 l-40 3 20 73 c11 41 23 70 27 65 5 -4 16 -37 25 -72z"/> <path d="M1842 263 c4 -177 12 -205 67 -237 44 -26 142 -27 189 -2 53 27 62 63 62 241 l0 155 -45 0 -45 0 0 -144 c0 -182 -5 -196 -64 -196 -35 0 -48 5 -56 19 -5 11 -10 86 -10 170 l0 151 -51 0 -51 0 4 -157z"/> <path d="M2210 385 l0 -35 60 0 60 0 2 -167 3 -168 48 -3 47 -3 0 170 0 171 60 0 60 0 0 35 0 35 -170 0 -170 0 0 -35z"/> </g> </svg>',
'TIME' => '1416858907.10929'
}
},
'WZ_Wandthermostat_Climate.desired-temp' => {
'dbLog' => {
'VALUE' => '22.5 °C',
'TIME' => '1416858938.03996'
}
}
}
},
'DEF' => '<%sani_heating>,<Ist>,<Soll>,<Luftfeuchtigkeit>,<Ventil>,<Modus>,<Temperaturprofil>,<Lock>
WZ_W.*Climate$:measured-temp,desired-temp,humidity,<>,controlMode,state@{\'dummy_WZ_Heizung_Schalter\'},R-btnLock@{getDevice($DEVICE)}
WZ_H.*Clima$:<>,<>,<>,ValvePosition,<>,<>,R-btnLock@{getDevice($DEVICE)}
SZ_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{\'dummy_SZ_Heizung_Schalter\'},R-btnLock@{getDevice($DEVICE)}
KL_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{\'dummy_KL_Heizung_Schalter\'},R-btnLock@{getDevice($DEVICE)}
BZ_H.*Clima$:measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{\'dummy_BZ_Heizung_Schalter\'},R-btnLock@{getDevice($DEVICE)}',
'DEVICES2' => [
[
'<%sani_heating>,<Ist>,<Soll>,<Luftfeuchtigkeit>,<Ventil>,<Modus>,<Temperaturprofil>,<Lock>'
],
[
'WZ_Wandthermostat_Climate',
'measured-temp,desired-temp,humidity,<>,controlMode,state@{\'dummy_WZ_Heizung_Schalter\'},R-btnLock@{getDevice($DEVICE)}'
],
[
'WZ_Heizungsthermostat_Clima',
'<>,<>,<>,ValvePosition,<>,<>,R-btnLock@{getDevice($DEVICE)}'
],
[
'SZ_Heizungsthermostat_Clima',
'measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{\'dummy_SZ_Heizung_Schalter\'},R-btnLock@{getDevice($DEVICE)}'
],
[
'KL_Heizungsthermostat_Clima',
'measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{\'dummy_KL_Heizung_Schalter\'},R-btnLock@{getDevice($DEVICE)}'
],
[
'BZ_Heizungsthermostat_Clima',
'measured-temp,desired-temp,<>,ValvePosition,controlMode,state@{\'dummy_BZ_Heizung_Schalter\'},R-btnLock@{getDevice($DEVICE)}'
],
[
'dummy_WZ_Heizung_Schalter',
'state'
],
[
'WZ_Wandthermostat',
'R-btnLock'
],
[
'WZ_Heizungsthermostat',
'R-btnLock'
],
[
'dummy_SZ_Heizung_Schalter',
'state'
],
[
'SZ_Heizungsthermostat',
'R-btnLock'
],
[
'dummy_KL_Heizung_Schalter',
'state'
],
[
'KL_Heizungsthermostat',
'R-btnLock'
],
[
'dummy_BZ_Heizung_Schalter',
'state'
],
[
'BZ_Heizungsthermostat',
'R-btnLock'
]
],
'CONTENT' => {
'BZ_Heizungsthermostat_Clima' => 1,
'SZ_Heizungsthermostat_Clima' => 1,
'WZ_Heizungsthermostat_Clima' => 1,
'WZ_Wandthermostat_Climate' => 1,
'KL_Heizungsthermostat_Clima' => 1
},
'helper' => {
'mapping' => '{ rgMapping($DEVICE,$READING,$VALUE); }',
'nameStyle' => 'style="font-weight:bold"',
'commands' => {
'R-btnLock' => 'trigger ntfy_toggleBtnLock $DEVICE'
},
'DEF' => undef,
'valueFormat' => '{ rgValueFormat($DEVICE,$READING,$VALUE); }',
'valueIcon' => '{ rgValueIcon($DEVICE,$READING,$VALUE); }',
'valueStyle' => '{ rgValueStyle($DEVICE,$READING,$VALUE); }'
},
'CONTENT2' => {
'BZ_Heizungsthermostat' => 1,
'WZ_Wandthermostat' => 1,
'dummy_SZ_Heizung_Schalter' => 1,
'WZ_Heizungsthermostat' => 1,
'dummy_WZ_Heizung_Schalter' => 1,
'SZ_Heizungsthermostat' => 1,
'dummy_KL_Heizung_Schalter' => 1,
'dummy_BZ_Heizung_Schalter' => 1,
'KL_Heizungsthermostat' => 1
},
'NR' => 90,
'NAME' => 'rg_Heizungsstatus',
'CFGFN' => '',
'TYPE' => 'readingsGroup',
'DEVICES' => [
$VAR1->{'DEVICES2'}[0],
$VAR1->{'DEVICES2'}[1],
$VAR1->{'DEVICES2'}[2],
$VAR1->{'DEVICES2'}[3],
$VAR1->{'DEVICES2'}[4],
$VAR1->{'DEVICES2'}[5]
],
'CHANGETIME' => [],
'STATE' => 'Initialized',
'fhem' => {
'last_update' => '1416858143.11551',
'lastDefChange' => 7
},
'NTFY_ORDER' => '50-rg_Heizungsstatus'
};
Zitat von: Doggiebert am 24 November 2014, 23:37:14
ja - nimm den Space raus...
Moin,
mit dem Space ist es nicht getan:
Das sieht dann so aus, wie im Bild. Das Reading vom 2. Device wird abgeschnitten...
Christian
Zitat von: Spartacus am 25 November 2014, 12:29:41
mit dem Space ist es nicht getan:
Was du möchtest ist ein Reading aus einem anderen Device anzeigen lassen
http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices (http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices)
Grüße
Igami
Hallo igami,
ja, dass hatte ich auch schon gefunden, aber ich verstehe die Syntax in dem Wiki nicht!
thermostat.Wz: blabla... ist klar, dass ist jweils das Thermostatdevice in den einzelnen Zeilen!
Aber wo ist das zweite Device in der Zeile? Das muss irgendwie mit dem "@" zusammenhängen, verstehe es aber nicht. Meinde beiden Devices heißen:
1. Device: GA..TF.DS18B20.cdm:
2. Device: GH..TF.DS18B20.cdm:
Das Reading heisst dann jeweils "temperature"
Christian
Zitat von: Spartacus am 25 November 2014, 12:53:28
thermostat.Wz: blabla... ist klar, dass ist jweils das Thermostatdevice in den einzelnen Zeilen!
Und am Ende steht battery@{valveOfDevice($DEVICE)}
Zitat von: commandref
regex can be of the form <regex>@device to use readings from a different device
In deinem Fall also
GA..TF.DS18B20.cdm:<%temp_outside>,<Außen>,temperature,<%temp_inside>,<Innen>,temperature@GH..TF.DS18B20.cdm
Grüße
Igami
Hallo,
ach so!Jetzt verstehe ich!
Danke für den Tipp! Im ersten Moment erscheint die Syntax nicht logisch, aber das liegt wahrscheinlich an meinen Perl Kenntnissen.
Auf jeden Fall funzt das jetzt wie gewünscht!
Danke,
Spartacus
ich hole mir aus einem anderen Modul (DOIF) Zeiten von den dortigen Timern, die ich ganz gerne auf der Weboberfläche anzeigen lassen würde. Im Prinzip funktioniert es auch nur gefällt mir die gesamte Anzeige nicht (siehe Screenshot)
Evtl. ist es nur eine einfache Umstellung oder gar aufwendiger, im Wiki hatte ich mir schon einige Beispiele angeschaut, aber ich bekomme das nicht so hin wie es dort beschrieben ist.
hier mal der Code meiner RG:
define ZeitenRG readingsGroup <Wegbeleuchtung>,<Wochentag>,<Wochenende> di_Aussenlampe
attr ZeitenRG alias Weg Beleuchtung
attr ZeitenRG group Zeiten
attr ZeitenRG mapping { 'timer_1_c1' => 'Weg vorn & Gerätehaus EIN WoTag', 'timer_2_c1' => 'Weg vorn & Gerätehaus EIN WoEnde', 'timer_3_c2' => 'Umschaltung Weg Hinten EIN', 'timer_4_c3' => 'Weg Hinten AUS WoEnde', 'timer_5_c3' => 'Weg Hinten AUS WoTag' }
attr ZeitenRG nameStyle style="color:lightgreen"
attr ZeitenRG room Licht Eingang
#{substr((ReadingsVal( "di_Aussenlampe", "timer_1_c1","")),0,19)},<Zeit>
wie man auf dem Screenshot sieht gefällt mir zum einen nicht das er immer di_Aussenlampe:state anzeigt das brauche ich gar nicht.
Das nächste ich würde gern so wie es auch schon in der Überschrift zu sehen ist die Wochentage und das Wochenende getrennt anzeigen unter Wochenende zeigt er momentan die Aktualisierungszeit an, was ich auch nicht brauche. Dann könnte ich auch die Bezeichnung WoTag und WoEnde vorne heraus nehmen
Und zu guter letzt zeigt er mir die Tage hinter den Timern an, ich weiß das ich dies mit Perlcode (substr) wegfiltern kann, aber ich weiß nicht wie man dies in den Code einbaut, falls es überhaupt geht...
Einige Fragen die ich nicht gelöst bekomme
Vielleicht kann mir ja jemand ein bisschen auf die Sprünge helfen:
Wie schaffe ich eine dynamische rg die sich auf sich selbst bezieht?
Ich möchte alle Devices aus dem Raum in dem sich die rg befindet auflisten, inetwa so:
define rg_test readingsgroup room={AttrVal($name,'room','')}
Das es so nicht geht konnte ich leicht herausfinden. ;D
Grüße
Igami
Edit: *hmpf* man kann ja den Raum gar nicht als <device> nehmen, sondern nur INTERNALS :'(
Vielleicht lässt sich da ja noch was machen, sodass man die gleichen devspec wie bei z.B. 'list' angeben kann?
Hallo Andre,
habe gerade das Modul für mich endeckt ;) echt cool, Danke dafür !
ich habe ein kleines Problem und schon im WIKI und commandref gesucht... find aber nix.
ich habe ein Device
define Vito200 VCONTROL.....
attr Vito200 alias Heizung
dann die readingsGroup
define Heizungsstatus readingsGroup <%viessmann>,<Status>,<Akt.Datum> Vito200
und bekomme jetzt immer den Namen des Device vor dem Readings angezeigt!
Heizung:Brenner
Heizung:BrennerLeistung
Heizung:BrennerStarts
würde gern den Namen bzw. alias ausblenden wollen.
Danke für einen Tipp
klaus
Ich habe ein kleines Problem mit den Updates in der readingsgroup via longpoll.
Sollte ein automatisches Update im Webinterface funktionieren, wenn ich ein anderes Device mittels
<regex>@{perl}
angebe?
<%temperature_humidity>,<Bat>,<Temp>,<Hum>,<DP>,<Lüften>,<Window> .*.TF:battery,temperature,humidity,dewpoint,fan,!onoff@{$DEVICE=~s/.TF/.MAX.FK/;$DEVICE;}
Alle readings werden aktualisiert, nur die letzte Spalte nicht (Fensterkontakt)
Gruß,
Gero
@dancatt: das sollte eigentlich wie bisher gehen. ich habe es mit ein paar einfachen readingsGroups nachgestellt und hatte keine probleme. kannst du bitte auch mal etwas einfaches definieren. z.b. nur define rg readingsGroup <abc>,<%on>
@moonsorrox: deine um state weg zu bekommen kannst du nostate setzen. um die zeiten in der letzen spalte weg zu bekommen kannst du notiere setzen. dein problem ist aber eigentlich das du eine readingsGroup hat die ein reading pro zeile anzeigt. was d möchtest sind mehrere readings pro zeile. das musst du dann auch mit kommt getrennt so hin schreiben. um die zeiten zu formatieren findest du hier ein beispiel: http://www.fhemwiki.de/wiki/ReadingsGroup#Enable.2FDisable_Button_am_Beispiel_eines_WeekdayTimer (http://www.fhemwiki.de/wiki/ReadingsGroup#Enable.2FDisable_Button_am_Beispiel_eines_WeekdayTimer)
@igami: das geht zur zeit aus zwei gründen nicht. zum einen kannst du wie du bemerkt hast kein attribut angeben und zum anderen ist an dieser stelle kein perl code erlaubt. ich muss mal überlegen wie man das lösen kann. bei deinem konkreten beispiel wüsste ich ab
gerne wozu :) wenn die readingsGroup alle devices im gleichen raum anzeigt hast du ja in diesem raum alles doppelt. einmal die normalen devices selber und einmal jedes device in der readingsGroup.
@kvo1: das geht über das mapping attribut. einfach auf $READING setzen. steht übrigens doch in der commandref :)
@gero: ja. das sollte genau so gehen. wie sehen deine device namen aus? bitte versuch es mal ohne das ! nur mit onoff@...
ich glaube ich habe da noch etwas vergessen. ab morgen ist die ! variante gefixed. wobei das ! in diesem zusammenhang eh überflüssig ist.
gruss
andre
@justme1966
vielen Dank, ich habe leider noch zwei Anzeigen die ich nicht wegbekomme
Die Zeiten hinten habe ich mit notime ausgeblendet und nostate hat den Status ausgeblendet das ist schon mal toll, was ich noch nicht wegbekommen habe ist die cmd_Event und cmd_nr Anzeige (siehe Screenshot)
Das mit der Formatierung habe ich mir gestern und heute schon im Wiki angeschaut und genau aus dieser die du vorgeschlagen hast hatte ich einiges probiert, aber leider nicht hinbekommen.
Ich werde mal weiter probieren.
Vielen Dank
Zitat von: justme1968 am 25 November 2014, 23:22:47
@gero: ja. das sollte genau so gehen. wie sehen deine device namen aus? bitte versuch es mal ohne das ! nur mit onoff@...
ich glaube ich habe da noch etwas vergessen. wenn es damit geht probier bitte mal die angehängte version. da sollte dann auch die ! variante gehen. wobei das ! in diesem zusammenhang eh überflüssig ist.
Zur Zeit verwende ich die aktuelle Variante, die mit dem normalen fhem update verteilt wird.
Eigentlich werden Readings von Temperatursensoren angezeigt, z.B. DG.KI.JA.TF. In der letzten Spalte wird der Status eines Fensterkontaktes angezeigt. In diesem Fall DG.KI.JA.MAX.FK.
Die Anzeige funktioniert. Alle Werte bis auf die letzte Spalte werden automatisch aktualisiert (sowohl in Chrome als auch in webviewControl). Erst bei einem Reload wird auch der Fensterstatus aktualisiert.
Das ! habe ich testweise eingefügt, um das neue Feature zu testen. Ich dachte, ich kann die readingsgroup damit dazu bewegen, dass der Hintergrund auch bei nicht vorhandenen Fensterkontakten bis zum rechten Rand korrekt dargestellt wird. Das Updateproblem habe ich aber auch ohne das !.
Eine weitere Beobachtung, die ich gemacht habe, ist, dass Definitionen in der Form <regex>@{perl} scheinbar das Device für die folgenden Spalten ändert. Vertauscht man z.B. in meinem Beispiel die letzten beiden Spalten, so wird das reading fan vom Temperatursensor nicht mehr gefunden, weil auch dort auf den modifizierten Devicenamen zugegriffen wird. Ist das ein undokumentiertes Feature, ein Bug oder habe ich etwas falsch verstanden?
Ich werde die angehängte Version heute testen.
Gruß,
Gero
@gero: die version die ich oben angehängt habe hätte vermutlich doch geholfen. ich habe den fix noch etwas erweitert und eingecheckt. die beiden probleme (fehlender longpll update und überschriebenes device) du gemeldet hattest kann ich nun mit dummys nicht mehr reproduzieren.
bitte schau mal ob dir der update morgen auch hilft.
das ! hilft tatsächlich um die letze spate zu füllen. vielleicht wäre aber ein valueFormat gut das den text auch wieder ausblendet wenn es das reading nicht gibt,
eine andere möglichkeit wäre das reading das es eventuell nicht gibt nicht in die letzte spalte zu stecken sondern irgendwo vorher und mit valueColumn sicher zu stellen das das reading das darauf folgt immer in der gleichen spalte anfängt. d.h. das die spalte mit dem fehlenden reading übersprungen wird.
gruss
andre
@moonsorrox: ich glaube du gehst deine readingsGroup falsch an. du solltest sie von vorn herein so definieren das nur die devices drin sind die du auch drin haben willst. also z.b. auf TYPE=WeekdayTimer.
gruss
andre
Hallo Andre,
ich habe jetzt die aktuelle Version aus dem svn am laufen:
- longpoll funktioniert jetzt
- Devicenamen werden nicht mehr überschrieben
- Der ! Operand funktioniert nicht bei Angaben der Form reading@{perl}, bei denen der perl code ein ungültiges (nicht vorhandenes) Device zurückliefert. (ich denke Schuld ist die Zeile 603 next if ( !$h ))
Die ersten beiden Punkte, waren wichtig für mich. Der letzte noch nicht funktionierende Punkt, fällt unter die Kategorie Kosmetik. Zumindest sollte das Verhalten in der command reference erwähnt werden.
Das Auffüllen der Zeilen mittels valueFormat hatte ich bisher verwendet.
Gruß,
Gero
Zitat von: gero am 26 November 2014, 14:09:07
- Devicenamen werden nicht mehr überschrieben
Kann man das optional machen? Ich habe readingsGroups in denen ich das als feature nutze
define rg_12220_1 readingsgroup EIB_1106:?alias,state,set@EIB_2000,?alias,<%fts_shutter_up>,<%fts_shutter_down>
attr rg_12220_1 commands {'state' => 'trigger ntfy_rg $DEVICE $READING', 'rg_12220_1.fts_shutter_up' => 'set $DEVICE off', 'rg_12220_1.fts_shutter_down' => 'set $DEVICE on'}
das würde dann nicht mehr funktionieren. Das reading 'set' existiert natürlich nicht. Mit einem reset@$DEVICE kann man die Variable auch wieder resetten.
Zitat von: justme1968 am 25 November 2014, 23:22:47
@igami: das geht zur zeit aus zwei gründen nicht. zum einen kannst du wie du bemerkt hast kein attribut angeben und zum anderen ist an dieser stelle kein perl code erlaubt. ich muss mal überlegen wie man das lösen kann. bei deinem konkreten beispiel wüsste ich ab
gerne wozu :) wenn die readingsGroup alle devices im gleichen raum anzeigt hast du ja in diesem raum alles doppelt. einmal die normalen devices selber und einmal jedes device in der readingsGroup.
Um mir ein Interface für mein Smartphone zu schaffen, die anderen Gruppen werden dann mittels hiddengroup ausgeblendet. Ist aber bisher nur eine Idee. Die rg soll dann einfach in jeden Raum kopiert werden können ohne etwas ändern zu müssen :) Denke ich werde das aber eher mit einer sub lösen die mir die DEF der rg schreibt.
Grüße
Igami
Zitat von: igami am 26 November 2014, 14:41:18
Kann man das optional machen? Ich habe readingsGroups in denen ich das als feature nutze
Dann aber bitte als gut dokumentiertes Extrafeature mit einer anderen Syntax (haben wir noch Sonderzeichen übrig? ;))und nicht als Seiteneffekt.
Ich befürchte aber, die readingsGroup ist schon komplex genug. Wenn noch mehr Features einfließen, wird sie für einen normalen User langsam nicht mehr bedienbar.
Gruß,
Gero
@igami: für handy und co interessiert dich sicher auch das hier: http://www.fhemwiki.de/wiki/ReadingsGroup#readingsGroup_Styling_mit_CSS (http://www.fhemwiki.de/wiki/ReadingsGroup#readingsGroup_Styling_mit_CSS)
@gero:du kannst ab morgen ein ! auch vor dem mit @ angehängten device namen verwenden. du musst also !reading@!device schreiben.
gruss
andre
Zitat von: justme1968 am 26 November 2014, 16:14:44
@igami: für handy und co interessiert dich sicher auch das hier: http://www.fhemwiki.de/wiki/ReadingsGroup#readingsGroup_Styling_mit_CSS (http://www.fhemwiki.de/wiki/ReadingsGroup#readingsGroup_Styling_mit_CSS)
Auf jeden Fall!
Zitat von: justme1968 am 25 November 2014, 23:22:47
@dancatt: das sollte eigentlich wie bisher gehen. ich habe es mit ein paar einfachen readingsGroups nachgestellt und hatte keine probleme. kannst du bitte auch mal etwas einfaches definieren. z.b. nur define rg readingsGroup <abc>,<%on>
Ich werde mir das am Wochenende nochmal anschauen.
ZitatWenn noch mehr Features einfließen, wird sie für einen normalen User langsam nicht mehr bedienbar.
Die Befürchtung habe ich auch. Vielleicht kann man die ReadingsGroup ja ganz simpel halten und per Plugins erweitern.
Vielleicht kommt aber auch bald dieser Helper von dem Andre schonmal geredet hat.
http://forum.fhem.de/index.php/topic,27353.msg202515.html#msg202515 (http://forum.fhem.de/index.php/topic,27353.msg202515.html#msg202515)
die helper kommen. ein teil davon wir vermutlich in richtung templates gehen die wiederverwendbar sind.
aber unabhängig davon: einfache dinge sind mit readingsGroup einfach. komplizierte dinge sind immer noch einfacher als alles selber von hand zu machen.
wenn jemand ideen für vereinfachungen hat immer her damit...
gruss
andre
Zitat von: justme1968 am 26 November 2014, 11:29:08
du solltest sie von vorn herein so definieren das nur die devices drin sind die du auch drin haben willst. also z.b. auf TYPE=WeekdayTimer.
mmh ich verstehe grad gar nichts :-\
beschreib doch noch mal ganz genau was du machen möchtest und wie es aussehen soll. wie deine devices heissen und was es für devices sind. auch die die jetzt gerade mit drin und nicht drin sein sollen.
Hallo!
Ich möchte eine wertabhängige Farbgebung von einem Temperatursensor darstellen.
Allerdings haut das irgendwie nicht hin.
Ich bekomme bei einer Temp von 4.3°C den Wert in blau angezeigt.
Als valueStyle hab ich folgendes eingegeben:
{ if($READING eq "temperature" && $VALUE > 17){ 'style="color:green"' }elsif( $READING eq "temperature" && $VALUE <= 17 ){ 'style="color:blue"' }elsif( $READING eq "temperature" && $VALUE <= 10 ){ 'style="color:yellow"' }elsif( $READING eq "temperature" && $VALUE <= 4 ){ 'style="color:orange"' }elsif( $READING eq "temperature" && $VALUE <= 0 ){ 'style="color:red"' }else{ 'style="color:gray"' } }
Wo liegt da mein Fehler?
Mit anderen Tempwerten und nur 3 Farben funktioniert es bei anderen Sensoren wunderbar.
Naja, 4.3 ist eben auch kleiner als 17.
Dreh deine Bedingungen um und fang bei dem kleinsten Wert an.
Gruß,
Gero
Alles klar, Danke!
Jetzt funktioniert es.
Zitat von: justme1968 am 26 November 2014, 19:19:32
beschreib doch noch mal ganz genau was du machen möchtest und wie es aussehen soll. wie deine devices heissen und was es für devices sind. auch die die jetzt gerade mit drin und nicht drin sein sollen.
also ich möchte aus einem DOIF Modul die Zeiten in einer kleinen Übersicht anzeigen lassen. Momentan habe ich dort in dem Modul 5 Timer drin, (es kommen später noch welche dazu)
Diese Zeiten möchte ich getrennt nach Wochentag und Wochenende anzeigen lassen und diese sollen wie schon oben auf den Screenshots zu sehen eine Bezeichnung haben, dies klappt ja auch schon zum Teil, nur was nicht klappt ist die Anzeige getrennt nach Wochentag und Wochenende, da habe ich etliche Versuche hinter mir und aufgegeben.
Es sollen also 3 Spalten sein
1. Spalte der Alias Name 2. Spalte Zeiten Wochentag 3. Spalte Zeiten Wocheende
Das Devices heißt di_Aussenlampe (später kommt noch eines dazu di_zufall_Aussenlampe ist aber noch nicht fertig)
hier mal der Code dazu:
define di_Aussenlampe DOIF ( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",1200,"17:00","22:20")}|12345] or [{sunset("CIVIL",800,"17:00","22:20")}|06]))\
(set WegLampe_Sw_01 on)\
DOELSEIF ( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",9000,"19:00","22:20")}|0123456]))\
(set WegLampe_Sw_01 off,set WegLampe_Sw_02 on)\
DOELSEIF ([Zeitsteuerung] eq "Dämmerung" and ([00:15|01234] or [01:15|56]))\
(set WegLampe_Sw_02 off)\
attr di_Aussenlampe room Automation
Ein list auf das device sieht so aus:
Internals:
CFGFN ./FHEM/automation.cfg
DEF ( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",1200,"17:00","22:20")}|12345] or [{sunset("CIVIL",800,"17:00","22:20")}|06]))
(set WegLampe_Sw_01 on)
DOELSEIF ( [Zeitsteuerung] eq "Dämmerung" and ([{sunset("CIVIL",9000,"19:00","22:20")}|0123456]))
(set WegLampe_Sw_01 off,set WegLampe_Sw_02 on)
DOELSEIF ([Zeitsteuerung] eq "Dämmerung" and ([00:15|01234] or [01:15|56]))
(set WegLampe_Sw_02 off)
NAME di_Aussenlampe
NR 1997
NTFY_ORDER 50-di_Aussenlampe
STATE cmd_3
TYPE DOIF
Readings:
2014-11-27 00:15:00 cmd_event timer_4
2014-11-27 00:15:00 cmd_nr 3
2014-11-27 00:15:00 state cmd_3
2014-11-27 01:12:12 timer_1_c1 27.11.2014 17:14:47|12345
2014-11-27 01:12:12 timer_2_c1 27.11.2014 17:08:07|06
2014-11-27 01:12:12 timer_3_c2 27.11.2014 19:24:47|0123456
2014-11-27 01:12:12 timer_4_c3 28.11.2014 00:15:00|01234
2014-11-27 01:15:00 timer_5_c3 28.11.2014 01:15:00|56
Condition:
0 InternalDoIf('Zeitsteuerung','STATE','') eq "Dämmerung" and (DOIF_time_once($hash->{timer}{0},$wday,"12345") or DOIF_time_once($hash->{timer}{1},$wday,"06"))
1 InternalDoIf('Zeitsteuerung','STATE','') eq "Dämmerung" and (DOIF_time_once($hash->{timer}{2},$wday,"0123456"))
2 InternalDoIf('Zeitsteuerung','STATE','') eq "Dämmerung" and (DOIF_time_once($hash->{timer}{3},$wday,"01234") or DOIF_time_once($hash->{timer}{4},$wday,"56"))
Days:
0 12345
1 06
2 0123456
3 01234
4 56
Devices:
0 Zeitsteuerung
1 Zeitsteuerung
2 Zeitsteuerung
all Zeitsteuerung
Do:
0 set WegLampe_Sw_01 on
1 set WegLampe_Sw_01 off,set WegLampe_Sw_02 on
2 set WegLampe_Sw_02 off
Helper:
last_timer 5
sleeptimer -1
Internals:
0 Zeitsteuerung:STATE
1 Zeitsteuerung:STATE
2 Zeitsteuerung:STATE
all Zeitsteuerung:STATE
Readings:
Realtime:
0 17:14:47
1 17:08:07
2 19:24:47
3 00:15:00
4 01:15:00
State:
Time:
0 {sunset("CIVIL",1200,"17:00","22:20")}
1 {sunset("CIVIL",800,"17:00","22:20")}
2 {sunset("CIVIL",9000,"19:00","22:20")}
3 00:15:00
4 01:15:00
Timecond:
0 0
1 0
2 1
3 2
4 2
Timer:
0 0
1 0
2 0
3 0
4 0
Timerfunc:
Timers:
0 0 1
1 2
2 3 4
Attributes:
room Automation
Die Readingsgroup sieht momentan so aus:
define ZeitenRG readingsGroup <Wegbeleuchtung>,<Wochentag>,<Wochenende> di_Aussenlampe
attr ZeitenRG alias Weg Beleuchtung
attr ZeitenRG group Zeiten
attr ZeitenRG mapping { 'timer_1_c1' => 'Weg vorn & Gerätehaus EIN WoTag', 'timer_2_c1' => 'Weg vorn & Gerätehaus EIN WoEnde', 'timer_3_c2' => 'Umschaltung Weg Hinten EIN', 'timer_4_c3' => 'Weg Hinten AUS WoEnde', 'timer_5_c3' => 'Weg Hinten AUS WoTag' }
attr ZeitenRG nameStyle style="color:lightgreen"
attr ZeitenRG nostate 1
attr ZeitenRG notime 1
attr ZeitenRG room Licht Eingang
#{substr((ReadingsVal( "di_Aussenlampe", "timer_1_c1","")),0,19)},<Zeit>
so langsam verstehe ich was du möchtest...
ich war davon ausgegangen das du WeekdayTimer verwendest um deine lampen zu steuern.
das problem beim DOIF ansatz ist das DOIF keine feste zuordnung zwischen timer und der von dir semantisch damit verbunden Aufgabe hat. wenn du die reihenfolge in deinem DOIF define änderst macht timer1 plötzlich etwas anderes. d.h. du vermischst in einem device unterschiedliche logische aufgaben die du zwar kennst, aber die dem device nicht anzusehen sind, und möchtest diese dann mehr oder minder automatisch wieder auseinander dröseln.
readingsGroup ist dazu ausgelegt starre zusammenhänge immer wider gleich darzustellen. d.h. das gleiche reading aus unterschiedlichen devices in einer tabelle gleich anzuzeigen. du hast aber ein device mit unterschiedlichen readings die gleich dargestellt werden sollen. das passt so nicht richtig und deshalb deine schwierigkeit das abzubilden.
was spricht denn dagegen pro aufgabe einen eigen (Weekday)Timer zu haben (oder von mir aus auch ein DOIF)? dann ist es kein problem eine readingsGroup zu bauen die für alle timer jeweils den alias als beschhreibung der aufgabe anzeigt und nur noch die zeiten trennt. d.h. du hast mehrere devices die mit gleichem reading die gleich dargestellt werden sollen.
die readingsGroup würde dann etwa so aussehen:efine ZeitenRG readingsGroup <Wegbeleuchtung>,<Wochentag>,<Wochenende> TYPE=DOIF:timer.*
attr ZeitenRG mapping $ALIAS
attr ZeitenRG valueFormat formatTimer($DEVICE,$READING)
und in formatTimer machst du die komplette formatierung.
gruss
andre
vielen Dank andré das du dir soviel Mühe gibst mir zu helfen.
Ich werde dies nachher mal probieren umzusetzen, mal schauen was dabei raus kommt.
Das DOIF wollte ich eigentlich so lassen, da es jetzt auch mit Hilfe des Forums sehr gut seit 3 Tagen läuft, wenn ich mir jetzt mal so das List vom DOIF anschaue sehe ich so einige Readings
Realtime:
0 17:14:47
1 17:08:07
2 19:24:47
3 00:15:00
4 01:15:00
mit denen man eigentlich etwas anfangen könnte, naja ich werde mal noch weiter tüfteln... und fragen ;)
Danke nochmals... :D
das sind keine readings sondern internals an die du nicht direkt ran kommst und die sich ändern wenn am DOIF modul intern etwas geändert wird.
du musst auch bei jedem neuen timer den du dem einen bestehendesn DOIF hinzufügst wieder deine readingsGroup anpassen weil ein neues reading für den timer hinzu kommt wieder mit einem neuen namen und du musst wieder die zuordnung machen wischen reading und benennung. du hast also mindestens drei stellen mit verteilter information die du immer von hand synchron halten musst.
ich glaube wirklich das du dir einen gefallen tust wenn du nicht alle timer ins gleiche device packst sondern pro timer bzw. eigenständiger aufgabe einen eigenen timer verwendest. egal ob das DOIF oder WeekdayTimer ist. das macht es auch für dich langfristig viel einfachere wartbar. du kannst z.b. jeden timer getrennt per disable deaktivieren wenn manche nur im winter gebraucht werden. du kannst dann z.b. den alias oder das comment attribut jedes timers verwenden um z.b. den titel unter der er in der readingsGroup angezeigt werden soll oder andere individuelle zusatz information abzulegen. das alles (und noch mehr) geht nicht wenn du alles in ein einziges device mit einer riesen schlage von else zweigen verpackst.
es ist immer einfacher zuerst sauber zu trennen (hier nach zweck des timers) und dann automatisch zusammen zu fassen als erst mal alles in einen topf zu schmeißen (ein timer mit dutzenden von bedingungen die eigentlich garnierst miteinander zu tun haben) und dann zu versuchen das automatisch wieder zu trennen.
gruss
andre
Ok also heute Abend wird es jede Menge zu basteln geben... die Timer die noch dazu kommen die kommen in ein eigenes Devices. Das momentane device hört ja auf den Namen di_Aussenlampe, dass nächste dann di_Aussenlampe_zufall, dass hatte ich schon mal so getrennt... Das meintest du sicher..?
Habe nur noch keine DEF die mir zusagt, soll ja ein Zufallsschalter werden, aber ich denke es wird der RandomTimer, der gefällt mir am besten...!
Zitat von: justme1968 am 25 November 2014, 23:22:47
@dancatt: das sollte eigentlich wie bisher gehen. ich habe es mit ein paar einfachen readingsGroups nachgestellt und hatte keine probleme. kannst du bitte auch mal etwas einfaches definieren. z.b. nur define rg readingsGroup <abc>,<%on>
Ich habe das Problem gefunden.
Die Ermittlung des ValueFormates habe in in die Utils ausgelagert. Als Default wird immer $VALUE zurückgeliefert. Dies könnte auch null oder sonst was sein. Wenn ich dies entferne dann funzt alles wieder. Dieses Verhalten hatte ich zumindest mal nicht vor dem Update.
sub rgValueFormat($$$)
{
my($DEVICE,$READING,$VALUE) = @_;
my $TYPE = getType($DEVICE);
Log 3, "rgValueFormat() TYPE: '".$TYPE."' DEVICE: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";
if($TYPE eq "CUL_HM") {
return "%0.1f °C" if($READING eq "desired-temp");
return "%0.1f °C" if($READING eq "measured-temp");
return "%0.1f %%" if($READING eq "humidity");
return "%0.1f %%" if ($READING eq "ValvePosition");
# Falls beide Readings existieren und der aktuelle Reading = "battery", dann diesen ignorieren
return undef if( $READING eq "battery" && ReadingsVal($DEVICE,"batteryLevel", undef) );
}
elsif ($TYPE eq "SYSMON") {
return "%0.1f °C" if($READING eq "cpu_temp_avg");
return "%0.1f MHz" if($READING eq "cpu1_freq");
}
elsif ($TYPE eq "holiday") {
if ($DEVICE eq "holiday_Abfall") {
}
}
elsif ($TYPE eq "PRESENCE") {
}
return $VALUE;
}
Da das Posting im Update Thread wohl untergegangen ist hier nochmal meine Anfrage:
Am Ende von readingsGroup_2html kommen folgende zwei Zeilen:
$ret .= sprintf("<tr class=\"%s\">", ($row&1)?"odd5":"even");
$ret .= "<td colspan=\"99\"><div style=\"color:#ff8888;text-align:center\">updates disabled</div></td></tr>" if( $disable > 0 );
Wenn ich das richtig verstehe öffnet die erste eine neue Tabellen-Zeile die eventuell das "Updates disabled" aufnehmen soll. Dies ist aber nicht mit einem if ( $disable > 0) abgesichert, ist das ein Bug? In den meisten Themes fällt das nicht auf, aber im IOS6 Theme erzeugt das eine deutliche Leerzeile am Ende.
Grüße, Marcel
@dancatt: hab den fehler gefunden. ist ab morgen behoben.
@MarcelK: ist auch behoben.
gruss
andre
Zitat von: justme1968 am 28 November 2014, 11:23:25
@MarcelK: ist auch behoben.
Supi, danke schön :-)
Grüße, Marcel
Vielleicht kann mir jemand helfen, mit der Kanone readingsgroup einen Spatzen zu erlegen ?
Ich kontrolliere über eine PRESENCE-Definition einen Server, der über powercmd gestartet und heruntergefahren werden kann. Funktioniert auch und mit webcmd wird es auch kilckbar. Jetzt hätte ich gerne statt "power on" und "power off" klickbare icons. Meine "Recherchen" haben gezeigt, dass das mit webcmd nicht geht und zu readingsGroup geführt.
define p_sv2 PRESENCE lan-ping 192.168.2.20
attr p_sv2 event-on-change-reading 1
attr p_sv2 powerCmd "/opt/fhem/etc/sv2_control.sh %ARGUMENT"
attr p_sv2 room EDV
attr p_sv2 webCmd power on:power off
define server_status readingsGroup p_sv2:state,<%general_an>,<%general_aus>
attr server_status commands {'general_an' => 'set $DEVICE power on', 'general_aus' => 'set $DEVICE power off'}
attr server_status mapping {'p_sv2' => 'sv2 192.168.2.20'}
attr server_status notime 1
attr server_status room EDV
attr server_status valueIcon {'state.absent' => 'rc_RED', 'state.present' => 'rc_GREEN'}
Ich bekomme eine schöne Darstellung des Server-Status und der Icons. Mein wahrscheinllich naiver Versuch, diese mit den Befehlen zu koppeln, scheitert aber.
Hat jemand einen sonntäglichen Tipp für mich?
Gruß
Boris
Zitat von: Bkel am 30 November 2014, 11:48:02
Hat jemand einen sonntäglichen Tipp für mich?
Meines wissens nach musst du den namen der rg vor den commands angeben, bin aber nicht ganz auf dem laufendem was die updates in letzter ZEit angeht.
attr server_status commands {'server_status.general_an' => 'set $DEVICE power on', 'server_status.general_aus' => 'set $DEVICE power off'}
Grüße
Igami
wenn du auf den wert eines readings mappen willst muss der name des readings davor stellen. bei den <%..> icons ist das der name der readingsGroup.
gruss
andre
Vielen Dank, das war es! :)
Vielleicht kann mir nochmal jemand helfen? Scheitere wahrscheinlich an PERL.
Gegeben sind 2x PRESENCE WLANst00 und WLANst01 und die dazugehörigen Schaltsteckdosen WLANsw00 und WLANsw01
define WLAN readingsGroup <%WLAN-Status>,<%it_wifi> WLAN..st:state,state@{$DEVICE=~s/st/sw/;;$DEVICE;;},<%general_an>,<%general_aus>
attr WLAN commands {'WLAN.general_an' => 'set {$DEVICE=~s/st/sw/;;$DEVICE;;} on','WLAN.general_aus' => 'set {s/st/sw/$DEVICE} off'}
attr WLAN mapping {'WLAN00st' => 'WLAN EG','WLAN01st' => 'WLAN OG'}
attr WLAN room EDV
attr WLAN valueIcon {'state.absent' => 'it_wifi@red','state.present' => 'it_wifi@green','state.on' => 'general_an@green','state.off' => 'general_aus@red'}
Die Anzeige der states von WLANst und WLANsw und der Icons für ein und aus funktioniert.
Jetzt würde ich gerne über das Attribut commands das abgeleitete Device schalten und scheitere daran.
Wahrscheinlich passt der einfach aus der Def. übernommene Ausdruck nicht.
wenn du perl code im mapping hat muss es mit '{ anfangen und mit }' aufhören.
also etwas in der art: '{$DEVICE=~s/st/sw/;;"set $DEVICE on"}'
gruss
andre
Hi,
ich habe seit heute im Log diesen Fehler
Zitat2014.12.02 12:48:07.235 1: PERL WARNING: Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 715.
In Zelle 715 steht:
Zitatif( $htmlTxt =~ m/<td colspan='2'>(.*)<\/td>/s ) {
Was ist das Problem?
Danke
habs behoben.
gruss
andre
Hallo Andre,
war jetzt drei Wochen offline und habe gestern das Update der rg eingespielt. Leider scheint die Ergänzung, die ich vorgeschlagen habe, verlorengegangen zu sein:
Per valueFormat auch dann etwas auszugeben, wenn für das reading ein Attribut "commands" definiert ist.
Hintergrund: Hinter dem Menü (Temperatur) z.B. noch "Grad C" (die Werteinheit) in der gleichen Zelle auszugeben.
In diesem Fall enthält valueFormat für das reading eine Konstante.
Gruß
Elektrolurch
das habe ich nicht vergessen. ich möchte es aber etwas anders lösen.
am liebsten über zwei zusätzliche attribute prefix und suffix. dann kann man valueFormat wieder nur zum formatieren verwenden und muss nicht hier noch einheiten oder ähnliches dran hängen. das würde glaube ich so manche meldung wegen nicht verdoppeltem % vermeiden.
gruss
andre
angehängt eine version mit den neuen attributen valuePrefix und valueSuffix.
bitte probier mal ob damit geht was du möchtest.
gruss
andre
Hallo andre,
wie schon befürchtet funktioniert das:
Zitat von: igami am 26 November 2014, 14:41:18
Kann man das optional machen? Ich habe readingsGroups in denen ich das als feature nutze
define rg_12220_1 readingsgroup EIB_1106:?alias,state,set@EIB_2000,?alias,<%fts_shutter_up>,<%fts_shutter_down>
attr rg_12220_1 commands {'state' => 'trigger ntfy_rg $DEVICE $READING', 'rg_12220_1.fts_shutter_up' => 'set $DEVICE off', 'rg_12220_1.fts_shutter_down' => 'set $DEVICE on'}
das würde dann nicht mehr funktionieren. Das reading 'set' existiert natürlich nicht. Mit einem reset@$DEVICE kann man die Variable auch wieder resetten.
nicht mehr.
Hier ein List der vollständigen rg.
Internals:
DEF <Beleuchtung>,<Jalousie>
EIB_1106:?alias,state,set@EIB_2000,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2005,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
EIB_1104:?alias,state,set@EIB_2001,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2006,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
EIB_2002:<>,<>,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2007,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
EIB_2003:<>,<>,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2008,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
EIB_2004:<>,<>,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2009,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
NAME rg_12160_1
NR 886
NTFY_ORDER 50-rg_12160_1
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CHANGETIME:
Content:
EIB_1104 1
EIB_1106 1
EIB_2002 1
EIB_2003 1
EIB_2004 1
Content2:
EIB_2000 1
EIB_2001 1
EIB_2005 1
EIB_2006 1
EIB_2007 1
EIB_2008 1
EIB_2009 1
DEVICES:
ARRAY(0x6c31f70)
ARRAY(0x6e50d28)
ARRAY(0x740d6f8)
ARRAY(0x741be78)
ARRAY(0x7320a10)
ARRAY(0x741b6f8)
DEVICES2:
ARRAY(0x6c31f70)
ARRAY(0x6e50d28)
ARRAY(0x740d6f8)
ARRAY(0x741be78)
ARRAY(0x7320a10)
ARRAY(0x741b6f8)
ARRAY(0x6e572a8)
ARRAY(0x7198870)
ARRAY(0x7423038)
ARRAY(0x73acaa0)
ARRAY(0x719b5a0)
ARRAY(0x7199810)
ARRAY(0x4582610)
Fhem:
lastDefChange 83
last_update 1417692815.35412
Helper:
DEF
nameStyle {($READING eq "Beleuchtung" ||$READING eq "Jalousie" )?'style="font-size:20px;text-align:center;color:RoyalBlue"' :'style="font-size:16px"'}
valueStyle style="font-size:16px"
Commands:
rg_12160_1.fts_blade_arc_close_00 set $DEVICE off
rg_12160_1.fts_blade_arc_close_100 set $DEVICE on
rg_12160_1.fts_shutter_down set $DEVICE on
rg_12160_1.fts_shutter_up set $DEVICE off
state trigger ntfy_rg $DEVICE $READING
Valuecolumns:
Beleuchtung colspan="2"
Jalousie colspan="5"
Valueicon:
state.off li_wht_off
state.on li_wht_on
state.undefined li_wht_on
Attributes:
DbLogExclude .*
commands {'state' => 'trigger ntfy_rg $DEVICE $READING', 'rg_12160_1.fts_shutter_up' => 'set $DEVICE off', 'rg_12160_1.fts_shutter_down' => 'set $DEVICE on', 'rg_12160_1.fts_blade_arc_close_00' => 'set $DEVICE off', 'rg_12160_1.fts_blade_arc_close_100' => 'set $DEVICE on'}
group Visualisierung
nameStyle {($READING eq "Beleuchtung" ||$READING eq "Jalousie" )?'style="font-size:20px;text-align:center;color:RoyalBlue"' :'style="font-size:16px"'}
noheading 1
nolinks 1
nonames 1
room 1.2.160:Montageleiter
valueColumns {'Beleuchtung' => 'colspan="2"', 'Jalousie' => 'colspan="5"'}
valueIcon {'state.on' => 'li_wht_on', 'state.undefined' => 'li_wht_on', 'state.off' => 'li_wht_off' }
valueStyle style="font-size:16px"
Hast du eine Idee wie man das ganze nun einfach lösen könnte? Vorher wurde das Device ja einfach brav überschrieben. Vielleicht kann man ja einen Befehl zum neusetzen des Devices einbauen. Z.B. ein zweites <device>: in der Zeile.
Grüße
Igami
ich bin nicht sicher das ich das problem verstehe.
vorher war es so das ein ...,reading@device,... für ein device das nicht vorhanden war nichts getan hat. das ist jetzt immer noch so.
dazugekommen ist jetzt das man ...,!reading@!device,... schreiben kann um etwas anzuzeigen obwohl es reading und device nicht gibt. ohne die ! sollte sich nichts geändert haben.
was genau funktioniert nicht mehr bzw. wie sollte es stat dessen funktionieren.
kannst du das ganze bitte mit ein oder zwei dummys und einer readingsGroup nachstellen?
gruss
andre
Hallo Andre,
define rg_12220_1 readingsgroup EIB_1106:?alias,state,set@EIB_2000,?alias,<%fts_shutter_up>,<%fts_shutter_down>
attr rg_12220_1 commands {'state' => 'trigger ntfy_rg $DEVICE $READING', 'rg_12220_1.fts_shutter_up' => 'set $DEVICE off', 'rg_12220_1.fts_shutter_down' => 'set $DEVICE on'}
Hier wird erst alias und State vom "eigentlichen" Device angezeit.
set@EIB_2000 würde ja das reading set anzeigen, es existiert jedoch nicht
nun der Trick
?alias liefert nun den alias vom EIB_2000, da $DEVICE immernoch EIB_2000 ist und nicht zurück gesetzt wurde
<%fts_shutter_up> und <%fts_shutter_down> sind in den commands so angelegt, dass sie on bzw. off setzen.
Was mir als Lösung einfällt wäre mit ! zu arbeiten, ist aber mehr Aufwand als vorher.
Ich hoffe es ist verständlich was ich meine.
Grüße
Igami
achso...
das das device nicht zurück gesetzt wurde ist aber wirklich ein fehler gewesen. der sollte nicht drin bleiben weil er deinige andere dinge unmöglich macht. das ! würde hier auch nicht helfen.
du kannst aber einfach ?alias@EIB_2000 schreiben. und im mapping für die beiden shutter icons den device namen auch direkt rein schreiben.
gruss
andre
Habe es nun folgendermaßen gelöst, muss halt bei jedem 'Button' das @ angeben
Internals:
DEF <Beleuchtung>,<Jalousie>
EIB_1106:?alias,state,?alias@EIB_2000,!up@EIB_2000,!down@EIB_2000,!00@EIB_2005,!100@EIB_2005
EIB_1104:?alias,state,?alias@EIB_2001,!up@EIB_2001,!down@EIB_2001,!00@EIB_2006,!100@EIB_2006
EIB_2002:<>,<>,?alias,!up,!down,!00@EIB_2007,!100@EIB_2007
EIB_2003:<>,<>,?alias,!up,!down,!00@EIB_2008,!100@EIB_2008
EIB_2004:<>,<>,?alias,!up,!down,!00@EIB_2009,!100@EIB_2009
NAME rg_12160_1
NR 886
NTFY_ORDER 50-rg_12160_1
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CHANGETIME:
Content:
EIB_1104 1
EIB_1106 1
EIB_2002 1
EIB_2003 1
EIB_2004 1
Content2:
EIB_2000 1
EIB_2001 1
EIB_2005 1
EIB_2006 1
EIB_2007 1
EIB_2008 1
EIB_2009 1
DEVICES:
ARRAY(0x7229ba8)
ARRAY(0x727fb20)
ARRAY(0x46f4f00)
ARRAY(0x7416600)
ARRAY(0x6fd92e8)
ARRAY(0x725ea60)
DEVICES2:
ARRAY(0x7229ba8)
ARRAY(0x727fb20)
ARRAY(0x46f4f00)
ARRAY(0x7416600)
ARRAY(0x6fd92e8)
ARRAY(0x725ea60)
ARRAY(0x6fddd80)
ARRAY(0x6ffd498)
ARRAY(0x6fd9fb8)
ARRAY(0x7197fd8)
ARRAY(0x757ae98)
ARRAY(0x6eda578)
ARRAY(0x7581ab0)
ARRAY(0x741b428)
ARRAY(0x7198768)
ARRAY(0x7198870)
ARRAY(0x740d440)
ARRAY(0x6fae368)
ARRAY(0x4520ae8)
ARRAY(0x756a1c0)
Fhem:
lastDefChange 93
last_update 1417696055.34435
Helper:
DEF
nameStyle {($READING eq "Beleuchtung" ||$READING eq "Jalousie" )?'style="font-size:20px;text-align:center;color:RoyalBlue"' :'style="font-size:16px"'}
valueStyle style="font-size:16px"
Commands:
00 set $DEVICE off
100 set $DEVICE on
down set $DEVICE on
state trigger ntfy_rg $DEVICE $READING
up set $DEVICE off
Valuecolumns:
Beleuchtung colspan="2"
Jalousie colspan="5"
Valueicon:
00 fts_blade_arc_close_00
100 fts_blade_arc_close_100
down fts_shutter_down
state.off li_wht_off
state.on li_wht_on
state.undefined li_wht_on
up fts_shutter_up
Attributes:
DbLogExclude .*
commands {'state' => 'trigger ntfy_rg $DEVICE $READING', 'up' => 'set $DEVICE off', 'down' => 'set $DEVICE on', '00' => 'set $DEVICE off', '100' => 'set $DEVICE on'}
group Visualisierung
nameStyle {($READING eq "Beleuchtung" ||$READING eq "Jalousie" )?'style="font-size:20px;text-align:center;color:RoyalBlue"' :'style="font-size:16px"'}
noheading 1
nolinks 1
nonames 1
room 1.2.160:Montageleiter
valueColumns {'Beleuchtung' => 'colspan="2"', 'Jalousie' => 'colspan="5"'}
valueIcon {'state.on' => 'li_wht_on', 'state.undefined' => 'li_wht_on', 'state.off' => 'li_wht_off', 'up' => 'fts_shutter_up', 'down' => 'fts_shutter_down', '00' => 'fts_blade_arc_close_00', '100' => 'fts_blade_arc_close_100' }
valueStyle style="font-size:16px"
War doch gar nicht so schlimm wie gedacht ;)
Grüße
Igami
die buttons würde ich vermutlich lösen in dem ich mir im command mapping für up und down über ein lookup das device besorgen würde das zur zeile gehört.
wenn du das in eine eigene sub steckst kannst du die auch für den alias wieder verwenden.
die readingsGroup würde dann etwas so aussehen:
define rg_12160_1 readingsGroup <Beleuchtung>,<Jalousie> EIB_110(6|4):?alias,state,?alias@{DeviceOf($DEVICE)},!up,!down,!00,!100 EIB_200(2|3|4):<>,<>,?alias,!up,!down,!00,!100
attr rg_12160_1 {'state' => 'trigger ntfy_rg $DEVICE $READING', 'up' => 'set DeviceOf($DEVICE) off', 'down' => 'set DeviceOf2($DEVICE) on', '00' => 'set DeviceOf2($DEVICE) off', '100' => 'set DeviceOf2($DEVICE) on'}
und etwas in der art:
my %device_mapping = ( 'EIB_1106' => 'EIB_2000', 'EIB_1104' => 'EIB_2001' );
my %device_mapping2 = ( 'EIB_1106' => 'EIB_2005', 'EIB_1104' => 'EIB_2006', 'EIB_2002' => 'EIB_2007', ...);
sub DeviceOf($){
my ($DEVICE) = @_;
return $device_mapping{$DEVICE};
sub DeviceOf2($){
my ($DEVICE) = @_;
return $device_mapping2{$DEVICE};
d.h. die zuordnung der devices die zusammen gehören wird ein mal in 99_myUtils gemacht und in der readingsGroup immer wieder verwendet. wenn sich etwas ändert ist nur eine stelle zu ändern.
gruss
andre
Hätte gerne eine Übersicht im Floorplan für die Homematic Fensterkontakte. (Aliasname und Icon für Offen oder geschlossen)
Wie kann nach Attribut subType -> threeStateSensor filtern ?
So gehts nicht:
.*:?subType=threeStateSensor
readingsGroup kann zur zeit nur auf internals filtern. nicht auf attribute.
du kannst aber über ein passendes ValueFormat dann weiter filtern.
also readingsGroup auf TYPE=CUL_HM:state,?subType
und dann für valueFormat undef zurück liefern wenn der subType ne "threeStateSensor" ist und " " sonst.
das icon beikommst du über valueIcon %devStateIcon
gruß
andre
Danke, funktioniert bis auf die Filterfunktion, wenn ich das richtig verstanden habe müsste sich valueFormat wie folgt aussehen:
{ return undef if ( $VALUE eq ReadingsVal("subType","threeStateSensor","") ); return " ";}
Bekomme dann jedoch trotzdem alle Devices.
{ return undef if ( $READING eq "subType" && $VALUE ne "threeStateSensor" ); return $VALUE}
gruss
andre
Auch mit diesm ValueFormat bekomme ich seltsamerweise alle Devices
lass dir mal mit { return ">$READING< >$VALUE<"; } in die readingsGroup schreiben welche werte tatsächlich da sind.
gruss
andre
mir ist übrigens noch eine vereinfachung eingefallen:
- definiere die readingGroup nur auf state (also ohne subtype)
- valueFormat etwas in der art:
{ return undef if ( AttrVal( $DEVICE", "subType","") ne "threeStateSensor" ); return $VALUE;}
dann musst du dich nicht um die zusätzliche spalte für das subtype attribut kümmern.
gruss
andre
So funktioniert die ReadingsGroup der Homematic Fensterkontakte:
define FensterRG readingsGroup TYPE=CUL_HM:state
attr FensterRG nameStyle 1
attr FensterRG noheading 1
attr FensterRG notime 1
attr FensterRG mapping %ALIAS:
attr FensterRG valueFormat { return $VALUE if ( AttrVal( $DEVICE, "subType","") eq "threeStateSensor" );; return undef }
attr FensterRG valueIcon %devStateIcon
I believe I need something similar to the above for a valueStyle string but I can't get my head around it so any help welcome
attr rg_Heating valueStyle { if ($VALUE eq "00"){'style="visibility:hidden"'}elsif($READING eq "valveposition" && $VALUE == 0){ 'style="color:blue"' }elsif( $READING eq "valveposition" && $VALUE >= 0 ){ 'style="color:red;;;;;;;;font-weight:bold"' }elsif( $READING eq "temperature" && $VALUE > 23 ){ 'style="color:red"' }else{ 'style="color:black"' } }
Hallo Simon74
Außer Du hast noch einen 3-Kanal-Funk-Schließerkontakt-Interface HM-SCI-3-FM ,
der hat den gleichen SubTyps .... müsste man noch filtern !
kvo1
wenn das "model" gleich ist ...dann so
define FensterRG readingsGroup TYPE=CUL_HM:state
attr FensterRG nameStyle 1
attr FensterRG alias Fenster- / Türstatus
attr FensterRG notime 1
attr FensterRG mapping %ALIAS:
attr FensterRG valueFormat { return $VALUE if ( AttrVal( $DEVICE, "model","") eq "HM-SEC-SC-2" );; return undef }
attr FensterRG valueIcon %devStateIcon
kvo1
Hi, ich habe heute diesen Fehler im Log:
2014.12.10 19:45:32.880 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 651.
In 651 steht:
Zitat$v = sprintf( $value_format, $v );
Was ist falsch?
Andere frage, wie kann ich das aktuelle Datum und die aktuelle Zeit in einer readingsGroup ausgeben?
Danke
du hast vermutlich irgendein valueFormat definiert das ein numerisches reading erwartet und der wert ist aber nur ein - .
was möchtest du mit
der zeit genau tun? wenn du willst das sie sich live aktualisiert muss die zeit in einem reading stehen und dort aktualisiert werden.
wenn es die beim aufruf aktuelle zeit sein soll reicht ein ...,<{TimeNow()}>,...
gruß
andre
Ich habe nach Anleitung vom Wiki die ReadingsGroup für Enigma nachgebaut.
Was hier manchmal stört sind die überlangen "Aktuell" (currentTitle), und "Nächstes" (eventname_next).
Kann man per Readingsgroup die Strings schneiden ?
Schön wäre eine max. Länge, und wenn davor ein " - " kommt, dann dort schon abschneiden
das kannst du über ein passendes valueFomat doch einfach selber machen.
gruss
andre
Danke für valueFormat Hinweis, habe nun die Sub meinen Bedürfnissen angepasst.
Zunächst auf 70 Zeichen begrenzen, und dann noch von rechts nach " - " suchen und dort schneiden, scheint zu funktionieren
###############################################################################
# Receiver Status (ReadingsGroup)
###############################################################################
sub wzReceiverRGvalueFormat($$$)
{
my ($DEVICE,$READING,$VALUE) = @_;
if($READING eq 'eventtitle') {
my $STRING = substr($VALUE, 0, 70);
#return $STRING;
return substr($STRING,0,rindex($STRING,' - ')+1);
} elsif( $READING eq 'eventtitle_next') {
my $STRING = substr($VALUE, 0, 70);
#return $STRING;
return substr($STRING,0,rindex($STRING,' - ')+1);
} elsif( $READING eq 'volume' ) {
if( ReadingsVal($DEVICE, "mute", "") eq "on") {
return "mute";
} else {
return "%i %%";
}
}
}
Seit dem letzten update habe ich immer folgende Fehlermeldung beim Start von FHEM im Log:
"Global symbol $READING requires ....."
Grundsätzlich läuft alles dann. Hat dies mit dem ValueFormat zu tun, hat sich da etwas geändert?
Ein ValueFormat definition ist zum bsp:
{ if ( $READING =~ m/B./ ) { return substr($VALUE,6,10)." um ".substr($VALUE,0,5);;}}
Grüsse
Eric
kommt die meldung nur beim start?
gruss
andre
Ja die kommt nur bei start. und bei jedem definierten Reading.
Grüsse
Eric
ich denke ich weiß woran es liegt. bitte versucht mal das ganze valueStyle attribut in einfache ' zu stecken. also so: '{...}'
Zitat von: justme1968 am 10 Dezember 2014, 22:39:23
du hast vermutlich irgendein valueFormat definiert das ein numerisches reading erwartet und der wert ist aber nur ein - .
was möchtest du mit
der zeit genau tun? wenn du willst das sie sich live aktualisiert muss die zeit in einem reading stehen und dort aktualisiert werden.
wenn es die beim aufruf aktuelle zeit sein soll reicht ein ...,<{TimeNow()}>,...
gruß
andre
Hi Andre,
ich habe folgendes valueFormat
{ VU_UltimoRGvalueFormat($DEVICE,$READING,$VALUE);; }
Ist da was falsch?
Ich möchte das Datum und die Uhrzeit gerne auf einem FP darstellen. Sie soll sich live aktualisieren. Wie kann ich das machen?
Danke
Bekomme im Log auch noch folgende Fehler:
2014.12.14 01:12:32.852 3: VU_UltimoRG: Global symbol "$DEVICE" requires explicit package name at (eval 44) line 1, <$fh> line 1374.
Global symbol "$READING" requires explicit package name at (eval 44) line 1, <$fh> line 1374.
Global symbol "$VALUE" requires explicit package name at (eval 44) line 1, <$fh> line 1374.
2014.12.14 01:12:32.854 3: VU_UltimoRG: Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$VALUE" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$VALUE" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$DEVICE" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
die rd sieht so aus:
Internals:
DEF VU_Ultimo:,<Aktuell>,eventtitle,<Rest>,eventremaining_hr,<Dauer>,eventduration_hr VU_Ultimo:<Beschreibung>,eventdescription VU_Ultimo:,<Nächste>,eventtitle_next,<Start>,eventstart_next_hr,<Dauer>,eventduration_next_hr VU_Ultimo:,<HDD Kapazität>,hdd1_capacity,<Frei>,VU_Ultimo:hdd1_free VU_Ultimo:,<Lautstärke>,volume,<HDD>,hdd1_capacity,<Frei>,hdd1_free
NAME VU_UltimoRG
NR 260
NTFY_ORDER 50-VU_UltimoRG
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
VU_Ultimo 1
Content2:
DEVICES:
ARRAY(0x217eee8)
ARRAY(0x206c0a8)
ARRAY(0x206c090)
ARRAY(0x2069e00)
ARRAY(0x217f0e0)
Fhem:
lastDefChange 3
last_update 1418515957.99301
Helper:
DEF
mapping  
valueFormat { VU_UltimoRGvalueFormat($DEVICE,$READING,$VALUE);; }
valueStyle { if($READING eq "hdd1_free" && $VALUE < 200){ 'style="color:red"' }elsif( $READING eq "hdd1_free" && $VALUE < 500 ){ 'style="color:orange"' }elsif( $READING eq "volume" && ReadingsVal($DEVICE, "mute", "") eq "on" ){ 'style="color:red"' }else{ 'style="color:green"' } }
Valuecolumns:
eventdescription colspan="4"
Attributes:
fp_Reciever 317,167,0,
mapping  
noheading 1
nostate 1
notime 1
valueColumns { eventdescription => 'colspan="4"' }
valueFormat { VU_UltimoRGvalueFormat($DEVICE,$READING,$VALUE);; }
valueStyle { if($READING eq "hdd1_free" && $VALUE < 200){ 'style="color:red"' }elsif( $READING eq "hdd1_free" && $VALUE < 500 ){ 'style="color:orange"' }elsif( $READING eq "volume" && ReadingsVal($DEVICE, "mute", "") eq "on" ){ 'style="col
Ich hab das Problem auch, bei jeder ReadingsGroup mit valueStyle oder valueFormat.
2014.12.14 10:31:45.236 3: rg_allgTemperaturen: Global symbol "$DEVICE" requires explicit package name at (eval 119) line 1, <$fh> line 1863.
Global symbol "$READING" requires explicit package name at (eval 119) line 1, <$fh> line 1863.
Global symbol "$VALUE" requires explicit package name at (eval 119) line 1, <$fh> line 1863.
2014.12.14 10:31:45.236 3: rg_allgTemperaturen: Global symbol "$DEVICE" requires explicit package name at (eval 120) line 1, <$fh> line 1864.
Global symbol "$READING" requires explicit package name at (eval 120) line 1, <$fh> line 1864.
Global symbol "$VALUE" requires explicit package name at (eval 120) line 1, <$fh> line 1864.
Zitat von: justme1968 am 13 Dezember 2014, 12:34:08
ich denke ich weiß woran es liegt. bitte versucht mal das ganze valueStyle attribut in einfache ' zu stecken. also so: '{...}'
Mit valueStyle '{...}' verschwindet die Meldung das Styling ist aber auch weg. Zusätzlich muss ich auch valueFormat in '{...}' stecken damit auch die 2. Meldung weg ist.
Grüße
ich bin schon am reparieren.
gruß
andre
ich habe hier: http://forum.fhem.de/index.php/topic,29110.msg230461.html#new (http://forum.fhem.de/index.php/topic,29110.msg230461.html#new) eine version angehängt bei der die warnungen weg sein sollten.
bitte mal testen.
gruss
andre
Hallo,
bei mir ist die Meldung weg, soweit nun alles ok.
Grüsse
Eric
Ich würde gerne eine Stromverbrauch ReadingGroup mit CUL_HM machen.
So sehe ich nur die Homematic Steckdosen Devices:
DEF:
TYPE=CUL_HM:R-txThrHiPwr
Wie schaffe ich es nun (per valueFormat) den Wert aus dem Reading "state" anstatt "R-txThrHiPwr" anzuzeigen ?
zum beispiel so:
attr <rg> valueFormat { 'R-txThrHiPwr' => '{ReadingsVal($DEVICE,"state","")}' }
du kannst aber auch ein model&<model>:state verwenden und statt <model> dann den inhalt des model attributes verwenden.
ich hatte das filtern auf attribute mit & schon eingebaut aber es war noch nicht dokumentiert.
gruss
andre
Danke.
Readingsgroup Homematic Steckdosen Stromverbrauch:
DEF:model&HM-ES-PMSw1-Pl:state
valueFormat:{ return $VALUE if ( ReadingsVal($DEVICE,"R-txThrHiPwr","") );; return undef }
Moin,
ich versuche gerade die commands meines wifiled-devices in einer readingsgroup einzubauen, steh aber irgendwie auf dem schlauch.
ich habe zumindest "Blau" als cmd hinbekommen, möchte aber wenn möglich die farbrechtecke und ggf. den colorpicker in der readingsgroup (siehe devicebild).
DEF:
az_light_ledschlauch:<>,<>,<>,state,<>,<>,<>,<%Blau>
.*._dose_.*:<>,<>,<>,state
hinterlegtes command-attr
commands { "Steckdosen.Blau" => "set %DEVICE rgb 0000FF" }
webcmf des wifiled
webCmd rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:toggle:on:off
es geht um az_light_ledschlauch, über state an / aus geht, bei klick auf Blau wird die Frabe blau.
Sieht mit schriftzug aber doof aus (siehe bild ist / soll)
Hallo,
wie kann man den mit valueformat eine Uhrzeit formatieren?
Ich möchte anstelle von "07:10:33" ": 07:10:33 Uhr" anzeigen lassen.
Spartacus
je nach dem wie das reading benannt ist (bei mir R-decalcTime -> ersetzen durch dein readingname)...
Ich habe es so
{if($READING eq "R-decalcTime"){"$VALUE Uhr"}}
@chris1284: das mit dem zusätzlichen parameter für die farbe ging bis eben nicht. ist morgen im update enthalten.
das mapping schaut so aus:...,'rg.blau' => 'rgb:colorpicker,RGB 0000ff',...
@Spartacus: entweder hinten dran hängen. z.b. mit {$VALUE ."Uhr"}
oder du verwendest die neuen valuePrefix und valueSuffix Attribute.
gruss
andre
hi,
danke schonmal. test dann morgen.
noch was: habe wie im wiki beschrieben [
code]attr myTemp commands { 'desired-temp' => 'desired-temp:' }
um desired-temp per dropDown einstellbar zu machen. allerdings entgegen dem Beispiel haut er mir vor den dropDown immer den namen des devices. wie bekomm ich den weg?
Hi Andre,
{$VALUE ."Uhr"}
geht nicht,
aber bit Prefix und Suffix klappt es!
Vielen Dank,
Christian
um den label vor den drop downs weg zu ändern oder weg zu bekommen musst du sie per mapping auf etwas anderes mappen.
das machen die wiki beispiel auch alle.
gruss
andre
Hi chris1284,
sieht gut aus ! Ist doch für die HM-CC-RT-DN ? Hatte ich auch vor in ähnlicher variante.
Mag´st Du den code posten ?
Danke & Gruss
klaus
Zitat von: justme1968 am 15 Dezember 2014, 09:54:55
@chris1284: das mit dem zusätzlichen parameter für die farbe ging bis eben nicht. ist morgen im update enthalten.
das mapping schaut so aus:...,'rg.blau' => 'rgb:colorpicker,RGB 0000ff',...
klappt nicht. bekomm es nicht rein.l fehler: "unknown command ..." colorpicker, RGB usw usw
Hallo Andre,
kannst Du mir einen kleinen "Anstoß" geben , irgendwie habe ich einen Knoten im Kopf :'(
ich möchte gern von allen Thermostat (Model = HM-CC-RT-DN) Readings vom Device und aber auch von einem Kanal in
eine readingsgroup zusammenfassen.
die Devicename enden dabei alle mit HKT (also KZ1_HKT, AZ_HKT, WZ_HKT)
hiervon folgende readings (battery,batteryLevel,desired-temp,measured-temp)
die Kanäle enden dabei alle HKT_ClimRT_tr (also KZ1_HKT_ClimRT_tr, AZ_HKT_ClimRT_tr, WZ_HKT_ClimRT_tr)
hiervon folgende readings (controlMode,ValvePosition,controlMode)
Und ich würde gern noch die Temp. per Dropdown einstellen können.
Danke
kvo1
@chris1284: wo genau kommt die meldung? bitte poste mal die komplette definition der readingsGroup.
@kvo1: am besten fängst du damit an erst mal auf device ebene alles anzuzeigen was du möchtest. danach kann du für jede device zeile jeweils mit<readings>@{$DEVICE.'_ClimRT_tr'} die readings aus den kanälen hinzufügen.
schau dir bitte mal die heizungs beispiele im wiki an. dort und hier im forum sollte alles dabei sein was du brauchst.
gruss
andre
@kvo1:
du solltest als erstes mal fhem aktualisieren ClimRT_tr heist der Channel schon lan nicht mehr sondern Clima -> Update machen.
wie du readings aus unterscgiedlichen devices / channels holst steht hier http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices
ich habs allerdings direkt im DEF gemacht (vom channel-namen clima einfach _Clima abgeschnitten
dein define müsste dann wenn dein channel richtig hiesst so aussehen:
define <rg-name> readingsGroup .*._Clima:desired-temp,measured-temp,ValvePosition,controlMode,<{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"battery","n.A.")}>,<{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","n.A.")}>
danach für die Temp. per Dropdown
attr <rg-name> commands {'desired-temp'=>'desired-temp:'}
damit vor dme dropdown nicht der name des device steht
attr <rg-name> mapping {'desired-temp' => ''}
anbei das bild mit dem error und die DEF
define Lichtschaltung readingsGroup az_light_ledschlauch:<>,<>,<>,state,rgb
.*._dose_.*:<>,<>,<>,state
attr Lichtschaltung commands {'rgb' => 'rgb:rgb ff0000'}
attr Lichtschaltung fp_03_Schalten 125,225,0,
attr Lichtschaltung mapping {az_light_ledschlauch => "Büro Ledstripe",az_dose_lichtschlauch=> "Büro Lichtschlauch",az_dose_monitor=> "Büro Monitorlicht",az_dose_regal=> "Büro Regallicht",wz_dose_lichtschlauch=> "WZ Lichtschlauch",wz_dose_tvbackground=> "WZ TV-Licht"}
attr Lichtschaltung nameStyle style="text-align:left;"
attr Lichtschaltung nolinks 1
attr Lichtschaltung notime 1
attr Lichtschaltung room 99_Floorplans
attr Lichtschaltung valueIcon { state => '%devStateIcon' }
commands {'rgb' => 'rgb:'} zeigt den colorpicker (anhang colorpicker). aber der befehl mit direkt einer farbe funktioniert nicht
EDIT: im floorplan geht übrigen der Colorpicker nicht auf
ich hatte aber doch nicht das hier:attr Lichtschaltung commands {'rgb' => 'rgb:rgb ff0000'}
sondern das hier:attr Lichtschaltung commands {'rgb' => 'rgb:colorpicker,RGB 0000ff'}
geschrieben.
ab morgen geht auch die abgekürzte Schreibweise wenn das device den colorpicker selber schon unterstützt:attr Lichtschaltung commands {'rgb' => 'rgb: ff0000'}
zu erklärung:
die kurze form (rgb: ff0000) sagt fhem es soll das rgb kommando nutzen und im device nachschauen welches widget hier voreingestellt ist. das sieht man wenn man ein set ? auf das device macht. hier würde dann etwas wie rgb:colorpicker,RGB zurück kommen. d.h. für das rgb commando möchte das device den colorpicker verwenden. z.b. in den webCmds. vergleichbar mit dim:slider,0,1,100. hier sagt das device das für das dim kommando ein slider verwendet werden soll.
die lange form (rgb:colorpicker,RGB ff0000) überschreibt den vorschlag des device. das würde man verwenden wenn das device den colorpicker selber nicht angibt, bei einem dummy, oder wenn man etwas anderes verwenden möchte als das device vorschlägt. so wie es mit widgetoverride für die webCmd möglich ist. in einer readingsGroup kann man z.b. mit dim => 'dim:0,25,50,100' bei einem device das normalerweise einen slider zum dimmen verwendet diesen durch ein dropdown menü überschreiben.
gruss
andre
ah ok, ich hab die befehle aus dem device attr webCmd übernommen.
so attr Lichtschaltung commands {'rgb' => 'rgb:colorpicker,RGB 0000ff'}
bekommt man einen blauen, klickbaren button -> bei klick farbe wechselt zu blau.
jetzt will ich aber 3 dieser buttons nebeneinander in blau, rot, grün. das geht mit der lösung ja nicht und ich muss mir ein reading ausdenken (<%gruen>,<%rot>) und wieder mit
attr Lichtschaltung commands {"Lichtschaltung.rot" => 'set %DEVICE rgb fff0000'}
abeiten.
bekommt man das wie bei webcmd hin n dieser cmd's 'rgb:colorpicker,RGB [farbe] in die readingsgroup zu bauen? wenn nicht mach ich mir halt entsprechende icon und binde die so <%gruen> als buttons ein
wenn du drei buttons möchtest musst du es auch drei mal hin schreiben. oder vier mal für vier buttons. das musst du bei den webCmds doch auch:
attr <xxx> webcmd rgb:rgb ff0000:rgb 00ff00:rgb 0000ff
im def so: ...,<rgb>,<rot>,<gruen>,<blau>,...
und im attribut so:
{'Lichtschaltung.rgb' => 'rgb:', 'Lichtschaltung.rot' => 'rgb: ff0000', 'Lichtschaltung.gruen' => 'rgb: 00ff00', 'Lichtschaltung.blau' => 'rgb: 0000ff'}
die abgekürzte version geht erst ab morgen. bis dahin musst du noch die lange version schreiben:{'Lichtschaltung.rgb' => 'rgb:', 'Lichtschaltung.rot' => 'rgb:colorpicker,RGB ff0000', 'Lichtschaltung.gruen' => 'rgb:colorpicker,RGB 00ff00', 'Lichtschaltung.blau' => 'rgb:colorpicker,RGB 0000ff'}
gruss
andre
super, funktioniert
Hallo chris1284 , hallo Andre
Vielen dank für Eure Hilfe , die ersten Ansätze sehen schon mal gut aus.
@Andre: auf device ebene würde ich gern Soll-Temp. Ist-Temp. Ventil rechtsbündig mit einer Kommastelle anzeigen !
@chris1284: wie stellt man hier den Battery als ICON dar ?
es werden dummerweise auch gleichnamige Logfiles aufgelistet :( , wie bekomme ich die weg !
Danke und gruss
klaus
ersetzte in der def
<{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"battery","n.A.")}>
mit
<{if(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"battery","n.A.")eq"ok"){"%batterie\@green"}else{"%batterie\@red"}}>
ValueIcon greift in dem Fall leider nicht auf "battery".
Zitates werden dummerweise auch gleichnamige Logfiles aufgelistet
habe dblog somit hab ich das problem nie gehabt. du musst den regexp so anpassen das er filelog.* nicht reinnimmt.
bei mir recht einfach da alle thermostate mit hz_ beginnen und die filelof ja mit filelog_
hz_.*._Clima
@chris1284: Danke, teste ich später (so langsam durchschaue ich das auch, echt genial diese readingGroup)
bei mir klappt diese Formatierung nicht , weder einstellige Temp. noch die Einheit (°C)
attr Heizungswerte valueFormat {desired-temp => "%.0f °C", ValvePosition =>"%.0f %%"}
Ist aber aus dem WIKI und die reading Namen stimmen doch auch !
kvo1
desired-temp (und eigentlich alle keys) muss in anführungszeichen.
gruss
andre
Zitat von: justme1968 am 17 Dezember 2014, 09:24:51
desired-temp (und eigentlich alle keys) muss in anführungszeichen.
gruss
andre
Hallo Andre,
da habe ich wohl genau am falschen Beispiel nachgeschaut ;)
===>
Heizungswerte inklusive Ventilposition (hier fehlen die leider )
und bei diesem Attribute
attr Heizungswerte valueStyle { if($READING eq "temperature" && $VALUE > 20){ 'style="color:green;;font-weight:bold"' }elsif( $READING eq "temperature" && $VALUE <= 20 ){ 'style="color:blue"' }elsif( $READING eq "temperature" && $VALUE > 23 ){ 'style="color:red"' }else{ 'style="color:gray"' } }bekomme ich nur grün und blau , obwohl Werte > 23 vorhanden sind,
liegt vermutlich daran , das hier doppelt geprüft wird ?? (nur eine Vermutung)
Zitat($READING eq "temperature" && $VALUE > 20){ 'style="color:green;;font-weight:bold"' }
( $READING eq "temperature" && $VALUE > 23 ){ 'style="color:red"' }
gruss / Danke
Klaus
im wiki beispiel haben die reading namen keinen bindestrich. perl erlaubt es die anführungszeichen weg zu lassen wenn der key ein string ist der nur aus buchstaben besteht. ich habe es im wiki trotzdem geändert.
der perl ausdruck wird von links nach rechts abgearbeitet und das erste 'passende' vergleich gewinnt. da eine zahl die > als 23 auch > als 20 ist gewinnt hier die 20. die vergleiche müssen also bei einem vergleich auf > absteigend und bei einem vergleich auf < aufsteigend sortiert werden.
dein Vergleich auf > 23 muss also an den anfang.
der else zweig in deinem beispiel wird übrigens nie ausgeführt da es keine zahl gibt die gleichzeitig weder > 20 noch <= 20 ist.
gruss
andre
Zitatim wiki beispiel haben die reading namen keinen bindestrich. perl erlaubt es die anführungszeichen weg zu lassen wenn der key ein string ist der nur aus buchstaben besteht. ich habe es im wiki trotzdem geändert.
sorry , wusste ich nicht, kenn mich damit leider (noch nicht) aus :'(
Zitatder else zweig in deinem beispiel wird übrigens nie ausgeführt da es keine zahl gibt die gleichzeitig weder > 20 noch <= 20 ist.
ups , ist aus Deinen Wiki ;) oder habe ich das auch falsch interpretiert ?
ÜBRIGENS:
Danke nochmal für so eine geniales Modul (readingsGroup) , ich bin echt begeistert!
Und sorry für die vielleicht zu einfachen / dummen Rückfragen.
gruss
klaus
die wiki beiträge sind nicht alle von mir :)
gruss
andre
Hallo,
habe heute folgende Meldungen heute im LOg
2014.12.17 19:41:20.621 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115527) line 1.
2014.12.17 19:41:20.625 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115529) line 1.
2014.12.17 19:41:20.630 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115531) line 1.
2014.12.17 19:41:20.634 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115533) line 1.
2014.12.17 19:41:20.640 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115535) line 1.
2014.12.17 19:41:20.644 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115537) line 1.
2014.12.17 19:41:20.648 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115539) line 1.
2014.12.17 19:41:20.658 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115541) line 1.
2014.12.17 19:41:20.661 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115543) line 1.
2014.12.17 19:41:20.665 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 115545) line 1.
2014.12.17 19:41:20.699 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 115547) line 1.
2014.12.17 19:41:20.703 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 115549) line 1.
2014.12.17 19:41:20.707 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 115551) line 1.
2014.12.17 19:41:20.711 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 115553) line 1.
2014.12.17 19:41:20.717 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 115555) line 1.
2014.12.17 19:41:20.721 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 115557) line 1.
2014.12.17 19:41:20.725 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 115559) line 1.
2014.12.17 19:41:20.735 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 115561) line 1.
2014.12.17 20:08:30.867 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118361) line 1.
2014.12.17 20:08:30.871 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118363) line 1.
2014.12.17 20:08:30.876 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118365) line 1.
2014.12.17 20:08:30.880 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118367) line 1.
2014.12.17 20:08:30.887 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118369) line 1.
2014.12.17 20:08:30.891 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118371) line 1.
2014.12.17 20:08:30.895 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118373) line 1.
2014.12.17 20:08:30.906 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118375) line 1.
2014.12.17 20:08:30.909 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118377) line 1.
2014.12.17 20:08:30.914 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 118379) line 1.
2014.12.17 20:08:30.946 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 118381) line 1.
2014.12.17 20:08:30.951 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 118383) line 1.
2014.12.17 20:08:30.955 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 118385) line 1.
2014.12.17 20:08:30.959 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 118387) line 1.
2014.12.17 20:08:30.966 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 118389) line 1.
2014.12.17 20:08:30.970 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 118391) line 1.
2014.12.17 20:08:30.974 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 118393) line 1.
2014.12.17 20:08:30.984 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 118395) line 1.
2014.12.17 20:36:31.893 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121306) line 1.
2014.12.17 20:36:31.898 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121308) line 1.
2014.12.17 20:36:31.902 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121310) line 1.
2014.12.17 20:36:31.906 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121312) line 1.
2014.12.17 20:36:31.912 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121314) line 1.
2014.12.17 20:36:31.917 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121316) line 1.
2014.12.17 20:36:31.921 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121318) line 1.
2014.12.17 20:36:31.931 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121320) line 1.
2014.12.17 20:36:31.935 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121322) line 1.
2014.12.17 20:36:31.944 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 121324) line 1.
2014.12.17 20:36:31.951 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 121326) line 1.
2014.12.17 20:36:31.955 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 121328) line 1.
2014.12.17 20:36:31.959 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 121330) line 1.
2014.12.17 20:36:31.964 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 121332) line 1.
2014.12.17 20:36:31.971 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 121334) line 1.
2014.12.17 20:36:31.975 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 121336) line 1.
2014.12.17 20:36:31.979 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 121338) line 1.
2014.12.17 20:36:31.989 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 121340) line 1.
2014.12.17 20:47:35.992 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122362) line 1.
2014.12.17 20:47:35.996 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122364) line 1.
2014.12.17 20:47:36.000 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122366) line 1.
2014.12.17 20:47:36.005 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122368) line 1.
2014.12.17 20:47:36.011 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122370) line 1.
2014.12.17 20:47:36.016 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122372) line 1.
2014.12.17 20:47:36.020 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122374) line 1.
2014.12.17 20:47:36.030 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122376) line 1.
2014.12.17 20:47:36.034 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122378) line 1.
2014.12.17 20:47:36.039 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 122380) line 1.
2014.12.17 20:47:36.046 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 122382) line 1.
2014.12.17 20:47:36.050 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 122384) line 1.
2014.12.17 20:47:36.054 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 122386) line 1.
2014.12.17 20:47:36.059 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 122388) line 1.
2014.12.17 20:47:36.065 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 122390) line 1.
2014.12.17 20:47:36.070 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 122392) line 1.
2014.12.17 20:47:36.074 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 122394) line 1.
2014.12.17 20:47:36.084 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 122396) line 1.
Was könnte das Problem sein?
Danke
dein 99_myUtils file wird nicht geladen?
Woran siehst du das? Werd mal sehen wieso die nicht geladen wird
Danke für die Tip
das ist nur ein verdacht. aber wenn sie nicht gefunden werden sind sind sie vermutlich nicht geladen.
Ok,
hatte aufjedenfall den Fehler in der 99, das ich sie beim Verändern nicht mit 1; abgeschlossen hatte, hab ich jetzt nachgeholt und neugestartet, dann bekomme ich aber einen neuen Fehler:
2014.12.17 21:10:14.768 3: VU_UltimoRG: Global symbol "$DEVICE" requires explicit package name at (eval 44) line 1, <$fh> line 1482.
Global symbol "$READING" requires explicit package name at (eval 44) line 1, <$fh> line 1482.
Global symbol "$VALUE" requires explicit package name at (eval 44) line 1, <$fh> line 1482.
2014.12.17 21:10:14.771 3: VU_UltimoRG: Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1483.
Global symbol "$VALUE" requires explicit package name at (eval 45) line 1, <$fh> line 1483.
Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1483.
Global symbol "$VALUE" requires explicit package name at (eval 45) line 1, <$fh> line 1483.
Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1483.
Global symbol "$DEVICE" requires explicit package name at (eval 45) line 1, <$fh> line 1483.
2014.12.17 21:10:14.783 3: rg_Uno_Schlafzimmer_1: Global symbol "$DEVICE" requires explicit package name at (eval 47) line 1, <$fh> line 1491.
Global symbol "$READING" requires explicit package name at (eval 47) line 1, <$fh> line 1491.
Global symbol "$VALUE" requires explicit package name at (eval 47) line 1, <$fh> line 1491.
2014.12.17 21:10:14.786 3: rg_Uno_Schlafzimmer_1: Global symbol "$READING" requires explicit package name at (eval 48) line 1, <$fh> line 1492.
Global symbol "$VALUE" requires explicit package name at (eval 48) line 1, <$fh> line 1492.
Global symbol "$READING" requires explicit package name at (eval 48) line 1, <$fh> line 1492.
Global symbol "$VALUE" requires explicit package name at (eval 48) line 1, <$fh> line 1492.
Global symbol "$READING" requires explicit package name at (eval 48) line 1, <$fh> line 1492.
Global symbol "$DEVICE" requires explicit package name at (eval 48) line 1, <$fh> line 1492.
2014.12.17 21:10:14.800 3: rg_Uno_Kellerbar_1: Global symbol "$DEVICE" requires explicit package name at (eval 50) line 1, <$fh> line 1500.
Global symbol "$READING" requires explicit package name at (eval 50) line 1, <$fh> line 1500.
Global symbol "$VALUE" requires explicit package name at (eval 50) line 1, <$fh> line 1500.
2014.12.17 21:10:14.802 3: rg_Uno_Kellerbar_1: Global symbol "$READING" requires explicit package name at (eval 51) line 1, <$fh> line 1501.
Global symbol "$VALUE" requires explicit package name at (eval 51) line 1, <$fh> line 1501.
Global symbol "$READING" requires explicit package name at (eval 51) line 1, <$fh> line 1501.
Global symbol "$VALUE" requires explicit package name at (eval 51) line 1, <$fh> line 1501.
Global symbol "$READING" requires explicit package name at (eval 51) line 1, <$fh> line 1501.
Global symbol "$DEVICE" requires explicit package name at (eval 51) line 1, <$fh> line 1501.
Kann das auch noch ander 99_my_Utils liegen?
Der Betroffene part in der Datei sieht bei mir so aus:
sub VU_UltimoRGvalueFormat($$$)
{
my ($DEVICE,$READING,$VALUE) = @_;
if($READING eq 'hdd1_capacity') {
return "%.2f MB";
} elsif( $READING eq 'hdd1_free') {
return "%.2f MB";
} elsif( $READING eq 'volume' ) {
if( ReadingsVal($DEVICE, "mute", "") eq "on") {
return "mute";
} else {
return "%i %%";
}
}
}
sub rg_Uno_Schlafzimmer_1valueFormat($$$)
{
my ($DEVICE,$READING,$VALUE) = @_;
if($READING eq 'hdd1_capacity') {
return "%.2f MB";
} elsif( $READING eq 'hdd1_free') {
return "%.2f MB";
} elsif( $READING eq 'volume' ) {
if( ReadingsVal($DEVICE, "mute", "") eq "on") {
return "mute";
} else {
return "%i %%";
}
}
}
sub rg_Uno_Kellerbar_1valueFormat($$$)
{
my ($DEVICE,$READING,$VALUE) = @_;
if($READING eq 'hdd1_capacity') {
return "%.2f MB";
} elsif( $READING eq 'hdd1_free') {
return "%.2f MB";
} elsif( $READING eq 'volume' ) {
if( ReadingsVal($DEVICE, "mute", "") eq "on") {
return "mute";
} else {
return "%i %%";
}
}
}
Wenn die Meldung nur beim Start kommt mach mal ein Update das hab ich vor ein paar Tagen repariert.
Sieht gut aus, nach dem update und neustart, im Moment keine Fehler mehr.
Danke
EDIT
Zu früh gefreut, guck grade in den Log und schon sind die Fehler wieder da:
2014.12.17 21:50:42.503 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 1063) line 1.
2014.12.17 21:50:42.504 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 1064) line 1.
2014.12.17 21:50:42.507 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 1066) line 1.
2014.12.17 21:50:42.508 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 1067) line 1.
2014.12.17 21:50:42.513 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 1069) line 1.
2014.12.17 21:50:42.514 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 1070) line 1.
2014.12.17 21:50:42.527 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 1072) line 1.
2014.12.17 21:50:42.528 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 1073) line 1.
2014.12.17 21:50:42.532 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 1075) line 1.
Wenn ich die 99_my_Utils dann öffne und speicher bekomme ich im Log diese Meldung:
Zitat2014.12.17 21:54:20.667 1: PERL WARNING: Subroutine VU_UltimoRGvalueFormat redefined at ./FHEM/99_myUtils.pm line 152.
2014.12.17 21:54:20.668 1: PERL WARNING: Subroutine rg_Uno_Schlafzimmer_1valueFormat redefined at ./FHEM/99_myUtils.pm line 169.
2014.12.17 21:54:20.669 1: PERL WARNING: Subroutine rg_Uno_Kellerbar_1valueFormat redefined at ./FHEM/99_myUtils.pm line 186.
In 152 steht
{
genauso in den anderen beiden, wobei das redefined kann man glaub ich ignorieren!?
Aber wo kommen die anderen Fehler her?
Hi chris1284,
Zitat von: chris1284 am 17 Dezember 2014, 07:45:37
ersetzte in der def
<{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"battery","n.A.")}>
mit
<{if(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"battery","n.A.")eq"ok"){"%batterie\@green"}else{"%batterie\@red"}}>
das klappt , Icons werden angezeigt , aber jetzt fehlen mir die Namen und alle Spalten rutschen somit eins nach links.!
gruss
klaus
Zitathabe dblog somit hab ich das problem nie gehabt. du musst den regexp so anpassen das er filelog.* nicht reinnimmt.
bei mir recht einfach da alle thermostate mit hz_ beginnen und die filelof ja mit filelog_
hz_.*._Clima
habe (siehe bild oben)...... leider experimentell ermittelt ::)
für
Zitat.*._ClimRT_tr:
dann
Zitat^(?!FileLog).*._ClimRT_tr:
gruss
klaus
Zitat von: kvo1 am 17 Dezember 2014, 22:34:00
Hi chris1284,
das klappt , Icons werden angezeigt , aber jetzt fehlen mir die Namen und alle Spalten rutschen somit eins nach links.!
gruss
klaus
leider kein bild :( mit namen meinst du die der thermostate?
Zitatleider kein bild :( mit namen meinst du die der thermostate?
ja, mit Name meinte ich die der Thermostate , sorry unklar ausgedrück!
kvo1
hier noch ein Bild wie es derzeit mit dieser Definition ausschaut
define Heizungswerte2 readingsGroup <%heizung>,<battery>,<Spannung>,<Mode>,<Ventil>,<Ist-Temp.>,<Soll-Temp> ^(?!FileLog).*._ClimRT_tr:<{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-10),"battery","n.A.")}>,<{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-10),"batteryLevel","n.A.")}>,controlMode,ValvePosition,measured-temp,desired-temp
gruss
kvo1
Bekomme die Meldungen heute leider auch wieder
2014.12.18 18:09:02.830 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116462) line 1.
2014.12.18 18:09:02.831 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116463) line 1.
2014.12.18 18:09:02.835 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116465) line 1.
2014.12.18 18:09:02.836 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116466) line 1.
2014.12.18 18:09:02.840 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116468) line 1.
2014.12.18 18:09:02.841 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116469) line 1.
2014.12.18 18:09:02.846 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116471) line 1.
2014.12.18 18:09:02.847 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116472) line 1.
2014.12.18 18:09:02.853 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116474) line 1.
2014.12.18 18:09:02.854 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116475) line 1.
2014.12.18 18:09:02.858 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116477) line 1.
2014.12.18 18:09:02.859 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116478) line 1.
2014.12.18 18:09:02.863 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116480) line 1.
2014.12.18 18:09:02.864 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116481) line 1.
2014.12.18 18:09:02.875 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116483) line 1.
2014.12.18 18:09:02.875 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116484) line 1.
2014.12.18 18:09:02.879 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116486) line 1.
2014.12.18 18:09:02.880 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116487) line 1.
2014.12.18 18:09:02.884 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116489) line 1.
2014.12.18 18:09:02.885 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116490) line 1.
2014.12.18 18:09:02.892 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116492) line 1.
2014.12.18 18:09:02.893 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116493) line 1.
2014.12.18 18:09:02.897 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116495) line 1.
2014.12.18 18:09:02.898 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116496) line 1.
2014.12.18 18:09:02.902 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116498) line 1.
2014.12.18 18:09:02.903 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116499) line 1.
2014.12.18 18:09:02.908 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116501) line 1.
2014.12.18 18:09:02.909 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116502) line 1.
2014.12.18 18:09:02.915 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116504) line 1.
2014.12.18 18:09:02.916 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116505) line 1.
2014.12.18 18:09:02.920 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116507) line 1.
2014.12.18 18:09:02.921 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116508) line 1.
2014.12.18 18:09:02.925 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116510) line 1.
2014.12.18 18:09:02.926 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116511) line 1.
2014.12.18 18:09:02.936 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116513) line 1.
2014.12.18 18:09:02.937 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116514) line 1.
2014.12.18 18:09:14.769 3: CUL_HM set Heizung_Tuer_ClimRT_tr desired-temp 19
2014.12.18 18:09:18.162 3: CUL_HM set HeizungFenster_Clima desired-temp 19
2014.12.18 18:11:04.729 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116855) line 1.
2014.12.18 18:11:04.730 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116856) line 1.
2014.12.18 18:11:04.735 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116858) line 1.
2014.12.18 18:11:04.735 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116859) line 1.
2014.12.18 18:11:04.740 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116861) line 1.
2014.12.18 18:11:04.741 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116862) line 1.
2014.12.18 18:11:04.745 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116864) line 1.
2014.12.18 18:11:04.746 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116865) line 1.
2014.12.18 18:11:04.752 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116867) line 1.
2014.12.18 18:11:04.753 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116868) line 1.
2014.12.18 18:11:04.758 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116870) line 1.
2014.12.18 18:11:04.759 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116871) line 1.
2014.12.18 18:11:04.763 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116873) line 1.
2014.12.18 18:11:04.764 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116874) line 1.
2014.12.18 18:11:04.774 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116876) line 1.
2014.12.18 18:11:04.775 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116877) line 1.
2014.12.18 18:11:04.779 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116879) line 1.
2014.12.18 18:11:04.780 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116880) line 1.
2014.12.18 18:11:04.784 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116882) line 1.
2014.12.18 18:11:04.785 2: Undefined subroutine &main::wzReceiverRGvalueFormat called at (eval 116883) line 1.
2014.12.18 18:11:04.792 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116885) line 1.
2014.12.18 18:11:04.793 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116886) line 1.
2014.12.18 18:11:04.797 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116888) line 1.
2014.12.18 18:11:04.798 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116889) line 1.
2014.12.18 18:11:04.802 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116891) line 1.
2014.12.18 18:11:04.803 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116892) line 1.
2014.12.18 18:11:04.808 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116894) line 1.
2014.12.18 18:11:04.808 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116895) line 1.
2014.12.18 18:11:04.815 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116897) line 1.
2014.12.18 18:11:04.816 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116898) line 1.
2014.12.18 18:11:04.820 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116900) line 1.
2014.12.18 18:11:04.821 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116901) line 1.
2014.12.18 18:11:04.825 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116903) line 1.
2014.12.18 18:11:04.826 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116904) line 1.
2014.12.18 18:11:04.836 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116906) line 1.
2014.12.18 18:11:04.837 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1 called at (eval 116907) line 1.
Die Eintragungen in meiner 99_my_Utils dazu sehen so aus:
sub VU_UltimoRGvalueFormat($$$)
{
my ($DEVICE,$READING,$VALUE) = @_;
if($READING eq 'hdd1_capacity') {
return "%.2f MB";
} elsif( $READING eq 'hdd1_free') {
return "%.2f MB";
} elsif( $READING eq 'volume' ) {
if( ReadingsVal($DEVICE, "mute", "") eq "on") {
return "mute";
} else {
return "%i %%";
}
}
}
sub rg_Uno_Schlafzimmer_1valueFormat($$$)
{
my ($DEVICE,$READING,$VALUE) = @_;
if($READING eq 'hdd1_capacity') {
return "%.2f MB";
} elsif( $READING eq 'hdd1_free') {
return "%.2f MB";
} elsif( $READING eq 'volume' ) {
if( ReadingsVal($DEVICE, "mute", "") eq "on") {
return "mute";
} else {
return "%i %%";
}
}
}
sub rg_Uno_Kellerbar_1valueFormat($$$)
{
my ($DEVICE,$READING,$VALUE) = @_;
if($READING eq 'hdd1_capacity') {
return "%.2f MB";
} elsif( $READING eq 'hdd1_free') {
return "%.2f MB";
} elsif( $READING eq 'volume' ) {
if( ReadingsVal($DEVICE, "mute", "") eq "on") {
return "mute";
} else {
return "%i %%";
}
}
}
1;
könnte da irgendwo der Fehler sein?
Ist es eigentlich möglich, anhand eines abweichenden Statusses innerhalb einer RG einen Befehl/Schaltvorgang auszulösen?
Konkreter Fall zum Verständnis:
Ich habe eine RG, der Batteriestatus aller Geräte gezeigt wird. Ist die Batterie ok, wird grün und bei leer rot angezeigt.
Ich will nun, falls eine Batterie rot ist, dies über einen Hinweis per Sound mitteilen.
Entweder "Batterie Fenster Büro ist leer" oder halt "Eines Ihrer Geräte enthält eine leere Batterie".
Für Tür- und Fensterkontakte wäre das auch ganz nützlich, oder Temperaturen und Steckdosen bei Überschreitung oder Unterschreitung eines Wertes.
ich mach das über ein notify!
kvo1
Nur als Bsp...... email wenn Schaltkotakt Nr 3 offen ist
### email wenn Alarm-Line-3 geöffnet wird
define ALine3 notify AZ3fachSchalter_Sw_03.open.* {\
DebianMail('email@@provider','HAUSALARM','Alarmlinie Nr.3 wurde manipuliert');;\
}
kvo1
Klar, mach ich ja auch. Ich überwache mit DOIF meine Fenster und Türen. Aber ich dachte, es wäre halt cool, den "Mackensensor" einfach geliefert zu bekommen. War auch nur so eine Idee.
ZitatIch überwache mit DOIF meine Fenster und Türen
wie machst Du das ... magst Du das hier posten ?
kvo1
Klar, ganz einfach:
DOIF anlegen
(
[TFK_Buero_Tuer] eq "open" or
[CUL_FHTTK_11de23] eq "Open" or
[Fenster_Kueche] eq "open" or
[CUL_FHTTK_5b2c19] eq "Open" or
[CUL_FHTTK_a5ae9f] eq "Open"
)
(set MyTTS tts Das Fenster ist noch offen. Bitte schließen.)
Mit do always und wayit 300 (Dauer bis zur Meldung)
Spart im Winter viel Energie.
Hi Invers,
danke !
gruss nach Berlin aus Berlin ;)
kvo1
Hi, ich habe noch ein Problem mit ValueFormat,
die Thermostate HM-TC-WM-EU liefern in den Readings measured-temp und desired-temp, neben der Temperatur auch die Timestamps.
Standard Reading.png
Füge ich nun nein weiteres Reading hinzu z.B. desired-temp, dann wird der timestamp ausgeblendet, aber die Spaltenbreite wird recht groß.
Zwei Reading.png
Wie kann ich die Spaltenbreite verringern, oder den Timestamp ausblenden?
Danke
Guido
die timestamps sind nicht teil des readings. die anzeige des timestamp bekommst du mit dem notime attribut weg.
wie breit die readingsGroup ist hängt vom style ab so lange du nichts anderes vorgibst. du kannst in einem passenden styleAttribut die breite fest setzen. im wiki gibt es beispiele dazu.
gruss
andre
hallo andre,
danke.
guido
Hallo,
Ich habe eine Frage zu readingsGroup und dem Refresh über Longpoll:
Ich lasse mir über eine readingsGroup den Zustand von FHTs anzeigen:
define rgFHT readingsGroup fht_.*:measured-temp,desired-temp
Dies funktioniert und bei (externen) Änderungen werden die Werte korrekt aktualisiert.
Da ich die desired-temp über die readingsGroup ändern möchte habe ich
attr rgFHT commands { 'desired-temp' => 'desired-temp:'}
hinzugefügt. Damit lässt sich die Temperatur setzen. Es wird jetzt aber die desired-temp nicht mehr aktualisiert wenn sie extern (z.B. durch Drehen am FHT) geändert wird. Wie kann ich die Definition der readingsGroup anpassen so dass die Combobox mit der desired-temp aktualisiert wird ?
Wenn ich die readingsGroup in den gleichen Raum setze in dem sich die FHTs befinden erfolgt die Aktualisierung übrigens problemlos.
Verwendete Versionen:
Zitat# $Id: fhem.pl 7212 2014-12-14 15:55:51Z rudolfkoenig $
# $Id: 01_FHEMWEB.pm 7264 2014-12-19 16:13:11Z rudolfkoenig $
# $Id: 33_readingsGroup.pm 7225 2014-12-16 09:31:58Z justme1968 $
Grüße,
ChrisD
ich lasse mir 2x die solltemp anzegeigen. 1x die der devices und einmal das (angepasste, weil enfach zu viele mögliche temp'S) dropdown
(http://forum.fhem.de/index.php?action=dlattach;topic=27399.0;attach=23475;image)
wenn ich nun im dropdown 16 wähle änert sich auch die sollanzeige (wenn sich das reaging des reglers ändert)
def define rg ReadingsGroup ...., desired-temp,<sollsetz>,....
commandattribut {'rg.sollsetz'=>'desired-temp:5.0,16.0,18.0,19.0,20.0'}
Hab seit heute diese beiden Fehler im LOg
2014.12.21 19:49:55.936 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 20:01:22.980 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1009
Hab heute ein update durchgeführt.
EDIT
Hab auch andauernd wieder diese Fehler im Log
2014.12.21 21:11:03.215 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1valueFormat called at (eval 9866) line 1.
2014.12.21 21:11:03.225 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1valueFormat called at (eval 9868) line 1.
2014.12.21 21:11:03.226 2: Undefined subroutine &main::rg_Uno_Schlafzimmer_1valueFormat called at (eval 9869) line 1.
2014.12.21 21:11:03.679 2: Undefined subroutine &main::VU_UltimoRGvalueFormat called at (eval 9874) line 1.
2014.12.21 21:11:03.679 2: Undefined subroutine &main::VU_UltimoRGvalueFormat called at (eval 9875) line 1.
2014.12.21 21:11:03.168 2: Undefined subroutine &main::rg_Uno_Kellerbar_1valueFormat called at (eval 9841) line 1.
2014.12.21 21:11:03.169 2: Undefined subroutine &main::rg_Uno_Kellerbar_1valueFormat called at (eval 9842) line 1.
2014.12.21 21:11:03.173 2: Undefined subroutine &main::rg_Uno_Kellerbar_1valueFormat called at (eval 9844) line 1.
2014.12.21 21:11:03.174 2: Undefined subroutine &main::rg_Uno_Kellerbar_1valueFormat called at (eval 9845) line 1.
Hallo zusammen
Habe jetzt schon ne weile hier gesucht bin aber noch nicht fündig geworden oder hab es überlesen
Ich habe mir eine Status anzeige für meine Heizung mit der ReadingsGroup zusammen gestellt.
Jetzt möchte ich gerne die anzeige die ja in Sekunden ist in stunden umrechnen
Kann mir jemand helfen
Danke
von welchen sekunden sprichst du ?
gruss
andre
Hallo
Andre
Ich ziehe die Daten für die Anzeige aus den "HourCounter" von meiner Heizung.
Und da sind die Zeit werte ja alle in sekunden
Zitat
2014-12-22_17:28:44 CN.Heizung countsOverall: 85
2014-12-22_17:28:44 CN.Heizung countsPerDay: 56
2014-12-22_17:28:44 CN.Heizung pauseTimeIncrement: 584
2014-12-22_17:28:44 CN.Heizung pauseTimeOverall: 87046
2014-12-22_17:28:44 CN.Heizung pauseTimePerDay: 54460
2014-12-22_17:29:15 CN.Heizung pulseTimeIncrement: 31
2014-12-22_17:29:15 CN.Heizung pulseTimeOverall: 13216
2014-12-22_17:29:15 CN.Heizung pulseTimePerDay: 8495
2014-12-22_00:00:00 CN.Heizung tickDay: 1
2014-12-22_17:00:00 CN.Heizung tickHour: 1
2014-12-22_17:29:15 CN.Heizung value: 0
Für die Status Anzeige meine Heizung habe ich mir jetzt nur die "pulseTimeCverall"+"pulseTimeperDay" heraus genommen
ZitatGesamtstunden:13401
StundenHeute: 868
die werte sind aber in sek ich möchte sie aber in Stunden
Im der Grafik rechene ich ja so "$fld[3]/=3600" in Stunden um.
Meine Frage ist wie kann ich das hier machen
gruss
Jürgen
z.b. mit {$VALUE/3600} im passenden valueFormat.
gruss
andre
Hallo Andre
Passt super
Aber wie bekomm ich jetzt noch hin das nur zwei stellen hinter dem komma sind
Gruss
{sprintf("%.2f",$VALUE/3600)}
gruss
andre
Hallo Andre
Vielen Danke
habe es auch schon getestet
Passt
LG
Hallo,
@chris1284: Danke für den Hinweis, damit funktioniert die Aktualisierung. Ich möchte aber u.a. um Platz zu sparen nur den Dropdown anzeigen lassen.
Ich habe mir den Code angesehen und so modifiziert dass Dropdownmenüs in den ReadingsGroup korrekt aktualisiert werden.
Grüße,
ChrisD
Hallo,
gibt es eigentlich eine Möglichkeit, direkt per http auf readingGroups zuzugreifen?
Wie es z.B. mit
http://localhorst:8083/fhem/icons/<device>
auf Icons möglich ist.
Danke und Gruß
Christoph
Zitat von: CQuadrat am 27 Dezember 2014, 00:11:16
Hallo,
gibt es eigentlich eine Möglichkeit, direkt per http auf readingGroups zuzugreifen?
Wie es z.B. mit
http://localhorst:8083/fhem/icons/<device>
auf Icons möglich ist.
Danke und Gruß
Christoph
Falls du es weiter testen möchtest, heisst es localhost, nicht localhoRst.
Ob es geht, weiss ich leider nicht.
@ChrisD poste doch mal was du wo geändert hast.
@CQuadrat: nein. das geht nicht. was möchtest du denn genau machen?
gruss
andre
Hallo,
Anbei meine Änderungen. Damit funktioniert es im Moment bei mir. Da ich aber nur einen kleinen Teil der Funktionalität von readingsGroup verwende kann ich eventuelle Nebenwirkungen nicht einschätzen.
Grüße,
ChrisD
verwendest du die readingsGroup auf dem floorplan ?
fhemweb sendet in der normalen raum ansicht keine events für devices die nicht im raum vorhanden sind. deshalb sollte deine version in einem normalen raum nicht funktionieren weil die informid nicht passt.
ich muss mal schauen warum die aktuell verwendete version nicht so funktioniert wie sie soll. eventuell ist nur die id falsch.
gruss
andre
Hallo,
Ich hatte das Problem dass die Aktualisierung in einem normalen Raum nicht funktioniert da dort die informId falsch ist sobald ein Reading als Command verwendet wird. Nach der Änderung im Code hat es dann funktioniert da ich die informId passend gemacht habe. Im Floorplan geht es übrigens auch (eben getestet).
Als Beispiel ReadingsGroup mit einem FHT, DEF: fht_1.*:measured-temp,desired-temp, allein in einem Raum:
- Attribut commands leer, informId: rgDummy-fht_1.desired-temp, Update bei externer Änderung funktioniert (z.B. setreading), im Event-Monitor:
Zitat2014-12-27 14:57:57.659 readingsGroup rgDummy fht_1.desired-temp: 13
- Originalcode, Attribut commands { 'desired-temp' => 'desired-temp:'}, informId: fht_1-desired-temp, Update bei externer Änderung funktioniert nicht, kein Ereignis für die readingsGroup im Event-Monitor
- mein Code, Attribut commands { 'desired-temp' => 'desired-temp:'}, informId: rgDummy-fht_1.desired-temp, Update bei externer Änderung funktioniert, im Event-Monitor:
Zitat2014-12-27 15:01:48.772 readingsGroup rgDummy fht_1.desired-temp: 13
Grüße,
ChrisD
Hallo,
ich habe folgendes definiert, womit ich den Batterie status und den actStatus meiner 3 HM-SEC-SD darstellen will, allerdings bekomme ich nur den Batterie status angezeigt, was mache ich falsch?
Danke
define rd_Rauchmelder readingsGroup Flur_EG:battery,actStatus Keller:battery,actStatus Kinderzimmer:battery,actStatus
Internals:
CFGFN
DEF Flur_EG:battery,actStatus Keller:battery,actStatus Kinderzimmer:battery,actStatus
NAME rd_Rauchmelder
NR 1622
NTFY_ORDER 50-rd_Rauchmelder
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Flur_EG 1
Keller 1
Kinderzimmer 1
Content2:
DEVICES:
ARRAY(0x310d380)
ARRAY(0x2f295f8)
ARRAY(0x309cb48)
Fhem:
lastDefChange 47
last_update 1419692944.26028
Helper:
DEF
Attributes:
@ChrisD: du hast recht. wenn das dropDown vom original device kommt muss natürlich die inform id angepasst werden. ich baue es ein.
@Tommy82:was gibt einlist Kinderzimmer actStatus
gruss
andre
ich habe den patch etwas umgebaut. er sollte jetzt auch mit dem slider und anderen widgets funktionieren.
bitte testet mal die angehängte version.
gruss
andre
edit: ich habe den patch noch mal etwas überarbeitet.
Vielen Dank, es funktioniert.
ChrisD
ich habe die version eingecheckt.
gruss
andre
Zitat von: Invers am 27 Dezember 2014, 10:53:07
Falls du es weiter testen möchtest, heisst es localhost, nicht localhoRst.
Ob es geht, weiss ich leider nicht.
localhorst war als Witz gedacht :P
Zitat von: justme1968 am 27 Dezember 2014, 11:36:53
@CQuadrat: nein. das geht nicht. was möchtest du denn genau machen?
Nun, ich habe mir ein eigenes Frontend mit html zusammengebastelt. Device-Zustände, SVG-Plots, on/off/toggle-Buttons, diverse Infos per RSS, etc. bekomme ich da gut rein. Nur bei den readingGroups scheitert das ganze noch - leider. Wennn das ginge, wäre es perfekt.
du kannst ein get html auf das readingsGroup device machen und du bekommst den html code zurück. den kannst du bei dir einbauen. longpoll updates werden dann aber nicht funktionieren.
get <rg> html
gruss
andre
Super!
Danke, das sollte mir weiterhelfen. ;)
Nachtrag: Prinzipiell funktioniert es. Nur warum sind verwendete Icons im exportierten html größer als im FHEM-Frontend? Lässt sich die Icon-Größe irgendwo einstellen?
weil die icon größe in fhem per css konfiguriert wird und du das bei dir vermutlich nicht tust.
welchen vorteil versprichst du dir von deinem frontend?
gruß
andre
Zitat von: justme1968 am 28 Dezember 2014, 10:08:42
weil die icon größe in fhem per css konfiguriert wird und du das bei dir vermutlich nicht tust.
Wo muss ich das denn einstellen bzw. wie heißen die entsprechenden Style-Elemente?
Zitat von: justme1968 am 28 Dezember 2014, 10:08:42
welchen vorteil versprichst du dir von deinem frontend?
Ich kann es so gestalten, wie es mir gefällt.
schau nach wie es die fhemweb css files machen.
wenn du dir selber ein frontend baust solltest du das eigentlich hin bekommen.
gruß
andre
ps: gestalten wie es dir gefällt kannst du auch mit fhemweb und dem floorplan. und bei fragen ist der support vermutlich besser weil das so noch von anderen eingesetzt wird.
Naja, es sieht so aus, als wenn bei Verwendung von
get <rg> html
überhaupt kein CSS verwendet wird.
das css kommt auch nicht aus dem modul sondern aus dem fhemweb style
Bin gerade dabei ein readingsgroup für meine Heizung zu erstellen und komme einfach nicht weiter.
Ich habe einmal das Heizungsdefine "WZ_HeatingValve" und einmal einen Dummy "WZ_Heating".
Der Dummy soll das generelle an und ausschalten der Heizung ermöglichen. Das Heizungsdefine hat alle aktuellen Einstellungen.
Die beiden möchte ich jetzt zusammen in einer Zeile readingsgroup vereinen.
Momentan sieht es so aus.
define Raumklima readingsGroup <%sani_heating>,<Status>,<Mode>,<Soll-Temp>,<Off>,<On> .._HeatingValve:<{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-5),"state","-")}>,setMode,setTemp,<%off>,<%on>
attr Raumklima commands { 'setMode' => 'setMode:', 'Raumklima.off' => {fhem(\"set \" . substr(%DEVICE, 0, length(%DEVICE)-5) . \" off\"}}
attr Raumklima mapping {'setMode' => '',WZ_HeatingValve => 'Wohnzimmer',SZ_HeatingValve => 'Schlafzimmer'}
attr Raumklima nameStyle style='text-align:left;;'
attr Raumklima valueStyle style='text-align:center;;'
attr Raumklima group Raumklima
Ich schaffe es momentan alle Daten anzuzeigen habe aber folgende Probleme:
* Ich möchte mit zusätzlichen Schaltflächen den Dummy schalten. (<off> <on> im define.)
Leider bekomme ich es über das commands attr nicht hin den perl code ausführbar zu machen...
* Die Status Spalte wird nur als Text angezeigt es wird nicht das Icon vom Dummy angezeigt
* Das im readingsgroup angezeigte define in spalte 1 z.B. "WZ_HeatingValve" ist nicht klickbar...würde gerne mit einem Klick in das Define kommen.
:-\
du solltest das hier: <{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-5),"state","-")}>
so schreiben:<{ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-5),"state","-")}@state>
sonst gehen longpoll updates nicht weil die redaingsGroup nicht weiss das du state anzeigst.
oder du schreibst es gleich so:...,state@{substr("$DEVICE",0,length("$DEVICE")-5)},...
zu deinem commands attribut:
- um den ganzen {...} ausdruck gehören anführungzeichen
- die \ vor den " gehören da nicht hin.
- du musst die variablen version von $DEVICE verwenden
...,'Raumklima.off' => '{fhem("set " . substr($DEVICE, 0, length($DEVICE)-5) . " off"}',...
wenn du state als icon anzeigen möchtest kannst du entweder valueIcon verwenden und die icons zuweisen oder du konfigurierst dir in deinem dummy direkt devStateIcon so das der dummy an sich schon das richtige icon anzeigst und setzt valueIcon auf %devSateIcon.
gruss
andre
Hallo Andre,
danke für die Antwort, habe auch gleich alles wie folgt umgesetzt :
define Raumklima readingsGroup <%sani_heating>,<Status>,<Mode>,<Soll-Temp>,<Off>,<On> .._HeatingValve:state@{substr("$DEVICE",0,length("$DEVICE")-5)},setMode,setTemp,<%off>,<%on>
attr Raumklima commands { 'setMode' => 'setMode:', 'Raumklima.off' => '{fhem("set " . substr($DEVICE, 0, length($DEVICE)-5) . " off"}' }
attr Raumklima mapping {'setMode' => '',WZ_HeatingValve => 'Wohnzimmer',SZ_HeatingValve => 'Schlafzimmer'}
attr Raumklima nameStyle style='text-align:left;;'
attr Raumklima valueStyle style='text-align:center;;'
attr Raumklima group Raumklima
Leider zeigt er mir jetzt die Spalte für das "state" garnicht mehr an.
Woran kann das denn noch liegen?
Ich bekomme folgenden Fehler im Logifle...irgendwie kommt er mit den Klammern nicht zurecht?
SZ_HeatingValve: length("$DEVICE")-5)}: Unmatched ) in regex; marked by <-- HERE in m/^length("$DEVICE")-5) <-- HERE }$/ at ./FHEM/33_readingsGroup.pm line 676.
Wenn ich den zusätzliche Schalter "off" mit dem oben genannten attribute klicke. Führt wer das off Kommando für alle Zeilen der readingGroup aus.
d.h. wenn ich auf Schlafzimmer off klicke dann setzt er Wohnzimmer und Schlafzimmer auf off.....was stimmt da nicht?
Bzgl. der Icons des State`s ich habe bereits den Dummy mit devStateIcon konfiguriert...
(Habe gerade auch nochmal ein update durchgeführt...)
Hallo,
ich stehe bei der ReadingsGroup für meine Heizungen vor zwei Herausforderungen. Ich habe bei meiner Heizungslogik ein at, dass es jedoch nicht immer gibt. Ist es vorhanden, dann möchte ich zum einen den Ausführungszeitpunkt (Internal NTM) anzeigen und zum Anderen ein Kommando definieren, dass beim Klick auf die Zeit ausgeführt wird. Nun meine Herausforderungen: Da das at nicht immer definiert ist, dachte ich an
...,!+NTM,...
Da ich die Zeit aber innerhalb der Zeile eines anderen Devices anzeigen möchte, habe ich
...,!+NTM@{%DEVICE.".at.doAuto"},...
genommen - hier scheint aber das ! nicht zu funktionieren (wenn das at nicht exisitert, wird die Spalte ausgelassen).
Daher habe ich mir ein Sub in der MyUtils geschrieben, das mir den Wert zusammenbaut bzw. einen Leerstring zurückgibt, wenn das at nicht existiert.
...,<{getHeatingModeUntil($DEVICE,"")}@controlMode>,...
Zweite Herausforderung ist nun: Wie referenziere ich die Zelle nun, um ein Kommando darauf zu definieren?
Vielen Dank
Ronny
Ronny,
versuch mal folgendes
...,!+NTM@!{%DEVICE.".at.doAuto"},...
Ein zusätzliches "!" nach dem @.
Hat bei mir funktioniert.
Vielen Dank!
Mit $ statt % funktioniert's:
...,!+NTM@!{$DEVICE.".at.DoAuto"},...
Leider funktioniert kein LongPoll, da ich kein "Aktualisierungsreading" per @ mehr angeben kann, aber zumindest das mit dem Command funktioniert...
Hallo
Ich habe einen Betriebstundenzähler für meine Heizung
Paßt dank der guten beschreibungen hier ganz gut
Hab auch eine readingGroub die mir die gesamtstunden und die aktuelle am tag anzeigt.
Jetzt möchte ich gerne die Stunden pro tag in eine art von Tabelle bringen damit ich seh wie sich die so entwickeln
Ist das möglich ?
Gruß
wolfi
@RoBra81: der longpoll update funktioniert auch in der reading@device version. natürlich nur wenn es das reading und das device auch tatsächlich gibt. da du jeweils ein ! davor geschrieben hast deutet das darauf hin das es das device und/oder das reading nicht gibt. bitte prüfe das mal. in deinem fall ist das ! nicht nötig.
@wolfi1104: wenn du die entsprechenden werte irgendwo als readings hast geht das. der erste schritt wäre also die readings zu erzeugen.
gruss
andre
Leider funktioniert das longpoll in meinem Fall meiner Meinung nach aus zwei Gründen nicht: zum einen gibt es das Device nicht immer (daher das !) und zum anderen ist es kein Reading sondern ein Internal das ich Anzeige. Als ich die Anzeige noch über eine sub gebaut hatte konnte ich noch ein @reading für das longpoll dran hängen - da wüsste ich aber nicht, wie ich es bei commands adressiere...
wenn es das device nicht gibt dann gibt es auch kein event. bzw. erst in dem moment in dem es das reading gibt.
die <{...}@reading> und die reading@device variante sind was longpoll updates angeht identisch. aber internal erzeugen nie ein event. da kann nichts aktualisiert werden.
gruss
andre
Danke Andre
Ich habe folgende Reading
clearDate 2014-12-21 13:38:13 2014-12-21 13:38:13
countsOverall 690 2014-12-29 12:38:21
countsPerDay 60 2014-12-29 12:38:21
pauseTimeIncrement 567 2014-12-29 12:38:21
pauseTimeOverall 573529 2014-12-29 12:38:21
pauseTimePerDay 36806 2014-12-29 12:38:21
pulseTimeIncrement 145 2014-12-29 12:28:53
pulseTimeOverall 2062037 2014-12-29 12:28:53
pulseTimePerDay 8694 2014-12-29 12:28:53
state 58 2014-12-29 12:11:09
tickDay 1 2014-12-29 00:00:00
tickHour 1 2014-12-29 12:00:00
tickMonth 0 2014-12-24 10:33:43
tickWeek 1 2014-12-28 00:00:01
tickYear 0 2014-12-24 10:33:43
value 1 2014-12-29 12:38:21
Find dabei aber keins das ich für Woche/Monat oder Jahr nehmen kann oder ?
gruß
wie gesagt: die musst du erst erzeugen. mit statistics oder average oder über ein eigenes notify.
gruss
andre
Ja habe ich mir auch schon gedacht und wiki bei hourCounter
folgendn Befehl gefunden
define CN.EVENT notify CN\..*:tick.* { appHCNotify("%NAME","%EVTPART0","%EVTPART1");;}
Der sollte doch die readings erzeugen laut wiki
Aber ich kann den Befehl nicht so umschreiben das er zu meine counter paßt
Mein Counter nennt sich "CN.Heizung"
Gruß
Wolfi
da musst du bei HourCounter nachfragen.
gruss
andre
sorry klar
mach ich
Zitat von: justme1968 am 29 Dezember 2014, 12:31:35
aber internal erzeugen nie ein event. da kann nichts aktualisiert werden.
gruss
andre
Ich würde hier gern das Internal in der ReadingsGroup aktualisieren, wenn ein bestimmtes Reading aktualisiert wird...
Zitat von: justme1968 am 29 Dezember 2014, 12:31:35
die <{...}@reading> und die reading@device variante sind was longpoll updates angeht identisch.
Aber wie adressiere ich die <{...}@reading> Variante beim Commands-Attribut?
das geht leider nicht.
wie wäre es wenn du dir ein user reading anlegst das durch das andere reading getriggert ist und den internal value kopiert. dann brauchst du in der readingsGroup keine klimmzüge und mit event-on-change-reading kannst du sogar überflüssige events unterdrücken.
Da habe ich leider auch keine schöne Idee - bei dem Device handelt es sich um ein at da immer mal wieder angelegt wird und dann wieder weg ist...
das macht doch nichts. das kanst du über das ! flag abfangen.
aber vielleicht schreibst du noch mal genau was du eignetlich vor hast.
gruss
andre
Meine Heizungslogik ist so aufgebaut, dass bei manueller Änderung der Soll-Temperatur ein at angelegt wird, das nach anderthalb Stunden wieder die Automatik-Temperatur anzeigt. Falls dieses at existiert soll der Ausführungszeitpunkt in der ReadingsGroup angezeigt werden. Ein Klick auf diesen Wert soll dann sofort wieder den Automatikwert setzen. Das funktioniert soweit, nur dass die Zeit nicht per longpoll aktualisiert wird...
Zitat von: justme1968 am 27 Dezember 2014, 17:45:00
@Tommy82:was gibt einlist Kinderzimmer actStatus
gruss
andre
Hi, ein list ergibt:
ZitatKinderzimmer alive
actCycle ist ein attribut und kein reading. du musst ein ? davor schreiben:define rd_Rauchmelder readingsGroup Flur_EG:battery,?actStatus Keller:battery,?actStatus Kinderzimmer:battery,?actStatus
gruss
andre
Super, das wars.
Vielen Dank
@RoBra81: damit die zeit per longpoll aktualisiert werden kann brauchst du ein reading das regelmässig aktualisiert wird. das einfachste ist vermutlich wenn du dir ein zweites at anlegst das z.b. jede minute aufgerufen wird und das nötige reading am besten gleich im richtigen format erzeugt.
gruss
andre
Ich habe jetzt eine Lösung gefunden: ich habe ein notify gebaut, das auf die globalen DEFINED, MODIFIED und DELETED Events für das immer gleich heißende at reagiert und die Ausführungszeit in ein Reading meiner Heizungskomponente schreibt...
Klappt super!
Hi,
ich habe eine neue RD, wo ich mir das aktuelle Datum und die Uhrzeit anzeigen lasse, die rd sieht so aus:
Internals:
CFGFN
DEF fp_time:state fp_date:state
NAME rd_Datum
NR 2337
NTFY_ORDER 50-rd_Datum
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
fp_date 1
fp_time 1
Content2:
DEVICES:
ARRAY(0x4683388)
ARRAY(0x5c308e8)
Fhem:
lastDefChange 44
last_update 1419963370.19424
Helper:
DEF
Attributes:
noheading 1
nonames 1
nostate 1
notime 1
Allerdings wird es in zwei Zeilen Ausgegeben ich hätte es gerne in einer in Form von
Zitat30.12.2014 19:20 Uhr
Was muss ich dafür noch einstellen?
Danke
fp_time:state,state@fp_date
gibt es einen grund datum und zeit auf zwei dummys aufzuteilen? du kannst zwei readings in einem dummy verwenden. oder sogar beides in ein reading stecken.
gruss
andre
Hi, danke, musste deinen Code umdrehen, dann war es so wie ich es wollte :-)
Ws die zwei Dummys angeht, hast du ntürlich recht, auf die idee war ich garnicht gekommen ???
EDIT:
Hab aber noch eine Frage, wollte als schrift jetzt noch LCARSGTJ3 zuordnen, und habe dafür das style attribut so eingefügt:
style="font-size:20px;color:black;font:LCARSGTJ3"
Die Schrift ist auf dem System installiert, wird aber so nicht angezeigt, hab ich was falsch eingegeben?
Danke
Hallo Tommy82
das zeigt bei mir grade mal garnix an...
wie sieht deine Def insgesamt aus ?
danke
kvo1
wo hast du es eingegeben? was steht im log?
wenn es direkt in der config ware musst du auf die ; achten.
gruss
andre
Das list sieht so aus :
Internals:
CFGFN
DEF fp_date:state,state@fp_time
NAME rd_Datum
NR 2337
NTFY_ORDER 50-rd_Datum
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
fp_date 1
Content2:
fp_time 1
DEVICES:
ARRAY(0x4682740)
DEVICES2:
ARRAY(0x4682740)
ARRAY(0x5b83b70)
Fhem:
lastDefChange 59
last_update 1419965758.3488
Helper:
DEF
Attributes:
fp_Home 9,1207,0,
noheading 1
nonames 1
nostate 1
notime 1
style style="font-size:20px;color:black;font:LCARSGTJ3"
Im Log gibts keine Fehler
Lässt sich auch irgendwie die readingsGroup Tabelle drehen?
Ich hätte gerne die Spalten als Zeilen und Zeilen als Spalten.
d.h. die Readings eines Devices in mehreren Zeilen zu einer Spalte zugeordnet..
nein. das geht nicht und wäre auch recht umständlich einzubauen.
wenn es nur ein paar wenige devices und readings sind kannst du es mit ...,reading@device,... von hand bauen.
gruss
andre
ok Danke für den Hinweis.
Hallo Andre,
kann man das Symbol ">" zum Auf-/Zuklappen der DG anpassen , z.B. durch ein anderes Zeichen oder ein ICON?
Cool wäre, ein Sortierung der Readings wenn man auf eine Überschriften-Spalte klickt :-[
guten Rutsch !
klaus
nein. symbol anpassen geht noch nicht. kommt aber noch.
sortieren weiss ich noch nicht :) das kommt vielleicht mit wenn ich summe/min/max für einzelne spalten einbaue.
gruss
andre
Zitat von: Tommy82 am 30 Dezember 2014, 22:08:41
Das list sieht so aus :
Internals:
CFGFN
DEF fp_date:state,state@fp_time
NAME rd_Datum
NR 2337
NTFY_ORDER 50-rd_Datum
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
fp_date 1
Content2:
fp_time 1
DEVICES:
ARRAY(0x4682740)
DEVICES2:
ARRAY(0x4682740)
ARRAY(0x5b83b70)
Fhem:
lastDefChange 59
last_update 1419965758.3488
Helper:
DEF
Attributes:
fp_Home 9,1207,0,
noheading 1
nonames 1
nostate 1
notime 1
style style="font-size:20px;color:black;font:LCARSGTJ3"
Im Log gibts keine Fehler
Gibt es in meiiner definition einen Fehler das die Schriftart nicht angezeigt wird?
Hab heute auch plötzlich diese Fehler im Log:
2015.01.01 12:02:58.738 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2015.01.01 12:28:41.069 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 714.
2015.01.01 12:28:41.069 3: stacktrace:
2015.01.01 12:28:41.070 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (713)
2015.01.01 12:28:41.070 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (863)
2015.01.01 12:28:41.071 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1416)
Hallo zusammen,
ich habe eine ReadingsGroup angelegt um meine Max Thermostate und die jeweiligen Fensterkontakte anzuzeigen und zu steuern. Das scheint auch so zu funktionieren, das einzige was nicht funktioniert ist das ausblenden der neu zu setzenden Temperatur per "attr Heizungswerte valueStyle {($VALUE eq "00")?'style="visibility:hidden"':}".
Dennoch bekomme ich im Log "syntax error at (eval 90) line 1, at EOF" und ich kann nicht erkennen woher das kommt.
Hier die ersten Ausgaben des Fehlers:
2015.01.01 16:38:09 4: HTTP FHEMWEB:192.168.0.14:54553 GET /fhem?room=Wohnzimmer
2015.01.01 16:38:09 2: syntax error at (eval 90) line 1, at EOF
2015.01.01 16:38:09 5: Name des Thermostats WZ_Thermostat_Dach
2015.01.01 16:38:09 5: Name des Fensterkontaktes WZ_Fensterkontakt_Dach Status des Fensterkontaktes n/a
2015.01.01 16:38:09 2: syntax error at (eval 101) line 1, at EOF
2015.01.01 16:38:09 2: syntax error at (eval 102) line 1, at EOF
Ich verwende die Funktion myUtils_HeizungUpDown um über die Pfeile die Temperatur zu steuern und habe nur desired-temp durch desiredTemperature ersetzt.
Hier die Definition:
define Heizungswerte readingsGroup <%sani_heating>,<Soll>,<Kälter>,<>,<Wärmer>,<Ist>,<Ventil>,<Mode>,<Boost>,<Fenster>,<Batterie>\
type=HeatingThermostat:desiredTemperature,<{myUtils_HeizungUpDown($DEVICE,"down")}@desiredTemperature>,desired-new,<{myUtils_HeizungUpDown($DEVICE,"up")}@desiredTemperature>,temperature,valveposition,mode,<%Boost>,<{get_FensterIcon_Zu_Thermostat($DEVICE)}>,battery
attr Heizungswerte nameStyle style="color:yellow"
attr Heizungswerte mapping %ALIAS
attr Heizungswerte room Wohnzimmer
attr Heizungswerte valueFormat {'temperature' => "%.0f °C", 'desiredTemperature' => "%.0f °C", 'valveposition' =>"%.0f %%", 'maxValveSetting' =>"%.0f %%" }
attr Heizungswerte valueIcon {'battery.ok'=>'batterie@lightgreen','battery.low'=>'batterie@red','mode.manual'=>'sani_heating_manual','mode.auto'=>'sani_heating_automatic'}
attr Heizungswerte commands {'Heizungswerte.Boost'=>"set %DEVICE desiredTemperature auto boost" }
attr Heizungswerte valueStyle {($VALUE eq "00")?'style="visibility:hidden"':}
Hier die Funktion um das Fenstericon anzuzeigen:
sub
get_FensterIcon_Zu_Thermostat ($) {
my($hash) = @_;
$hash = $defs{$hash} if( ref($hash) ne 'HASH' );
#Leite den Fensterkontaktnamen aus dem Thermostatnamen ab
my $str = $hash->{NAME};
Log 5, "Name des Thermostats $str";
my $find = "Thermostat";
my $replace = "Fensterkontakt";
$find = quotemeta $find; # escape regex metachars if present
#Indem eine regex verwendet wird
$str =~ s/$find/$replace/g;
#Ermittle den Status des Fensterkontakts
my $VALUE = ReadingsVal($str,"state","n/a");
Log 5, "Name des Fensterkontaktes $str Status des Fensterkontaktes $VALUE";
my $substr = "Dach";
my $substr1 = "Strasse";
#Ermittle die Icons für Dachfenster
if (index($str, $substr) != -1) {
if($VALUE eq "opened"){
return '%fts_window_roof_open_2@red'}
if($VALUE eq "closed"){
return '%fts_window_roof@green'}
if($VALUE eq "n/a"){
return ''}
}
#Ermittle die Icons für normale Fenstericon
if (index($str, $substr1) != -1) {
if($VALUE eq "opened"){
return '%fts_window_2w_open_l@red'}
if($VALUE eq "closed"){
return '%fts_window_2w@green'}
if($VALUE eq "n/a"){
return ''}
}
}
Gruß
Thomas
da fehlen zwei anführungszeichen am ende:attr Heizungswerte valueStyle {($VALUE eq "00")?'style="visibility:hidden"':''}
gruss
andre
das war es anscheinend noch nicht ganz hab immer noch einen Fehler:
syntax error at (eval 826) line 1, near ")?"
entschuldige... ich glaube ich habe nicht ausgeschlafen. vergiss den teil mit dem if. der hat da nichts zu suchen. es sind nur die beiden '' am ende die du vergessen hast.
ich hab es oben korrigiert.
gruss
andre
Hallo Andre,
kannst du auch schon was zu meinen Fehlermeldungen sagen?
Danke
Edit:
Hab heute folgende Meldungen im Log
2015.01.02 06:40:56.435 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1017.
2015.01.02 06:40:56.438 3: stacktrace:
2015.01.02 06:40:56.439 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (1014)
2015.01.02 06:40:56.439 3: main::readingsGroup_Notify called by fhem.pl (2947)
2015.01.02 06:40:56.440 3: main::CallFn called by fhem.pl (2870)
2015.01.02 06:40:56.440 3: main::DoTrigger called by fhem.pl (3625)
2015.01.02 06:40:56.440 3: main::readingsEndUpdate called by ./FHEM/70_ENIGMA2.pm (2253)
2015.01.02 06:40:56.440 3: main::ENIGMA2_ReceiveCommand called by FHEM/HttpUtils.pm (78)
2015.01.02 06:40:56.441 3: main::HttpUtils_ReadErr called by fhem.pl (2558)
2015.01.02 06:40:56.441 3: main::HandleTimeout called by fhem.pl (539)
2015.01.02 06:44:00.485 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1017.
2015.01.02 06:44:00.486 3: stacktrace:
2015.01.02 06:44:00.486 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (1014)
2015.01.02 06:44:00.486 3: main::readingsGroup_Notify called by fhem.pl (2947)
2015.01.02 06:44:00.487 3: main::CallFn called by fhem.pl (2870)
2015.01.02 06:44:00.487 3: main::DoTrigger called by fhem.pl (3625)
2015.01.02 06:44:00.487 3: main::readingsEndUpdate called by ./FHEM/70_ENIGMA2.pm (2253)
2015.01.02 06:44:00.487 3: main::ENIGMA2_ReceiveCommand called by FHEM/HttpUtils.pm (78)
2015.01.02 06:44:00.488 3: main::HttpUtils_ReadErr called by fhem.pl (2558)
2015.01.02 06:44:00.488 3: main::HandleTimeout called by fhem.pl (539)
Heute gibt es seltsamerweisse keine Fehler mehr im Log........
Hab eine rd definiert , welche auf meinem Laptop auch richtig dargestellt wird, allerdings auf meinem Tablett einen Zeilenumbruch hat, wieso und wie kann ich das unterbinden?
Internals:
DEF fp_date:state,state@fp_time
NAME rd_Datum
NR 274
NTFY_ORDER 50-rd_Datum
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
fp_date 1
Content2:
fp_time 1
DEVICES:
ARRAY(0x3ce15b8)
DEVICES2:
ARRAY(0x3ce15b8)
ARRAY(0x4a0b7d0)
Fhem:
lastDefChange 48
last_update 1420320865.6179
Helper:
DEF
Attributes:
fp_Home 4,1130,0,
noheading 1
nonames 1
nostate 1
notime 1
style style="font-size:20px;color:black;font:LCARSGTJ3"
Im Anhang einmal das Bild wie es auf dem Laptop und wie es auf dem Tablett aussieht.
Die Schriftart funktioniert leider auch noch nicht :-(
Danke
ich denke mal das es sich bei "Reciever" um einen Buchstabendreher handelt ;)... auch wenn man bei google die ie Variante durchaus finden kann.
Was hat der Reciever mit meinem Problem zu tun??? ;)
ist mir nur so nebenbei aufgefallen... einer der beliebtesten Buchstabendreher...
Da hast du wohl recht :-)
Hab jetzt heute plötzlich wieder diese Warnungen im LOG
2015.01.04 15:50:01.169 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 714.
2015.01.04 15:51:39.626 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1017.
welche sprintf benutzt du innerhalb der readings?
Ich wüsste überhaupt keinen. Müsste sich ja dann auch in der fhem.cfg wieder finden, dort gibt es aber auch keinen Eintrag sprintf, auch nicht in der 99_myUtils
irgendein auszugebender Wert der ein "-" enthält?
Bestimmt mehrere, z.b. werden bei dieser rd http://www.fhemwiki.de/wiki/ReadingsGroup#Enigma_Receiver (http://www.fhemwiki.de/wiki/ReadingsGroup#Enigma_Receiver) wenn keine Daten geliefert werden können "-" angezeigt
anstelle von Zahlenwerten?
Ja
dann wird das sprintf als Zahlenwert formatiert, nur leider ist kein Zahlenwert vorhanden. Zur Not die Warnung ignorieren.
Gibt es die Möglichkeit 2 valueicons direkt nebeneinander für ein reading anzeigen zu lassen?
Konkret: der Heizungs-Modus/Reading ist aktuell "Heizen+Warmwasser". Das soll durch 'sani_heating' und 'sani_water_tap' dargestellt werden. Direkt nebeneinander. Geht das? Und wenn: wie 8)?
das einfachste ist in deinem fall wen du dir ein kombiniertes icon baust. und dann dieses verwendest.
gruß
andre
ok. alles klar.
Hallo Zusammen,
man kann sich ja mit
define <rg> readingsGroup <1>,<2>,<3>,<4> TYPE=CUL_HM:....
eine readingsGroup aller HM-Devices (und Channel) erstellen.
Eine Übersicht mit list kann man degegen noch weiter einschränken, z.B. mit
list TYPE=CUL_HM:FILTER=subType=thermostat
auf bestimmte Geräte.
Jetzt meine Frage:
Trotz Suche (;)) und Versuche (:() ist es mir nicht gelungen, dies auch bei einer readingsGroup zu erreichen. Ist das korrekt und dieses Feature dort (noch? ;D) nicht implementiert? Oder gibt es da einen Umweg?
Danke und Gruß
Christoph
PS: Wenn man mal den Dreh raus hat, dann hat das Modul readingsGroup ein gehöriges Suchtpotential.
schau mal hier: http://forum.fhem.de/index.php/topic,30883.msg234504.html#msg234504
gruß
andre
Danke!!
Den Forumsbeitrag hatte ich leider nicht gefunden.
Wo das aber im Wiki stehen soll ist mir schleierhaft. Habe dort eben extra noch mal reingeschaut.
im wiki gibt es nur beispiele. es wird dort in keinem verwendet.
aber es steht in der commandref.
gruss
andre
Ja, wenn man weiß, dann sieht man's auch 8)
und ab morgen geht es auch mit einem :FILTER= ausdruck :)
define <rg> readingsGroup <1>,<2>,<3>,<4> TYPE=CUL_HM:FILTER=subType=thermostat:....
siehe hier: http://forum.fhem.de/index.php/topic,31792.0.html (http://forum.fhem.de/index.php/topic,31792.0.html)
gruss
andre
Muss hier auch nochmal fragen,
ich habe zwei ReadinGroups, eine fürs Fernsehprogramm und eine für Datum und Uhrzeit, beide hab ich auf einem Floorplan platziert, womit sie auf meinem Laptop richtig angezeigt werden, auf meinem Wandtablett wird das Fernsehprogramm aber viel kleiner dargestellt und die Datum und Zeit haben einen Zeilenumbruch, obwohl eigentlich genug Platz nach rechts da ist, um es "normal" darzustellen.
Das list der rd's sieht so aus:
Internals:
DEF fp_date:state,state@fp_time
NAME rd_Datum
NR 274
NTFY_ORDER 50-rd_Datum
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
fp_date 1
Content2:
fp_time 1
DEVICES:
ARRAY(0x55f7590)
DEVICES2:
ARRAY(0x55f7590)
ARRAY(0x55f7fc8)
Fhem:
lastDefChange 21
last_update 1420919011.62297
Helper:
DEF
Attributes:
fp_Home 4,1130,0,
noheading 1
nonames 1
nostate 1
notime 1
style style="font-size:20px;color:black;font:LCARSGTJ3"
Internals:
DEF <Programm>,<Jetzt>,<Dann>,<Uhrzeit>
TV_Programme_next:Sat1@TV_Programme,Sat1_next,Sat1_next_time
TV_Programme_next:Pro7@TV_Programme,Pro7_next,Pro7_next_time
TV_Programme_next:RTL@TV_Programme,RTL_next,RTL_next_time
TV_Programme_next:ARD@TV_Programme,ARD_next,ARD_next_time
TV_Programme_next:ZDF@TV_Programme,ZDF_next,ZDF_next_time
TV_Programme_next:Sport1@TV_Programme,Sport1_next,Sport1_next_time
TV_Programme_next:rtl2@TV_Programme,rtl2_next,rtl2_next_time
TV_Programme_next:KABEL_1@TV_Programme,KABEL_1_next,KABEL_1_next_time
TV_Programme_next:VOX@TV_Programme,VOX_next,VOX_next_time
NAME TV_Programm
NR 195
NTFY_ORDER 50-TV_Programm
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
TV_Programme_next 1
Content2:
TV_Programme 1
DEVICES:
ARRAY(0x56c5b48)
ARRAY(0x56c2478)
ARRAY(0x56c2e70)
ARRAY(0x56a9340)
ARRAY(0x4d7bb58)
ARRAY(0x55a6568)
ARRAY(0x56c4dc0)
ARRAY(0x55f6a48)
ARRAY(0x56c1848)
ARRAY(0x56c0a78)
DEVICES2:
ARRAY(0x56c5b48)
ARRAY(0x56c2478)
ARRAY(0x56c2e70)
ARRAY(0x56a9340)
ARRAY(0x4d7bb58)
ARRAY(0x55a6568)
ARRAY(0x56c4dc0)
ARRAY(0x55f6a48)
ARRAY(0x56c1848)
ARRAY(0x56c0a78)
ARRAY(0x5555140)
ARRAY(0x56c1468)
ARRAY(0x4ee0e30)
ARRAY(0x4d7bf48)
ARRAY(0x55fa5c8)
ARRAY(0x558caf8)
ARRAY(0x4ebb2c0)
ARRAY(0x55f8e40)
ARRAY(0x55bc3d0)
Fhem:
lastDefChange 21
last_update 1420919863.4642
Helper:
DEF
commands {"set Senderwechsel %READING"}
nameStyle style="color:yellow;font-weight:bold"
Nameicon:
ARD ard
KABEL_1 kabel1
Pro7 pro7
RTL rtl
Sat1 sat1
Sport1 sport1
VOX vox
ZDF zdf
rtl2 rtl2
Attributes:
commands {"set Senderwechsel %READING"}
fp_Reciever 272,831,0,
group TV_Programm
nameIcon { Pro7 => 'pro7', Sat1 => 'sat1', RTL => 'rtl', Sport1 => 'sport1', ZDF => 'zdf', ARD => 'ard',rtl2 => 'rtl2',KABEL_1 => 'kabel1',VOX => 'vox' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
style style="color:white;font-size:18px"
Im Anhang mal ein Bild wie es auf dem Laptop aussieht und wie auf dem Wandtablett, vieleicht hat ja einer einen Tip für mich
Ich habe meinen Floorplan optimiert, nutze nun bei den readingsGroups style=width, damit die Spalten gleich auf die gesetzte Breite aufgeteilt werden und sich damit perfekt ans Hintergrundbild anpassen.
Leider bekomme ich es aber nicht hin, dass die readingsGroup wirklich ganz links beim ersten Pixel beginnt. Da ist irgendein Rahmen davor. Das führt dazu, dass die Spalten zu weit rechts sind.
Fehlt mir ein style-Attribut, oder ist das einfach nicht möglich, gleich ohne Rahmen ganz links mit dem Inhalt zu beginnen??
Ich habe aktuell: style="border:none; box-shadow:none; border-spacing: 0"
Danke.
Ich habe eben nach ca. 1 Woche wieder ein Update durchgeführt und heftige Probleme.
Aufgefallen ist es mir im Floorplan, dort werden bei jeder Aktualisierung unterschiedliche Bilder nicht angezeigt.
Und bei einer ReadingsGroup passt was nicht. In einer Zeile werden 2 leere Zellen eingefügt, die dort nichts zu suchen haben. Im Floorplan werden zudem die style-Attribute (in der css-Datei) zur Schriftgröße bei der letzten Zeile mit der desired-Temp (HM-CC-TC) ignoriert, teilweise fehlt die Zeile einfach komplett.
Mit der identischen Konfiguration hat es bis vor dem Update funktioniert. Da ich seit letzter Woche mein System neu aufsetze und immer noch dran sitze, schaue ich aktuell recht viel rein.
moin,
ist es möglich die readings in einer readingsgroup dynamisch zu erstellen? wennich das in die
DEF
Zitat<{for(my $i= 001;$i<=150;$i++)
{print "<zeile_".sprintf('%03d',$i).">,<View_Abfall:t_".sprintf('%03d',$i)."_bdate>,<View_Abfall:t_".sprintf('%03d',$i)."_btime>,<View_Abfall:t_".sprintf('%03d',$i)."_summary>,<View_Abfall:t_".sprintf('%03d',$i)."_edate>,<View_Abfall:t_".sprintf('%03d',$i)."_etime>\n"}}>
schreibe erzeugt es quasi eine definitionszeile für die readingsgroup die ich sonst zb für jedes einzele reading händisch in die def schreiben müsste
Zitat<zeile_001>,<View_Abfall:t_149_bdate>,<View_Abfall:t_149_btime>,<View_Abfall:t_149_summary>,<View_Abfall:t_149_edate>,<View_Abfall:t_149_etime>
allerdings bleibt die rg leer
Hallo und schönen Sonntag euch,
ich habe nach dem Wiki "Heizungsteuerung für HM Wand- und Heizkörperthermostate " versucht diese zu erstellen. Aber irgendwie scheitere ich an der Soll-Neu Temperatur. Im Anhang ist ein Bild, wo man diesen Fehler sieht.
Ich habe den Code bisschen gekürzt, wo das Problem trotzdem bestehen bleibt. Hier der Code für die kürzere Version:
define heatingInfo2 readingsGroup <%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Ventil / RH>,<Modus>,<Lock>,<Bat>\
WZ_Wandthermostat_Climate:desired-temp,<sollsetz>,measured-temp,humidity,controlMode,R-globalBtnLock@WZ_Wandthermostat,batteryLevel@WZ_Wandthermostat\
attr heatingInfo2 commands {"heatingInfo2.sollsetz"=>"desired-temp:5.0,12.0,17.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0","controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual","R-globalBtnLock.on"=>"set %DEVICE regSet globalBtnLock off","R-globalBtnLock.off"=>"set %DEVICE regSet globalBtnLock on"}
attr heatingInfo2 mapping {WZ_Wandthermostat_Climate=>"Wohnzimmer"}
Was mache ich falsch?
Danke fürs Helfen =)
Das Problem habe ich seit dem heutigen update auch, bist also nicht allein.
@MaJu,stromer-12: steht etwas im log oder im der js konsole?
könnt ihr das problem mit einer readingsGroup und ein paar dummys nachstellen?
passiert es nur auf dem floorplan oder auch in der normalen raum ansicht?
@chris1284: die einzelnen element der DEF können nicht aus einem einzigen perl ausdruck kommen. wenn du alles in einem ausdruck zusammen baust kannst du die readingGroup per modify ändern.
Das Mapping von Auswahlfeldern klappt nicht mehr.
Der Name wird nicht dargestellt, stattdessen ein leeres Feld.
Bei "desired-temp"=>"Soll" wird "Soll" nicht angezeigt.
Beim Mapping "desired-temp"=>"" wird jetzt eine Spalte hinzugefügt jetzt, welche dann auch aktuallisiert wird.
Zitat von: justme1968 am 11 Januar 2015, 12:49:32
@MaJu,stromer-12: steht etwas im log oder im der js konsole?
könnt ihr das problem mit einer readingsGroup und ein paar dummys nachstellen?
passiert es nur auf dem floorplan oder auch in der normalen raum ansicht?
Leider kann ich keinen Log mehr liefern. Ich hatte zufällig gestern Nachmittag eine Sicherung meines gesamten FHEM-Datenordners gemacht und dies nun zurückgespielt, da der Akzeptanzfaktor des Display sonst weit gesunken wäre.
Das Problem mit den zusätzlichen Zellen habe ich ausschließlich bei "commands" gehabt, so wie es auch bei stromer-12 aussieht. Auch waren nur die "commands" die einzigen, die ihre Schriftgrößenvorgabe aus der css-Datei ignoriert haben.
Die leeren Zellen hatte ich sowohl beim Floorplan, als auch bei der normalen Ansicht, sowohl bei WEB (8083, ich nutze es ohne eigene Anpassung im Standard-Layout), als auch bei WEBphone und WEBtablet (eigene css-Datei).
Das Ignorieren der Größenvorgabe kann ich bei der normalen Ansicht nicht feststellen, da ich hier keine Vorgabe mache, daher kann mir das nur beim Floorplan bei WEBphone und WEBtablet auffallen.
das problem mit dem command mapping habe ich gefunden. ich teste gerade eine lösung.
das mit den leeren zeilen noch nicht.
ich habe eben eine update eingecheckt mit dem die verschobenen spalten behoben sein sollten.
damit für die dropDown menüs und slider longpoll wieder funktioniert habe ich für rudi noch einen patch gepostet.
gruss
andre
Mit der Version aus dem SVN siehts bei mir erst mal gut aus.
Danke
mein Problem ist mit dem heutigem update behoben worden.
Dankeschön! ;D
Hallo Ihr Lieben,
ich bräuchte mal eure Hilfe. Wie könnte ich folgende Readingsgroup besser aufbauen, damit die "Links" nicht in dem wunderschönen "grün" festgefahren sind?
Ich möchte einfach eine Readingsgroup auf einem Floorplan darstellen in der ich die 3 commands jeweils per Button absetzen kann. Und die Schrift sollte in weiß sein.
Eine entsprechende Anzeige des momentan geschaltenem Zustand (Abschalt, WW und H+WW) wäre auch nett, ist aber erstmal sekundär.
Herzlichen Dank!
Olli
Eine Frage:
Kann man in eine Zelle der readingsGroup 2 readings reinpacken?
Ich möchte vom openweather-Modul jeweils die Tiefst- und Höchsttemperatur möglichst in eine Zelle packen und mit einem Slash oder senkrechten Strich verbinden, am Ende "°C" noch ran?.
Vom device "openweather" sind das zum Beispiel "fc0_tempMin06" und "fc0_tempMax06"
Also gibt es irgendwie die Möglichkeit das folgende zu erreichen und in
einer Zelle darzustellen:
-1 | 5 °CDie Alternative wäre, alle anderen Readings in den Spalten drüber und drunter über mehrere Spalten zu ziehen, das möchte ich aber möglichst vermeiden.
___________________________
Durch das Update-Problem ging die andere Frage unter. Kann mir hier jemand helfen?
Zitat von: MaJu am 11 Januar 2015, 00:32:00Leider bekomme ich es aber nicht hin, dass die readingsGroup wirklich ganz links beim ersten Pixel beginnt. Da ist irgendein Rahmen davor. Das führt dazu, dass die Spalten zu weit rechts sind.
Fehlt mir ein style-Attribut, oder ist das einfach nicht möglich, gleich ohne Rahmen ganz links mit dem Inhalt zu beginnen??
Ich habe aktuell: style="border:none; box-shadow:none; border-spacing: 0"
DANKE!
das kannst du erreichen wenn du für das erste reading valuePrefix verwendest. du verlierst aber dadurch die longpoll aktualisierung falls nicht beide werte gleichzeitig geändert werden. und natürlich valueSuffix für das °C.
die andere möglichkeit ist etwas in der art: ...,<{myTemp($DEVICE)@fc0_temp(Min|Max)06>,... und in myTemp dann beide werte per readingsVal holen und selber ein html div zusammen bauen und zurückgeben: "<div>$min | $max °C</div>". wenn sich beim event beide werte ändern musst du natürlich nicht auf beide triggern. du verlierst aber hier die möglichkeit die readings per regex anzugeben.
die dritte möglichkeit ist das kombinierte reading als userReading schon im device selber zusammen zu bauen und dann in der readingGroup nur anzuzeigen.
welche von den dreien bei dir besser passt musst du ausprobieren.
zu ganz links beginnen: hast du nonames gesetzt?
gruss
andre
Danke. Da die Temperaturen immer gleichzeitig vom openweather-Modul gesetzt werden sollten, müssen sie nicht separat getriggert werden.
Die erste Variante ohne "°C" ist nicht so schön.
Bei der zweiten übersteigt es aktuell meinen Horizont.
Die Dritte Möglichkeit klingt sehr gut, auch wenn ich bisher mit "userReading" noch keinerlei Erfahrung habe, aber das klingt machbar.
Ja, ich habe nonames auf "1" gesetzt. (Ich habe noch "noheading" auf 1). Insbesonde bei Einfärbung der Zeilen im Floorplan sieht man sehr gut, dass die Zeilenfarbe nicht bei Pixel Null beginnt, sondern erst bei Pixel 6.
Ich habe im Anhang einen stark vergrößerten Ausschnitt eines Teils der TV-Programm-Readingsgroup reingepackt. Das hellgrün ist die definierte zweite Zeilenfarbe (das dunkelgrün entspricht der definierten Hintergrundfarbe des Floorplan, daher starten dies offensichtlich schon ganz links, das liegt aber nur am gleichfarbigen Hintergrund).
Für den Floorplan habe ich bei der Readingsgroup das Attribut auf 280,0,0
Hallo Andre,
jetzt hat sich durch die überarbeitete Version der rg doch ein Problem ergeben:
Ich habe im EM (EnergieMonitor) so ca. 40 Geräte, die jeweils mit 5 Verbrauchswerten (stündlich, täglich, wöchentlich, monatilich, jährlich) angezeigt werden.
In der rg definiere ich
attr EM_rg valueFormat %d Wh
damit die Nachkommastellen der ca. 200 Werte nicht angezeigt werden.
Nun kam der Spieltrieb dazu und über drei Menüs kann ich die Darstellung der rg umstellen:
attr EM_rg commands {'mode' => 'mode:', 'typ' => 'typ:', 'view' => 'view:'}
attr EM setList mode:all,groups,rooms view:collapse,expand type:aktual,last
Bislang gab es durch die Definition von valueFormat in der rg drei Fehlermeldungen, weil die Werte von type,mode und view ja nicht numerisch sind, aber die Menüs wurden angezeigt.
Seit der Umstellung der rg sind nun dort keine Menüs mehr, sondern " 0 Wh".
Ich müsste jetzt dynamisch einen hast für valueFormat berechnen und definieren, der so ca. 400 Wertepaare enthält....
Im Augenblick habe ich als Workaround "valueFormat" in der rg gelöscht, damit die Menüs wieder angezeigt werden.
Ev. eine Idee für eine Alternative?
Und dann habe ich bzgl. von Knöpfen zur Umstellung von Darstellungen noch ein Problem mit der Bildschirmaktualisierung:
http://forum.fhem.de/index.php/topic,32305.msg247193.html#msg247193
Vielleicht hierzu auch eine Idee? Betrifft ja immer readingsGroup.
Elektrolurch
du kannst das valueFormat so setzen:{return "" if($READING =~ m/mode|typ|view/); return "%d Wh";}
gruss
andre
Hi, ich möchte auf meinem FP slider in der ReadingsGroup optisch anders darstellen, dafür gibts in der .css des FP diesen eintrag:
body { background-color: #444444; font-family:LCARS, Arial, Helvetica, sans-serif; font-size:13px; background-image:url(../images/default/fhemicon_dark.png); background-repeat:no-repeat; }
body[id~=Media] { background-color: #A5A5A5; font-family:Arial, Helvetica, sans-serif; font-size:13px; background-image:url(../icons/Media.bak); background-repeat:no-repeat; }
#logo { display:none !important;}
#backimg {position:absolute; top:0px; left:0px;}
#fpmenu.fp_arrange { position:absolute; bottom:20px; left:30px; min-width:310px; font-size:9px; border:1px solid #CCCCCC; background: #111111; -moz-border-radius:8px; border-radius:8px; border-spacing: 6px; padding: 6px;
box-shadow:5px 5px 5px #000; }
#menu { position:absolute; top:180px; left:30px; width:128px; -moz-border-radius:8px; border-radius:8px; border-spacing: 6px; padding-bottom: 6px; padding-top: 6px;}
#menu.floorplan { position:absolute; top:180px; left:30px; width:128px; font-size:13px; border:1px solid #CCCCCC; background: #111111; box-shadow:5px 5px 5px #000; padding: 6px;}
#hdr { position:absolute; top:15px; left:190px; border:1px solid #CCCCCC; background: #111111; -moz-border-radius:8px; border-radius:8px; border-spacing: 6px; padding: 6px;
box-shadow:5px 5px 5px #000; margin-bottom: 10px;}
#content { position:absolute; top:50px; left:180px; bottom:10px; right:10px; text-align:center}
#startcontent {position:absolute; top:20px; left:200px; text-align:left; font-size: 16px; color:gray; }
#errmsg { background-color: #000000; color: #FFFFFF; position:absolute; top:0px; left:40px; z-index: 10; }
a { color:#CCCCCC; text-decoration:none;}
td {padding-left: 3px; padding-right: 3px; padding-top: 3px; padding-bottom: 3px;}
img { -moz-border-radius:8px; border-radius:8px;}
table { -moz-border-radius:8px; border-radius:8px; }
table tr.sel { backround: #333333;}
table a:hover {color: #ffffff;}
table.weather { color: #ffffff; font-size: 14px;}
.fp_Home {border:0px solid red;}
.devicename { font-size: 14px; text-align:center; color: #FFFFFF; }
.devicestate { text-align:center; color: #FFFFFF; }
.devicecommands { font-size:14px; text-align:center; color: #FFFFFF; }
.devicetimestamp{ font-size:10px; text-align:center; color: #FFFFFF; }
#Wettervorhersage1_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage2_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage3_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage4_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage5_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage1_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage2_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage3_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage4_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage5_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage1_Tag {font-size:28px; color: #FF00FF; }
#Wettervorhersage2_Tag {font-size:28px; color: #FF00FF; }
#Wettervorhersage3_Tag {font-size:28px; color: #FF00FF; }
#Wettervorhersage4_Tag {font-size:28px; color: #FF00FF; }
#Wettervorhersage5_Tag {font-size:28px; color: #FF00FF; }
#Heizung_Fenster { color: #ffffff; font-size: 14px;}
#sz_Rollo.devicecommands {font-size:12px; text-align:center; }
#ez_Aussentemperatur_dummy.devicestate {color:green; font-size:30px; }
#HomeStatus.devicestate {color:green; font-size:30px; }
table.dummy {min-width:100px;}
table.FHT {min-width:100px; }
#Wettervorhersage3_MaxTemp.devicestate {color:green; font-size:11px; }
#ez_FHT.devicestate {color:green; font-size:30px; }
#Home.fp_Home {font-size:14px; width:100px; }
#Home.fp_Media {font-size:14px; text-align:left; }
#Media {font-size:14px; }
#Grundriss {font-size:14px; text-align:left; }
#YahooWetter {font-size:16px; color:#D4D4D4}
#w_WertListe1 {font-size:20px; color:gray}
.fp_tempvalue {color:red; font-size:20px; }
.fp_humvalue {color:blue; font-size:20px; }
h2,h3,h4 { color:#52865D; line-height:1.3; margin-top:1.5em; font-family:Verdana; }
/* detail-selector & slider */
select { margin-left:5px; margin-right:5px; }
.set,.attr { margin-bottom:5px; float:left; }
.slider { margin-left:10px; float:left; width:140px; height:26px; border:2px solid; color:grey; }
.set .slider { background:#101010; border-radius:8px; }
/* timepicker */
.set .set { margin-bottom:2px; margin-top:3px; }
.handle { position:relative; cursor:pointer; width:50px; height:20px;
line-height:20px; border:2px solid; color:white; text-align:center; }
.downText { margin-top:2px; }
/* next lines are for openautomation-svg */
svg { height:32px; width:32px; fill:#fff; vertical-align:middle; margin:2px 0; }
g.on { fill:red; }
/* next lines are for remotecontrol */
.rc_body { border-style: solid; border-color: gray; border-width: 2px;
padding: 5px; background: #101010; font-size:6px;}
.rc_button { padding: 5px 7px;}
.rc_button img { border-style: solid; border-width: 1px; border-color: transparent; }
.rc_button img:active { border-color: gray; }
Allerdings werden die Slider der ReadingsGroup "normal" angezeigt und nicht mit dem Layout aus der .css, was mache ich da noch falsch?
Die rd sieht so aus:
Internals:
DEF <Gerät>,<Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp Heizung_Flur_Clima:desired-temp,measured-temp
Kueche_Clima:desired-temp,measured-temp
Heizung_Tuer_ClimRT_tr:desired-temp,measured-temp
HeizungFenster_Clima:desired-temp,measured-temp
NAME rd_Heizungs_Slider
NR 214
NTFY_ORDER 50-rd_Heizungs_Slider
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
HeizungFenster_Clima 1
Heizung_Flur_Clima 1
Heizung_Tuer_ClimRT_tr 1
Kueche_Clima 1
Content2:
DEVICES:
ARRAY(0x279ee50)
ARRAY(0x2b35528)
ARRAY(0x2b358a0)
ARRAY(0x25f6420)
ARRAY(0x2799160)
ARRAY(0x2710f70)
Fhem:
lastDefChange 5
last_update 1421698451.65953
Helper:
DEF
nameStyle style="color:yellow;font-weight:bold"
Commands:
desired-temp desired-temp:slider,5,0.5,30,1
Mapping:
Gaeste_WC_Clima Gäste WC
HeizungFenster_Clima Heizung Wohnzimmer Fenster
Heizung_Flur_Clima Heizung Flur
Heizung_Tuer_ClimRT_tr Heizung Wohnzimmer Tür
Kueche_Clima Küche
Attributes:
commands { 'desired-temp' => 'desired-temp:slider,5,0.5,30,1' }
fp_Heizung 215,207,0,
group Heizung
mapping {'Gaeste_WC_Clima' => 'Gäste WC', 'Heizung_Flur_Clima' => 'Heizung Flur', 'Heizung_Tuer_ClimRT_tr' => 'Heizung Wohnzimmer Tür', 'Kueche_Clima' => 'Küche', 'HeizungFenster_Clima' => 'Heizung Wohnzimmer Fenster'}
nameStyle style="color:yellow;font-weight:bold"
noheading 1
room Flur Erdgeschoss,Gäste_WC,Küche,Wohnzimmer
style style="font-size:20px;color:lightgray;text-align:left"
Danke
Hallo,
ich habe mir jetzt auch mal eine ReadingsGroup angelegt. Die aus dem Wiki für die HM Heizung hat es mir angetan. Ich habe es noch ein bissel erweitert um Boost Funktion und Fenster Status etc. Screenshots siehe Anhang. Wirklich Klasse, macht viel Arbeit aber sieht am Ende echt gut aus, da kann man viel mit machen.
Ich habe da aber mal eine Frage. Ich habe bei vielen Geräten eine eventMap die open durch Auf und sowas ersetzt. Bei der ReadingsGroup matche ich immer auf die ursprünglichen Werte, also state.on und .off und .open und .closed etc. Es kommt aber manchmal vor, dass in der ReadingsGroup das ganze wechselt! Mal sehe ich mein Icon, mal steht da Offen oder Aus (ohne Icon natürlich). Woran liegt das? Klar ich kann die ValueIcons doppelt anlegen, aber muss ich das wirklich, oder ist das ein Bug?
Gruß
Daniel
lustig an dem gleichen Ding war ich gestern auch dran. Was mich da auch noch interessieren würde:
Kann ich den Link vom Device auch auf den Raum umlenken, so das ich im Wohnzimmer nicht auf wz_Heizung_Clima lande sondern im Room Wohnzimmer?
Und um an die Frage oben anzuschließen kann ich Werte hier auch mappen. Ich hab eine Readingsgroup für meine Gastherme gemacht und da gibt es zum einen 1 und 0 für die Pumpe (was ich aber gegen ein Icon tausche) und zum anderen aber auch die Heizungsmodi von 0-4. Die würde ich gerne gegen Texte tauschen wie Aus, Frost, Nacht, Tag ohne das bei der Pumpe dann aber die 1 gegen Frost getauscht wird.
ich habe jetzt mal ein Problem welches ich am Screenshot am besten zeigen kann.
Ich habe mir eine Readingsgroup erstellt im Def stand folgendes:
<%fts_shutter_automatic@#B0C4DE>,<Datum - Uhrzeit> di_rollladenSZ:timer.*
und im cellStyle:
{ "r:1"=>'style="font-weight:normal;font-size:16px;color:#FAEBD7;"',"c:0"=>'style="font-weight:normal;font-size:14px;text-align:left;padding-left:0pt;color:#B0C4DE;"'}
Nach dem speichern (save) war noch alles OK, aber als ich Fhem eingelesen habe war im Def und im cellStyle nur noch folgendes wie auf dem Screenshot drin...
Kann mir das jemand erklären..! Ich habe diese Prozedur nach einem Neustart nochmals gemacht und immer fehlt der restliche Code.
Kann es sein das die # bei der Farbe der Fehler ist, wenn ja wie muss ich das formatieren..?
im fhem config file darf kein # vorkommen weil es als kommentar interpretiert und alles danach abgeschnitten wird.
schau ob du passende farb namen findest (siehe z.b. hier: http://html-color-codes.info/color-names/) oder stecke den string in eine sub in 99_myUtils die den string zurück gibt. entweder alles was in cell style steht oder nur das rechts vom =>
gruss
andre
OK vielen Dank ich dachte mir schon soetwas ;) habe Farbnamen genommen
@ext23: in den events (für die longpoll aktualisierung) ist eventMap angewendet. beim aufbau wird das reading direkt gelesen und event map ist nicht angewendet. ich habe vorhin eine änderung eingecheckt die das handling von state ändert. schau mal ob das problem damit weg ist.
@strauch: du kannst dir links 'umbiegen' in dem du eigene links erzeugst und diese statt dem namen anzeigst.
zu den icons: wenn es der device status ist kannst devStateIcon im oringial device so setzen das es das icon ist das du möchtest und dann %devStateIcon als mapping verwenden. wenn das nicht geht kannst du kannst zuerst mit valueFormat den value so ändern das der device name oder ein typ oder sonst etwas eindeutiges darin auftaucht und dann diesen geänderten eindeutigen wert per valueIcon auf das icon mappen. also so: für die pumpe machst du aus 0 und 1 pumpe.0 und pumpe.1 und für deine heizung entsprechend.
gruss
andre
Hallo justme1968,
ich habe für das Sonos-Modul deine Readingsgroup für die Anzeige der Titel und Coverinformationen verwendet. Dabei habe ich für jeden Player eine eigene ReadingsGroup gebaut, die dann die jeweiligen Informationen des Players anzeigt.
Das funktioniert auch ganz gut.
Nun habe ich den Punkt, dass die Informationen nicht immer von dem entsprechenden Player direkt geholt werden dürfen, da dieser in einer Gruppe mit einem anderen Player sein kann (und nur dieser die aktuellen Informationen hat). Das bekomme ich prinzipiell auch hin, allerdings wird der Inhalt dann nicht mehr per longpoll aktualisiert, da er nicht auf Events des anderen Players lauscht (da er ja auch gar nicht weiß, welches Device dass nun ist).
Das habe ich definiert, um die normale Anzeige zu machen (läuft super, auch mit longpoll):
define Sonos_WohnzimmerRG ReadingsGroup Sonos_Wohnzimmer:<{SONOS_getCoverTitleRG($DEVICE)}@infoSummarize2>
Das habe ich gemacht, um die Informationen des Gruppenmasters anzuzeigen (Zeigt korrekt an, aber kein longpoll):
define Sonos_WohnzimmerRG ReadingsGroup Sonos_Wohnzimmer:<{SONOS_getCoverTitleRG(SONOSPLAYER_GetMasterPlayerName($DEVICE))}@infoSummarize2>
Die Variante, nur ein Reading anzuzeigen (der eigentliche Zweck des Moduls :) ) geht auch mit longpoll:
define Sonos_WohnzimmerRG ReadingsGroup Sonos_Wohnzimmer:infoSummarize2@{SONOSPLAYER_GetMasterPlayerName($DEVICE)}
Allerdings ist das nur ein Reading, und nicht meine Cover-/Titelinformationen.
Gibt es irgendwie eine Möglichkeit die beiden Möglichkeiten zu kombinieren?
Es würde ja z.B. reichen, wenn man die Deviceangabe vor dem Doppelpunkt als Perl-Code schreiben könnte:
define Sonos_WohnzimmerRG ReadingsGroup {SONOSPLAYER_GetMasterPlayerName('Sonos_Wohnzimmer')}:<{SONOS_getCoverTitleRG($DEVICE)}@infoSummarize2>
Hast du vielleicht eine Idee?
Danke schon mal für deine Unterstützung...
Grüße
Reinerlein
es sollte gehen wenn du statt der <...> variante ein 'pseudo reading' verwendest. etwa so:define Sonos_WohnzimmerRG readingsGroup Sonos_Wohnzimmer:!coverTitleRg@{SONOSPLAYER_GetMasterPlayerName($DEVICE)}
attr Sonos_WohnzimmerRG valueFormat SONOS_getCoverTitleRG(SONOSPLAYER_GetMasterPlayerName($DEVICE))}
mit dem ! flag vor dem reading namen wird ein reading auch dann in die readingsGroup aufgenommen wenn es im device nicht vorhanden ist. es greifen bei der anzeige alle weiteren attribute die das reading beeinflussen.
die variante ist neuer als die <...> version und flexibler.
vermutlich ist es sinnvoll auf diese readingsGroup noch ein modify zu machen wenn sich die sonos gruppierung ändert da der perl code im im DEF teil nur beim define ausgewertet wird.
gruss
andre
Hi Andre,
danke für die schnelle Idee.
Ich habe das nun wie beschrieben umgesetzt. Leider wird nichts angezeigt, und einige Fehlermeldungen im Log erzeugt:
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%"" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%3A" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Argument "coverTitleRg" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%253a" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%28S" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%26v" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%3C" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%20t" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%22t" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%20he" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%20m" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.424 1: PERL WARNING: Invalid conversion in sprintf: "%20-" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.425 1: PERL WARNING: Invalid conversion in sprintf: "%20w" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.425 1: PERL WARNING: Invalid conversion in sprintf: "%20z" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%20r" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%2C" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%22w" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%22S" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%20a" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%22ht" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%20C" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%20P" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%20S" at ./FHEM/33_readingsGroup.pm line 732.
2015.01.27 12:25:29.426 1: PERL WARNING: Invalid conversion in sprintf: "%202001-" at ./FHEM/33_readingsGroup.pm line 732.
Auf der Konsole kam noch das raus:
Modification of a read-only value attempted at ./FHEM/33_readingsGroup.pm line 732.
Das was die Prozedur "SONOS_getCoverTitleRG()" zurückliefert ist natürlich rieser HTML-Code. Gibt es denn seitens des Moduls bei der Verwendung als valueFormat da Grenzen? Direkt funktioniert es ja.
Grüße
Reiner
ja. value format schaut nach ob es % zeichen gibt und verwendet dann ein sprintf.
nimm mal statt dessen folgendes:attr Sonos_WohnzimmerRG valueFormat {""}
attr Sonos_WohnzimmerRG valuePrefix SONOS_getCoverTitleRG(SONOSPLAYER_GetMasterPlayerName($DEVICE))}
Präfix und suffix wird 1:1 durchgereicht.
gruss
andre
Hi Andre,
danke für den Tipp. Die Anzeige funktioniert jetzt. Allerdings hatte er keine Aktualisierung per longpoll gemacht.
Beim Neuladen der Seite hatte er dann die aktuellen Inhalte. Ich habe jetzt anstatt des nicht existierenden Readings ein existierendes angegeben, auf dessen Änderung auch die andere ReadingsGroup reagiert ("infoSummarize2"). Jetzt klappt es auch mit longpoll :)
Jetzt bin ich gerade bei der Geschichte mit den Gruppenwechseln.
Gibt es ein "set" oder "get" (in der Oberfläche angeboten wird ja nur "toggle"), womit ich die readingsGroup dazu anregen kann, die Definition neu einzulesen?
Ein Modify ist ja insofern unpraktisch, weil man ja die neue Definition identisch zur alten nochmal setzen möchte.
Grüße
Reiner
stimmt natürlich. ohne echtes reading gibt es auch keine events für das longpoll. die könnte man mit einem trigger erzeugen. aber da du ein passendes echtes reading hat ist es ja noch besser.
das set das es gibt ist nur für das visibility attribut um die rg oder teile daraus aus und ein zu blenden. das ist nicht was du brauchst.
du kannst für das modify einfach $defs{<rg>}->{DEF} verwenden. das ist ja die aktuelle definition.
oder du rufst direkt readingsGroup_updateDevices($defs{<rg}>) auf.
ich bin gerade dabei zu überlegen wie ich per longpoll eine komplette modifizierte rg im frontend ersetzen kann. in dem zusammenhang wird es dann vermutlich ein set refrash oder ähnlich geben. das dauert aber noch etwas.
gruss
andre
Hi Andre,
danke für die Hilfe. Damit kann man auf jeden Fall erstmal hinkommen.
Spätere Vereinfachungen kann man ja immer noch durchführen. Das ganze lebt ja :)
Grüße
Reiner
Zitat von: justme1968 am 26 Januar 2015, 19:08:43
@strauch: du kannst dir links 'umbiegen' in dem du eigene links erzeugst und diese statt dem namen anzeigst.
Danke für den Hinweis. Einfacher als Gedacht ;-). Mal ein Beispiel falls das jemand ebenfalls sucht:
attr readingsgroup_name mapping {wz_Heizung_Clima=>"<a href='fhem?room=Wohnzimmer'>Wohnzimmer</a>"}
Zitat von: justme1968 am 26 Januar 2015, 19:08:43
zu den icons: wenn es der device status ist kannst devStateIcon im oringial device so setzen das es das icon ist das du möchtest und dann %devStateIcon als mapping verwenden. wenn das nicht geht kannst du kannst zuerst mit valueFormat den value so ändern das der device name oder ein typ oder sonst etwas eindeutiges darin auftaucht und dann diesen geänderten eindeutigen wert per valueIcon auf das icon mappen. also so: für die pumpe machst du aus 0 und 1 pumpe.0 und pumpe.1 und für deine heizung entsprechend.
Da bräuchte ich noch mal Hilfe. Das klappt:
{return "eins" if($VALUE == 1); return "zwei" if($VALUE == 2); return "drei" if($VALUE == 3);}
betrifft aber alle Werte auch die Pumpe, ich will das nur für ein Reading "ch_mode" haben. Das geht leider nicht:
{return "eins" if(Value("ch_mode") == 1); return "zwei" if(Value("ch_mode") == 2); return "drei" if(Value("ch_mode") == 3);}
Hast du ein Tipp wie ich das auf ein Reading begrenze? Oder muss ich das doppelt Prüfen?
ja du musst natürlich $VALUE (und $READING) und $DEVICE prüfen wenn die values identisch sind und du sie unterscheiden möchtest.
wenn es um ein paar feste werte geht ist einfacher die hash variante statt der diversen if und elsif zu verwenden:attr <rg> valueFormat { 'pumpe.ch_mode' => '{"$READING-VALUE"}' }
das setzt für das reading ch_mode des device pumpe bei jedem wert den reading namen vor den wert:
0 -> state-0, 1 -> state-1, ...
du kannst auch den device namen oder irgend etwas anderes eindeutiges verwenden.
die neuen werte kannst du dann bei valueIcon verwenden.
gruss
andre
Hi,
keiner eine idee für mein Problem aus
Zitat#1128
?
Danke
wenn dein css nicht greift liegts entweder an der falschen "identifikation" /bezeichnung für das html-element oder es wird durch was anderes überschrieben.
da hilft nur zb firefox -> floorplan öffnen -> rechtsklcik auf die seite und "element durchsuchen". dann den slider suchen und anklicken im code. so siehtst du wie er wirklcih im code heist und rechts was an css greift
Hallo,
ich möchte über commands einer ReadingsGroup alle Lampen eines Zimmers oder einer Etage ausschalten. In notifys kann ich dies mit regex machen:
set OG.ez.LI.* off
Wenn ich den gleichen Befehl als command in der ReadingsGroup anlege, erhalte ich eine Fehlermeldung in der Art
please define OG.ez.LI.* first
Wie kann ich in den commands regex verwenden?
Ronny
Nutze doch dein notify weiter und verwende dafür in der Readingsgroup einen dummy.
Da müsste ich für jedes Zimmer einen Dummy anlegen...
Das mit dem notify war auch nur ein Beispiel.
geht es wenn du das ganze in ein fhem(...) verpackst ?
fhem("set OG.ez.LI.* off")
gruss
andre
Leider nicht
Zitat@ext23: in den events (für die longpoll aktualisierung) ist eventMap angewendet. beim aufbau wird das reading direkt gelesen und event map ist nicht angewendet. ich habe vorhin eine änderung eingecheckt die das handling von state ändert. schau mal ob das problem damit weg ist.
Sieht bis jetzt alles gut aus, ich denke das hat geholfen. Ich hab das jetzt ein paar Tage beobachtet.
Gruß
Daniel
Zitat von: chris1284 am 29 Januar 2015, 06:21:21
wenn dein css nicht greift liegts entweder an der falschen "identifikation" /bezeichnung für das html-element oder es wird durch was anderes überschrieben.
da hilft nur zb firefox -> floorplan öffnen -> rechtsklcik auf die seite und "element durchsuchen". dann den slider suchen und anklicken im code. so siehtst du wie er wirklcih im code heist und rechts was an css greift
Hi, danke für denTip, anbei mal ein Bild was ich dann im Browser an Code sehe, aber was kann ich daraus jetzt erkennen?
Die cs sieht so aus:
body { background-color: #444444; font-family:LCARS, Arial, Helvetica, sans-serif; font-size:13px; background-image:url(../images/default/fhemicon_dark.png); background-repeat:no-repeat; }
body[id~=Media] { background-color: #A5A5A5; font-family:Arial, Helvetica, sans-serif; font-size:13px; background-image:url(../icons/Media.bak); background-repeat:no-repeat; }
#logo { display:none !important;}
#backimg {position:absolute; top:0px; left:0px;}
#fpmenu.fp_arrange { position:absolute; bottom:20px; left:30px; min-width:310px; font-size:9px; border:1px solid #CCCCCC; background: #111111; -moz-border-radius:8px; border-radius:8px; border-spacing: 6px; padding: 6px;
box-shadow:5px 5px 5px #000; }
#menu { position:absolute; top:180px; left:30px; width:128px; -moz-border-radius:8px; border-radius:8px; border-spacing: 6px; padding-bottom: 6px; padding-top: 6px;}
#menu.floorplan { position:absolute; top:180px; left:30px; width:128px; font-size:13px; border:1px solid #CCCCCC; background: #111111; box-shadow:5px 5px 5px #000; padding: 6px;}
#hdr { position:absolute; top:15px; left:190px; border:1px solid #CCCCCC; background: #111111; -moz-border-radius:8px; border-radius:8px; border-spacing: 6px; padding: 6px;
box-shadow:5px 5px 5px #000; margin-bottom: 10px;}
#content { position:absolute; top:50px; left:180px; bottom:10px; right:10px; text-align:center}
#startcontent {position:absolute; top:20px; left:200px; text-align:left; font-size: 16px; color:gray; }
#errmsg { background-color: #000000; color: #FFFFFF; position:absolute; top:0px; left:40px; z-index: 10; }
a { color:#CCCCCC; text-decoration:none;}
td {padding-left: 3px; padding-right: 3px; padding-top: 3px; padding-bottom: 3px;}
img { -moz-border-radius:8px; border-radius:8px;}
table { -moz-border-radius:8px; border-radius:8px; }
table tr.sel { backround: #333333;}
table a:hover {color: #ffffff;}
table.weather { color: #ffffff; font-size: 14px;}
.fp_Home {border:0px solid red;}
.devicename { font-size: 14px; text-align:center; color: #FFFFFF; }
.devicestate { text-align:center; color: #FFFFFF; }
.devicecommands { font-size:14px; text-align:center; color: #FFFFFF; }
.devicetimestamp{ font-size:10px; text-align:center; color: #FFFFFF; }
#Wettervorhersage1_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage2_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage3_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage4_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage5_MaxTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage1_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage2_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage3_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage4_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage5_MinTemp {font-size:28px; color: #FFFFFF; }
#Wettervorhersage1_Tag {font-size:28px; color: #FF00FF; }
#Wettervorhersage2_Tag {font-size:28px; color: #FF00FF; }
#Wettervorhersage3_Tag {font-size:28px; color: #FF00FF; }
#Wettervorhersage4_Tag {font-size:28px; color: #FF00FF; }
#Wettervorhersage5_Tag {font-size:28px; color: #FF00FF; }
#Heizung_Fenster { color: #ffffff; font-size: 14px;}
#sz_Rollo.devicecommands {font-size:12px; text-align:center; }
#ez_Aussentemperatur_dummy.devicestate {color:green; font-size:30px; }
#HomeStatus.devicestate {color:green; font-size:30px; }
table.dummy {min-width:100px;}
table.FHT {min-width:100px; }
#Wettervorhersage3_MaxTemp.devicestate {color:green; font-size:11px; }
#ez_FHT.devicestate {color:green; font-size:30px; }
#Home.fp_Home {font-size:14px; width:100px; }
#Home.fp_Media {font-size:14px; text-align:left; }
#Media {font-size:14px; }
#Grundriss {font-size:14px; text-align:left; }
#YahooWetter {font-size:16px; color:#D4D4D4}
#w_WertListe1 {font-size:20px; color:gray}
.fp_tempvalue {color:red; font-size:20px; }
.fp_humvalue {color:blue; font-size:20px; }
h2,h3,h4 { color:#52865D; line-height:1.3; margin-top:1.5em; font-family:Verdana; }
/* detail-selector & slider */
select { margin-left:5px; margin-right:5px; }
.set,.attr { margin-bottom:5px; float:left; }
.slider { margin-left:10px; float:left; width:140px; height:26px; border:2px solid; color:grey; }
.set .slider { background:#101010; border-radius:8px; }
/* timepicker */
.set .set { margin-bottom:2px; margin-top:3px; }
.handle { position:relative; cursor:pointer; width:50px; height:20px;
line-height:20px; border:2px solid; color:white; text-align:center; }
.downText { margin-top:2px; }
/* next lines are for openautomation-svg */
svg { height:32px; width:32px; fill:#fff; vertical-align:middle; margin:2px 0; }
g.on { fill:red; }
/* next lines are for remotecontrol */
.rc_body { border-style: solid; border-color: gray; border-width: 2px;
padding: 5px; background: #101010; font-size:6px;}
.rc_button { padding: 5px 7px;}
.rc_button img { border-style: solid; border-width: 1px; border-color: transparent; }
.rc_button img:active { border-color: gray; }
Hallo,
bei mir aktualisieren sich die Werte des DropDowns für desired-temp nicht, wenn ich an einem Thermostat direkt die Vorgabe ändere.
Das müsste laut Forum doch gefixt sein, oder mache ich noch was falsch ?
Die Ist-Temperatur aktualisiert sich von selbst ...
define HM_Thermostate readingsGroup CUL_HM_HM_CC_RT_DN_......:<%hc_wht_regler>,<{AttrVal($DEVICE,"alias",$DEVICE)}>,measured-temp@{$DEVICE."_Clima"},desired-temp@{$DEVICE."_Clima"},battery,ValvePosition@{$DEVICE."_Clima"} TYPE=MAX:<%hc_wht_regler>,<{AttrVal($DEVICE,"alias",$DEVICE)}>,temperature,desiredTemperature,battery,valveposition
attr HM_Thermostate commands {'desired-temp' => 'desired-temp:', 'desiredTemperature' => 'desiredTemperature:off,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,on'}
attr HM_Thermostate fp_Tablet 30,820,0,
attr HM_Thermostate mapping { "desired-temp" => " "}
attr HM_Thermostate noheading 1
attr HM_Thermostate room Heizung
attr HM_Thermostate valueFormat { 'valveposition' => "%.0f%", 'desiredTemperature' => "%.1f°;C", 'temperature' => "%.1f°;C", 'ValvePosition' => "%.0f%", 'desired-temp' => "%.1f°;C", 'measured-temp' => "%.1f°;C"}
attr HM_Thermostate valueIcon {'battery.ok' => 'batteryfull_32', 'battery.low' => 'batteryleer_32'}
attr HM_Thermostate group Thermostate
Gruss
Joe
Hallo Andre,
glaube habe da noch in Zusammenhang mit eventMap ein Fehlerchen gefunden:
attr fritzbox eventMap /on:ein/off:aus/
Dann in der readingsGroup:
commands {'diversity1_state.ein' => 'set $DEVICE diversity 1 off', 'diversity1_state.aus' => 'set $DEVICE diversity 1 on', 'diversity2_state.ein' => 'set $DEVICE diversity 2 off', 'diversity2_state.aus' => 'set $DEVICE diversity 2 on', 'box_guestWlan.ein' => 'set $DEVICE guestWLAN off', 'box_guestWlan.aus' => 'set $DEVICE guestWLAN on', 'tam1_state.ein' => 'set $DEVICE tam 1 off', 'tam1_state.aus' => 'set $DEVICE tam 1 on', 'box_wlan_2.4GHz.ein' => 'set $DEVICE wlan aus', 'box_wlan_2.4GHz.aus' => 'set $DEVICE wlan on'}
Da die Anzeige und das Setzen der gleichen Funktion mit untershiedlichen Namen erfolgt, war dass hier mit commands am leichtesten zu realisieren.
Es wird auch korrekt mit ein bzw aus (als Link) angezeigt, kann man Klicken und tut auch das was es soll.
Nur!!! Wenn die Seite neu aufgerufen wird oder mit F5 aktualisiert wird, dann steht da wieder on und off und die Werte sind nicht klickbar, bis dann irgendwann das Fritzbox-Modul seinen internen Update fährt und die readings aktualisiert werden.
Oder ich manuell über die Eingabe des entsprechenden set-Befehls das reading ändere....
Offensichtlich fehlt da beim Komplettaufbau der readingsGroup eine Auswertung der eventMap.
Version: update vom 2.2.2015
Gruß
Elektrolurch
Ehm sicher das du die aktuelle Version hast? Ich hatte das Problem auch, nach einem Update lief es aber wieder. Zumindest bis gestern, heute hab ich noch kein Update gemacht ;-)
Ja. Das Update war von gestern.
Hatte mit der Ergänzung von eventMap extra gewartet, weil ich in einem Beitrag gesehen habe, dass es da mit readingsGroup noch ein Problem gab und Andre die neue Version hochladen wollte.
Das war vor einigen Tagen. Ich müsste also den aktuellen Stand von gestern haben.
P.S.:
Mein derzeitiger Workarround:
attr fritzbox_rg valueFormat {TransformValue("$VALUE");;}
TransformValue macht dann zusätzlich aus on ein, aus off aus und den Rest wird unverändert weitergegeben.
Somit wird nun dauerhaft ein und aus in der rg angezeigt, auch wenn die Seite mit F5 aktualisiert wird.
Warte auf das nächste Update... :-)
Hallo,
wie kann ich bei einer readingsgroup Definition erreichen, dass die Icons die anklickbar sind aktualisiert werden.
Bis jetzt kann ich nur einmal klicken, es wird an oder ausgeschaltet und dann muss ich die Webseite refreshen ...
define it_Aktoren readingsGroup <Raum | Aktor>,<Status>,<Erfassungszeit> TYPE=TRX_LIGHT:state
attr it_Aktoren group Aktor_Steckdosen
attr it_Aktoren mapping %ROOM | %ALIAS
attr it_Aktoren room Allgemein
attr it_Aktoren valueIcon { state => '%devStateIcon' }
Panik
Hallo,
außer dem vorletzten Beitrag zur eventMap, habe ich, wie mein Vorgänger oben, auch eine Frage zum refresh:
Ich habe ein Menü in der rg, mit dem ich die Ansicht umschalten kann. Dabei wird per modify - Befehl die rg mal länger oder kürzer.
Eigentlich sollte doch der modify-Befehl auch den Bildschirm aktualisieren. Tut es aber nicht.
Erst nach F5 sieht man, dass das modify tatsächlich auch ausgeführt wurde.
(aktueller Firefox)
Und wenn ich dies nach dem modify aufrufe:
readingsGroup_updateDevices($defs{"HzAnlage_SOL_P_rg"});
pasiert auch nichts.
Dann habe ich das ausprobiert:
RefreshScreen('WEB');
sub RefreshScreen($)
{
my ($name) = @_;
FW_directNotify("#FHEMWEB:$name", "location.reload(true);","" );
} # end sub RefreshScree
#####################
Das ging bis vor kurzem noch. Nun fragt Firefox nach, ob ich tatsächlich die Daten neu senden möchte.
Gruß
Elektrolurch
Dass sich beim editieren von z.B: value Icon ein neues großes Fenster öffnet, ist ja ganz nett, hat man jedoch Codemirror aktiviert, werden die Änderungen in dem Fenster nicht ins Attribut übernommen.
Habe ich auch schon feststellen müssen - mein aktueller Workaround: nach dem Öffnen des großen Fenster einmal auf Cancel drücken und beim nächsten Öffnen startet der Codemirror nicht und die Änderungen werden übernommen...
das ist inzwischen (fast) repariert. siehe hier: http://forum.fhem.de/index.php/topic,33226.msg256778.html#msg256778 (http://forum.fhem.de/index.php/topic,33226.msg256778.html#msg256778).
gruss
andre
Zitat von: cotecmania am 01 Februar 2015, 16:38:27
Hallo,
bei mir aktualisieren sich die Werte des DropDowns für desired-temp nicht, wenn ich an einem Thermostat direkt die Vorgabe ändere.
Das müsste laut Forum doch gefixt sein, oder mache ich noch was falsch ?
Die Ist-Temperatur aktualisiert sich von selbst ...
define HM_Thermostate readingsGroup CUL_HM_HM_CC_RT_DN_......:<%hc_wht_regler>,<{AttrVal($DEVICE,"alias",$DEVICE)}>,measured-temp@{$DEVICE."_Clima"},desired-temp@{$DEVICE."_Clima"},battery,ValvePosition@{$DEVICE."_Clima"} TYPE=MAX:<%hc_wht_regler>,<{AttrVal($DEVICE,"alias",$DEVICE)}>,temperature,desiredTemperature,battery,valveposition
attr HM_Thermostate commands {'desired-temp' => 'desired-temp:', 'desiredTemperature' => 'desiredTemperature:off,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,on'}
attr HM_Thermostate fp_Tablet 30,820,0,
attr HM_Thermostate mapping { "desired-temp" => " "}
attr HM_Thermostate noheading 1
attr HM_Thermostate room Heizung
attr HM_Thermostate valueFormat { 'valveposition' => "%.0f%", 'desiredTemperature' => "%.1f°;C", 'temperature' => "%.1f°;C", 'ValvePosition' => "%.0f%", 'desired-temp' => "%.1f°;C", 'measured-temp' => "%.1f°;C"}
attr HM_Thermostate valueIcon {'battery.ok' => 'batteryfull_32', 'battery.low' => 'batteryleer_32'}
attr HM_Thermostate group Thermostate
Wie bekomme ich es hin, dass die Vorgaben im DropDown wieder automatisch ohne manuellen Refresh angepasst werden ?
Gruss
Joe
Zitat von: justme1968 am 05 Februar 2015, 12:48:17
das ist inzwischen (fast) repariert. siehe hier: http://forum.fhem.de/index.php/topic,33226.msg256778.html#msg256778 (http://forum.fhem.de/index.php/topic,33226.msg256778.html#msg256778).
gruss
andre
Nicht wirklich. Ich habe die neuen Dateien eingespielt und das Verhalten ist kaum anders (hin und wieder funktioniert es allerdings). Komplett ärgerlich ist, dass Codemirror offenbar nach einem Cancel dann gar nicht mehr geladen wird. Auch im DEF Bereich bleibt die textarea "unbehandelt". Zudem gibt es im Fenster doppelte Scrollbalken. Das ist auch gerade angenehm und insgesamt aktuell eher eine unkomfortable und ärgerliche Änderung auch wenn ich die Idee begrüße.
Hallo Andre,
mal eine Frage: Ich muss mir ja die fhem-Oberfläche einerseits barrierefrei gestalten, andererseits wären auch ein paar nette Ikons für den WAF wichtig.
Leider sind die Ikonen (als Statusanzeige) für einen Screenreader nicht so geeignet :-)
Was ich jetzt gerne hätte, wäre für ein und das selbe Reading einmal das valueIcon in der Zeile und dahinter den Wert als Text.
Eine Idee, wie ich das bewerkstelligen könnte?
Danke.
Gibt es zu dem Problem aus Beitrag 1156 bzw. dem davor (eventMap wird bei Aktualisierung von readings über set / readingsBulkupdate in der rg berücksichtigt, nicht aber wenn die Seite neu aufgebaut wird. Habe daher mal ein, mal on dort stehen) schon eine Erkenntnis?
Gruß
Elektrolurch
die eventMap geschichte muss ich mir noch mal in ruhe anschauen. eigentlich sollte es mit dem letzten bzw. vorletzten update behoben sein.
du kannst mit einem passenden valueSuffix attribut hinter das icon noch einen text schreiben. z.b. einfach $VALUE.
wenn du weisst wie man die svg icons mit einem alternativen text für deinen screen reader versehen kann würde ich das in die readingsGroup einbauen bzw. einen patch für fhem insgesamt schreiben.
gruss
andre
Hallo Andre,
<cite>
du kannst mit einem passenden valueSuffix attribut hinter das icon noch einen text schreiben. z.b. einfach $VALUE.
</cite>
Na, ein Tipp vom Profi, da wäre ich jetzt einfach nicht drauf gekommen, dabei liegt es sooooo nahe... Super, damit werde ich jetzt viel Spaß haben, denn ich mache ja jetzt das Ganze WAF-friendly, also a bisserl mit Bildchen und so...
<cite>
wenn du weisst wie man die svg icons mit einem alternativen text für deinen screen reader versehen kann würde ich das in die readingGroup einbauen bzw. einen patch für fhem insgesamt schreiben.
</cite>
Leider noch nicht so ganz genau.
Mein Handy hat auch einen Screenreader, und der hat mir bei manchen svg-Ikons einen "Copywrite-Text vorgelesen. Ich habe dann mal das Ikon im Text-Editor gesucht und festgestellt, das der Text dort frei steht und kein Tag hat. Wenn ich den ändere auf ein/aus wird das dann auf dem Handy vorgelesen, aber nicht auf dem Window-PC.
Merkwürdigerweise werden aber die Standard-FS20 on und off Ikonen mit ein und aus vorgelesen, wie das geht, habe ich aber noch nicht herausgefunden, wenn ich nämlich per defStateIkon ein anderes Ikon dort hin versetze, liest er nichts mehr vor.
Aber zurück zum svg: Habe mir in den letzten Tagen (endlich mal) css angesehen und bin dabei auch noch mal durch html gegangen. Im Prinzip enthält die ja auch Tags für die Barrierefreiheit, welche davon aber wirklich aktiv durch einen Screenreader unterstützt werden, muss ich mal herausfinden. Es geht so um "Ersatztexte" für Symbole im Text. Das könnte man dann in die svg hinzufügen und hätte vmtl. eine durch Screenreader zusätzlich unterstützte Sprachausgabe.
Mal sehen... die Arbeit geht nie aus und die Ideen auch nicht... :-)
Im übrigen bringt mich das eventMap auch manchmal zum verzweifeln, habe jetzt doch bei den Ikonen alle Varianten mit on bzw. ein usw durchgespielt, bis die Standardglühlampe durch was anderes ersetzt war....
Gruß
Elektrolurch
Hallo,
noch mal einen Tipp gesucht:
in der Def. einer rg steht:
<%meinIkon>,<Überschrift> ...
In der ersten Spalte erscheint das Ikon, in der zweiten der Text. Ergibt aber leider eine etwas große Lücke. Hätte gerne, dass das Ikon und der Text direkt in einer Spalte wären.
<&Ikonname Überschrift>...
geht leider nicht, da erscheint dann gar nichts mehr....
Tipp?
Gruß
Elektrolurch
statt <%meinIkon>,<Überschrift>,... kannst du inzwischen das hier schreiben:meineRg:!meinIkon,...
du nimmst den namen der readingsGroup und zeigst davon das reading mit namen meinIkon an. das ! ist dafür da das das reading auch wenn es nicht da ist angezeigt wird. da meinIkon jetzt ein normales reading ist greifen alle mappings für die readings und du kannst du das icon mit valueIcon zuweisen und die überschrift mit valueSuffix dahinter hängen.
du musst auch nicht mehr auf nicht erlaubte zeichen wie komma oder doppelpunkte achten. in den meisten fällen ist die neue schreibweise mit !sehr viel flexibler. du kannst z.b. auch einfach der readingGroup mit setreading ein passendes reading verpassen und so dynamisch überschriften ändern.
gruss
andre
Hallo,
habe folgende readingsGroup bei mir eingebunden.
define HM_Comp readingsGroup <Gerät>,<Name>,<Model>,<S/N> TYPE=CUL_HM:+NAME,?model,D-serialNr
attr HM_Comp room Maintenance
Mit folgendem Ergebnis.
HM_Comp
Gerät Name Model S/N
AP_Door AP_Door HM-SEC-SC-2 XXX
AT_Switch_Attic_F AT_Switch_Attic_F HM-PB-2-WM55-2 XXX
und die andere Variante ist wie folgt.
define HM_Comp_SN readingsGroup .*:D-serialNr
attr HM_Comp_SN room Maintenance
Mit diesem Ergebnis.
HM_Comp_SN
AP_Door:D-serialNr XXX 2015-01-20 12:20:26
AT_Switch_Attic_F:D-serialNr XXX 2015-01-20 12:20:26
Ich habe nun einige Kombinationen probiert um die beiden zusammen zu führen und bin wohl einfach zu ..... :o
Ich hätte gerne die obere Variante mit Überschrift, aber nur auf die readings mit einem Wert bei D-serialNr der unteren Variante.
Vielen Dank vorab.
Gruß Newbee
Hallo!
Ich habe hier ein Problem mit über Spalten verschobenen Icons, das nur in der Raumansicht auftritt, nicht jedoch in der Detailansicht der readingsGroup. Ich würde das gerne beheben (alle Werte immer in der richtigen Spalte, weiß aber nicht, wie.
Im Detail:
Ich habe hier zur Übersicht der Räume eine Übersicht per readingsGroup erstellt. Das funktioniert auch eigentlich sehr gut, mit einem "Problem": Nicht alle abgefragten Heizungsthermostate haben immer ein battery-reading (zum Problem siehe diesen Thread hier im Forum http://forum.fhem.de/index.php/topic,26861.0.html (http://forum.fhem.de/index.php/topic,26861.0.html)). Daher bleiben dann die entsprechenden (mit Batterie-Icon befüllten) Felder in der Readingsgroup leer, das ist ok. Links neben dem Batteriefeld ist der actuator (Ventilstellung), rechts daben die Luftfeuchtigkeitsanzeige (nur ganz unten benutzt, also auch oft leer).
Wenn nun das Batteriefeld und die Luftfeuchtigkeit leer sind, wird die Ventilstellung nicht in der richtigen Spalte angezeigt, sondern in der Mitte der 3 leeren Spalten.
1. Wie kann ich das zentrieren über mehrere leere Spalten verhindern?
2. Warum stimmt die Anzeige (nur Zentrieren innerhalb der jeweiligen Spalten), wenn ich mir die Details der readingsGroup anzeigen lasse? Nur die initiale Anzeige im Raum, dem die readingsGroup zugeordnet ist, ist verschoben. Klicke ich dort auf den Namen der readingsGroup, um die Details anzuzeigen, passt alles. (s. beiliegende Screenshots).
list der readingsgroup:
Internals:
DEF <%sani_heating>,<%sani_heating_temp>,<%sani_heating_manual>,<%hc_wht_regler>,<%batterie>,<%humidity> channel_01=.*_Weather:measured-temp,desired-temp@{$DEVICE."_Clima"},actuator,battery Sens_Keller:temperature,< >,< >,battery,humidity Sens_Vorrat:temperature,< >,< >,battery,humidity Sens_Garage:temperature,< >,< >,battery,humidity
NAME rg_Hzg_All
NR 281
NTFY_ORDER 50-rg_Hzg_All
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Hzg_AusgTerrasse 1
Hzg_Bad 1
Hzg_Buero 1
Hzg_Eingang 1
Hzg_Flur 1
Hzg_Gaestebad 1
Hzg_Gaestezimmer 1
Hzg_Julius 1
Hzg_Keller 1
Hzg_Kueche 1
Hzg_OG_links 1
Hzg_OG_rechts 1
Hzg_Schlafzimmer 1
Hzg_WC 1
Hzg_Waschkueche 1
Hzg_Wohnzimmer1 1
Hzg_Wohnzimmer2 1
Hzg_Wohnzimmer3 1
Sens_Garage 1
Sens_Keller 1
Sens_Vorrat 1
Content2:
Hzg_AusgTerrasse_Clima 1
Hzg_Bad_Clima 1
Hzg_Buero_Clima 1
Hzg_Eingang_Clima 1
Hzg_Flur_Clima 1
Hzg_Gaestebad_Clima 1
Hzg_Gaestezimmer_Clima 1
Hzg_Julius_Clima 1
Hzg_Keller_Clima 1
Hzg_Kueche_Clima 1
Hzg_OG_links_Clima 1
Hzg_OG_rechts_Clima 1
Hzg_Schlafzimmer_Clima 1
Hzg_WC_Clima 1
Hzg_Waschkueche_Clima 1
Hzg_Wohnzimmer1_Clima 1
Hzg_Wohnzimmer2_Clima 1
Hzg_Wohnzimmer3_Clima 1
DEVICES:
ARRAY(0x5b4c430)
ARRAY(0x4a92b40)
ARRAY(0x5311490)
ARRAY(0x58c7ac8)
ARRAY(0x52bf3a0)
ARRAY(0x5708d18)
ARRAY(0x45e96e0)
ARRAY(0x58baf28)
ARRAY(0x503be50)
ARRAY(0x58d3858)
ARRAY(0x597dc88)
ARRAY(0x4af75f0)
ARRAY(0x5226a48)
ARRAY(0x512a448)
ARRAY(0x5b41a00)
ARRAY(0x5b41940)
ARRAY(0x5284c08)
ARRAY(0x58b5cb0)
ARRAY(0x5b288b8)
ARRAY(0x52c9720)
ARRAY(0x5b233b8)
ARRAY(0x5127db0)
DEVICES2:
ARRAY(0x5b4c430)
ARRAY(0x4a92b40)
ARRAY(0x5311490)
ARRAY(0x58c7ac8)
ARRAY(0x52bf3a0)
ARRAY(0x5708d18)
ARRAY(0x45e96e0)
ARRAY(0x58baf28)
ARRAY(0x503be50)
ARRAY(0x58d3858)
ARRAY(0x597dc88)
ARRAY(0x4af75f0)
ARRAY(0x5226a48)
ARRAY(0x512a448)
ARRAY(0x5b41a00)
ARRAY(0x5b41940)
ARRAY(0x5284c08)
ARRAY(0x58b5cb0)
ARRAY(0x5b288b8)
ARRAY(0x52c9720)
ARRAY(0x5b233b8)
ARRAY(0x5127db0)
ARRAY(0x524cb70)
ARRAY(0x58b4558)
ARRAY(0x52c5c38)
ARRAY(0x2ffd9f0)
ARRAY(0x5b29020)
ARRAY(0x58baf40)
ARRAY(0x5281c90)
ARRAY(0x531d160)
ARRAY(0x58c1860)
ARRAY(0x4ab16d8)
ARRAY(0x5981780)
ARRAY(0x4f4c8c0)
ARRAY(0x5b4f808)
ARRAY(0x52ce9f0)
ARRAY(0x5b2c7b8)
ARRAY(0x58c5408)
ARRAY(0x4f41688)
ARRAY(0x5280438)
Fhem:
lastDefChange 99
last_update 1423410452.56938
Helper:
DEF
nameStyle style="font-weight:bold;text-align:center"
valueStyle {if ($READING eq "measured-temp" && $VALUE < 20) {'style="color:blue;text-align:right"'} elsif ($READING eq "measured-temp" && $VALUE > 25) {'style="color:red;text-align:right"'} elsif ($READING eq "measured-temp" && $VALUE >= 20) {'style="text-align:right"'} elsif ($READING eq "humidity") {'style="text-align:center"'} elsif ($READING eq "actuator") {'style="text-align:center"'} elsif ($READING eq "temperature" && $VALUE < 20) {'style="color:blue;text-align:right"'} elsif ($READING eq "temperature" && $VALUE > 25) {'style="color:red;text-align:right"'} elsif ($READING eq "temperature" && $VALUE >= 20) {'style="text-align:right"'} elsif ($READING eq "desired-temp" && $VALUE < 20) {'style="color:blue;text-align:right"'} elsif ($READING eq "desired-temp" && $VALUE > 25) {'style="color:red;text-align:right"'} elsif ($READING eq "desired-temp" && $VALUE >= 20) {'style="text-align:right"'} }
Commands:
desired-temp desired-temp:
Mapping:
Hzg_AusgTerrasse Flur bei Terrasse
Hzg_Bad Badezimmer
Hzg_Buero Büro
Hzg_Eingang Windfang
Hzg_Flur Flur im Keller
Hzg_Gaestebad Gästebad
Hzg_Gaestezimmer Gästezimmer
Hzg_Julius Julius' Zimmer
Hzg_Keller Ehemaliges Büro
Hzg_Kueche Küche
Hzg_OG_links OG, Fensterfront
Hzg_OG_rechts OG, Schreibtisch
Hzg_Schlafzimmer Schlafzimmer
Hzg_WC WC
Hzg_Waschkueche Waschküche
Hzg_Wohnzimmer1 Wohnzimmer
Hzg_Wohnzimmer2
Hzg_Wohnzimmer3
Sens_Garage Garage
Sens_Keller Ehemaliges Büro
Sens_Vorrat Vorratskeller
Valueformat:
actuator %.0f%%
desired-temp %.1f°C
humidity %.0f%%
measured-temp %.1f°C
temperature %.1f°C
Valueicon:
battery.low measure_battery_50@red
battery.ok measure_battery_100@green
Attributes:
alias Heizungsuebersicht
commands {'desired-temp' => 'desired-temp:'}
group Heizung
mapping {Hzg_AusgTerrasse=>"Flur bei Terrasse",Hzg_Bad=>"Badezimmer",Hzg_Buero=>"Büro",Hzg_Eingang=>"Windfang",Hzg_Flur=>"Flur im Keller",Hzg_Gaestebad=>"Gästebad",Hzg_Gaestezimmer=>"Gästezimmer",Hzg_Julius=>"Julius' Zimmer",Hzg_Keller=>"Ehemaliges Büro",Hzg_Kueche=>"Küche",Hzg_Schlafzimmer=>"Schlafzimmer",Hzg_WC=>"WC",Hzg_Waschkueche=>"Waschküche",Hzg_Wohnzimmer1=>"Wohnzimmer",Hzg_Wohnzimmer2=>" ",Hzg_Wohnzimmer3=>" ",Sens_Keller=>"Ehemaliges Büro",Sens_Vorrat=>"Vorratskeller",Sens_Garage=>"Garage",Hzg_OG_rechts=>"OG, Schreibtisch",Hzg_OG_links=>"OG, Fensterfront" }
nameStyle style="font-weight:bold;text-align:center"
room Heizung
valueFormat {'measured-temp' => "%.1f°C", 'desired-temp' => "%.1f°C", 'actuator' =>"%.0f%%", 'temperature' => "%.1f°C", 'humidity' => "%.0f%%" }
valueIcon {'battery.ok' => 'measure_battery_100@green', 'battery.low' => 'measure_battery_50@red'}
valueStyle {if ($READING eq "measured-temp" && $VALUE < 20) {'style="color:blue;text-align:right"'} elsif ($READING eq "measured-temp" && $VALUE > 25) {'style="color:red;text-align:right"'} elsif ($READING eq "measured-temp" && $VALUE >= 20) {'style="text-align:right"'} elsif ($READING eq "humidity") {'style="text-align:center"'} elsif ($READING eq "actuator") {'style="text-align:center"'} elsif ($READING eq "temperature" && $VALUE < 20) {'style="color:blue;text-align:right"'} elsif ($READING eq "temperature" && $VALUE > 25) {'style="color:red;text-align:right"'} elsif ($READING eq "temperature" && $VALUE >= 20) {'style="text-align:right"'} elsif ($READING eq "desired-temp" && $VALUE < 20) {'style="color:blue;text-align:right"'} elsif ($READING eq "desired-temp" && $VALUE > 25) {'style="color:red;text-align:right"'} elsif ($READING eq "desired-temp" && $VALUE >= 20) {'style="text-align:right"'} }
die screenshots fehlen...
über valueColumn kannst du fest legen in welcher spalte ein wert steht soll falls vorher readings fehlen.
gruss
andre
Danke für die schnelle Antwort. Screenshots habe ich oben ergänzt, vor allem auch, weil ich mit valuecolumn nicht erfolgreich war. Ich habe ergänzt:
attr rg_Hzg_All valueColumn { actuator => 3 }
Die Darstellung sieht nach wie vor aus, wie auf den Screenshots eingefügt. Es scheint, dass die leeren columns gegen Ende wegfallen und dann der Befehl zur Zentrierung über die gesamte restliche Tabellenbreite wirkt, weswegen die actuator-Einstellung sich dann genau in der Batterie-Spalte wiederfindet. Ahnungslose Ehefrauen verteilen daraufhin sofort Kommandos zum Batteriewechsel. ;D
lol
- der Trick ist solche Seiten vor den ahnungslosen Ehefrauen zu verstecken...
;-)
8)
Was auch klappt: In der alten Definition (s.o.) war für den Thermostat-Teil in der readingsgroup für die letzte Spalte gar kein Reading angegeben (humidity gibt es bei den Thermostaten nicht, und da es am Ende war, hatte ich da auch nichts weiter angegeben). Das scheint bei Nichtvorhandensein des battery-Readings dazu zu führen, dass actuator als letztes Reading sich - nicht in der Detailansicht der readingsgroup, aber in der "normalen" Darstellung - über die restliche Breite der Tabelle erstreckt.
Wenn ich dementsprechend dann in der Definition bei den Thermostaten am Ende für humidity noch ein < > anhänge, stimmt die Ansicht der readingsgroup nicht nur in der Detailansicht, sondern auch in der normalen Ansicht.
Internals:
DEF <%sani_heating>,<%sani_heating_temp>,<%sani_heating_manual>,<%hc_wht_regler>,<%batterie>,<%humidity> channel_01=.*_Weather:measured-temp,desired-temp@{$DEVICE."_Clima"},actuator,battery,< > Sens_Keller:temperature,< >,< >,battery,humidity Sens_Vorrat:temperature,< >,< >,battery,humidity Sens_Garage:temperature,< >,< >,battery,humidity
Ja, ich freue mich auch über meine Spezialprobleme. ;D
Einen schönen Abend allerseits!
Hallo ich habe folgendes Problem:
Bin noch ziemlicher Anfänger.
Und zwar schaff ich es nicht, verschiedene Devices, in einer Zeile hintereinander dar zu stellen.
im Anhang eine Idee wie es etwa ausschauen sollte.
Besten Dank
@idi: Und was hast Du bisher versucht, was kam raus?
Bisher bin ich leider nur zu folgendem Punkt gekommen:
define Verteiler_Temperatur1 readingsGroup <%sani_heating>,<Temp>,<Status> Bad_Rl:temperature, Status_Bad:state, Wz_Rl_98m:temperature, Status_Wohnzimmer:state
attr Verteiler_Temperatur1 notime 1
attr Verteiler_Temperatur1 room Heizungsverteiler
Besten Dank für die Hilfe !
Wenn Du Readings aus unterschiedlichen Devices in einer Zeile anzeigen möchtest, schau Dir mal diesen Wiki-Eintrag an: http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices (http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices)
siehe z.b. hier: http://forum.fhem.de/index.php/topic,16552.msg256989.html#msg256989
gruß
andre
Besten Dank !
Jetzt hat's geklappt.
define Verteiler_Temperatur1 readingsGroup <%sani_heating>,<Temp>,<>,<Status> \
Vorlauf:<Vorlauf>,temperature, \
Bad_Rl:<Bad ;Rücklauf>,temperature,<>,state@Status_Bad, \
Wz_Rl_98m:<Wohnzimmer ;Rücklauf1>,temperature,<>,state@Status_Wohnzimmer, \
Wz_Rl_64m:<Wohnzimmer ;Rücklauf2>,temperature,<>,state@Status_Wohnzimmer
Schöne Grüße
Zitat von: justme1968 am 05 Februar 2015, 12:48:17
das ist inzwischen (fast) repariert. siehe hier: http://forum.fhem.de/index.php/topic,33226.msg256778.html#msg256778 (http://forum.fhem.de/index.php/topic,33226.msg256778.html#msg256778).
gruss
andre
Das hier ist im Übrigen nicht repariert. Mit der Version von heute ist das immernoch genau so. Es hat sich am Verhalten nichts geändert (und ja, bei mir wird alles korrekt geladen, den Cache habe ich geleert). Auch dass Codemirror im DEF Feld so nicht mehr brauchbar ist, ist sehr ärgerlich. Könnte man das wieder raus machen, bis es wirklich funktioniert???
Hallo Andre,
zwei Fragen:
1. Ich würde gerne ein und dieselbe readingsGroup auf mehreren Seiten darstellen, aber dann abhängig von der Seite (Raum) den Inhalt unterschiedlich gestalten.
Beispiel:
define Thermostat_rg readingsGroup .._Thermostat:measured-temp,desired-temp,...
.. steht für ein Kürzel für die Räume, in denen sich Thermostate befinden.
Jetzt möchte ich dann so was machen:
attr Thermostat_rg valueFormat {IsRoom("$DEVICE","$VALUE",...?)}
sub IsRoom($$$)
{
my ($d,$v,$current_room) = @_;
liefert den VALUE zurück, wenn $DEVICE die Kennung für den Raum ($current_room) hat, in der gerade die readingsGroup angezeigt wird, ansonsten return undef.
Gibt es eine Variable oder könte man diese als $ oder % - Variable verfügbar machen ($CURRENT_ROOM), mit der man abfragen kann, in welchem Raum die rg gerade angezeigt wird?
(attr rg room geht ja nicht, da es immer die gleiche Liste von Räumen ausgibt, in der die rg ausgegeben wird und nicht die aktuelle Darstellung repräsentiert).
2. Das ist schnell beantwortet, habe es noch nicht selbst ausprobiert, mit Ikonen tue ich mich ja nicht gerade leicht:
Können valuePrefix und valueSuffix auch Ikonen ausgeben? (Mit %IkconName)
Geht auch sowas:
...valuePrefix {'rd1' => '{perlcode}', ...'rdn' => '{perlcode...}'}
und das hier?
...commands {'rd1' => '{perlcode}', ...'rdn' => '{perlcode...}'}
Elektrolurch
Hallo zusammen,
habe folgenden Eintrag erstellt.
define Thermostat readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist>,<MaxV>,<GID>,<Mode>,<Batterie> TYPE=CUL_HM:FILTER=subType=thermostat:ValvePosition,desired-temp,measured-temp,R-valveMaxPos,groupid,mode,battery
Und bekomme dieses Ergebniss , argh.....!
Vielen Dank vorab.
Gruß Newbee
@karl0123: bei mir geht codemirror. sowohl in der DEF als auch bei den attributen. siehst du irgendwelche meldungen in der javascript konsole? du kannst per widgetOverride attribut alle textField-long widgets auf textField setzen und hast erst mal das alte verhalten ohne popup dialog.
@Elektrolurch:
an den gerade angezeigten raum kommst du per $FW_webArgs{room}. ich schaue mal ob man das noch etwas eleganter machen kann.
valuePrefix und valueSuffix können nur text sein keine icons.
perl code geht so wie in deinem beispiel in beiden fällen.
gruss
andre
Hallo zusammen,
nun bin ich durch diesen Fred durch, aber nicht viel schlauer.
Das Wicki ist super, ebenso das Modul.
Bild1 Habe ich schonmal hinbekommen. War ja auch einfach(Copy,Paste).
Nun habe ich versucht aus dem Wicki Bild2 hinzubekommen.
Folgendes habe ich im Web Interface in das Befehls Eingabefeld eingegeben:
define myTemp readingsGroup <Raum>,<Tist>,<Tsoll>,<Mode>,<Tnight>,<Tday>,<BatTC>,<Vist>,<Vsoll>,<Verr>,<BatVD>
Thermostat.(GWC|Tuer|Amelie|Bad|Schlaf|Spielzimmer|Zoe):temperature,desiredTemperature,mode,
night-temp,day-temp,battery,ValvePosition@{valveOfDevice($DEVICE)},ValveDesired@{valveOfDevice($DEVICE)},
R-valveErrorPos@{valveOfDevice($DEVICE)},battery@{valveOfDevice($DEVICE)}
attr myTemp mapping { 'Thermostat.GWC' => 'HZ_GWC','Thermostat.Tuer' => 'HZ_Tuer','Thermostat.Amelie'=>'HZ_Amelie','Thermostat.Bad' =>
'HZ_Bad','Thermostat.Schlaf' =>
'HZ_Schlaf','Thermostat.Spielzimmer' => 'HZ_Spielzimmer','Thermostat.Zoe' =>
'HZ_Zoe','desired-temp' =>
'' }
Und Bild3 kommt dabei heraus.
Wie in meiner Signatur zu sehen ist sind meine Fenstekontakte und die Thermostate,Stellventiel von MAX!.
Vorher ist es mir im Wiki ebenso ergangen mit den "Heizungswerte inklusive Ventilposition" für MAX!.
Code:
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist>,<MaxV>,<GID>,<Mode>,<Batterie>
TYPE=CUL_HM:ValvePosition,desired-temp,measured-temp,R-valveMaxPos,groupid,mode,battery
Ist CUL_HM nicht für Homematic?
Egal, da ich einen COC habe, aber weder TYPE=COC:, noch TYPE=CULMAX0: funktioniert.
Könnte mir bitte jemand erklären, wo mein Fehler liegt?
Gruß
Ralf
Versuch es mal mit "TYPE=MAX:" um alle MAX-Komponenten zur erfassen. Alternativ nur für Thermostate "DEF=HeatingThermostat.*".
Aus desired-temp musst Du noch desiredTemperature machen, ebenso aus measured-temp temperature und aus R-valveMaxPos maxValveSetting.
Aus dem ganzen wird also für alle MAX-Thermostate:
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist>,<MaxV>,<GID>,<Mode>,<Batterie> DEF=HeatingThermostat.*:valveposition,desiredTemperature,temperature,maxValveSetting,groupid,mode,battery
Hallo mahowi,
danke für die schnelle Antwort.
Der Code von dir:
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist>,<MaxV>,<GID>,<Mode>,<Batterie>
DEF=HeatingThermostat.*:valveposition,desiredTemperature,temperature,maxValveSetting,groupid,mode,battery
Ergibt Bild4.
Anscheinend kennen meine Thermostate "maxValveSetting" nicht.
Im Moment bin ich damit aber schon ein ganzes Stück weiter.
Vielen Dank für das sofort testbare Beispiel.
Ich werde das eine oder andere Beispiel aus dem Wiki nun versuchen umzusetzen.
Gruß
Ralf
Was sagt denn ein "list Thermostat.GWC"?
Bei mir ergibt z.B. "list MAX_009cd1":
Internals:
CHANGED
DEF HeatingThermostat 009cd1
IODev ml
LASTInputDev ml
MSGCNT 1968
NAME MAX_009cd1
NR 46
STATE 21.0 °C
TYPE MAX
addr 009cd1
backend ml
dstsetting 1
ml_MSGCNT 1968
ml_TIME 2015-02-11 17:08:54
mode 0
rferror 0
serial IEQ0182338
type HeatingThermostat
Readings:
2015-02-11 17:08:54 MAXLAN_error 0
2015-02-11 17:08:54 MAXLAN_errorInCommand
2015-02-11 17:08:54 MAXLAN_initialized 1
2015-02-11 17:08:54 MAXLAN_isAnswer 0
2015-02-11 17:08:54 MAXLAN_valid 1
2015-02-11 17:08:54 battery ok
2015-02-11 17:08:54 boostDuration 5
2015-02-11 17:08:54 boostValveposition 80
2015-02-11 17:08:54 comfortTemperature 23.0
2015-02-11 17:08:54 decalcification Sat 12:00
2015-02-11 17:08:54 desiredTemperature 21.0
2015-02-11 17:08:54 ecoTemperature 16.5
2015-02-11 17:08:54 firmware 1.4
2015-02-11 17:08:54 groupid 1
2015-02-11 17:08:54 maxValveSetting 100
2015-02-11 17:08:54 maximumTemperature 26.0
2015-02-11 17:08:54 measurementOffset 0.0
2015-02-11 17:08:54 minimumTemperature off
2015-02-11 17:08:54 mode auto
2015-02-11 17:08:54 state 21.0 °C
2015-02-11 17:08:54 temperature 24.1
2015-02-11 17:08:54 testresult 255
2015-02-11 17:08:54 valveOffset 0
2015-02-11 17:08:54 valveposition 22
2015-02-11 17:08:54 weekprofile-0-Sat-temp 18.0 °C / 16.5 °C / 21.0 °C / 18.0 °C / 18.0 °C
2015-02-11 17:08:54 weekprofile-0-Sat-time 00:00-02:00 / 02:00-09:00 / 09:00-22:00 / 22:00-23:55 / 23:55-00:00
2015-02-11 17:08:54 weekprofile-1-Sun-temp 18.0 °C / 16.5 °C / 21.0 °C / 16.5 °C / 16.5 °C
2015-02-11 17:08:54 weekprofile-1-Sun-time 00:00-02:00 / 02:00-09:00 / 09:00-22:30 / 22:30-23:55 / 23:55-00:00
2015-02-11 17:08:54 weekprofile-2-Mon-temp 16.5 °C / 21.0 °C / 16.5 °C / 21.0 °C / 18.0 °C / 16.5 °C
2015-02-11 17:08:54 weekprofile-2-Mon-time 00:00-06:30 / 06:30-08:00 / 08:00-16:00 / 16:00-22:00 / 22:00-23:55 / 23:55-00:00
2015-02-11 17:08:54 weekprofile-3-Tue-temp 16.5 °C / 21.0 °C / 16.5 °C / 21.0 °C / 18.0 °C / 16.5 °C
2015-02-11 17:08:54 weekprofile-3-Tue-time 00:00-06:30 / 06:30-08:00 / 08:00-16:00 / 16:00-22:00 / 22:00-23:55 / 23:55-00:00
2015-02-11 17:08:54 weekprofile-4-Wed-temp 16.5 °C / 21.0 °C / 16.5 °C / 21.0 °C / 18.0 °C / 16.5 °C
2015-02-11 17:08:54 weekprofile-4-Wed-time 00:00-06:30 / 06:30-08:00 / 08:00-16:00 / 16:00-22:00 / 22:00-23:55 / 23:55-00:00
2015-02-11 17:08:54 weekprofile-5-Thu-temp 16.5 °C / 21.0 °C / 16.5 °C / 21.0 °C / 18.0 °C / 16.5 °C
2015-02-11 17:08:54 weekprofile-5-Thu-time 00:00-06:30 / 06:30-08:00 / 08:00-16:00 / 16:00-22:00 / 22:00-23:55 / 23:55-00:00
2015-02-11 17:08:54 weekprofile-6-Fri-temp 16.5 °C / 21.0 °C / 16.5 °C / 21.0 °C / 18.0 °C / 18.0 °C
2015-02-11 17:08:54 weekprofile-6-Fri-time 00:00-06:30 / 06:30-08:00 / 08:00-13:30 / 13:30-22:00 / 22:00-23:55 / 23:55-00:00
2015-02-11 17:08:54 windowOpenDuration 15
2015-02-11 17:08:54 windowOpenTemperature 10.0
Internals:
interfaces thermostat;battery;temperature
Attributes:
IODev ml
alias Bad_Heizung
event-on-change-reading .*
icon max_heizungsthermostat
room MAX
Eigentlich sollte jedes MAX Thermostat maxValveSetting unterstützen. Bei mir sieht es mit demselben Code aus wie im Screenshot, da wird alles angezeigt.
Hallo mahowi,
hier mein list HZ_GWC:
Internals:
CULMAX0_MSGCNT 3
CULMAX0_TIME 2015-02-11 18:26:30
DEF HeatingThermostat 0714e2
IODev CULMAX0
LASTInputDev CULMAX0
MSGCNT 3
NAME HZ_GWC
NR 78
RSSI -54
STATE 20.0 °C
TYPE MAX
addr 0714e2
backend CULMAX0
dstsetting 1
mode 0
rferror 0
type HeatingThermostat
Readings:
2015-01-26 21:14:13 TimeInformationHour 5
2015-02-11 18:26:30 battery ok
2015-02-11 18:26:30 desiredTemperature 20.0
2015-01-26 21:14:45 groupid 0
2015-01-27 23:12:52 measurementOffset 0
2015-02-11 18:26:30 mode auto
2015-02-11 18:26:28 msgcnt 67
2015-02-11 18:26:30 state 20.0 °C
2015-02-11 18:14:47 temperature 20.9
2015-02-11 18:26:30 valveposition 87
Internals:
interfaces thermostat;battery;temperature
Attributes:
IODev CULMAX0
group Erdgeschoss
icon temp_control
room GWC, Heizung
Wie du sehen kannst, kein "maxValveSetting"!!
Wenn ich das richtig verstehe gibt es mir auch nur die vorgegebene maximal mögliche Stellgröße des Ventils wieder. Die ist bei jedem 100%.
Von daher Unwichtig.
Wenn es die maximale Stellgröße bis "jetzt" wiedergeben würde, dann wäre es was anderes.
So wie min temp und max temp.
Ich habe nun mal folgendes probiert:
define Heizungswerte readingsGroup <%sani_heating>,<Ventil>,<Soll>,<Ist>,<GID>,<Mode>,<Batterie>
DEF=.*Thermostat.*:valveposition,desiredTemperature,temperature,groupid,mode,battery
Ergibt Bild5
T_Wohn ist ein Wandthermostat von MAX! und hat keine Ventilstellung.
also sind dafür die Anzeigewerte verschoben.
Entweder es gibt nen Trick dies gerade zu ziehen oder ich ändere einfach die Reihenfolge.
Edith1
So wie in Bild6
Edith2
Wenn ich "set HZ_XYZ maxValveSetting 100" in das Eingabefeld eingebe erhalte ich dies auch gelistet.
Genauso wie comfortTemperature, dann kommt automatisch die ecoTemperature mit.
Viel gelernt Heute!;-)
Prima, dann klappt es ja jetzt. :) Ich bin auch erst seit kurzem bei FHEM dabei und lerne jeden Tag was Neues. ;)
Bei mir waren die Variablen alle von Anfang an vorhanden. Liegt aber vielleicht daran, daß ich den Cube nutze und alle Einstellungen von da übernommen wurden.
Soweit ich weiß, kann man auch irgendwie die Tabelle "gerade ziehen", wenn Readings leer sind. Aber ich weiß nicht mehr genau, wo ich da was zu gelesen habe.
Hallo,
ich habe es nun weiter umgestellt auf meine MAX! Geräte.
define MAX readingsGroup <Name>,<Batterie>,<Status/Soll>,<GID>,<Ist>,<MaxV>,<Mode>
TYPE=MAX:battery,state,groupid,temperature,maxValveSetting,mode
Grad C und % Anzeige:
attr MAX valueFormat {'temperature' => "%.0f °C", 'desiredTemperature' => "%.0f °C",
'valveposition' =>"%.0f %%", 'maxValveSetting' =>"%.0f %%" }
Batterie und Fenster Icon:
attr MAX valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red',
'state.closed' => 'fts_window_1w@lightgreen', 'state.opened' => 'fts_window_1w_open@red'}
Vielleicht hilft es einigen MAX! nutzern.
Nochmals Danke für das Modul, zaubert mir ein Grinsen auf mein Gesicht :-).
Danke nochmal mahowi für den Denkanstoss.
Gruß
Ralf
Hi,
ich habe jetzt eine Weile mit den ReadingsGroups herumgespielt und musste nun nach einem FHEM-Restart feststellen, dass er die cellStyles nicht korrekt speichert.
vor dem Restart:
Internals:
DEF YahooWetter:<heute>,fc2_day_of_week,fc3_day_of_week,fc4_day_of_week,fc5_day_of_week
YahooWetter:fc1_code,fc2_code,fc3_code,fc4_code,fc5_code
YahooWetter:fc1_high_c,fc2_high_c,fc3_high_c,fc4_high_c,fc5_high_c
YahooWetter:fc1_low_c,fc2_low_c,fc3_low_c,fc4_low_c,fc5_low_c
NAME Wetter
NR 91
NTFY_ORDER 50-Wetter
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
YahooWetter 1
Content2:
DEVICES:
ARRAY(0x3526358)
ARRAY(0x35261d8)
ARRAY(0x3525b78)
ARRAY(0x3508e78)
Fhem:
lastDefChange 19
last_update 1423752190.48212
Helper:
DEF
nameStyle style="text-align:center"
valueStyle style="text-align:center"
Cellstyle:
r:1 style="font-size:28px;color:#FF9900;text-align:center"
r:3 style="font-size:28px;color:DarkOrange"
r:4 style="font-size:28px;color:SlateBlue"
Valueformat:
fc1_high_c %.0f°C
fc1_low_c %.0f°C
fc2_high_c %.0f°C
fc2_low_c %.0f°C
fc3_high_c %.0f°C
fc3_low_c %.0f°C
fc4_high_c %.0f°C
fc4_low_c %.0f°C
fc5_high_c %.0f°C
fc5_low_c %.0f°C
Valueicon:
fc1_code %VALUE
fc2_code %VALUE
fc3_code %VALUE
fc4_code %VALUE
fc5_code %VALUE
Attributes:
cellStyle { "r:1"=>'style="font-size:28px;color:#FF9900;text-align:center"',"r:3"=>'style="font-size:28px;color:DarkOrange"',"r:4"=>'style="font-size:28px;color:SlateBlue"' }
fp_Status 110,210,0,
nameStyle style="text-align:center"
noheading 1
nolinks 1
nonames 1
room Frontend
valueFormat {"fc1_low_c" => "%.0f°C", "fc1_high_c" => "%.0f°C", "fc2_low_c" => "%.0f°C", "fc2_high_c" => "%.0f°C", "fc3_low_c" => "%.0f°C", "fc3_high_c" => "%.0f°C", "fc4_low_c" => "%.0f°C", "fc4_high_c" => "%.0f°C", "fc5_low_c" => "%.0f°C", "fc5_high_c" => "%.0f°C" }
valueIcon {'fc1_code' => '%VALUE', 'fc2_code' => '%VALUE', 'fc3_code' => '%VALUE', 'fc4_code' => '%VALUE', 'fc5_code' => '%VALUE'}
valueStyle style="text-align:center"
Nach dem Restart:
Internals:
DEF YahooWetter:<heute>,fc2_day_of_week,fc3_day_of_week,fc4_day_of_week,fc5_day_of_week
YahooWetter:fc1_code,fc2_code,fc3_code,fc4_code,fc5_code
YahooWetter:fc1_high_c,fc2_high_c,fc3_high_c,fc4_high_c,fc5_high_c
YahooWetter:fc1_low_c,fc2_low_c,fc3_low_c,fc4_low_c,fc5_low_c
NAME Wetter
NR 91
NTFY_ORDER 50-Wetter
STATE Initialized
TYPE readingsGroup
Content:
YahooWetter 1
Content2:
DEVICES:
ARRAY(0x2165858)
ARRAY(0x2165840)
ARRAY(0x3f13828)
ARRAY(0x2164c40)
Fhem:
lastDefChange 1
last_update 1423752987.24958
Helper:
DEF
cellStyle { "r:1"=>'style="font-size:28px;color:
nameStyle style="text-align:center"
valueStyle style="text-align:center"
Valueformat:
fc1_high_c %.0f°C
fc1_low_c %.0f°C
fc2_high_c %.0f°C
fc2_low_c %.0f°C
fc3_high_c %.0f°C
fc3_low_c %.0f°C
fc4_high_c %.0f°C
fc4_low_c %.0f°C
fc5_high_c %.0f°C
fc5_low_c %.0f°C
Valueicon:
fc1_code %VALUE
fc2_code %VALUE
fc3_code %VALUE
fc4_code %VALUE
fc5_code %VALUE
Attributes:
cellStyle { "r:1"=>'style="font-size:28px;color:
fp_Status 110,210,0,
nameStyle style="text-align:center"
noheading 1
nolinks 1
nonames 1
room Frontend
valueFormat {"fc1_low_c" => "%.0f°C", "fc1_high_c" => "%.0f°C", "fc2_low_c" => "%.0f°C", "fc2_high_c" => "%.0f°C", "fc3_low_c" => "%.0f°C", "fc3_high_c" => "%.0f°C", "fc4_low_c" => "%.0f°C", "fc4_high_c" => "%.0f°C", "fc5_low_c" => "%.0f°C", "fc5_high_c" => "%.0f°C" }
valueIcon {'fc1_code' => '%VALUE', 'fc2_code' => '%VALUE', 'fc3_code' => '%VALUE', 'fc4_code' => '%VALUE', 'fc5_code' => '%VALUE'}
valueStyle style="text-align:center"
Mache ich hier was falsch, oder bin ich über einen Bug gestolpert?
Gruß
Martin
du kannst in einem attribut das # zeichen nicht verwenden weil es beim einlesen als kommentar interpretiert und alles danach abgeschnitten wird. das ist ganz allgemein in fhem so.
du kannst entweder farb namen statt hex werten verwenden oder alles in eine sub auslagern und diese im attribut aufrufen. es gibt schon ein paar posts dazu.
gruss
andre
Vielen Dank!
Auf die Raute bin ich noch nicht gekommen... Hab da auch nicht dran gedacht, dass die in der fhem.cfg als Kommentar gilt. War so in css und den Style Attributen vergraben, dass die Raute mir gar nicht in den Sinn kam ;)
Hallo zusammen,
vielleicht hat jemand eine Lösung oder Idee dazu, denn ich komme nicht mehr weiter.
Ich habe ein Problem mit der Darstellung im Web-Frontend auf Port 8084 (Handy). Auf Port 8083 und 8085 ist die Anzeige, wie ich es wünsche. Auf Port 8084 sieht es so aus, als wäre links eine leere Spalte. Dementsprechend sieht man die Werte der readings nur in der Querformatanzeige.
Mit readingsGroup habe ich meine Gasverbräuche, die ich mit dem Modul HourCounter ermittele dargestellt. Da ich nur bestimmte readings anzeigen möchte, habe ich readingsGroup wie folgte definiert:
define RG_Gaszaehler readingsGroup HC_Gaszaehler:<br>,<Gasverbräuche>,<br>,<heute>,countsPerDay,<br>,<gestern>,appCountsPerDay,<br>,<akt. Woche>,appCountsPerWeekTemp,<br>,<Vorwoche>,appCountsPerWeek,<br>,<akt. Monat>,appCountsPerMonthTemp,<br>,<Vormonat>,appCountsPerMonth,<br>,<akt. Jahr>,appCountsPerYearTemp,<br>,<Vorjahr>,appCountsPerYear,<br>,<Zählerstand>,countsOverall,<br>,<Aktualisierung>,<{ReadingsTimestamp($DEVICE,"countsPerDay","")}@reading>
attr RG_Gaszaehler alias Gaszaehler
attr RG_Gaszaehler valueFormat {sprintf("%.1f m³", $VALUE/10);;}
attr RG_Gaszaehler valueStyle style="text-align:right"
attr RG_Gaszaehler room 04_Heizung
attr RG_Gaszaehler group 90_Zaehler
Wenn ich readingsGroup nur "einfach" definiere, ist die Anzeige schön linksbündig.
define RG_Gaszaehler readingsGroup HC_Gaszaehler
Allerdings möchte ich das nicht, da ich dann jede Menge readings habe die ich gar nicht sehen möchte.
Viele Grüße,
Thorsten
Hallo Andre,
mach gerade viel mit GUI.
Ich möchte die Ansicht von readingsGrups umschalten, zumeist wird sie per perl und modify neu definiert.
Jetzt wollte ich dazu den aktuellen Anzeigemodus per reading direkt bei der rg hinterlegn:
define Alle_Fenster_rg readingsGroup Alle_Fenster_rg:<Ansicht>,Ansicht,<Fenster> [A-Z][a-z]_Fenster:state,<{valueListe('Alle_Fenster_rg',$DEVICE,'seit '.KonvertiereZeit(ReadingsTimestamp($DEVICE,'Previous',0),3))}>
Ansicht ist mit "offene" belegt.
Dazu:
commands {'Alle_Fenster_rg.Ansicht' => 'Ansicht:alle,offene,geschlossene'}
Es wird aber weder ein Menü, noch der aktuelle Wert "offene" angezeigt:
Ansicht
Fenster
Kann man Werte aus der eigenen rg nicht anzeigen?
Gestern beim Herumprobieren ist dann ein Absturz passiert:
2015.02.15 19:23:21 1: PERL WARNING: Deep recursion on subroutine "main::readingsGroup_detailFn" at ./FHEM/01_FHEMWEB.pm line 2460.
2015.02.15 19:23:21 1: PERL WARNING: Deep recursion on subroutine "main::readingsGroup_2html" at ./FHEM/33_readingsGroup.pm line 875.
2015.02.15 19:23:21 1: PERL WARNING: Deep recursion on subroutine "main::FW_devState" at ./FHEM/33_readingsGroup.pm line 759.
2015.02.15 19:27:04 1: Including fhem.cfg
Gruß
Elektrolurch
doch das geht. du kannst beliebige reading der readingsGroup anzeigen.
die einzige ausnahme ist state.
state darfst du weder verwenden noch anzeigen. deine readingsGroup heisst Alle_Fenster_rg und mit [A-Z][a-z]_Fenster:state versuchst du den eigenen state anzuzeigen.
das problem ist das fhem inter die ganze anzeige der readingsGroup nichts anderes ist als ein icon das einen device zustand anzeigt. und wenn du nun versuchst den eigenen state in der readingsGroup anzuzeigen kommt es zu rekursion.
gruss
andre
ich habe eben eine version eingecheckt die die rekursion abfängt und nicht mehr hängen bleibt.
gruss
andre
Hallo Andre,
Zitat:
die einzige ausnahme ist state.
state darfst du weder verwenden noch anzeigen. deine readingGroup heisst Alle_Fenster_rg und mit [A-Z][a-z]_Fenster:state versuchst du den eigenen state anzuzeigen.
Ich glaube, dass das so nicht stimmt:
Alle_Fenster_rg dürfte nicht gegen
[A-Z][a-z]_Fenster:state matchen, denn dann hätten die ganzen rgs bisher auch nicht funktioniert.
Der Absturz erfolgt definitiv erst dann, wenn ich:
Alle_Fenster_rg:Ansicht einfüge und Ansicht ist ein reading und nicht state.
Ich kenne ja ein bisserl nun Dein Modul und mir ist auch nicht so ganz klar, warum ein beliebiges reading zur Rekursion führen sollte...
#######################
Habe da noch was:
(nur in kurz)
define myrg readingsGroup dev:!MAN
attr myrg valueIcon {'MAN' => 'ManuellIcon'}
attr myrg commands {'MAN' => '{MeineSub("Param");;}' }
attr myrg valueSuffix {'MAN' => ' starten'}
soll ein klickbares Ikon mit dem Wort "starten" anzeigen.
Ikon wird auch angezeigt, ist aber nicht anklickbar.
wenn ich
attr myrg commands {'MAN' => 'set trigger PID PIDMAN'}
setze, ist es klickbar.
Nachteil: Ich muss dann alles in das notify packen, obwohl dort ja dann auch nur MeineSub aufgerufen werden soll.
Kann man das noch ergänzen, dass bei beliebigem perl-Code bei commands auch Ikonen und/oder Text klickbar sind?
Gruß
Elektrolurch
Mal ein Frage bzgl. dynamischen Inhalten:
Ich habe für meine Dreambox die Enigma-readingsGroup aus dem Wiki nachgebaut. Ich habe dann jedoch noch Zeilen für laufende Aufnahmen hinzugefügt. Die sollen jedoch nur angezeigt werden, wenn auch wirklich aufgenommen wird.
In dem man für ein Reading in ValueFormat "undef" zurück liefert, kann man ja Readings dynamisch ausblenden. Geht das denn auch für feste Labels, die man mit "<MeinLabel>" im DEF eingefügt hat?
Also ich würde gerne im Screenshot die unteren Zeilen komplett löschen:
(https://dl.dropboxusercontent.com/u/24641738/fhem/rgenigma.png)
Mein DEF:
wz_dm7020hd:<Status>,state,<Kanal>,channel
wz_dm7020hd:,<Aktuell>,eventtitle,<Rest>,eventremaining_hr,<Dauer>,eventduration_hr
wz_dm7020hd:<Beschreibung>,eventdescription
wz_dm7020hd:,<Nächste>,eventtitle_next,<Start>,eventstart_next_hr,<Dauer>,eventduration_next_hr
wz_dm7020hd:,<HDD Kapazität>,hdd1_capacity,<Frei>,wz_dm7020hd:hdd1_free wz_dm7020hd:,<Lautstärke>,volume,<HDD>,hdd1_capacity,<Frei>,hdd1_free
wz_dm7020hd:,<Nächste Aufname>,recordings_next_name,<Uhrzeit>,recordings_next_hr
wz_dm7020hd:,<Laufende Aufnahme1>,recordings1_name,recordings1_servicename
wz_dm7020hd:,<Laufende Aufnahme2>,recordings2_name,recordings2_servicename
wz_dm7020hd:,<Laufende Aufnahme3>,recordings3_name,recordings3_servicename
wz_dm7020hd:,<Laufende Aufnahme4>,recordings4_name,recordings4_servicename
ValueFormat:
{ if($READING eq 'hdd1_capacity' or $READING eq 'hdd1_free') { return "%.2f"; } elsif( $READING eq 'volume' ) {if( ReadingsVal($DEVICE, "mute", "") eq "on") {return "mute";} else {return "%i %%";} }elsif ($READING =~ /recordings._.*name/) { return ($VALUE eq '-') ? undef : $VALUE;}}
@Elektrolurch: du hast recht. die regex matched tatsächlich nicht. state ist aber das einzige reading das diese rekursion erzeugt.
bitte schau mal ob es mit dem update morgen weg ist.
du kannst über commands nicht direkt perl code ausführen. zum einen wird der perl code beim aufbau der reading group ausgwertet und die rückgabe als auszuführende kommando interpretiert und zum anderen musst du immer beachten das client (der web browser) und der server (der fhem prozess) getrennt sind und der web browser nicht direkt perl code im server ausführen kann. d.h. du musst immer vom client an den server senden was der server ausführen soll.
das kann theoretisch auch ein stück perl code sein. aber dann hast du das problem das hier alle möglichen zeichen url escaped werden müssen weil sie in einer url nicht erlaubt sind. aus deinem einfachen
attr myrg commands {'MAN' => '{MeineSub("Param");;}' }
aufruf wird dann das hier:
attr myrg commands {'MAN' => '%7BMeineSub%28%22Param%22%29%3B%3B%7D' }
das ist nicht wirklich lesbar.
das encoding könnte man eventuell automatisch machen, ich habe aber keine möglichkeit dem mapping anzusehen ob es den string der ausgeführt wird zurück gibt oder ob der code selber an fhem gesendet werden soll.
@vbs: wenn du statt <MeinLabel> die !MeinLabel variante verwendest wird MeinLabel wie ein normales reading behandelt und alle attribute verhalten sich so wie bei einem reading. d.h du kannst es per valueFormat und undef ausblenden. das ! flag ist um das reading auch dann zu berücksichtigen wenn es im device gar nicht vorhanden ist.
du kannst auch mit setreading im device das entsprechende reading erzeugen und dann wird der wert des readings als text verwendet. damit entfällt das problem mit nicht erlaubten zeichen wie leerzeichen und :.
statt die reading im device zu erzeugen kannst du sie auch in die readingsGroup selber stecken.
gruss
andre
Hallo Andre,
jetzt habe ich mit meinem Lachen mein WAF erschreckt!
das:
Alle_Fenster_rg:<Ansicht>,Ansicht,<Fenster>
führt jetzt zwar nicht mehr zum Absturz, gibt aber den state "initialized Fenster" zurück!
genau:
Ansicht
Initialized
Fenster
Fenster
Das ersehnte Menü "alle,offene,geschlossene" bleibt noch im "Dunkeln".
Wenn Du da noch mal schauen könntest, was da schief läuft....
(Habe den Gegentest gemacht:
Ein_anderes_Objekt:<Ansicht>,Ansicht,<Fenster>
erzeugt das gewünschte Ergebnis.)
okay, commands und kein perl ...
Dann muss ich eben doch mit trigger und einem Objekt arbeiten, an das ich die Events schicke.
Die !VARS nutze ich auch fleißig, um Ikonen dynamisch ein- und auszublenden.
Über valueFormat und das Rückliefern von undef kann man schon viel machen, bei einer Sache klappt das leidr nicht:
device:rd1,rd2,<{perlcode}>
Da der perlcode nicht über die Regel von valueFormat abgearbeitet wird, kommt der immer.
Also muss man die Bedingung, mit der etwas ein- und ausgeblendet werden soll, in den perlcode mit zusätzlich implementieren.
-> gleiches wie oben mit den <> - Labeln....
Elektrolurch
Sorry, ich versteh's nicht. Vielleicht kann jemand mal bitte mit einem Stemmeisen das Brett vor meinem Kopf entfernen.
define rg_Wetter_Garten readingsGroup <Wert>,<Wert2> <Zeile2_1>,<Zeile2_2>
Funktioniert. Ausgegeben werden 2 Zeilen mit meinem einfallsreichen Text.
define rg_Wetter_Garten readingsGroup <Wert>,<Wert2> <Zeile2_1>,KS300:temperature
führt dazu, dass nur noch "Wert| Wert2" ausgegeben wird. Die 2. Zeile verschwindet. Das Logfile ist leer.
Ein in der Kommandozeile von fhem eingegebenes
{ReadingsVal("KS300","temperature","0")}
ergibt
2.3
Das Reading gibt es also.
Anbei noch ein list auf mein KS300:
Internals:
CODE 1234
CUL1_MSGCNT 1503
CUL1_RAWMSG 810d04xx4027a00171320770004102
CUL1_RSSI -89.5
CUL1_TIME 2015-02-21 20:10:36
DEF 1234
IODev CUL1
LASTInputDev CUL1
MSGCNT 1503
NAME KS300
NR 360
RAINUNIT 255
STATE T: 2.3 H: 77 W: 0.0 R: 5.1 IR: no Wi: 0
TYPE KS300
WINDUNIT 1
Readings:
2015-02-21 20:10:36 avg_day T: 4.0 H: 68 W: 1.7 R: 0.3
2015-02-21 00:03:15 avg_month T: 0.6 H: 43 W: 36.4 R: 4.5
2015-02-21 20:10:36 checksum 2
2015-02-21 20:10:36 cum_day 2015-02-21 00:03:15 T: 286772 H: 4967726 W: 125876.7 R: 4.8
2015-02-21 00:03:15 cum_month 7 T: 4.3 H: 303 W: 255.1 R: 4.5
2015-02-21 20:10:36 dew -1.30627891427601
2015-02-21 20:10:36 humidity 77
2015-02-21 20:10:36 israining no
2015-02-21 20:10:36 rain 5.1
2015-02-21 20:10:36 rain_raw 20
2015-02-21 20:10:36 rain_raw_adj 20
2015-02-21 20:10:36 state T: 2.3 H: 77 W: 0.0 R: 5.1 IR: no Wi: 0
2015-02-21 20:10:36 temperature 2.3
2015-02-21 20:10:36 tsecs 1424545836.75397
2015-02-21 20:10:36 type_raw 7
2015-02-21 20:10:36 unknown3 1
2015-02-21 20:10:36 wind 0.0
2015-02-21 20:10:36 windIndex 0
Attributes:
IODev CUL1
room Garten,Cfg_868
userReadings dew:temperature { my $dp; my $temperature = ReadingsVal($name,"temperature",0); my $humidity = ReadingsVal($name,"humidity",0); my $A = 17.2694; my $B = ($temperature > 0) ? 237.3 : 265.5; my $es = 610.78 * exp( $A * $temperature / ($temperature + $B) ); my $e = $humidity/ 100 * $es; if ($e == 0) { Log 1, "Error: dewpoint() e==0: temp=$temperature, hum=$humidity"; return 0; } my $e1 = $e / 610.78; my $f = log( $e1 ) / $A; my $f1 = 1 - $f; if ($f1 == 0) { Log 1, "Error: dewpoint() (1-f)==0: temp=$temperature, hum=$humidity"; return 0; } $dp = $B * $f / $f1 ;}
Eigentlich wollte ich eine simple, kleine readingsGroup anlegen, die mir die Werte des KS300 nett formatiert anzeigt. Und ich dachte, das wäre einfach, nachdem ich eine komplexere Group mit meinen diversen Heizungsthermostaten hier schon am Laufen habe... Nun ja.
Bitte: Was mache ich falsch?
<Wert1>,device:rd
geht glaube ich so nicht. Das device muss immer am Anfang der Zeile stehen
device:<Wert1>,rd
Elektrolurch
In der Tat, das klappt - Danke!
Hallo zusammen,
ich habe die letzten Tage versuch das Beispiel von Andre im Wiki zur Heizungssteuerung http://www.fhemwiki.de/wiki/ReadingsGroup#Heizungsteuerung_f.C3.BCr_HM_Wand-_und_Heizk.C3.B6rperthermostate (http://www.fhemwiki.de/wiki/ReadingsGroup#Heizungsteuerung_f.C3.BCr_HM_Wand-_und_Heizk.C3.B6rperthermostate) um die möglichen Zustände on/off der Thermostate zu erweitern.
Meine ersten Problemchen mit der Erweiterung des Beispiels und der Tatsache, dass "off" kein numerischer Wert ist, habe ich erfolgreich durch das Ersetzen des Werts durch "0" überwunden, wie man hier nachlesen kann http://forum.fhem.de/index.php/topic,34082.0.html (http://forum.fhem.de/index.php/topic,34082.0.html).
Damit klappt die farbabhängige Anzeige der Ist-Temperatur weiterhin und mittlerweile auch ohne Fehler im Log. Leider stellt auch die folgende Aufgabe mit valueSuffix wohl kein bekanntes "Anfängerproblem" dar, weshalb ich mich hier nochmals direkt nachhake.
Idee ist es, sofern der Wert "off" als Soll-Temp gesetzt wird, dass innerhalb von valueSuffix der Zusatz "°C" hier unterdrückt wird - siehe Bild im Anhang.
Für sich alleine funktioniert dies bereits mittels
attr heatingInfo valueSuffix {if($READING eq "desired-temp"){my $d=ReadingsVal($DEVICE,'desired-temp',0);;if($d ne 'off'){" °C"}else{""}}}
Sobald ich versuche die übrigen Werte der Spalten in wieder hinzufügen, taucht jedoch an JEDEM Reading die Variable des zuletzt eingetragenen Werts auf.
attr heatingInfo valueSuffix {if($READING eq "desired-temp"){my $d=ReadingsVal($DEVICE,'desired-temp',0);;if($d ne 'off'){" °C"}else{""}};;"measured-temp"=>" °C","ValvePosition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)}
Leider komme ich mit meinem Latein und try n error nicht mehr weiter, da ich hier wohl verschiedene Sachen zusammen werfe und, nun ja, noch nicht ganz durchschaue.
In jedem Fall bin ich für alle Tipps oder Denkanstöße dankbar. Vermutlich ist der geschilderte Fall auch für ein Beispiel im Wiki interessant, da dies sicher nicht der einzige Anwendungsfall ist :)
Viele Grüße Jorche
Hallo,
ich bin Neuling, und habe nach reichlichem Studium der Dokus und vor allem der Beiträge hier nun meine Heizkörper, Wandthermostate und Fensterkontakte am Laufen. Alles von MAX und ohne MAXCube.
Bei einem Problem jedoch trete ich nun seit Tagen auf der Stelle: readingsgroup und commands:
Ich möchte mehrere Dropdown menus installieren. Für z. B. das Icon Tc funktioniert folgendes:
attr heatingInfo commands { "heatingInfo.Tc" => "comfortTemperature:18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0" }
Wie aber kann ich ein weiteres command für ein weiteres Icon, z. B. attr heatingInfo commands { "heatingInfo.Te" => "ecoTemperature:18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0" }
da nun dranhängen.
Wenn ich das auf einer Extrazeile formuliere:
attr heatingInfo commands { "heatingInfo.Tc" => "comfortTemperature:18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0" }
attr heatingInfo commands { "heatingInfo.Te" => "ecoTemperature:18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0" }
dann überschreibt die zweite Zeile offensichlich die erste Zeile und ich bekomme nur noch ein dropdown menu für ecoTemperature aber keines mehr für comfortTemperature.
Offensichtlich müssen beide dropdown menus in einem attr heatingInfo commands .... definiert werden.
Wie muss das syntaktisch aussehen? Ich habe nirgends ein Beispiel dafür gefunden.
Danke
bernd
@Jorche: in deiner version sind diverse fehler beim verschachteln der anführungszeichen und klammern. wenn du den aktuellen wert haben möchtest kannst du $VALUE verwenden und musst nicht über ReadingsVal gehen. wenn du etwas vor den wert schreiben möchtest solltest du valuePrefix verwenden.
etwa so:attr heatingInfo valueSuffix { 'desired-temp' => '{ return "" if( $VALUE eq "off"); return "°C";}', 'measured-temp'=>' °C', 'ValvePosition'=>'%)'}
attr heatingInfo valuePrefix { 'ValvePosition' => '(' }
der code ist zur eingabe ins text feld hinter attr.
@berndgel:attr heatingInfo commands { "heatingInfo.Tc" => "comfortTemperature:18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0", "heatingInfo.Te" => "ecoTemperature:18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0" }
@ Jorge,
ich hätte schwören können, dass ich genau Deinen Vorschlag schon mal ausprobiert habe. Offensichtlich habe ich es doch nicht so genau gemacht, wie Du schreibst. Nun geht es jedenfalls. In der Zwischenzeit hatte ich das Gleiche mit einfachen Anführungszeichen an Stelle der doppelten Anführungszeichen versucht, das geht auch. Wieso, weiß ich nicht.
Auf jeden Fall vielen Dank.
LG
bernd
Hallo Andre,
hast Du noch Mal geschaut wegen Beitrag 1202?
Ein reading aus der readingsGroup liefert den Wert von state zurück.....
Elektrolurch
Hallo Andre,
hach, ein Traum :) Vielen Dank für Deine Antwort!
Da habe ich für die Einheit °C etwas zu kompliziert gedacht. Die ganze Codezeile für das ValueSuffix lautet dann
attr heatingInfo valueSuffix { 'desired-temp' => '{ return "" if( $VALUE eq "off"); return "°C";}', 'measured-temp'=>' °C', 'ValvePosition'=>" (".ReadingsVal($DEVICE,$READING,0)." %)","batteryLevel"=>"(".ReadingsVal($DEVICE,$READING,0)." V)"}
Dann klappt es auch mit den Readings der anderen Werte und sieht schon ganz gut aus. Dann ran an den Speck und die Zeitabhängie Steuerung in den Griff kriegen ;)
Viele Dank nochmal und schönes WE!
Jörg
Hallo,
ich kämpfe gerade mit ValueFormat und würde gerne das Reading eines DOIF-Timers formatieren.
Im Moment wird das so angezeigt:
Start 03.03.2015 16:30:00 Uhr
Ende 02.03.2015 22:00:00 Uhr
Wie kann ich hier nur
1. das Datum anzeigen lassen
2. die Zeit anzeigen lassen
Christian
@Elektrolurch: ich habe es nicht vergessen bin aber noch nicht dazu gekommen es in ruhe anschauen. ich habe es kurz probiert und konnte es nicht reproduzieren. wenn du mir da ganze mit ein kleinen test konfiguration und ein ein paar dummys nachstellen kannst wird es einfacher.
@Spartacus: z.b. so für das datum: (split(' ',$VALUE))[1]
und das gleiche mit 2 statt 1 für die zeit.
gruss
andre
Hi andre,
vielen Dank!
Muss aber "0" und "1" sein!
{(split(' ',$VALUE))[0]}
Christian.
wenn die strings wirklich so aussehen:Start 03.03.2015 16:30:00 Uhr
Ende 02.03.2015 22:00:00 Uhr
ist 0 Start bzw Ende, 1 ist das datum, 2 ist die zeit, 3 ist Uhr...
Zitat von: Spartacus am 02 März 2015, 21:16:24
Hallo,
ich kämpfe gerade mit ValueFormat und würde gerne das Reading eines DOIF-Timers formatieren.
Oh, endlich mal jemand der die Timer von einem DOIF anzeigen lassen möchte...! :D
Ich habe schon einige Versuche hinter mir DOIF Timer zu formatieren, aber habe dann dieses erst mal gelassen, weil ich keine Erfolge hatte...
Schön wäre es wenn du mal ein paar Screenshots erstellst wie dies aussieht bei dir...
Ich habe mich auch da auch schon probiert...!
Wobei mit der oberen Anzeige bin ich zufrieden, es könnten noch die Zahlen für die Wochentage ausgeblendet werden
Das darunter, wenn ich ganz gerne mal etwas nebeneinander darstellen möchte das klappt gar nicht. Habe da erst mal aufgehört aus Zeitmangel.
Hallo,
ich habe folgendes Problem mit einer ReadingsGroup: Ich habe mir eine ReadingsGroup für die Bedienung meines Radios gebaut. Diese nutzt einen Slider zum Einstellen der Lautstärke. Das funktioniert alles soweit. Nun wollte ich jedoch in meinem Floorplan etwas Platz schaffen. Hierfür habe ich eine zweite, kleinere ReadingsGroup mit den wichtigsten Funktionen erstellt und diese in dem gleichen Raum in die gleiche Gruppe gesetzt. Mittels Kommando blenden sich die beiden ReadingsGroups nun gegenseitig ein (und sich selbst damit aus). Die ReadingsGroup mit dem Slider habe ich dafür auf "hidden" gesetzt.
Nun zu meinem Problem: Wenn ich die ReadingsGroup mit dem Slider das erste Mal nach dem Wechsel zum Floorplan einblende, zeigt der Slider den aktuellen Wert der Laustärke, steht jedoch ganz vorn. Wenn ich ihn nun versuche zu ziehen, steht zunächst NaN drin und dann wechselt die Lautstärke auf 100 (GANZ schön laut). Nun kann ich ihn normal ziehen und beim er funktioniert bis zum erneuten Wechsel des Floorplans...
Hat da jemand eine Idee?
Hier meine ReadingsGroups:
define OG.ez.RA.Player.RG.Control readingsGroup OG.ez.RA.Player:!Close,<> OG.ez.RA.Player:playStatus,volume OG.ez.RA.Player:<Favoriten>,<{LMSFavorites($DEVICE,"Esszimmer")}@favorites> OG.ez.RA.Player:<Künstler>,currentArtist OG.ez.RA.Player:<Titel>,currentTitle
attr OG.ez.RA.Player.RG.Control commands {'muteState' => 'set $DEVICE mute', 'playStatus.playing' => 'set $DEVICE clearPlaylist', 'playStatus.stopped' => 'set $DEVICE play', 'volume' => 'volume:slider,0,1,100', 'Close' => 'set OG.ez.RA.Player.RG.Symbol visibility show'}
attr OG.ez.RA.Player.RG.Control fp_Esszimmer 419,591,0,,
attr OG.ez.RA.Player.RG.Control group Radio
attr OG.ez.RA.Player.RG.Control nameStyle style="font-weight:bold;; color:yellow;;"
attr OG.ez.RA.Player.RG.Control noheading 1
attr OG.ez.RA.Player.RG.Control nonames 1
attr OG.ez.RA.Player.RG.Control notime 1
attr OG.ez.RA.Player.RG.Control room Esszimmer
attr OG.ez.RA.Player.RG.Control style {readingsGroupFloorplanStyle()}
attr OG.ez.RA.Player.RG.Control valueFormat { return (join " ", map {ucfirst} split / /, lc $VALUE) if (($READING eq 'currentArtist') || ($READING eq 'currentTitle'))}
attr OG.ez.RA.Player.RG.Control valueIcon {'muteState.muted' => 'Volume_mute', 'muteState.unmuted' => 'Volume_on', 'playStatus.playing' => 'audio_stop@lightgray', 'playStatus.stopped' => 'audio_play@lightgray', 'Close' => 'control_x@lightgray' }
attr OG.ez.RA.Player.RG.Control valueStyle style="text-align:center;;"
attr OG.ez.RA.Player.RG.Control visibility hidden
define OG.ez.RA.Player.RG.Symbol readingsGroup OG.ez.RA.Player:!VolumeDown,!Details,!VolumeUp
attr OG.ez.RA.Player.RG.Symbol commands { 'VolumeDown' => 'set %DEVICE volumeDown', 'VolumeUp' => 'set %DEVICE volumeUp', 'Details' => 'set OG.ez.RA.Player.RG.Control visibility show' }
attr OG.ez.RA.Player.RG.Symbol fp_Esszimmer 517,670,0,,
attr OG.ez.RA.Player.RG.Symbol group Radio
attr OG.ez.RA.Player.RG.Symbol noheading 1
attr OG.ez.RA.Player.RG.Symbol nonames 1
attr OG.ez.RA.Player.RG.Symbol notime 1
attr OG.ez.RA.Player.RG.Symbol room Esszimmer
attr OG.ez.RA.Player.RG.Symbol style {readingsGroupFloorplanStyle()}
attr OG.ez.RA.Player.RG.Symbol valueIcon { 'VolumeUp' => 'rc_VOLPLUS@lightgray', 'VolumeDown' => 'rc_VOLMINUS@lightgray', 'Details' => 'audio_sound@lightgray' }
attr OG.ez.RA.Player.RG.Symbol visibility hideable
Ronny
Zitat von: justme1968 am 02 März 2015, 21:50:00
wenn die strings wirklich so aussehen:Start 03.03.2015 16:30:00 Uhr
Ende 02.03.2015 22:00:00 Uhr
ist 0 Start bzw Ende, 1 ist das datum, 2 ist die zeit, 3 ist Uhr...
Hallo andre,
Du hast natürlich recht! Ich habe Dir verschwiegen, das ich den String aus der readingsGroup kopiert habe und "Start" und "Ende" schon davor und "Uhr" dahinter geschrieben hatte. Der String besteht lediglich aus Datum und Uhrzeit.
Sorry für die Verwirrung und vielen Dank für Deine Hilfe!
Christian
Hi,
jetzt muss ich doch noch mal blöd fragen!
Ich habe zwei Readings:
timer_1_c1 und timer_2_c1
Warum funktioniert hier dieser Ausdruck nicht im ValueFormat-Attribut nicht??
{....., timer_.*=>(split(' ',$VALUE))[1],....}
Wenn ich das Reading gezielt angebe funktioniert der split-Befehl
Christian
du kannst im key (links vom =>) nicht mit einer regex arbeiten und im teil rechts vom => fehlen die anführungszeichen um alles.
im log solltest du zumindest hinweise sehen das hier etwas nicht stimmt.
grus
andre
Hi andre,
ok. dann muss ich die Readings halt einzeln aufführen, kein Problem!
Das mit den Anführungszeichen verstehe ich schon wieder nicht!
{ '60Minuten' => '60 Minuten', timer_1_c1=>(split(' ',$VALUE))[1]."Uhr"}
funktioniert!
Allerdings steht im Logfile eine Warnung!
2015.03.03 21:58:04 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 5086) line 1.
Ist also nicht sauber!
Wenn ich rechts vom => die Anführungszeichen setze, gibt es einen Syntaxfehler
{ '60Minuten' => '60 Minuten', timer_1_c1=>'(split(' ',$VALUE))[1]."Uhr"'}
wie setzte ich die Dinger denn dann hier korrekt?
Christian
du musst die Anführungszeichen richtig verschachteln. eine sorte ganz aussen. dazwischen die andere sorte. wenn du noch eine verschaltelungs ebene brauchst müsstest du diese dann mit \ maskieren:
{ '60Minuten' => '60 Minuten', 'timer_1_c1'=>'{(split(" ",$VALUE))[1]."Uhr"}'}
das 'Uhr' kannst du auch per valueSuffix anhängen.
gruss
andre
Hallo andre,
danke, jetzt sind die Warnungen auch weg!
Vielleicht kappier´ich das auch irgendwann mal!
Christian
das ist doch ganz einfach :)
das gleiche zeichen mit dem ein string anfängt beendet ihn auch wieder. d.h. er darf nur am anfang und am ende auftauchen sonst ist dein string vorzeitig zu ende und es kommt müll raus.
es gibt in perl zwei zeichen mit denen ein string anfangen kann. die kann man also eine ebene tief verschachteln.
in strings die mit ' anfangen werden variablen nicht ersetzt, in strings die mit " anfangen schon. aber erst in dem augenblick in dem der string ausgewertet wird. d.h. readingsGroup fall das was rechts von => steht mit ' beginnen lassen weil die auswertung erst zweiten schritt passiert.
gruss
andre
Hallo,
ja, es ist nicht leicht mit einem Programmier-DAU!
Ich probiere gerade Dropdown und Slieder in der rg aus.
commands:
{'Test1' => 'on-for-timer:0,10,20,30,40', 'Test2' => "on-for-timer:slider,0,5,30" }
Über das Dropdown und den Slider kann ich meinen Aktor schalten.
DropDown und Slider bleiben auf dem letzten eingestellten Wert stehen. Wenn ich den Wert auf dem Slider erneut anklicke, wird der Befehl on-for-timer erneut ausgeführt. Bei dem Dropdown habe ich aber keine Chance, hier muss ich erst wieder auf den Wert "0" gehen, oder einen Refresh ausführen.
Gibt es eine Möglichkeit,
a) immer den zuletzt eingestellten Wert (auch nach Refresh) zu erhalten um durch Klick auf den Wert den Befehl erneut auszuführen?
b) ohne Refresh direkt auf den Default zurückzuspringen.
Die erste Variante wäre für mich die Schönere, da man immer direkt sehen kann, welcher Wert zuletzt eingestellt wurde. Welche Ausfürung (Test1, Test2) ist hierfür die schönere Lösung?
Christian
Zitat von: Spartacus am 04 März 2015, 12:29:51
Hallo,
ja, es ist nicht leicht mit einem Programmier-DAU!
das liegt aber nicht an dir, dass ist schon ne Wissenschaft für sich... :-\ ist es dann aber vollbracht sieht es eben gut aus.. ;)
Ich habe unzählige Versuche hinter mir und habe es bisher auch nicht geschafft und mir geht erst einmal nur um die "reine" Anzeige einer Readingsgroup für die Zeiten (timer_X_cX) aus einem DOIF (siehe mein Screenshot oben)
Ich hatte auch versucht an einem Beispiel aus dem Wiki etwas zu erreichen, aber auch nicht..
Wenn ich die Zahlen für die Wochentage ausblenden möchte was muss ich dann eingeben bei
Also Anzeige nur Datum und Uhrzeit
(split(' ',$VALUE))[1]
Bei mir sieht das mapping so aus:
{ 'timer_1_c1' => 'EIN - WochenTag', 'timer_2_c1' => 'EIN - WochenEnde', 'timer_3_c2' => 'AUS - Jeden Tag', 'timer_4_c3' => 'EIN - Nachtschicht', 'timer_5_c4' => 'AUS - Nachtschicht' }
Hallo moonsorrox,
bin mir nicht sicher, ob ich Dich richtig verstanden habe!
Aber mit dem Ausdruck von andre klappt das bei mir jetzt ganz gut.
Ich habe zwei Readings in meinem DOIF (Einschaltzeit und Ausschaltzeit)
Im valueFormat steht dann dieses Mapping:
{ 'timer_1_c1'=>'{(split(" ",$VALUE))[1]."Uhr"}','timer_2_c1'=>'{(split(" ",$VALUE))[1]."Uhr"}'}
Damit wird die Uhrzeit der beiden Timer angezeigt. Wenn Du das Datum brauchst, dann musst Du die "1" durch die "0" ersetzten! Du musst aber jeden Timer separat aufführen. Ein "timer_.*" geht vor dem "=>" nicht!. Hilft Dir das?
Christian
ja das hatte ich schon so, aber schau mal den screenshot...
so fehlt ja das Datum, dafür müsste ich jetzt eine weitere Spalte haben und es da eintragen können, dass weiß ich eben nicht wie das geht.. und die Tage sind immer noch hinten dran bei den Timern..!
Hallo Andre,
hast du dazu eine Idee?
Zitat von: RoBra81 am 03 März 2015, 08:58:59
Hallo,
ich habe folgendes Problem mit einer ReadingsGroup: Ich habe mir eine ReadingsGroup für die Bedienung meines Radios gebaut. Diese nutzt einen Slider zum Einstellen der Lautstärke. Das funktioniert alles soweit. Nun wollte ich jedoch in meinem Floorplan etwas Platz schaffen. Hierfür habe ich eine zweite, kleinere ReadingsGroup mit den wichtigsten Funktionen erstellt und diese in dem gleichen Raum in die gleiche Gruppe gesetzt. Mittels Kommando blenden sich die beiden ReadingsGroups nun gegenseitig ein (und sich selbst damit aus). Die ReadingsGroup mit dem Slider habe ich dafür auf "hidden" gesetzt.
Nun zu meinem Problem: Wenn ich die ReadingsGroup mit dem Slider das erste Mal nach dem Wechsel zum Floorplan einblende, zeigt der Slider den aktuellen Wert der Laustärke, steht jedoch ganz vorn. Wenn ich ihn nun versuche zu ziehen, steht zunächst NaN drin und dann wechselt die Lautstärke auf 100 (GANZ schön laut). Nun kann ich ihn normal ziehen und beim er funktioniert bis zum erneuten Wechsel des Floorplans...
Hat da jemand eine Idee?
Hier meine ReadingsGroups:
define OG.ez.RA.Player.RG.Control readingsGroup OG.ez.RA.Player:!Close,<> OG.ez.RA.Player:playStatus,volume OG.ez.RA.Player:<Favoriten>,<{LMSFavorites($DEVICE,"Esszimmer")}@favorites> OG.ez.RA.Player:<Künstler>,currentArtist OG.ez.RA.Player:<Titel>,currentTitle
attr OG.ez.RA.Player.RG.Control commands {'muteState' => 'set $DEVICE mute', 'playStatus.playing' => 'set $DEVICE clearPlaylist', 'playStatus.stopped' => 'set $DEVICE play', 'volume' => 'volume:slider,0,1,100', 'Close' => 'set OG.ez.RA.Player.RG.Symbol visibility show'}
attr OG.ez.RA.Player.RG.Control fp_Esszimmer 419,591,0,,
attr OG.ez.RA.Player.RG.Control group Radio
attr OG.ez.RA.Player.RG.Control nameStyle style="font-weight:bold;; color:yellow;;"
attr OG.ez.RA.Player.RG.Control noheading 1
attr OG.ez.RA.Player.RG.Control nonames 1
attr OG.ez.RA.Player.RG.Control notime 1
attr OG.ez.RA.Player.RG.Control room Esszimmer
attr OG.ez.RA.Player.RG.Control style {readingsGroupFloorplanStyle()}
attr OG.ez.RA.Player.RG.Control valueFormat { return (join " ", map {ucfirst} split / /, lc $VALUE) if (($READING eq 'currentArtist') || ($READING eq 'currentTitle'))}
attr OG.ez.RA.Player.RG.Control valueIcon {'muteState.muted' => 'Volume_mute', 'muteState.unmuted' => 'Volume_on', 'playStatus.playing' => 'audio_stop@lightgray', 'playStatus.stopped' => 'audio_play@lightgray', 'Close' => 'control_x@lightgray' }
attr OG.ez.RA.Player.RG.Control valueStyle style="text-align:center;;"
attr OG.ez.RA.Player.RG.Control visibility hidden
define OG.ez.RA.Player.RG.Symbol readingsGroup OG.ez.RA.Player:!VolumeDown,!Details,!VolumeUp
attr OG.ez.RA.Player.RG.Symbol commands { 'VolumeDown' => 'set %DEVICE volumeDown', 'VolumeUp' => 'set %DEVICE volumeUp', 'Details' => 'set OG.ez.RA.Player.RG.Control visibility show' }
attr OG.ez.RA.Player.RG.Symbol fp_Esszimmer 517,670,0,,
attr OG.ez.RA.Player.RG.Symbol group Radio
attr OG.ez.RA.Player.RG.Symbol noheading 1
attr OG.ez.RA.Player.RG.Symbol nonames 1
attr OG.ez.RA.Player.RG.Symbol notime 1
attr OG.ez.RA.Player.RG.Symbol room Esszimmer
attr OG.ez.RA.Player.RG.Symbol style {readingsGroupFloorplanStyle()}
attr OG.ez.RA.Player.RG.Symbol valueIcon { 'VolumeUp' => 'rc_VOLPLUS@lightgray', 'VolumeDown' => 'rc_VOLMINUS@lightgray', 'Details' => 'audio_sound@lightgray' }
attr OG.ez.RA.Player.RG.Symbol visibility hideable
Ronny
Zitat von: moonsorrox am 04 März 2015, 14:44:04
ja das hatte ich schon so, aber schau mal den screenshot...
so fehlt ja das Datum, dafür müsste ich jetzt eine weitere Spalte haben und es da eintragen können, dass weiß ich eben nicht wie das geht.. und die Tage sind immer noch hinten dran bei den Timern..!
Hi,
das verstehe ich nicht,
wenn Du das Datum sowieso benötigst, wieso splittest Du dann den String? Dann lass ihn doch komplett mit Datum anzeigen.
Ich bin zwar nur der DAU, aber Du kannst die letzten unnötigen Zeichen einfach abschneiden.
{'{substr ($VALUE,0,19)}'}
heisst soviel wie: gibt ab Stelle "0" "19" Zeichen des Strings aus. Hier sollten dann der Rest abgeschnitten werden.
Das geht bestimmt noch viel eleganter...
Christian
Zitat von: Spartacus am 04 März 2015, 15:15:03
Hi,
das verstehe ich nicht,
wenn Du das Datum sowieso benötigst, wieso splittest Du dann den String? Dann lass ihn doch komplett mit Datum anzeigen.
das hatte ich auch schon... ;)
aber, weil ich es in zwei Spalten haben möchte (oder mehrere) und es geht jetzt bei diesem Beispiel, aber ich habe weitere (viele) DOIFs da sind noch mehr timer drin wo ich es dann in z.B. 4 Spalten haben möchte.
Da ich es noch nicht mal mit zwei hinbekomme, wird das mit 4 recht schwierig ;)
alles klar
das DEF hat dann die Spalten so angeordnet:
<%time_clock@LightSeaGreen>,<Datum>,<Uhrzeit>,<Wochentag>,<Wochenende> di_TerrasseLicht:timer.*
oder
<%fts_shutter_automatic@LightSeaGreen>,<WochenTag>,<WochenEnde>,<Zeit - Nachtschicht>,<Zeit - Beschattung> TYPE=DOIF:timer.*
usw. da gibt es noch einige DOIFs timer
schau mal den screenshot, das möchte ich eigentlich unterteilt haben
Hi, gibt es eine Möglichkeit auszulesen, wie viele Einträge in einer Readingsgroup angezeigt werden?
Hintergrund: Ich zeigte eine rg mit variablen Inhalten an, gesteuert über eine sub, die, sofern Readings ok sind, ein undef für ValueFormat zurückgibt. Damit wird in der rg nur noch dann was angezeigt, wenn etwas nicht ok/zu tun/... ist. Sehr praktisch! :)
Aus Gründen der Schönheit soll in dieser rg nun "Alles ok!" angezeigt werden, wenn nichts los ist. Gute Nachrichten kommen immer gut an... Bisher habe ich das über eine if-Anfrage in der sub hinbekommen, die das ValueFormat steuert:
sub rg_Meldungen_valueFormat($$$) {
my ($DEVICE,$READING,$VALUE) = @_;
if ($DEVICE ne "dum_leere_Liste") {
if (($VALUE eq "closed") || ($VALUE eq "dry") || ($VALUE eq "nein")) {
return undef;
} else {
return $VALUE;
}
} else {
if ((ReadingsVal("struc_FstrGross", "state", "error") eq "closed") && (ReadingsVal("struc_FstrKlein", "state", "error") eq "closed") && (ReadingsVal("Fstr_Vorratskeller", "state", "error") eq "closed") && (ReadingsVal("Wasser_Heizkeller", "state", "dry") eq "dry") && (ReadingsVal("Wasser_Waschmaschine", "state", "dry") eq "dry")) {
return " ";
} else {
return undef;
}
}
}
Nun möchte ich über die rg ebenfalls anzeigen lassen, wenn irgendwo in einem Device eine Batterie gewechselt werden muss. Das lässt sich einfach hinbekommen, indem .*:(B|b)attery der rg hinzugefügt wird, und positive Meldungen kann ich filtern, indem ich oben die erste if-Abfrage um "|| ($VALUE eq "ok)" ergänze. Aber mit der zweiten if-Abfrage (die den dummy dum_liste_leer mit der positiven "Alles ok!" Meldung nur anzeigt, wenn sonst nichts angezeigt wird) habe ich meine Probleme: Da ich keine Ahnung habe, wie ich den Battery-Status für alle Geräte in die IF-Abfrage einbauen soll, ohne alle Geräte einzeln zu listen (und das sind VIELE), wäre es viel einfacher, wenn ich abfragen könnte, wie viele Einträge aktuell überhaupt in der rg angezeigt werden.
Eine solche Abfrage wäre auch nett, um verhindern zu können, dass eine rg bei der Anzeige auf einem Tablet etc. in einem Floorplan aus dem vorgegebenen Design läuft, indem man ab einer bestimmten Anzahl Einträge einfach immer "undef" zurückgibt...
Geht das irgendwie?
Sorry für die längliche Frage. "I didn't have the time to make it shorter." ;)
Danke, Christian
@moonsorrox:das mit dem aufteilen auf 2 oder 4 spalten sollte über die <{...}@reading> variante funktionieren.
@RoBra81: schau dir mal die collapsed/collapsible option an. da mit kannst du einen teil einer readingsGroup auf und zu klappen und brauchst keine zwei readingsGroups mehr oder du verwendest devStateIcon (bzw. den neuen style 8) um beim klick auf das device icon direkt ein popup mit dem slider zu bekommen.
zum nicht/falsch initialisierten slider: passiert das auch wenn du den slider in den webCmd hast?
@Motivierte linke Hände: in $ROW hast du die nummer der aktuellen zeile. wenn du dein alles ok ganz ans ende stellst und davor alle zeilen leer sind ist $ROW == 1 (oder 2 wenn du überschriften hast). wenn nicht wurde vorher eine zeile angezeigt und du kannst das alles ok weg lassen.
gruss
andre
Zitat von: justme1968 am 06 März 2015, 11:54:22
@RoBra81: schau dir mal die collapsed/collapsible option an. da mit kannst du einen teil einer readingGroup auf und zu klappen und brauchst keine zwei readingGroups mehr oder du verwendest devStateIcon (bzw. den neuen style 8) um beim klick auf das device icon direkt ein popup mit dem slider zu bekommen.
Das mit den zwei ReadingsGroups passt schon. Zum einen zeigen diese verschiedene Inhalte an teils verschiedenen Positionen im Floorplan an. Zum anderen hatte ich es auch schon mit collapsed/collapsible probiert, da gefällt mir aber das '+' nicht. In meinem Fall habe ich es z.B. so, dass im Floorplan die Ist-Temperatur und die Luftfeuchte angezeigt werden und beim Klick auf die Temperatur die Readingsgroup mit der Bedienung aufgeht (siehe Screenshots) - ein '+' fände ich an der Stelle ziemlich hässlich (nicht böse gemeint...).
Zitat von: justme1968 am 06 März 2015, 11:54:22
zum nicht/falsch initialisierten slider: passiert das auch wenn du den slider in den webCmd hast?
Wie meinst du das? Der Slider in ein und der selben ReadingsGroup funktioniert (wird korrekt initialisiert), wenn die ReadingsGroup auf 'hideable' steht, nicht jedoch, wenn die ReadingsGroup auf 'hidden' steht und nach dem Öffnen der Floorplans erst mit 'show' eingeblendet wird...
Ronny
Hallo Andre,
hier das Beispiel zu Beitrag 1202 (readings der readingsGroup):
define Alle_Fenster_rg readingsGroup Alle_Fenster_rg:<Ansicht>,Ansicht,<Fenster> [A-Z][a-z]_Fenster:state,<{valueListe('Alle_Fenster_rg',$DEVICE,'seit ;'.KonvertiereZeit(ReadingsTimestamp($DEVICE,'Previous',0),3))}>
attr Alle_Fenster_rg alias Alle Fenster
attr Alle_Fenster_rg commands {'Alle_Fenster_rg.Ansicht' => 'Ansicht:alle,offene,geschlossene'}
attr Alle_Fenster_rg mapping <a href='fhem?room=%ALIAS'>%ALIAS</a>
attr Alle_Fenster_rg noheading 0
attr Alle_Fenster_rg nolinks 1
attr Alle_Fenster_rg notime 1
attr Alle_Fenster_rg room Haus
attr Alle_Fenster_rg valueFormat {valueListe('Alle_Fenster_rg',$DEVICE,$VALUE);;}
attr Alle_Fenster_rg valueIcon %devStateIcon
attr Alle_Fenster_rg valueSuffix {'Alle_Fenster_rg.Ansicht' => ' Fenster'}
"Ansicht" ist der Anzeigenmodus -> alle,offene,geschlossene und ist als reading bei der rg hinterlegt, wird aber als "state initialized" angezeigt.
die sub valueListe sieht so aus und dient nur dazu, undef oder den value zurückzuliefern, je nach dem, was in "Ansicht" ausgewählt wurde.
sub valueListe($$$)
{
my ($liste,$d,$v) = @_;
# readingsGroup hat rds für die Steuerung der Anzeige, durchlassen
return $v if($d eq $liste);
my $mode = ReadingsVal($liste,'Ansicht','alle');
return $v if($mode eq 'alle');
my $val = Value($d);
return $v if(($mode eq 'eingeschaltete') && ($val =~m/^ein/));
return $v if(($mode eq 'ausgeschaltete') && ($val =~m/^aus/));
return $v if(($mode eq 'offene') && ($val =~m/^offen/));
return $v if(($mode eq 'geschlossene') && ($val =~m/^geschlossen/));
return undef;
} # end sub valueListe
###################################
Die sub verwende ich in verschiedenen rgs, daher die mehreren Abfragen.
Gruß
Elektrolurch
Hallo Zusammen,
ich kämpfe schon geraume Zeit mit folgendem Problem:
Bei meinen batteriebetriebenen Geräten habe ich 2 Userreadings definiert:
- Batteriewechsel - Tage seit letztem Batteriewechsel (1)
- Batteriedauer_alt - vorherige Laufzeit der Batterie (2).
In der RG will ich jetzt mit einem Klick nach einem Batteriewechsel den Wert von 1 in 2 übertragen und 1 dann auf Null setzten. Das Nullsetzten funzt, das kopieren nicht. Es kommen keine Fehlermeldungen und der Befehl ist "klickbar".
Das command sieht so aus (relevant ab erstem 'Batteriestati.Batteriewechsel'...):
{"battery.low"=>"set %DEVICE replaceBatteryForSec 60",'Batteriestati.Batteriewechsel'=>'setreading %DEVICE Batteriedauer_alt $Value(%DEVICE,"Batteriewechsel","0")','Batteriestati.Batteriewechsel'=>'setreading %DEVICE Batteriewechsel 0'}
Ich habe schon mit allen (?) Varianten probiert und komme nicht weiter.
Habt ihr einen Vorschlag, wie es funzt?
Danke, Uwe
$Value(%DEVICE,"Batteriewechsel","0")
probiere dafür
ReadingsVal(%DEVICE,"Batteriewechsel","0")
eventuell muss der ganze ausdruck dann aber in geschweifte klammern. perl aufruf.
ReadingsVal(%DEVICE,"Batteriewechsel","0")
funzt leider nicht und mit geschweiften Klammern drum auch nicht.
'Batteriestati.Batteriewechsel'=>"setreading %DEVICE Batteriedauer_alt ReadingsVal(%DEVICE,'Batteriewechsel',0)"
da müssen auf alle fälle die doppelten anführungszeichen aussen rum, damit die variablen auch erkannt werden. innen die einfachen. mal probieren.
da gehen gerade ein paar dinge durcheinander...
- das mit dem " statt ' trifft auf perl ebene zu.
- %DEVICE ist keine perl variable sondern wird per string suchen ersetzen ersetzet. die lässt sich in einem fhem kommando verwenden,
hier spielt der unterschied zwischen " und ' keine rolle
- setreading ist fhem ebene, ReadingVal ist perl ebene. die lassen sich nicht direkt auf diese art mischen. du brauchst etwas in der art:
...,'Batteriestati.Batteriewechsel'=>'{fhem("setreading $DEVICE Batteriedauer_alt ". ReadingsVal($DEVICE,"Batteriewechsel",0))}',...
- hier werden entgegen der aussage oben aber aussen die ' und innen die " verwendet. das hat den grund das der das attribut in mehreren stufen ausgewertet wird. im ersten schritt nur um aus dem kompletten string einen perl hash zu machen. in diesem schritt sollen noch keine variablen ersetzt werden. in diesem hash wird dann zur laufzeit der zum jeweiligen reading gehörende wert gesucht. dieser string wird jetzt durch ein weiteres perl eval geschickt. jetzt erst werden die variablen passend zum aktuellen device und reading ersetzt. auf dieser ebene müssen also die " auftauchen.
gruss
andre
Auf sowas muss man erstmal kommen...
Aber es funzt noch nicht - könnte es sein, dass "irgendwo" ein doppeltes Anführungszeichen an der falschen Stelle ist?
Zitat- hier werden entgegen der aussage oben aber aussen die ' und innen die " verwendet. das hat den grund das der das attribut in mehreren stufen ausgewertet wird. im ersten schritt nur um aus dem kompletten string einen perl hash zu machen. in diesem schritt sollen noch keine variablen ersetzt werden. in diesem hash wird dann zur laufzeit der zum jeweiligen reading gehörende wert gesucht. dieser string wird jetzt durch ein weiteres perl eval geschickt. jetzt erst werden die variablen passend zum aktuellen device und reading ersetzt. auf dieser ebene müssen also die " auftauchen.
das muss ich mir wohl mal unters kopfkissen legen. 8)
hoffentlich kann ich dann auch noch schlafen.
@locodriver: schau mal ins log. wenn nichts zu sehen ist verbose hoch drehen.
@frank: das drückt sich platt. dann geht das schon :)
Habe den Loglevel auf 5 gedreht:
Notify loop for Batteriestati BK_Sensor.battery: <svg class="icon measure_battery_100 0CFB0C" alt="ok" title="ok" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" x="0px" y="0px" width="361px" height="361px" viewBox="0 0 361 361" style="enable-background:new 0 0 361 361;" xml:space="preserve" id="svg2" inkscape:version="0.48.5 r10040" sodipodi:docname="measure_battery_100.svg"><metadata id="metadata36"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs34" /><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="779" inkscape:window-height="480" id="namedview32" showgrid="false" inkscape:zoom="0.65373961" inkscape:cx="180.5" inkscape:cy="180.5" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg2" /> <g id="measure_x5F_battery_x5F_100" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> <g id="g5" style="stroke:#000000;stroke-opacity:1"> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#0CFB0C;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 134.65625,89.15625 c -6.01649,0 -11,4.983509 -11,11 l 0,180 c 0,6.01649 4.98351,11 11,11 l 95.5,0 c 6.01631,0 11,-4.9825 11,-11 l 0,-180 c 0,-6.016491 -4.98351,-11 -11,-11 l -95.5,0 z m 0,10 95.5,0 c 0.60951,0 1,0.390491 1,1 l 0,180 c 0,0.6085 -0.39231,1 -1,1 l -95.5,0 c -0.60951,0 -1,-0.39049 -1,-1 l 0,-180 c 0,-0.609509 0.39049,-1 1,-1 z" id="path7" inkscape:connector-curvature="0" /> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#0CFB0C;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 169.625,69.65625 c -6.01649,0 -11,4.983509 -11,11 l 0,14 10,0 0,-14 c 0,-0.609509 0.39049,-1 1,-1 l 25.5,0 c 0.60951,0 1,0.390491 1,1 l 0,14 10,0 0,-14 c 0,-6.016491 -4.98351,-11 -11,-11 l -25.5,0 z" id="path9" inkscape:connector-curvature="0" /> </g> <g style="stroke:#000000;stroke-opacity:1;display:none" id="g11"> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path13" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path15" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path17" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path19" inkscape:connector-curvature="0" /> </g> <g id="g21" style="fill:#0CFB0C;fill-opacity:1;stroke:none"> <path style="fill:#0CFB0C;fill-opacity:1;stroke:none" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path23" inkscape:connector-curvature="0" /> <path style="fill:#0CFB0C;fill-opacity:1;stroke:none" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path25" inkscape:connector-curvature="0" /> <path style="fill:#0CFB0C;fill-opacity:1;stroke:none" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path27" inkscape:connector-curvature="0" /> <path style="fill:#0CFB0C;fill-opacity:1;stroke:none" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path29" inkscape:connector-curvature="0" /> </g> </g> <g id="Ebene_1" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> </g> </svg>
2015.03.06 20:45:12 5: Triggering Batteriestati (1 changes)
Achtung Log läuft von unten nach oben!
Ich hänge mal noch die anderen Attribute mit an:
attr Batteriestati cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:16px"', "r:3"=>'style="font-weight:bold"',"r:7" =>'style="font-weight:bold"', "r:13"=>'style="font-weight:bold"',"r:19"=>'style="font-weight:bold"'}
attr Batteriestati commands {"battery.low"=>"set %DEVICE replaceBatteryForSec 60",'Batteriestati.Batteriewechsel'=>'{fhem("setreading $DEVICE Batteriedauer_alt ". ReadingsVal($DEVICE,"Batteriewechsel",0))}','Batteriestati.Batteriewechsel'=>'setreading %DEVICE Batteriewechsel 0'}
attr Batteriestati room 085System
attr Batteriestati valueFormat {if($READING eq "batteryLevel"){if($VALUE>=3){$VALUE=100} elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25} else{$VALUE=0}}}
attr Batteriestati valueIcon {'batteryLevel.100'=>'measure_battery_100@0CFB0C','batteryLevel.75'=>'measure_battery_75@42BC0A', 'batteryLevel.50'=>'measure_battery_50@F5FF10','batteryLevel.25'=>'measure_battery_25@FB5909', 'batteryLevel.0'=>'measure_battery_0@E50005','battery.ok'=>'measure_battery_100@0CFB0C', 'battery.low'=>'measure_battery_50@E50005'}
attr Batteriestati valueStyle style="text-align:right"
attr Batteriestati valueSuffix {"batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)","Batteriewechsel"=>" Tage","Batteriedauer_alt"=>" Tage"}
Hi Andre,
Zitat von: justme1968 am 06 März 2015, 11:54:22
@Motivierte linke Hände: in $ROW hast du die nummer der aktuellen zeile. wenn du dein alles ok ganz ans ende stellst und davor alle zeilen leer sind ist $ROW == 1 (oder 2 wenn du überschriften hast). wenn nicht wurde vorher eine zeile angezeigt und du kannst das alles ok weg lassen.
Das klingt nach einer guten Möglichkeit. Ich habe jetzt ein wenig damit herumexperimentiert. Im valueFormat steht aktuell
{ rg_Meldungen_valueFormat($DEVICE,$READING,$VALUE,$ROW); }
und rg_Meldungen_valueFormat sieht so aus:
sub rg_Meldungen_valueFormat($$$$) {
my ($DEVICE,$READING,$VALUE,$ROW) = @_;
if ($DEVICE ne "dum_leere_Liste") {
if (($VALUE eq "closed") || ($VALUE eq "dry") || ($VALUE eq "nein") || ($VALUE eq "ok")) {
return undef;
} else {
if (index($DEVICE, 'Sens_') != -1) {
if ((ReadingsVal($DEVICE,"temperature","999")-$VALUE) < 3) {
return " ";
} else {
return undef;
}
} else {
return $VALUE;
}
}
} else {
Log 1, ("rg_Meldungen_valueFormat: ROW >$ROW<");
if (($ROW eq "2") || ($ROW eq "1")) {
return " ";
} else {
return undef;
}
}
}
Du siehst den Log-Befehl. Lt. diesem ist $ROW leer:
2015.03.08 08:58:22 1: rg_Meldungen_valueFormat: ROW ><
(Ja, ich weiß, dass der Test auf $ROW 1 oder 2 noch nicht ganz passt, das ist noch Teil der Versuche, das überhaupt ans Laufen zu bringen. :))
Einen schönen Sonntag, und ich finde es wirklich beeindruckend, wie viel Du an allen Ecken zu FHEM beiträgst - durch diverse Module wie auch durch die dauerhafte, sehr schnellen und hilfreichen Support hier. Respekt!
Hallo Andre,
noch Mal zu meinem Beitrag 1202, bei dem ich in der readingsGroup readings für die Ausgabensteuerung hinterlegen möchte.
Den Fehler, dass
define meine_rg readingsGroup meine_rg:Ansicht [A-Z][a-z]_Fenster:state....
zur Ausgabe von "state" der readingsGroup führte, habe ich gefunden:
attr meine_rg valueIcon %devStateIcon
muss natürlich jetzt
attr meine_rg valueIcon{'state' => '%devStateIcon'}
heißen...
Da die rg kein devStateIcon hat, kommt statt dessen der Text von "state" und nicht der Wert von "Ansicht". Da erst Mal drauf kommen.... :-)
ok.
Was aber trotzdem nun nicht geht ist:
attr meine_rg commands {'Ansicht' => 'Ansicht:alle,offene,geschlossene'}
weil in
sub readingsGroup_set
"Ansicht" als "unbekannt" gemeldet wird und das notify auf
define meine_rg_not notify meine_rg:Ansicht.* {perl-code...}
daher nicht mehr angesprungen wird.
Mit "setreading meine_rg Ansicht alle" kann man zwar das reading setzen, aber nicht über die fhem-Oberfläche per Menü (bzw. attr meine_rg commands ...).
Ich fände es allerdings ganz chic, wenn man in der rg readings für die individuelle Ausgabensteuerung hinterlegen könnte, ansonsten müsste man überall extra dummys anlegen.
In der sub readingsGroup_set
habe ich am Schluß mal folgende Zeile eingefügt:
return undef if(exists($hash->{READINGS}{$cmd}));
return "Unknown argument $cmd, choose one of $list";
} # end sub readingsGroup_set
damit werden alle readings für den set-Befehl "legalisiert" und das Menü "Ansicht" funktioniert.
Alternativ könnte man auch in der set-Routine noch auf das Attribut "setList" prüfen und die Werte dort als gültige "userreadings" zulassen.
Könnte man die obige Zeile in den Code mit aufnehmen?
Der dürfte ja nicht weiter stören und man kann readings für die Ausgabensteuerung in der rg hinterlegen und mit fhem-Mitteln ändern.
Gruß
Elektrolurch
Hi, ich bekomme diese Meldung seit gestern im LOG
015.03.12 21:14:13.096 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 732.
Woher könnte das kommen?
Danke
EDIT
Kann man das Knob Element in einer RD nutzen? Wenn ja wie?
Danke
Ich habe im Moment das Problem, dass beim Aufruf meiner RG folgende Meldung im Log kommt:
2015.03.15 23:26:58 1: PERL WARNING: Use of uninitialized value $lookup in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 339.
Ich habe jetzt schon ganz viele Attribute gelöscht, um das Problem einzugrenzen und ich denke im Moment, dass es an "valueFormat" liegt. Und zwar scheint es zu passieren wenn ich als valueFormat eine Perl-Funktion eingebe, die dann "undef" zurück liefert. Meines Wissens ist doch die Rückgabe von undef der Weg, um ein Reading in der RG auszublenden oder?
So sieht mein Device aus (ist eine RG für ein Enigma2-Device):
Internals:
DEF wz_dm7020hd:<Status>,state,<Kanal>,channel
wz_dm7020hd:,<Aktuell>,eventtitle,<Rest>,eventremaining_hr,<Dauer>,eventduration_hr
wz_dm7020hd:<Beschreibung>,eventdescription
wz_dm7020hd:,<Nächste>,eventtitle_next,<Start>,eventstart_next_hr,<Dauer>,eventduration_next_hr
wz_dm7020hd:,<HDD Kapazität>,hdd1_capacity,<Frei>,wz_dm7020hd:hdd1_free wz_dm7020hd:,<Lautstärke>,volume,<HDD>,hdd1_capacity,<Frei>,hdd1_free
wz_dm7020hd:,<Nächste Aufname>,recordings_next_name,<Uhrzeit>,recordings_next_hr
wz_rg_dm7020hd:,labelRec1,recordings1_name@wz_dm7020hd,recordings1_servicename@wz_dm7020hd
wz_rg_dm7020hd:,labelRec2,recordings2_name@wz_dm7020hd,recordings2_servicename@wz_dm7020hd
wz_rg_dm7020hd:,labelRec3,recordings3_name@wz_dm7020hd,recordings3_servicename@wz_dm7020hd
wz_rg_dm7020hd:,labelRec4,recordings4_name@wz_dm7020hd,recordings4_servicename@wz_dm7020hd
NAME wz_rg_dm7020hd
NR 415
NTFY_ORDER 50-wz_rg_dm7020hd
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
wz_dm7020hd 1
wz_rg_dm7020hd 1
Content2:
wz_dm7020hd 1
DEVICES:
ARRAY(0xab81fb0)
ARRAY(0xadf49d8)
ARRAY(0xab81d40)
ARRAY(0xab81f20)
ARRAY(0xab82010)
ARRAY(0xab81f60)
ARRAY(0xab81f90)
ARRAY(0xadf4f60)
ARRAY(0xab81f00)
ARRAY(0xadf4ab8)
ARRAY(0xab83cb0)
DEVICES2:
ARRAY(0xab81fb0)
ARRAY(0xadf49d8)
ARRAY(0xab81d40)
ARRAY(0xab81f20)
ARRAY(0xab82010)
ARRAY(0xab81f60)
ARRAY(0xab81f90)
ARRAY(0xadf4f60)
ARRAY(0xab81f00)
ARRAY(0xadf4ab8)
ARRAY(0xab83cb0)
ARRAY(0xadf5080)
ARRAY(0xadf5160)
ARRAY(0xadf50b0)
ARRAY(0xadf51e0)
ARRAY(0xadf51c0)
ARRAY(0xadf5260)
ARRAY(0xadf5240)
ARRAY(0xadf52e0)
Readings:
2015-02-17 23:10:39 labelRec1 Laufende Aufnahme
2015-02-17 23:10:43 labelRec2 Laufende Aufnahme
2015-02-17 23:10:47 labelRec3 Laufende Aufnahme
2015-02-17 23:10:51 labelRec4 Laufende Aufnahme
Fhem:
lastDefChange 1
last_update 1426458690.09262
Helper:
DEF
mapping
valueFormat {return undef}
Attributes:
alias Dreambox
group Geräte
mapping
nostate 1
notime 1
room Wohnzimmer
valueFormat {return undef}
Normalerweise sieht der Inhalt von valueFormat natürlich anders aus, aber zum Testen habe ich mal direkt undef zurück gegeben. Wenn ich das Attribut lösche, dann kommt der Fehler auch nicht mehr.
Prinzipiell funktioniert der Mechanismus: Also wenn das Attribut vorhanden ist, dann sind alle Readings unsichtbar.
Ich kann nicht sagen, ob der Fehler jetzt erst neu ist. Ist mir vlt. vorher einfach nicht aufgefallen.
Hier der Vollständigkeit halber nochmal mein eigentliches "Produktiv"-Device:
Internals:
DEF wz_dm7020hd:<Status>,state,<Kanal>,channel
wz_dm7020hd:,<Aktuell>,eventtitle,<Rest>,eventremaining_hr,<Dauer>,eventduration_hr
wz_dm7020hd:<Beschreibung>,eventdescription
wz_dm7020hd:,<Nächste>,eventtitle_next,<Start>,eventstart_next_hr,<Dauer>,eventduration_next_hr
wz_dm7020hd:,<HDD Kapazität>,hdd1_capacity,<Frei>,wz_dm7020hd:hdd1_free wz_dm7020hd:,<Lautstärke>,volume,<HDD>,hdd1_capacity,<Frei>,hdd1_free
wz_dm7020hd:,<Nächste Aufname>,recordings_next_name,<Uhrzeit>,recordings_next_hr
wz_rg_dm7020hd:,labelRec1,recordings1_name@wz_dm7020hd,recordings1_servicename@wz_dm7020hd
wz_rg_dm7020hd:,labelRec2,recordings2_name@wz_dm7020hd,recordings2_servicename@wz_dm7020hd
wz_rg_dm7020hd:,labelRec3,recordings3_name@wz_dm7020hd,recordings3_servicename@wz_dm7020hd
wz_rg_dm7020hd:,labelRec4,recordings4_name@wz_dm7020hd,recordings4_servicename@wz_dm7020hd
NAME wz_rg_dm7020hd
NR 415
NTFY_ORDER 50-wz_rg_dm7020hd
STATE Initialized
TYPE readingsGroup
Content:
wz_dm7020hd 1
wz_rg_dm7020hd 1
Content2:
wz_dm7020hd 1
DEVICES:
ARRAY(0xadc98d0)
ARRAY(0xb0485f0)
ARRAY(0xadc9660)
ARRAY(0xadc9840)
ARRAY(0xadc9930)
ARRAY(0xadc9880)
ARRAY(0xadc98b0)
ARRAY(0xb048790)
ARRAY(0xadc9820)
ARRAY(0xb0486d0)
ARRAY(0xadd9ca8)
DEVICES2:
ARRAY(0xadc98d0)
ARRAY(0xb0485f0)
ARRAY(0xadc9660)
ARRAY(0xadc9840)
ARRAY(0xadc9930)
ARRAY(0xadc9880)
ARRAY(0xadc98b0)
ARRAY(0xb048790)
ARRAY(0xadc9820)
ARRAY(0xb0486d0)
ARRAY(0xadd9ca8)
ARRAY(0xb0488b0)
ARRAY(0xb048990)
ARRAY(0xb0488e0)
ARRAY(0xb048a10)
ARRAY(0xb0489f0)
ARRAY(0xb048a90)
ARRAY(0xb048a70)
ARRAY(0xb048b10)
Readings:
2015-02-17 23:10:39 labelRec1 Laufende Aufnahme
2015-02-17 23:10:43 labelRec2 Laufende Aufnahme
2015-02-17 23:10:47 labelRec3 Laufende Aufnahme
2015-02-17 23:10:51 labelRec4 Laufende Aufnahme
Fhem:
lastDefChange 1
last_update 1426458950.61751
Helper:
DEF
mapping
valueFormat { if($READING eq 'hdd1_capacity' or $READING eq 'hdd1_free') { return "%.2f"; } elsif( $READING eq 'volume' ) {if( ReadingsVal($DEVICE, "mute", "") eq "on") {return "mute";} else {return "%i %%";} }elsif ($READING =~ /recordings._.*name/) { return ($VALUE eq '-') ? undef : $VALUE;}elsif ($READING =~ /labelRec.*/) {my $no = substr($READING, 8, 1);return (ReadingsVal('wz_dm7020hd', 'recordings' . $no . '_name', '-') eq '-') ? undef : $VALUE;}}
valueStyle { if($READING eq "hdd1_free" && $VALUE < 200){ 'style="color:red"' }elsif( $READING eq "hdd1_free" && $VALUE < 500 ){ 'style="color:orange"' }elsif( $READING eq "volume" && ReadingsVal($DEVICE, "mute", "") eq "on" ){ 'style="color:red"' }elsif( $READING =~ /recordings._.*name/ ) {'style="color:red"'}elsif( $READING =~ /labelRec./ ) {}else{ 'style="color:green"' } }
valueSuffix { if($READING eq 'hdd1_capacity' or $READING eq 'hdd1_free') { return " GB"; } }
Commands:
channel channel:
Valuecolumns:
eventdescription colspan="4"
Valueicon:
state %devStateIcon
Attributes:
alias Dreambox
commands { channel => "channel:" }
comment Es müssen händisch die Readings "labelRec1" bis "labelRec4" angelegt werden. Inhalt immer "Laufende Aufnahme". Für Anzeige der letzen RG-Zeilen
group Geräte
mapping
nostate 1
notime 1
room Wohnzimmer
valueColumns { eventdescription => 'colspan="4"' }
valueFormat { if($READING eq 'hdd1_capacity' or $READING eq 'hdd1_free') { return "%.2f"; } elsif( $READING eq 'volume' ) {if( ReadingsVal($DEVICE, "mute", "") eq "on") {return "mute";} else {return "%i %%";} }elsif ($READING =~ /recordings._.*name/) { return ($VALUE eq '-') ? undef : $VALUE;}elsif ($READING =~ /labelRec.*/) {my $no = substr($READING, 8, 1);return (ReadingsVal('wz_dm7020hd', 'recordings' . $no . '_name', '-') eq '-') ? undef : $VALUE;}}
valueIcon {state => '%devStateIcon'}
valueStyle { if($READING eq "hdd1_free" && $VALUE < 200){ 'style="color:red"' }elsif( $READING eq "hdd1_free" && $VALUE < 500 ){ 'style="color:orange"' }elsif( $READING eq "volume" && ReadingsVal($DEVICE, "mute", "") eq "on" ){ 'style="color:red"' }elsif( $READING =~ /recordings._.*name/ ) {'style="color:red"'}elsif( $READING =~ /labelRec./ ) {}else{ 'style="color:green"' } }
valueSuffix { if($READING eq 'hdd1_capacity' or $READING eq 'hdd1_free') { return " GB"; } }
Den Fehler von VBS habe ich leider auch schon lange drin. Bei der Müllabfuhr-Visualisierung http://forum.fhem.de/index.php?topic=32382.0 (http://forum.fhem.de/index.php?topic=32382.0)
Ich glaube(!), ich hatte diesen Fehler schon bei eigenen Routinen, und zwar immer dann, wenn ich mit einem String gearbeitet habe, der bei Übergabe leer war.
Kann es sein, dass die Rückgabe von undef in Euren Beispielen dazu führt, dass die entsprechende rg komplett leer ist?
Nur 'ne Vermutung.
Also in meinem Beispiel habe ich ja ohne String gearbeitet, aber zum Testen einfach immer "undef" zurück gegeben und da tritt es auch auf:
valueFormat {return undef}
Also die komplette RG ist bei mir dann nicht leer, sondern nur das Reading, bei dem ich undef zurück gebe (wie es ja wohl auch sein soll).
Hi,
ich habe über das widgetOverride Attribute in einer RG ein Knob Element definiert, allerdings passiert nichts
EDIT
hab grad gesehen das ich es über das Commands Attribut machen muss, aber dann bekomme ich für Knob Elemente angezeigt, mit je 2 unterschiedlichen Werte, was mach ich da noch falsch?
nternals:
DEF <Gerät>,<Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp
NAME rd_Gaeste_WC
NR 240
NTFY_ORDER 50-rd_Gaeste_WC
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
Content2:
DEVICES:
ARRAY(0x2cfe1d8)
ARRAY(0x2d1a788)
Fhem:
lastDefChange 11
last_update 1426536777.8377
Helper:
DEF
commands desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
nameStyle style="color:yellow;font-weight:bold"
Mapping:
Gaeste_WC_Clima Gäste WC
Attributes:
commands desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
fp_Gaeste_WC1 238,221,0,
mapping {'Gaeste_WC_Clima' => 'Gäste WC' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
style style="font-size:20px;color:lightgray;text-align:left"
die undef warnung sollte ab morgen weg sein.
das widgetOverride attribut ist ein globales attribut in fhem um das widget zu ändern das für das kommando eines devices verwendet wird. es wird in dem device gesetzt aus dem das kommando kommt.
die readingsGroup hat keine eigenen kommandos also macht es keinen sinn widgetOverride hier zu setzen.
die widgets die die readingsGroup für ein reading eines angezeigten devices verwendet werden über das commands attribut konfiguriert. wenn du widgetOverride im betreffenden device für ein kommando gesetzt ist sollte das übernommen werden wenn du im commands attribut kein eigenes widget angibst.
der erste fall funktioniert so:attr rd_Gaeste_WC commands { 'desired-temp' => 'desired-temp:'}
der zweite sollte so funktionieren:attr rd_Gaeste_WC commands { 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
ich weiss aber nicht ganz genau ob es mit den mehrfachen : eventuell noch probleme gibt.
gruss
andre
Hi
ich habe mal eine Frage zur Funktionsweise der Readingsgroup.
Wenn ich sowas mache:
attr rg_heatingInfo valueSuffix {"batteryLevel"=> sprintf("%.1f", ReadingsVal($DEVICE,$READING,0)) ." V" }
Dann hätte ich gedacht, das sprintf wird nur ausgeführt, wenn das Reading ein "batteryLevel" enthält. Scheinbar wird es aber für jedes Reading in der ReadingsGroup ausgeführt, denn ich erhalte solche Fehlermeldungen:
PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 23194) line 1.
Ist das so gewollt? Die batteryLevel Readings enthalten numerische Werte. Aber ich habe auch Readings, die z.B. das "auto" liefern. Wie umgehe ich das Warning jetzt am Besten? Habe zwar schon von dieser Fehlermeldung hier im Thread gelesen, aber die Lösung ist mir nicht klar...
schau mal in dein log. da sollten noch andere meldungen stehen. unter anderem das die syntax die du verwendest falsch ist.
der teil rechts vom => wird nur für das entsprechende reading ausgeführt, aber der gesammte ausdruck wird für jedes reading ausgeführt um vom string auf den hash zu kommen in dem dann der ausdruck gesucht wird.
du solltest es etwa so schreiben:attr rg_heatingInfo valueSuffix {"batteryLevel"=> '{sprintf("%.1f", ReadingsVal($DEVICE,$READING,0)) ." V"}' }
gruss
andre
Danke für die schnelle Antwort. Über das Logfile bin ich auf das Problem gestoßen, denn das war voll von diesen Fehlermeldungen. Allerdings finde ich sonst keine Fehlermeldungen, die wie Du sagst etwas von falscher Syntax sagen. Dies hier sind alle Fehlermeldungen die zu sehen sind wenn ich auf die Seite mit der Readingsgroup wechsle:
2015.03.18 17:33:58 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 171) line 1.
2015.03.18 17:33:58 1: PERL WARNING: Argument "off" isn't numeric in sprintf at (eval 174) line 1.
2015.03.18 17:33:58 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 189) line 1.
2015.03.18 17:33:58 1: PERL WARNING: Argument "on" isn't numeric in sprintf at (eval 192) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 207) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "on" isn't numeric in sprintf at (eval 210) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 225) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "on" isn't numeric in sprintf at (eval 228) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 243) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "off" isn't numeric in sprintf at (eval 246) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 261) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "off" isn't numeric in sprintf at (eval 264) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 279) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "off" isn't numeric in sprintf at (eval 282) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 297) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "on" isn't numeric in sprintf at (eval 300) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 315) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "off" isn't numeric in sprintf at (eval 318) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "auto" isn't numeric in sprintf at (eval 333) line 1.
2015.03.18 17:33:59 1: PERL WARNING: Argument "on" isn't numeric in sprintf at (eval 336) line 1.
Ich habe jetzt mal den Ausdruck so umgebaut wie Du gesagt hast- jetzt sind die Fehlermeldungen weg, perfekt!
Was mich noch interessieren würde, aber da weiß ich nicht ob das hier her gehört: Wieso stehen in den Warnings keine korrekten File- und Line Angaben, sondern sowas wie "at (eval 333) line 1"? Liegt das an Perl oder an Readingsgroup? Mich hat es eine ganze Weile gekostet um zu finden, wo das her kommt, gibt es da eine bessere Vorgehensweise als Trial&Error?
Hi,
mit
{ 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
wirds dann angezeigt, jetzt hab ich noch das Problem das "Soll"" nicht Zentriert über dem Element steht und das "IST" nicht Zentriert über der IST Teperatur steht, wie kann ich das noch hin bekommen?
Internals:
DEF <Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp
NAME rd_Gaeste_WC
NR 240
NTFY_ORDER 50-rd_Gaeste_WC
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
Content2:
DEVICES:
ARRAY(0x3342c98)
ARRAY(0x3c34448)
Fhem:
lastDefChange 10
last_update 1426791966.54793
Helper:
DEF
nameStyle style="color:yellow;font-weight:bold"
Commands:
desired-temp desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
Mapping:
Gaeste_WC_Clima
Attributes:
commands { 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
fp_Gaeste_WC1 238,221,0,
mapping {'Gaeste_WC_Clima' => '' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
style style="font-size:20px;color:lightgray;text-align:left"
setz mal nonames oder setz vor das soll noch ein <>,
gruß
andre
Hi Danke,
mit einem <>, sieht es fast gut aus:-)
Ist wird jetzt schön Zentriert über der IST Temperatur angezeigt, das SOLL ist aber noch links Bündig über dem Element und nicht Zentriert
mit cellStyle das alignment setzen
Hi,
danke, das klappt schonmal weitestgehend :-)
Allerdings ist SOLL jetzt plötzlich nicht mehr Gelb......
List sieht jetzt so aus
Internals:
DEF <>,<Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp
NAME rd_Gaeste_WC
NR 240
NTFY_ORDER 50-rd_Gaeste_WC
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
Content2:
DEVICES:
ARRAY(0x3879640)
ARRAY(0x44572d8)
Fhem:
lastDefChange 32
last_update 1426794535.07951
Helper:
DEF
nameStyle style="color:yellow;font-weight:bold"
Cellstyle:
r:1,c:2 style="text-align:center"
Commands:
desired-temp desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
Mapping:
Gaeste_WC_Clima
Attributes:
cellStyle { "r:1,c:2" => 'style="text-align:center"' }
commands { 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
fp_Gaeste_WC1 220,221,0,
mapping {'Gaeste_WC_Clima' => '' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
style style="font-size:20px;color:lightgray;text-align:left"
die farbe muss naturlich auch da rein. oder das alignment eindünstetet die farbe definiert hast.
Perfekt, das wars.
Vielen Dank
Muss leider nochmal fragen, hab noch eine andere RD welche ich jetzt auf Knob umgestellt habe, diese hat jetzt 5 Elemente untereinander, die kann ich aber auf meinem FP schlecht darstellen, ich würde jetzt gerne 3 untereinander und zwei rechts von den 3 anderen darstellen, geht das oder muss ich dafür eine zweite rd definieren?
die Rd sieht im Moment so aus:
Internals:
DEF <Gerät>,<Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp Heizung_Flur_Clima:desired-temp,measured-temp
Kueche_Clima:desired-temp,measured-temp
Heizung_Tuer_ClimRT_tr:desired-temp,measured-temp
HeizungFenster_Clima:desired-temp,measured-temp
NAME rd_Heizungs_Slider
NR 214
NTFY_ORDER 50-rd_Heizungs_Slider
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
HeizungFenster_Clima 1
Heizung_Flur_Clima 1
Heizung_Tuer_ClimRT_tr 1
Kueche_Clima 1
Content2:
DEVICES:
ARRAY(0x2a2e4e8)
ARRAY(0x2a7ff78)
ARRAY(0x33657e8)
ARRAY(0x30d6be8)
ARRAY(0x2c7b3c8)
ARRAY(0x1c26868)
Fhem:
lastDefChange 10
last_update 1426795500.83873
Helper:
DEF
nameStyle style="color:yellow;font-weight:bold"
Cellstyle:
r:1,c:2 style="text-align:center;color:yellow;font-weight:bold"
Commands:
desired-temp desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
Mapping:
Gaeste_WC_Clima Gäste WC
HeizungFenster_Clima Heizung Wohnzimmer Fenster
Heizung_Flur_Clima Heizung Flur
Heizung_Tuer_ClimRT_tr Heizung Wohnzimmer Tür
Kueche_Clima Küche
Attributes:
cellStyle { "r:1,c:2" => 'style="text-align:center;color:yellow;font-weight:bold"' }
commands { 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
fp_Heizung 218,200,0,
group Heizung
mapping {'Gaeste_WC_Clima' => 'Gäste WC', 'Heizung_Flur_Clima' => 'Heizung Flur', 'Heizung_Tuer_ClimRT_tr' => 'Heizung Wohnzimmer Tür', 'Kueche_Clima' => 'Küche', 'HeizungFenster_Clima' => 'Heizung Wohnzimmer Fenster'}
nameStyle style="color:yellow;font-weight:bold"
noheading 1
room Flur Erdgeschoss,Gäste_WC,Küche,Wohnzimmer
style style="font-size:20px;color:lightgray;text-align:left"
Danke
natürlich geht das.
alles was auf eine zeile soll muss mit , getrennt hintereinander stehen. ohne leerzeichen. wenn du readings von unterschiedlichen devices mischst musst du hinter dem reading jeweils den devices namen mit @ getrennt dahinter hängen.
dafür gibt es aber wirklich schon beispiele ...
Sorry, hab gegooglet aber nichts entsprechendes gefunden.:-(
Meinst du so?
<Gerät>,<Soll>,<Ist>
Heizung_Tuer_ClimRT_tr:desired-temp,measured-temp@Heizung_Tuer,HeizungFenster_Clima:desired-temp,measured-temp@HeizungFenster
Gaeste_WC_Clima:desired-temp,measured-temp
Heizung_Flur_Clima:desired-temp,measured-temp
Kueche_Clima:desired-temp,measured-temp
Dann wird aber HeizungFenster_Clima garnicht mehr angezeigt
da fehlt entweder ein leerzeichen vor dem device namen oder der device name muss mit @ angehängt werden.
es steht in der commandref, im wiki und bestimmt ein halbes Dutzend nal im forum.
Sorry aber ich bekomms nicht hin, hab im Wiki das gefunden:
Zitatdefine wzTemperaturenRG readingsGroup Aussen:,<Temperatur>,temperature,<Luftfeuchte>,humidity Wohnzimmer:,<Temperatur>,temperature,<Luftfeuchte>,humidity Kasten_E_Geraete:,<Temperatur>,temperature,<Luftfeuchte>,humidity Die readings temperatur und humidity der Devices Aussen, Wohnzimmer und Kasten_E_Geraete in einer Zeile pro Device.
Und habs danach dann so gemacht
Heizung_Tuer_ClimRT_tr:,desired-temp,measured-temp HeizungFenster_Clima:,desired-temp,measured-temp
Was überseh ich da???
http://forum.fhem.de/index.php/topic,16552.msg256989.html#msg256989 (http://forum.fhem.de/index.php/topic,16552.msg256989.html#msg256989)
http://forum.fhem.de/index.php/topic,28494.msg213486.html#msg213486 (http://forum.fhem.de/index.php/topic,28494.msg213486.html#msg213486)
http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices (http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices)
...
Hallo Andre,
sitze jetzt schon einige Tage an folgendem Problem, finde aber keine Lösung :'(
Ich fasse in einer readingsgroup mehrere Kalender (aus owncloud) zusammen ,das letzte reading eines jeden Eintrages ist der jeweilige Kalendername.
Ich möchte nun abhängig vom Namen des Kalenders die gesamte Zeile in einer bestimmten Farbe darstellen.
Mit valueStyle bekomme ich immer nur die Farbe für den Kalender(t_***_source) geändert.
Habe das schon mit cellstyle versucht, ohne Erfolg!
Geht das überhabt, das man in Abhängigkeit eines Wertes dann eine Zeile einfärbt ?
define rg_Termine readingsGroup <Datum>,<Uhrzeit>,<Text>,<Kalender> vocalview2:t_001_bdate,t_001_btime,t_001_summary,t_001_source vocalview2:t_002_bdate,t_002_btime,t_002_summary,t_002_source vocalview2:t_003_bdate,t_003_btime,t_003_summary,t_003_source vocalview2:t_004_bdate,t_004_btime,t_004_summary,t_004_source vocalview2:t_005_bdate,t_005_btime,t_005_summary,t_005_source vocalview2:t_006_bdate,t_006_btime,t_006_summary,t_006_source vocalview2:t_007_bdate,t_007_btime,t_007_summary,t_007_source vocalview2:t_008_bdate,t_008_btime,t_008_summary,t_008_source vocalview2:t_009_bdate,t_009_btime,t_009_summary,t_009_source vocalview2:t_010_bdate,t_010_btime,t_010_summary,t_010_source vocalview2:t_011_bdate,t_011_btime,t_011_summary,t_011_source vocalview2:t_012_bdate,t_012_btime,t_012_summary,t_012_source vocalview2:t_013_bdate,t_013_btime,t_013_summary,t_013_source vocalview2:t_014_bdate,t_014_btime,t_014_summary,t_014_source vocalview2:t_015_bdate,t_015_btime,t_015_summary,t_015_source vocalview2:t_016_bdate,t_016_btime,t_016_summary,t_016_source vocalview2:t_017_bdate,t_017_btime,t_017_summary,t_017_source vocalview2:t_018_bdate,t_018_btime,t_018_summary,t_018_source vocalview2:t_019_bdate,t_019_btime,t_019_summary,t_019_source vocalview2:t_020_bdate,t_020_btime,t_020_summary,t_020_source
attr rg_Termine group Kalenderansicht2
attr rg_Termine nameStyle style="font-weight:bold;;color:Black"
attr rg_Termine nonames 1
attr rg_Termine room Kalender
attr rg_Termine valueStyle {if(substr($READING,5,7) eq "_source" && $VALUE eq "Klaus"){ 'style="color:blue"' }elsif( substr($READING,5,7) eq "_source" && $VALUE eq "Kathleen" ){ 'style="color:red"' }elsif( substr($READING,5,7) eq "_source" && $VALUE eq "Familie" ){ 'style="color:green"' }else{ 'style="color:black"' } }
attr rg_Termine visibility hidden
define at_KalenderTermine at +*02:00:00 {\
my $i;;\
my $modtext = "<Datum>,<Uhrzeit>,<Text>,<Kalender> ";;\
for($i= 1;;$i<=20;;$i++){\
$modtext .= "vocalview2:t_".sprintf('%03d',$i)."_bdate,t_".sprintf('%03d',$i)."_btime,t_".sprintf('%03d',$i)."_summary,t_".sprintf('%03d',$i)."_source " ;;}\
fhem("modify rg_Termine $modtext");;\
}
attr at_KalenderTermine room Kalender
Danke für einen Kleinen Tritt in die richtige Richtung !
klaus
ich hab dir im anderen thread geantwortet :)
Zitat von: justme1968 am 19 März 2015, 22:34:26
http://forum.fhem.de/index.php/topic,16552.msg256989.html#msg256989 (http://forum.fhem.de/index.php/topic,16552.msg256989.html#msg256989)
http://forum.fhem.de/index.php/topic,28494.msg213486.html#msg213486 (http://forum.fhem.de/index.php/topic,28494.msg213486.html#msg213486)
http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices (http://www.fhemwiki.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices)
...
Hi Andre,
danke für deine geduld, hab das glaub ich jetzt verstanden, hab aber dann das Problem das die Devices die jetzt rechts neben den anderen stehen keine Namen mehr haben, links die schon, was hab ich da noch falsch gemacht? Wenn sie untereinander stehen sind die Namen da
Internals:
DEF <Gerät>,<Soll>,<Ist>,<Gerät>,<Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp@HeizungFenster_Clima,desired-temp,measured-temp<Heizung Fenster>
Heizung_Flur_Clima:desired-temp,measured-temp@Heizung_Tuer_ClimRT_tr,desired-temp,measured-temp
Kueche_Clima:desired-temp,measured-temp
NAME rd_Heizungs_Slider
NR 214
NTFY_ORDER 50-rd_Heizungs_Slider
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
Heizung_Flur_Clima 1
Kueche_Clima 1
Content2:
HeizungFenster_Clima 1
Heizung_Tuer_ClimRT_tr 1
DEVICES:
ARRAY(0x4f54048)
ARRAY(0x4df74c0)
ARRAY(0x4ced8e0)
ARRAY(0x4cd7728)
DEVICES2:
ARRAY(0x4f54048)
ARRAY(0x4df74c0)
ARRAY(0x4ced8e0)
ARRAY(0x4cd7728)
ARRAY(0x483a348)
ARRAY(0x4cacd78)
Fhem:
lastDefChange 55
last_update 1427018187.58372
Helper:
DEF
nameStyle style="color:yellow;font-weight:bold"
Cellstyle:
r:1,c:2 style="text-align:center;color:yellow;font-weight:bold"
r:1,c:4 style="text-align:center;color:yellow;font-weight:bold"
Commands:
desired-temp desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
Mapping:
Gaeste_WC_Clima Gäste WC
HeizungFenster_Clima Heizung Wohnzimmer Fenster
Heizung_Flur_Clima Heizung Flur
Heizung_Tuer_ClimRT_tr Heizung Wohnzimmer Tür
Kueche_Clima Küche
Attributes:
cellStyle { "r:1,c:2" => 'style="text-align:center;color:yellow;font-weight:bold"',"r:1,c:4" => 'style="text-align:center;color:yellow;font-weight:bold"' }
commands { 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
fp_Heizung 218,200,0,
group Heizung
mapping {'Gaeste_WC_Clima' => 'Gäste WC', 'Heizung_Flur_Clima' => 'Heizung Flur', 'Heizung_Tuer_ClimRT_tr' => 'Heizung Wohnzimmer Tür', 'Kueche_Clima' => 'Küche', 'HeizungFenster_Clima' => 'Heizung Wohnzimmer Fenster'}
nameStyle style="color:yellow;font-weight:bold"
noheading 1
room Flur Erdgeschoss,Gäste_WC,Küche,Wohnzimmer
style style="font-size:20px;color:lightgray;text-align:left"
jede zeile hat nur einen zeilen titel. wenn du zusätzliche namen anzeigen willst geht das z.b. mit ...,+NAME@<device>,... oder ...,?alias@<device>,...
um den namen aus den internals oder den alias aus den attributen anzuzeigen.
gruss
andre
Super, danke, eine letzte frage hab ich noch, wie kann ich die Device Namen anstatt links vom Knob element über das Element bekommen?
Danke
mit ...,<br>,... kannst du einen zeilenumbruch einfügen und mit ...,<>,... eine leere zelle.
damit kannst du dir ein layout zusammen bauen das so ausschaut wie du es möchtest.
gruss
andre
Hallo Andre,
kann man eigentlich anstelle einer leeren Zelle (<>) auch einen festen Text (z.B. "Status der Tür") einfügen ?
gruss
klaus
ja. das geht aber besser über den ! modifier und ein nicht vorhandenes reading.
bei <text> dürfen keine leerzeichen vorhanden sein. dir kannst du durch ersetzen. aber für diese texte greifen die value artribute nicht.
bei ...,!text,... greifen alle value attribute und du kannst denn text inklusive leerzeichen per eigenem reading oder per valueFormat setzen.
gruß
andre
Zitat von: justme1968 am 23 März 2015, 07:14:10
ja. das geht aber besser über den ! modifier und ein nicht vorhandenes reading.
bei <text> dürfen keine leerzeichen vorhanden sein. dir kannst du durch ersetzen. aber für diese texte greifen die value artribute nicht.
bei ...,!text,... greifen alle value attribute und du kannst denn text inklusive leerzeichen per eigenem reading oder per valueFormat setzen.
gruß
andre
habe ich hier irgend etwas falsch verstanden ? , aber
<text> geht nicht !
define TV_Programm readingsGroup <Sendeplatz><Programm>,<seit>,<aktuelle Sendung>,<ab>,<folgende Sendung> \
<1>,TV_Programme_next:ard_time@TV_Programme,ard@TV_Programme,ard_next_time,ard_next \
<2>,TV_Programme_next:zdf_time@TV_Programme,zdf@TV_Programme,zdf_next_time,zdf_next \
<3>,TV_Programme_next:rtl1_time@TV_Programme,rtl1@TV_Programme,rtl1_next_time,rtl1_next \
<4>,TV_Programme_next:sat1_time@TV_Programme,sat1@TV_Programme,sat1_next_time,sat1_next\
Hallo Andre,
noch eine Frage. Gibt es schon eine Möglichkeit bei eine aufklappbaren ReadingsGroup eine Symbol zu verwenden.
> rg_termine
hier also anstelle des ">" ein ICON ? (hatte ich schon einmal gefragt , damals ging es (noch) nicht ;)
danek
Zitathabe ich hier irgend etwas falsch verstanden ? , aber <text> geht nicht !
das habe ich nicht verstanden...
das icon geht noch nicht.
gruss
andre
Zitat von: justme1968 am 26 März 2015, 17:31:18
das habe ich nicht verstanden...
das icon geht noch nicht.
gruss
andre
Hallo Andre,
sorry, vielleicht unklar ausgedrückt.
Derzeit schaut das so aus wie im Bildanhang. Jetzt möchte ich gern einfach quassi eine Spalte mit reinem Text davor.
Also vor die Programm-ICONS jeweils eine Nummer (erste Zeile 01 , zweite Zeile 02 , dritte Zeile 03 usw.)
gruss & Danke
kvo1
Hi, hab im Log diese Meldung:
2015.03.28 17:16:27.510 3: rd_Gaeste_WC: Can't find string terminator '"' anywhere before EOF at (eval 39) line 1, <$fh> line 1453.
Die rd sieht so aus
Internals:
DEF <>,<Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp
NAME rd_Gaeste_WC
NR 240
NTFY_ORDER 50-rd_Gaeste_WC
STATE Initialized
TYPE readingsGroup
Content:
Gaeste_WC_Clima 1
Content2:
DEVICES:
ARRAY(0x244ab50)
ARRAY(0x244ab98)
Fhem:
lastDefChange 1
last_update 1427559389.23868
Helper:
DEF
mapping {'Gaeste_WC_Clima' => "Gäste WC'' }
nameStyle style="color:yellow;font-weight:bold"
Cellstyle:
r:1,c:2 style="text-align:center;color:yellow;font-weight:bold"
Commands:
desired-temp desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
Attributes:
cellStyle { "r:1,c:2" => 'style="text-align:center;color:yellow;font-weight:bold"' }
commands { 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
fp_Gaeste_WC1 220,221,0,
mapping {'Gaeste_WC_Clima' => "Gäste WC'' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
style style="font-size:20px;color:lightgray;text-align:left"
Was hab ich da falsch gemacht?
Schau dir mal das Mapping an... am Ende
Du hast recht, das sieht im list falsch aus, das seltsame ist, das es in der rd Übersicht anders aussieht, siehe Screen
Das list liefert wieder das
Internals:
DEF <>,<Soll>,<Ist>
Gaeste_WC_Clima:desired-temp,measured-temp
NAME rd_Gaeste_WC
NR 240
NTFY_ORDER 50-rd_Gaeste_WC
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Gaeste_WC_Clima 1
Content2:
DEVICES:
ARRAY(0x3c565d0)
ARRAY(0x3345ca0)
Fhem:
lastDefChange 5
last_update 1427739555.42536
Helper:
DEF
mapping {'Gaeste_WC_Clima' => "Gäste WC'' }
nameStyle style="color:yellow;font-weight:bold"
Cellstyle:
r:1,c:2 style="text-align:center;color:yellow;font-weight:bold"
Commands:
desired-temp desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
Attributes:
cellStyle { "r:1,c:2" => 'style="text-align:center;color:yellow;font-weight:bold"' }
commands { 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
fp_Gaeste_WC1 220,221,0,
mapping {'Gaeste_WC_Clima' => "Gäste WC'' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
style style="font-size:20px;color:lightgray;text-align:left"
EDIT
Bekomme im Log auch noch diese Meldung:
2015.03.30 22:12:38.744 2: Can't find string terminator '"' anywhere before EOF at (eval 277) line 1.
2015.03.30 22:12:38.745 2: Can't find string terminator '"' anywhere before EOF at (eval 278) line 1.
2015.03.30 22:12:38.748 2: Can't find string terminator '"' anywhere before EOF at (eval 279) line 1.
2015.03.30 22:12:38.748 2: Can't find string terminator '"' anywhere before EOF at (eval 280) line 1.
2015.03.30 22:12:38.814 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 734.
Dann zeig doch mal die gesamte Definition der RG.... am besten als Textfile !
Das list oben ist komplett, oder was meinst du?
Wie geschrieben, die rg mal als Anhang .
Bitte schön ;)
Dann ändere doch wirklich mal.....
mapping {'Gaeste_WC_Clima' => "Gäste WC'' }
In
mapping {'Gaeste_WC_Clima' => "Gäste WC" }
Kopiere es hier raus !
Ah, jetzt sehe ich was du meinst :(
Danke für den Hinweis
Hi, hab noch ein Problem mit einer readingsGroup,
beim TV Programm werden einige Senungsnamen falsch dargestellt und die Überschriften sollten komplett Gelb sein, aber nur "Programme" wird gelb dargestellt, sowie das das Logo von 13th Street nich nicht funktioniert.
Wenn ich wie hier 13th STreet im nameIcon Attribut mit angebe, dann wird garkein Icon mehr angezeigt, wenn ich es entferne, werden alle ausser 13thStreet angezeigt, was könnte da falsch sein? Das Icon liegt im richtigen Verzeichniss und heisst 13thstreet.png
Internals:
DEF <Programm>,<Jetzt>,<Dann>,<Uhrzeit>,<PrimeTime>
TV_Programme_next:13THSTREET@TV_Programme,13THSTREET_next,13THSTREET_next_time,13THSTREET_abend@TV_Programme_abend
TV_Programme_next:Sat1@TV_Programme,Sat1_next,Sat1_next_time,Sat1_abend@TV_Programme_abend
TV_Programme_next:Pro7@TV_Programme,Pro7_next,Pro7_next_time,Pro7_abend@TV_Programme_abend
TV_Programme_next:RTL@TV_Programme,RTL_next,RTL_next_time,RTL_abend@TV_Programme_abend
TV_Programme_next:ARD@TV_Programme,ARD_next,ARD_next_time,ARD_abend@TV_Programme_abend
TV_Programme_next:ZDF@TV_Programme,ZDF_next,ZDF_next_time,ZDF_abend@TV_Programme_abend
TV_Programme_next:Sport1@TV_Programme,Sport1_next,Sport1_next_time,Sport1_abend@TV_Programme_abend
TV_Programme_next:rtl2@TV_Programme,rtl2_next,rtl2_next_time,RTL2_abend@TV_Programme_abend
TV_Programme_next:KABEL_1@TV_Programme,KABEL_1_next,KABEL_1_next_time,Kabel1_abend@TV_Programme_abend
TV_Programme_next:VOX@TV_Programme,VOX_next,VOX_next_time,VOX_abend@TV_Programme_abend
NAME TV_Programm
NR 195
NTFY_ORDER 50-TV_Programm
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
TV_Programme_next 1
Content2:
TV_Programme 1
TV_Programme_abend 1
DEVICES:
ARRAY(0x2ee2348)
ARRAY(0x17801c0)
ARRAY(0x35c3af8)
ARRAY(0x345d8c0)
ARRAY(0x2f15808)
ARRAY(0x36d9228)
ARRAY(0x2f04258)
ARRAY(0x312a510)
ARRAY(0x2f011d8)
ARRAY(0x1b6dfe8)
ARRAY(0x2ee1c40)
DEVICES2:
ARRAY(0x2ee2348)
ARRAY(0x17801c0)
ARRAY(0x35c3af8)
ARRAY(0x345d8c0)
ARRAY(0x2f15808)
ARRAY(0x36d9228)
ARRAY(0x2f04258)
ARRAY(0x312a510)
ARRAY(0x2f011d8)
ARRAY(0x1b6dfe8)
ARRAY(0x2ee1c40)
ARRAY(0x17c36c8)
ARRAY(0x179aae0)
ARRAY(0x345e528)
ARRAY(0x2f01b50)
ARRAY(0x35b9bf8)
ARRAY(0x1b6e7c8)
ARRAY(0x345e798)
ARRAY(0x282f050)
ARRAY(0x2f39210)
ARRAY(0x345e570)
ARRAY(0x2efae10)
ARRAY(0x3549970)
ARRAY(0x36edc38)
ARRAY(0x35ba6a8)
ARRAY(0x28411c0)
ARRAY(0x2bce310)
ARRAY(0x2ed4c78)
ARRAY(0x345dad8)
ARRAY(0x2eec7b0)
ARRAY(0x2f08898)
Fhem:
lastDefChange 25
last_update 1428224068.21534
Helper:
DEF
commands {"set Senderwechsel %READING"}
nameIcon { 13THSTREET => '13thstreet', Pro7 => 'pro7', Sat1 => 'sat1', RTL => 'rtl', Sport1 => 'sport1', ZDF => 'zdf', ARD => 'ard',rtl2 => 'rtl2',KABEL_1 => 'kabel1',VOX => 'vox' }
nameStyle style="color:yellow;font-weight:bold"
Attributes:
commands {"set Senderwechsel %READING"}
fp_Reciever 272,831,0,
group TV_Programm
nameIcon { 13THSTREET => '13thstreet', Pro7 => 'pro7', Sat1 => 'sat1', RTL => 'rtl', Sport1 => 'sport1', ZDF => 'zdf', ARD => 'ard',rtl2 => 'rtl2',KABEL_1 => 'kabel1',VOX => 'vox' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
style style="width:1000px;color:white;font-size:18px"
Danke
EDIT
Hab dann im Log auch diese Meldung
2015.04.05 10:54:28.143 3: TV_Programm: syntax error at (eval 23760) line 1, near "13THSTREET"
2015.04.05 10:54:28.219 2: syntax error at (eval 23765) line 1, near "13THSTREET"
2015.04.05 10:54:28.220 2: syntax error at (eval 23766) line 1, near "13THSTREET"
alles links vom => muss in jeweils in anführungszeichen. dabei gibt es nur die ausnahme wenn perl es eindeutig als string erkennt. das ist bei einem wort das mit einer zahl anfängt nicht der fall. also in nameIcon das reading links vom => in anführungszeichen setzen.
gruss
andre
Ich stehe gerade ein bisschen auf dem Schlauch. Und zwar versuche ich gerade, in einer RG für einen dummy switch lediglich die webCmds "on" und "off" darzustellen. Das konkrete reading, bzw. der STATE interessiert mich nicht, weil ich das eigentlich nur brauche, um ein notfiy device zu triggern.
Um das mal konkret zu beschreiben: Ich steuere unsere Heizungen per MAX! und möchte jetzt die Funktionalität des Eco-Tasters emulieren. Also quasi zwei "Tasten", die alle Geräte entweder in den "Auto" oder "Eco" Modus schalten. Dank des Wikis und Forums habe ich bereits den physischen Eco-Taster zum Laufen bekommen, dh. die Logik funktioniert bereits, nur an der Darstellung hapert es.
Ich habe mir jetzt einen dummy angelegt, auf dessen State-Änderungen ("Eco" und "Auto") ich per notify reagiere. Hier mal dessen config:
Internals:
NAME Fake_Eco
NR 140
STATE Eco
TYPE dummy
Readings:
2015-04-06 01:53:31 state Eco
Attributes:
devStateIcon Eco:time_eco_mode Auto:time_eco_mode
room Wohnung
setList state:Eco,Auto
webCmd Eco:Auto
Jetzt interessiert mich dessen State aber überhaupt nicht, weil es mir eigentlich nur darum geht, dem Benutzer eine Möglichkeit zu geben, per Klick Events zu generieren, die dann die entsprechenden notify-devices triggern.
Was ich bis jetzt - mal so grob in ASCII-Art dargestellt - hinbekomme ist:
| <Symbol> | Soll Manu | Soll Auto |
| Wohnung | <Dropdown> | <Dropdown> |
Was ich gerne hätte wäre:
| <Symbol> | Soll Manu | Soll Auto | Eco Switch |
| Wohnung | <Dropdown> | <Dropdown> | on off |
Der Grund, weshalb mich der State meines "Fake_Eco"-Switches nicht interessiert, ist, weil der ja in der Zwischenzeit entweder durch den physischen Eco-Switch oder durch interaktion mit einem Thermostat bzw. Wandthermostat verändert worden sein könnte...
Naja, ich hoffe hier nicht ganz offtopic zu sein (immerhin kriege ich es ja auch mit FHEMWEB nicht hin, so einen Pushbutton darzustellen) :/
Und wenn Du den webcmd des Dummy in on:off änderst, mit setList diese beiden Optionen zulässt als state und das dann in die RG einbindest?
Zitat von: justme1968 am 05 April 2015, 14:09:29
alles links vom => muss in jeweils in anführungszeichen. dabei gibt es nur die ausnahme wenn perl es eindeutig als string erkennt. das ist bei einem wort das mit einer zahl anfängt nicht der fall. also in nameIcon das reading links vom => in anführungszeichen setzen.
gruss
andre
Super das wars, vielen Dank, aber woran kann das noch liegen?
Zitatbeim TV Programm werden einige Senungsnamen falsch dargestellt und die Überschriften sollten komplett Gelb sein, aber nur "Programme" wird gelb dargestellt, sowie das das Logo von 13th Street nich nicht funktioniert.
Zitat von: Motivierte linke Hände am 06 April 2015, 09:49:17
Und wenn Du den webcmd des Dummy in on:off änderst, mit setList diese beiden Optionen zulässt als state und das dann in die RG einbindest?
Dann wird mir halt "on" bzw. "off" je nach gelesenem Status angezeigt. Durch einen Klick kann ich dann halt zwischen den beiden Stati hin- und herschalten. ICh glaube, es ist ein bisschen egal, ob 'state' jetzt zwischen "eco" und "auto" oder "on" und "off" geschaltet werden kann. Eigentlich will ich ja nur einen klickbaren Trigger darstellen ;)
Lg,
Markus
@Andre
Hallo Andre, ich habe mir für einen Floorplan eine readingsGroup erstellt welche nur 3 Elemente enthält. Auf einem 14 Zoll Lenovo Tablet laufen 2 Floorplanseiten welche über JavaScript alle 30 sec. wechseln und auf der 2. Seite nur die aktuelle Zeit, die Temperatur/Luftfeuchte und die Regenmenge/Tag anzeigt. Über eine eigene css habe ich style und color angepasst:
#Zeit_dummy {font-size:152px; color: #3A5FCD; font-weight: bold; }
#Lenovo_Garten_dummy {font-size:56px; color: #FF7F24; font-weight: bold; }
#Lenovo_Regen_dummy {font-size:56px; color: #FF7F24; font-weight: bold; }
Leider funktioniert so ein text-align: center nicht um die 3 Zeilen zentriert darzustellen. Aus dem Grund die readingsGroup:
define Lenovo_Tab_Site2 readingsGroup Zeit_dummy:.* Lenovo_Garten_dummy:.* Lenovo_Regen_dummy.*
attr Lenovo_Tab_Site2 DbLogExclude .*
attr Lenovo_Tab_Site2 noheading 1
attr Lenovo_Tab_Site2 nonames 1
attr Lenovo_Tab_Site2 notime 1
attr Lenovo_Tab_Site2 room Test
attr Lenovo_Tab_Site2 valueStyle style="text-align:center"
style Attribute (font-size und color) wirken sich auf die gesamte readingsGroup aus, nicht auf einzelne Lines.
Wie ist es nun möglich die Ausgabe wie im Screenshot hinzubekommen (der Screenshot ist noch mit der css und man sieht, dass die Textzeilen nicht zentriert untereinander stehen) Jeh nach Inhalt "wandert" die Darstellung ja aus der Mitte.
Im screenshot2 ist die jetzige readingsGroup zu sehen, dabei sollte:
Zeile 1 in font-size 152px color #3A5FCD und font-weight bold
Zeile 2 in font-size 56px color #FF7F24 und font-weight bold
Zeile 3 in font-size 56px color #FF7F24 und font-weight bold
dargestellt werden.
Wie kann ich das erreichen?
VG
Frank
Zitat von: Vrob01 am 06 April 2015, 23:48:52
Dann wird mir halt "on" bzw. "off" je nach gelesenem Status angezeigt. Durch einen Klick kann ich dann halt zwischen den beiden Stati hin- und herschalten. ICh glaube, es ist ein bisschen egal, ob 'state' jetzt zwischen "eco" und "auto" oder "on" und "off" geschaltet werden kann. Eigentlich will ich ja nur einen klickbaren Trigger darstellen ;)
Dann habe ich offenbar Probleme zu verstehen, was genau Du möchtest. Ein klickbares Icon ginge ja über devStateIcon...?
leider werden style Attribute des dummy devices nicht auf die readingsGroup vererbt. Siehe Screenshot:
P.S. OK, hatte das column Style Attribut übersehen, damit scheint es dann wohl zu funktionieren
VG
Frank
du kannst entweder mit css arbeiten und dann die readingsGroup per css stylen oder du kannst die diversen style attribute der readingsGroup verwenden. unter umständen kann man beides mischen wenn man genau weiss was und wie.
das stylen der quell devices per css hat keinen einfluss auf die readingsGroup.
für das was du möchtest ist es am einfachsten cellStyle zu verwenden und mit r:0 r:1 und r:2 die kompletten drei zeilen zu stylen.
gruss
andre
Danke Andre, da war ich gerade drann. Leider sehe ich nicht wie die einzelnen Columns getrennt werden müssen:
attr Lenovo_Tab_Site2 cellStyle { "r:1" => 'style="color:#3A5FCD";"font-size:152px"';"r:2" => 'style="color:#FF7F24";"font-size:56px"';"r:3" => 'style="color:#FF7F24";"font-size:56px"' }
soweit war ich bis eben aber leider läuft es so nicht.
P.S. Coding ist aus der DEF der readingsGroup
VG
Frank
etwa so:attr Lenovo_Tab_Site2 cellStyle { "r:1" => 'style="color:#3A5FCD;font-size:152px"',"r:2" => 'style="color:#FF7F24;font-size:56px"',"r:3" => 'style="color:#FF7F24;font-size:56px"' }
die teile die überall gleich sind kannst du in das globale style attribut der readingsGroup rausziehen.
attr Lenovo_Tab_Site2 style="text-align:center;background: #111111;"
wobei center im floorplan normalerweise sowieso standart ist.
gruss
andre
Aus irgendeinem Grund funktioniert das nicht. Ich hatte das vorhin schon so wie du es angeben hast. Anbei ein Screenshot, im oberen Bereich die readingsGroup.
Und aus der fhem.cfg:
define Lenovo_Tab_Site2 readingsGroup Zeit_dummy:.* Lenovo_Garten_dummy:.* Lenovo_Regen_dummy.*
attr Lenovo_Tab_Site2 DbLogExclude .*
attr Lenovo_Tab_Site2 cellStyle { "r:1" => 'style="color:#3A5FCD;;font-size:152px"';;"r:2" => 'style="color:#FF7F24;;font-size:56px"';;"r:3" => 'style="color:#FF7F24;;font-size:56px"' }
attr Lenovo_Tab_Site2 nonames 1
attr Lenovo_Tab_Site2 notime 1
attr Lenovo_Tab_Site2 room Test
attr Lenovo_Tab_Site2 valueStyle style="text-align:center"
VG
Frank
sorry. oben war noch ein tippfehler und ein copy&paste fehler drin. hab es oben geändert bei mir geht es damit.
gruss
andre
Das Anführunszeichen bei column 2, dass hatte ich schon geändert. Kopiere den Code gleich nochmal.
Danke dir Andre, jetzt läuft es. Schönen Abend noch.
VG
Frank
Hallo,
bei mir funktionieren cellStyle bzw. nameStyle nicht mehr.
Internals:
DEF
MeinWetter:<Heute>,fc2_day_of_week,fc3_day_of_week,fc4_day_of_week,fc5_day_of_week
MeinWetter:fc1_icon,fc2_icon,fc3_icon,fc4_icon,fc5_icon
MeinWetter:fc1_high_c,fc2_high_c,fc3_high_c,fc4_high_c,fc5_high_c
MeinWetter:fc1_low_c,fc2_low_c,fc3_low_c,fc4_low_c,fc5_low_c
Wetter_PP:fc0_chOfRainDay,fc1_chOfRainDay,fc2_chOfRainDay,fc3_chOfRainDay,fc4_chOfRainDay
NAME RG_MeinWetter
NR 603
NTFY_ORDER 50-RG_MeinWetter
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
MeinWetter 1
Wetter_PP 1
Content2:
DEVICES:
ARRAY(0x15e0d90)
ARRAY(0x1313a30)
ARRAY(0x1ad2be8)
ARRAY(0x22b7c58)
ARRAY(0x22d4c90)
Fhem:
lastDefChange 53
last_update 1428767148.32525
Helper:
DEF
nameStyle style="text-align:center"
valueIcon {'%VALUE'}
valueStyle style="text-align:right"
Valueformat:
fc0_chOfRainDay %.0f%
fc1_chOfRainDay %.0f%
fc1_high_c %.0f°C
fc1_low_c %.0f°C
fc2_chOfRainDay %.0f%
fc2_high_c %.0f°C
fc2_low_c %.0f°C
fc3_chOfRainDay %.0f%
fc3_high_c %.0f°C
fc3_low_c %.0f°C
fc4_chOfRainDay %.0f%
fc4_high_c %.0f°C
fc4_low_c %.0f°C
fc5_high_c %.0f°C
fc5_low_c %.0f°C
Attributes:
fp_Tablet 600,-13,0,,
fp_Test 600,-13,0,,
nameStyle style="text-align:center"
noheading 1 #damit die Überschrift ausgeblendet wird
nolinks 1 #Die Namen nicht als Links
nonames 1
room Wetter
valueFormat {"fc1_low_c" => "%.0f°C", "fc1_high_c" => "%.0f°C", "fc2_low_c" => "%.0f°C", "fc2_high_c" => "%.0f°C", "fc3_low_c" => "%.0f°C", "fc3_high_c" => "%.0f°C", "fc4_low_c" => "%.0f°C", "fc4_high_c" => "%.0f°C", "fc5_low_c" => "%.0f°C", "fc5_high_c" => "%.0f°C", "fc0_chOfRainDay" => "%.0f%", "fc1_chOfRainDay" => "%.0f%", "fc2_chOfRainDay" => "%.0f%", "fc3_chOfRainDay" => "%.0f%", "fc4_chOfRainDay" => "%.0f%", }
valueIcon {'%VALUE'}
valueStyle style="text-align:right"
Die Überschrift ist nicht zentriert und die Werte nicht rechtsbündig ...
Ideen ?
Gruss
Hi,
ich hab nach jedem neustart diese Meldung im Log
2015.04.17 19:03:01.796 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 734
in 734 steht
Zitat$v = sprintf( $value_format, $v );
Hallo,
ich habe eine readingsgroup in einem Raum eingefügt. Nun möchte ich, dass die readingsgroup ganz oben vor den anderen Groups angezeigt wird.
Ist das möglich?
Ja klar, hat aber nix mit readingsGroup zu tun.
Du kannst alle Devices mit dem attribut "sortBy" für die Anzeige in FHEMWEB sortieren. Siehe commandref unter FHEMWEB.
Danke für die schnelle Antwort, aber bei mir funktioniert das nicht ... oder ich stehe auf dem Schlauch?
Siehe Anhang
Hm, eigentlich nicht. Bin der Meinung das müsste so stimmen. Da kann ich Dir grad nicht weiter helfen.
Worauf bezieht sich das. sortby=6. ?
Direkt auf sz_Rollo
Äh, warte mal. Du musst das sortby natürlich der ReadingsGroup zuweisen, wenn Du die eine ReadingsGroup vor der andern haben willst ;)
Hast Du das so?
Zitat von: Joker am 17 April 2015, 22:05:16
Äh, warte mal. Du musst das sortby natürlich der ReadingsGroup zuweisen, wenn Du die eine ReadingsGroup vor der andern haben willst ;)
Hast Du das so?
Genau das meint ich ;)
Das UNIRoll ist aber keine ReadingsGroup, sondern ein ganz normales Device.
Zitat von: Dduieh am 17 April 2015, 22:35:06
Das UNIRoll ist aber keine ReadingsGroup, sondern ein ganz normales Device.
du kannst in den Räumen nichts sortieren, da gibt es hier im Forum schon diverse Wünsche...!
In einer Group geht das mit sortby...
man kann sowohl in der raum übersicht als auch innerhalb einer gruppe (und auch innerhalb einer readingsGroup) mit sortby sortieren.
das problem hier ist das es zwei arten von fhem devices gibt. die 'normalen' und die 'at end'. zu letzteren gehört alles was kein device icon hat sondern direkt html zur darstellung verwendet. also vor allem svg, weblink und readingsGroup.
beim seitenaufbau werden zuerst alle 'normalen' devices untereinander korrekt sortier angezeigt und danach alle 'at end' devices. diese wiederum untereinander sortiert.
aber beide arten werden nicht vermischt.
gruss
andre
@Tommy82: du hast einen wert der nicht als zahl erkannt wird. du musst valueFormat entsprechend wählen das dieser fall getrennt berückichtigt wird.
gruss
andre
Hast du einen Tip für mich wie ich den relativ einfach finden kann? Da ich mittlerweile einige rd's im einsatz habe
Hallo, Andre. Habe folgendes Attribut in readingsGroup:
attr Lenovo_Tab_Site2 cellStyle { "r:1" => 'style="color:#3A5FCD;;font-size:152px"',"r:2" => 'style="color:#FF7F24;;font-size:56px"',"r:3" => 'style="color:#FF7F24;;font-size:56px"'
Soweit, sogut ABER nach einem Server Neustart bleibt davon in der config nur:
{ "r:1" => 'style="color:
und der Rest ist weg. Schon mehrfach getestet und natürlich mit save config gesichert.
Hat da jemand einen Tip?
P.S. es ist egal ob das cellStyle Attribut in der Webansicht oder direkt in der config angelegt wird, nach einem shutdown ist es nur noch "verstümmelt" vorhanden.
VG
Frank
Hallo Frank,
evtl. alte fhem.pl?
Siehe http://forum.fhem.de/index.php/topic,9965.msg265204.html#msg265204.
Gruß, Christian
Joh, kann z.Zt. Nicht updaten da WVC sonst nicht mehr läuft und ich warten will bis das Modul gefixt ist.
Danke,
VG
Frank
du kannst entweder farbnamen verwenden oder den inhalt des attributs in eine sub in 99_myUtils auslagern und diese nur aufrufen.
gruß
andre
Das mit der sub hatte ich schon einmal in Angriff genommen aber bin dabei leider an der Syntax gescheitert was das setzen von einfachen und doppelten Anführungszeichen angeht.
Das geht nicht:
sub cell()
{
fhem "attr Lenovo_Tab_Site2 cellStyle { 'r:1' => 'style=color:#3A5FCD;font-size:152px','r:2' => 'style=color:#FF7F24;font-size:56px','r:3' => 'style=color:#FF7F24;font-size:56px' }";
}
VG
Frank
du musst keinen fhem aufruf machen. die sub gibt einfach eine referenz auf den hash zurück.
such mal etwas weiter oben im thread. da gibt es beispiele.
gruß
andre
oder du gibst den string direkt zurück: sub cell()
{
return "{ 'r:1' => 'style=color:#3A5FCD;font-size:152px','r:2' => 'style=color:#FF7F24;font-size:56px','r:3' => 'style=color:#FF7F24;font-size:56px' }";
}
hier ist noch eine variante beschrieben: http://forum.fhem.de/index.php/topic,30959.msg235755.html#msg235755 (http://forum.fhem.de/index.php/topic,30959.msg235755.html#msg235755).
gruss
andre
Kurze Zwischenfragen - SUFU etc. erfolglos:
1. Ich möchte eine readingsGroup platzieren, mit der ich auf kritische Batteriezustände in allen Geräten hingewiesen werde. Das geht mit der Def .*:battery
ja prima. Auswahl der Anzeigen, Formatierung, Farbe - alles klar.
Wie kann ich erreichen, dass nur Geräte in der Übersicht erscheinen, die einen kritischen Batteriezustand haben - also als reading battery den Wert "low". Ich finde dazu nix.
2. In der <devspec> kann ich ja auch Internals als Kriterium angeben, etwa "TYPE=CUL_HM". Leider liefern die state-Sensoren in HM auch in den Sensorkanälen ein battery-reading, so dass ich von einem Gerät bei acht Kanälen neun Batteriemeldungen bekomme. Ich dachte hier also, auf ein INTERNAL zu filtern, dass nur die Geräte haben, konkret: IODev. Da könnte ich ja auch auf HM filtern (konkret auf das Device "HMLAN1", mehr habe ich bis jetzt nicht:
define battStatus readingsGroup IODev=HMLAN1:battery
Die Liste ist dann aber leer.
Mit IODev=HM.*:battery ebenso, aber - jetzt kommt's: mit IODev=H.*:battery werden alle Geräte (ohne Kanäle) angezeigt, wie ich möchte. Gleiches passiert mit IODev=.*:battery. Allerdings werden in beiden Fällen auch FHTs gelistet, die als IODev den CUL1 haben - aber wo bitte ist das H in CUL1?
Wo ist der Denkfehler?
zu 1.: für alle geräte deren zustand nicht kritisch ist in valueFormat undef zurück geben. das gerät wird dann ausgelassen. wichtig: wenn sich während die readingsGroup angezeigt wird der zustand auf kritisch ändert kann das gerät nicht per longpoll wieder eingeblendet werden sondern nur durch reload. wenn das einblenden auch per longpoll gehen soll musst du per cellStyle die höhe der zeile auf 0 setzen.
zu 2.: das mit IODev geht nicht weil das intern kein name ist sondern eine referenz auf eine interne datenstruktur. das H.* geht mehr oder weniger nur zufällig und macht nicht das was du erwartest.
du kannst aber statt über das internal IODev über das attribut IODev gehen:define battStatus readingsGroup IODev&HMLAN1:battery
ansonsten schau mal hier: http://forum.fhem.de/index.php/topic,31792.msg286846.html#msg286846 (http://forum.fhem.de/index.php/topic,31792.msg286846.html#msg286846) da ist beschrieben wie man z.b. über den den TYPE CUL_HM und das subtype attribut (oder mehr als ein internal und attribut) gehen kann.
gruss
andre
ich habe eben eine version eingecheckt bei der man auch auf das internal IODev filtern kann.
ab morgen im update.
gruss
andre
Zitat von: justme1968 am 22 April 2015, 17:13:52
zu 1.: für alle geräte deren zustand nicht kritisch ist in valueFormat undef zurück geben.
{ ($VALUE eq 'low')?"niedrig":undef }
Funktioniert. Und gleich eingedeutscht. Prima!
Da die Seite nur gelegentlich aufgerufen wird, ist die eventuelle Nichtaktualität hier gar kein Problem. Aber Danke für den Hinweis.
Zitatzu 2.: das mit IODev geht nicht weil das intern kein name ist sondern eine referenz auf eine interne datenstruktur.
Bäh. Es steht aber so in den Internals. Da dachte ich ehmd.
Zitatdas H.* geht mehr oder weniger nur zufällig und macht nicht das was du erwartest.
Ich habe ja nicht den blassesten Schimmer gehabt. Aber nun lassen wir es ruhen.
Zitatdu kannst aber statt über das internal IODev über das attribut IODev gehen:define battStatus readingsGroup IODev&HMLAN1:battery
Das hatte ich erst mal übersehen, dass das IODev auch dort steht. Mit
IODev&HMLAN.:battery IODev&CUL.:battery
erwische ich wohl alle Geräte die über mehrere HMLANs oder CULs laufen - vorausgesetzt ich habe nicht mehr als je neun davon ... Mit je einem gehts jedenfalls.
Den Hinweis auf :FILTER nehme ich mir dann auch mal zu Herzen. Spannende Sache das, wie kam ich bisher ohne aus? ;D Vielen DANK!
Mist. Einen noch:
Wieso filtert IODev&HMLAN.:FILTER=serialNr!=KEQxxxxxxx:battery IODev&CUL.:battery
(xxxxxxx=Seriennummer) nicht nur das eine Gerät, sondern alle aus der Anzeige? Mit
TYPE=CUL_HM:FILTER=serialNr!=KEQxxxxxxx:battery IODev&CUL.:battery
funktioniert's hingegen (obwohl ich ja da wieder die Kanäle dabei habe die ich nicht wollte). Hat das was mit den unterschiedlchen Suchbereichen (Internals, Attributs) zu tun?
Hintergrund: Der betreffende Aktor wird mit knapp 5V netzversorgt und meldet trotzdem ein Batterieproblem, weil sich die Schwelle nicht unter 5V setzen lässt...
das liegt daran das die & variante readingsGroup spezifisch ist.
FILTER verwendet das generelle devspec format das in der commandref beschreiben ist hier gibt es die & variante nicht
beide lassen sich leider nicht kombinieren.
ich habe vorhin einen patch gepostet damit das IODev in den internals auch per devspec und list funktioniert. wenn rudi das übernimmt kannst du IODev=... auch mit FILTER verwenden.
bis dahin kannst du bei TYPE=... bleiben und in valueFormat prüfen ob AttrVal($DEVICE,"IODev",undef) vorhanden ist und wenn nicht undef zurück geben. dann wird das device auch übersprungen.
gruss
andre
rudi hat es eingecheckt. sollte als ab morgen gehen.
gruß
andre
Zitat von: justme1968 am 23 April 2015, 08:28:17
...sollte als ab morgen gehen.
Genau. Heute geht's nämlich noch nicht ;)
Wie ich in valueFormat die Ausfilterung von "ok" und "Nicht-Geräten" und der einen Ausnahme gleichzeitig löse, dazu fehlte mir gestern der Hirnschmalz, aber es bleibt natürlich Plan B. Eigentlich ist es ganz klar für die Übersichtsseite (nur lowBatt: "ok" oder Attribut "IODev" nicht vorhanden oder serialNr=X > undef, sonst "niedrig"), aber in der Gesamtübersicht bräuchte ich eine Verkettung mit drei Ausgaben (Nicht-Gerät und Ausnahmegerät > undef, der Rest in "ok" oder "niedrig je nach Value). Zur Not müsste ich da halt "low" akzeptieren, geht auch.
Zitataber es bleibt natürlich Plan B. Eigentlich ist es ganz klar für die Übersichtsseite (nur lowBatt: "ok" oder Attribut "IODev" nicht vorhanden oder serialNr=X > undef, sonst "niedrig"), aber in der Gesamtübersicht bräuchte ich eine Verkettung mit drei Ausgaben (Nicht-Gerät und Ausnahmegerät > undef, der Rest in "ok" oder "niedrig je nach Value). Zur Not müsste ich da halt "low" akzeptieren, geht auch.
hmmmm... *kopfkratz* ...hmmmm. ???
Hallo zusammen,
ich möchte gern in Abhängigkeit des Zustandes eines readings einen Teil der restlichen readings (bzw all)
ausblenden.
die rg sieht so aus
define rg_text readingsGroup squeeze_pi3:currentTitle,currentArtist
attr rg_text group Titel_und_Interpret
attr rg_text noheading 1
attr rg_text nonames 0
attr rg_text notime 1
attr rg_text room SB_PLAYER
attr rg_text style style="color:blue;;text-align:center;;font-size:15px"
Hier wird also der Name des Device selbst sowie der Titel und der Artist angezeigt!
wenn der Player (squeeze_pi3) ausgeschaltete wird, sollen die beiden readings Titel und Artist ausgeblendet werden. Mein Ansatz
attr rg_text valueFormat {if($READING eq "state" && $VALUE eq "off" ) currentTitle => "", currentArtist => "" }
oder
attr rg_text valueFormat {if( ReadingsVal(squeeze_pi3, "state", "off") eq "off" ) currentTitle => "", currentArtist => "" }
scheint irgendwie ein Problem zu haben ???? habe schon gesucht und Wiki (mehrfach) gelesen.
hat jemand eine Idee.....
Danke vorab
kvo1
die kannst du variante mit perl code und die hash variante nicht auf diese art mischen. das geht nur anders rum. also etwa so:attr rg_text valueFormat { currentTitle => '{return "" if( ReadingsVal($DEVICE, "state", "off") eq "off" ); return $VALUE;}', currentArtist => '{return "" if( ReadingsVal($DEVICE, "state", "off") eq "off" ); return $VALUE;}' }
wenn es sowieso nur die beiden readings sind geht auch ein einfaches:attr rg_text valueFormat {return "" if( ReadingsVal($DEVICE, "state", "off") eq "off" ); return $VALUE;}
wenn dein player aber ausgeschaltet wird während die readingsGroup angezeigt wird würde sie in beiden fällen nicht aktualisiert weil die readingsGroup nicht weiss das die anzeige der beiden readings von state abhängt.
viel besser ist es wenn du in einem notify auf off direkt im device die beiden readings mit setreading korrigierst. dann bekommt es auch die readingsGroup mit und alles geht automatisch.
gruss
andre
Hallo Andre,
hier .....
attr rg_text valueFormat { currentTitle => '{return "" if( ReadingsVal($DEVICE, "state", "off") eq "off" ); return $VALUE;}', currentArtist => '{return "" if( ReadingsVal($DEVICE, "state", "off") eq "off" ); return $VALUE;}' }
kam eine Fehlermeldung...
lag an den fehlenden Semikolon .....
attr rg_text valueFormat { currentTitle => '{return "" if( ReadingsVal($DEVICE, "state", "off") eq "off" );; return $VALUE;}', currentArtist => '{return "" if( ReadingsVal($DEVICE, "state", "off") eq "off" );; return $VALUE;}' }
Zitatwenn dein player aber ausgeschaltet wird während die readingsGroup angezeigt wird würde sie in beiden fällen nicht aktualisiert weil die readingsGroup nicht weiss das die anzeige der beiden readings von state abhängt.
viel besser ist es wenn du in einem notify auf off direkt im device die beiden readings mit setreading korrigierst. dann bekommt es auch die readingsGroup mit und alles geht automatisch.
genau das war dann auch das Problem, es wird nicht aktualisiert !
Habe das Ein- / Ausblenden der rgr über ein DOIF gelöst !
Danke und Gruss
klaus
die 'fehlen' nur wenn du es direkt in der config einträgst. wenn du es über die detail ansicht eingibt passt es.
gruss
andre
Zitat von: justme1968 am 29 April 2015, 20:04:49
die 'fehlen' nur wenn du es direkt in der config einträgst. wenn du es über die detail ansicht eingibt passt es.
gruss
andre
:-[ erwischt :-[
gruss klaus
Hi,
bestimmt nur eine Kleinigkeit für euch:
Meine Stromverbrauchstabelle soll auf Readings des statistics-Modul zugreifen (stat... u. stat...Last). Im Bild Soll_mit Markierung.jpg habe ich die Werte markiert, die ich gerne hätte.
In attr valueFormat habe ich deshalb versucht spaltenweise zu formatieren: {c:1 => (split(' ',$VALUE))[1], c:2 => (split(' ',$VALUE))[1], c:3 => (split(' ',$VALUE))[4]}
(geht nicht)
Bei nur einem Spalten-Format {c:1 => (split(' ',$VALUE))[1]}
werden alle Werte gleich formatiert (Ist2.jpg) - unabhängig von der Spalte :( .
Gibts noch einen Trick?
Gruß
Karlheinz
Hallo Andre,
baue gerade eine zentrale Konsole für meine Sonos-Player auf Basis einer readingsGroup und brauche mal einen Tipp.
Die Bedienungskonsole soll SonosCC heißen und oben soll über eine Auswahlliste (Menü) ein Player ausgewählt werden.
Der Rest darunter soll den Status und die Bedienungselemente des ausgewählten Players anzeigen.
Also so was in dem Stil:
define SonosCC-rg readingsGroup SonosCC:Master <{ReadingsVal('SonosCC','Master','nicht gefunden');;}>:Volume,Bass,Treble
In dem reading Master von SonosCC steht dann Player1...Player3, der im Menü ausgewählte Player.
Player1...3 sind vom Typ SONOSPLAYER.
Ich habe jetzt die Befürchtung, dass über die Indirektion (Devicename kommt über die Funktion ReadingsVal longpoll nicht mehr funktioniert, d.h. wenn sich bspw. Volume des ausgewählten Players ändert, dass dies in der rg nicht aktualisiert wird.
Wenn dem so sein sollte, sehe ich zwei Workarounds:
1. Voluem,Bass,Treble usw. werden readings von SonosCC und ein notify auf alle SONOSPLAYER überträgt die Änderungen der Werte für den gerade ausgewählten Player in die SonosCC.
2. Die rg-Definition sieht so aus:
define SonosCC_rg readingsGroup SonosCC:Master Player1:Volume,Bass,Treble Player2:Volume,Bass,Treble..... Playern:Volume,Bass,Treble
Es wird dann über ein valueFormat für Volume,Bass,Treble eine Funktion gebaut, die für alle Player undef zurückliefert, bis auf den gerade in SonosCC:Master ausgewählrten Player.
Ein bißerl Overhead, aber longpoll müsste ja dann funktionieren.
Gibt es noch eine andere Mölgichkeit?
P.S.: Da kommt noch mehr hinein:
Gruppieren und Ungruppieren von Playern
Auswahl von Playlisten, Favorieten und Radiosendern
Navigation über die Musikbibliothek per Genre, Interpret oder Album....
Gruß
Elektrolurch
longpoll funktioniert für solche 'indirekten' readings nur dann wenn du das reading von dem sie abhängen auch mit angibst. einfach mit @ an die schliessende geschweifte klammer angehängt. vor das grösser zeichen.
die <{...}@reading> variante ist aber eigentlich 'veraltet' das meiste geht mit der neuen !reading variante besser. diese kann man auch von aussen durch ein trigger <rg> <reading> zur aktualisierung zwingen.
ansonsten gibt es über die berechnung erweiterungen aus dem anderen thread bald die möglichkeit abhängigkeiten von zellen innerhalb einer readingsGroup anzugeben und bei änderungen einer zelle automatisch änderungen in den abhängigen zellen anzustossen.
schau dir auf jeden fall mal diesen beitrag hier: http://forum.fhem.de/index.php/topic,14163.msg193890.html#msg193890 (http://forum.fhem.de/index.php/topic,14163.msg193890.html#msg193890) an und frag mal bei der-Lolo nach. wir hatten genau mit so einer 'indirekten' steuerung schon angefangen. er hatte schon implementiert das man in der linken spalte das gerät auswählt und dann in der mittleren spalte steuern kann.
für die gruppierung der sonos player gibt es irgendwo im forum schon mal einen ansatz über eine readingGroup. das ist aber glaube ich auch nicht fertig geworden.
die auswahl von favoriten und radio sondern sollte kein problem sein. da gibt es schon einige beispiele. inklusive icons.
für das blättern durch die ganze bibliothek habe ich gerade etwas in arbeit das genau so ausschaut wie die auswahl in der sonos anwendung. das braucht aber noch eine weile bis es fertig ist.
gruss
andre
Hallo Andre,
danke für die Antwort.
Ich habe noch eine Bitte, ist wohl verloren gegangen.
Ich hatte doch vor einiger Zeit mal das Problem, dass ich direkt an eine readingsGroup eine Menüliste angehängt habe, um damit bspw. die Ansicht umzuschalten.
per
command {'Ansicht' => 'Ansicht:',...
Leider bringt dann die Funktion
readingsGroup_set
eine Fehlermeldung. Könntest Du am Schluß der Funktion vor der Fehlermeldung folgende Zeile einfügen:
# eigenes reading?
return undef if(exists($hash->{READINGS}{$cmd}));
return "Unknown argument $cmd, choose one of $list";
}
Danke.
Gruß
Elektrolurch
Hallo,
kann man eigentlich mit valueStyle ein anderes Reading nutzen, um z.Bsp. die Farbe zu ändern. Ich habe leider kein Beispiel gefunden.
Hintergrund ist folgender. Ein Klimalogg pro ist in fhem eingebunden und die Temperaturen der Sensoren werden im Floorplan angezeigt, ich würde gern eine andere Farbe nutzen, um anzuzeigen wenn die Batterie des Sensors alle wird. Die Temperaturen werden so von mir genutzt:
define Bienen1 readingsGroup KLIMALOGG:TempSensor4
attr Bienen1 fp_Wetter 10,570
attr Bienen1 group z_Anzeige
attr Bienen1 mapping { 'TempSensor4' => 'Bienen 1:' }
attr Bienen1 noheading 1
attr Bienen1 nolinks 1
attr Bienen1 notime 1
attr Bienen1 style style="font-size:35px"
attr Bienen1 valueFormat %.1f°C
Die Batterie hat folgendes reading "KLIMALOGG:BatterieSensor4" mit dem Wert 0 und 1.
Dank an Euch im Voraus
Steffen
@Elektrolurch: kannst du mir bitte ein kurzes beispiel mit zwei oder drei dummys dafür machen?
@privat58: ja. das geht natürlich. du brauchst etwas in der art:attr Bienen1 valueStyle { temperature => '{...}' }
und im ... teil kannst du den style mit perl code und ReadingsVal($DEVICE,'BatterieSensor4','0') bestimmen.
die wichtige einschränkung ist das der temperatur wert nicht per longpoll auf die neue farbe geändert wird wenn sich der batterie stand ändert sondern immer nur aktualisiert wird wenn sich die temperatur ändert.
wenn du die farbe auch direkt live ändern möchtest wenn sich der batterie wert ändert brauchst du noch ein notify das ein künstliches temperatur event triggert.
gruss
andre
Hallo Andre,
Zitat:
@Elektrolurch: kannst du mir bitte ein kurzes beispiel mit zwei oder drei dummys dafür machen?
...für die Ergänzung um die eine Zeile????
Wir hatten das doch schon weiter oben, da gab es ja einen Bug, wenn ein reading der readingGroup angezeigt wurde. Die Endlosschleife hast Du ja ausgebaut, jetzt geht es nur noch darum, dass beim
attr command das set funktioniert.
define myrg readingsGroup myrg:Ansicht
attr myrg commands {'Ansicht' => 'Ansicht:Normal,Expert'}
macht ja dann:
set myrg Ansicht Normal
und das wird derzeit durch die readingsGroup_set
blockiert.
Daher die Ergänzung vor der Fehlerbehandlung.
Habe die Zeile bei mir schon seit Wochen lokal in der 33_readingsGroup.pm eingefügt und funktioniert alles.
Muss nur bei jedem update die Ergänzung wieder von Hand einpflegen.
Elektrolurch
@justme1968:
Ups, jetzt bin ich überfordert, aber schön das es funktionieren kann. Wofür steht das "temperature=>"?
Es ist schwer, einen Akkuzustand "1"zu simulieren. Könnte es so funktionieren?
attr Bienen1 valueStyle { temperature => '{ReadingsVal($DEVICE,'BatterieSensor4','0')?'style="color:black"':'style="color:red"'}
Ansonsten muss ich mal schauen, ob ich noch ein paar leere Batterien habe.
Steffen
@Elektrolurch: mir ging es bei dem beispiel auch eher darum das ich was zum testen habe. die eine zeile einfügen ist meiner meinung nach nur die halbe lösung. da das set kommando dann zwar keine fehler mehr liefert aber auch nichts tut. meine idee war ein setList wie beim dummy nachzurüsten so das die readingsGroup mit dem set auch etwas vernünftiges macht. also z.b. den status intern zu setzen so das er bei einem refresh auch wieder da ist.
@privat58: das temperature muss bei dir vermutlich eher TempSensor4 heissen. es ist einfach der name des readings das angezeigt wird. so in etwa wie du es geschrieben hat sollte es funktionieren. aber du hat bei den verschachtelten anführungszeichen noch ein problem. versuch es mal so:attr Bienen1 valueStyle { TempSensor4 => '{ReadingsVal($DEVICE,"BatterieSensor4","0")?"style=\"color:black\"":"style=\"color:red\""}' }
testen kannst du das ganz einfach in dem du mit setreading das batterie reading von hand auf einen anderen wert setzt.
gruss
andre
Danke Andre,
ein attr Bienen1 valueStyle { TempSensor4 => '{ReadingsVal($DEVICE,"BatterieSensor4","0")?"style=\"color:red\"":"style=\"color:black\""}' }
führte zum Erfolg.
Steffen
Hallo andre,
ich benötige mal deine Hilfe bei einem Reading der Form <{perl}[@readings]>. In der Commandref steht weiterhin
Zitatif readings is given the perl expression will be reevaluated during longpoll updates.
.
Bedeutet dies, dass die perl expression nur aktualisiert wird, wenn das reading aktualisiert wird, ich die perl expression jedoch nicht über valueColumns oder so ansprechen kann?
Hier der konkrete Fall:
DEF
.*_Clima:<>,<{rg($DEVICE,'alias')}@alias>
valueColumns
{'alias' => 'colspan="2"'}
sub rg($$){
my $device = shift;
my $function = shift;
my $room = AttrVal($device, 'room', 'unsorted');
switch ($function) {
case 'alias' {
return (AttrVal($device, 'alias', $device));
}
}
}
Der Alias wird korrekt wiedergegeben, sofern vorhanden, nur geht er nicht über zwei Spalten.
Wie kann ich das beheben?
Grüße
Igami
die 'alte' <{perl}[@readings]> variante hat einige einschränkungen was die formatierung angeht.
wenn ich deine sub richtig verstehe willst du einfach nur den alias ausgeben? warum zeigst du ihn nicht über ?alias an ?
alias ist sowieso kein reading und würde niemals per longpoll aktualisiert.
wenn du eigenen code einbauen möchtest ist es am besten du nimmst die neue !reading variante damit kannst du ein 'pseudo' reading anzeigen das es im device nicht geben muss. also z.b. !alias. das kannst du dann mit valueFormat formatieren und ich sonst alle anderen value attribute verwenden. auch valueColumns.
gruss
andre
Zitat von: justme1968 am 11 Mai 2015, 19:41:18
wenn ich deine sub richtig verstehe willst du einfach nur den alias ausgeben? warum zeigst du ihn nicht über ?alias an ?
Wenn alias nicht gesetzt ist gibt die sub den device Namen zurück.
Habe es nun mit dem pseudoreading gelöst
DEF
.*_Clima:<>,!alias
valueFormat
{'alias' => '{rg($DEVICE,"alias")}'}
Vielen Dank für die schnelle Hilfe.
Grüße
igami
ein {'alias' => '$ALIAS'}
sollte schon reichen.
gruss
andre
Zitat von: justme1968 am 11 Mai 2015, 19:57:23
ein {'alias' => '$ALIAS'}
sollte schon reichen.
Dann wird nur $ALIAS angezeigt, wenn es keinen alias gibt.
Grüße
igami
du hast recht. die version bei der das geht ist noch nicht eingecheckt...
sorry für das durcheinander.
gruss
andre
Nun habe ich doch noch einen kleinen Knackpunkt bei dem ich nicht weiter komme:
valueFormat
{'alias' => '<a href=/fhem?detail=$DEVICE>{rg($DEVICE,"alias")}</a>'
Ich möchte ja auch gerne auf das "reading" klicken können um zu dem device zu kommen. Wie muss ich denn hier vorgehen um nun als Linknamen den Perlrückgabewert zu erhalten?
Grüße
igami
etwas in der art:valueFormat {'alias' => '{"<a href=/fhem?detail=$DEVICE>". rg($DEVICE,"alias") ."</a>"}' }
gruss
andre
Zitat von: justme1968 am 19 April 2015, 10:42:50
@Tommy82: du hast einen wert der nicht als zahl erkannt wird. du musst valueFormat entsprechend wählen das dieser fall getrennt berückichtigt wird.
gruss
andre
Kannst du mir einen Tip wie ich "einfach" rausfinden kann bei welcher meiner rd's das Problem auftitt?
Danke
Gibt es eine Möglichkeit bei einer readingsGroup die Spaltenbreite vorzugeben? Es sieht ein wenig unschön aus wenn die erste Spalte mit dem Devicenamen immer unterschiedlich breit ist.
Hallo Andre,
habe noch eine Kleinigkeit gefunden:
Wenn man bspw
define myrg readingsGroup Thermostat:desired-temp
attr myrg commands {'desired-temp' => 'desired-temp:'}
attr myrg valueSuffix {'desired-temp' => '{($VALUE=~m/on|off/)?"":" °C"}'}
funktioniert das nicht.
Möchte bei Temperaturangaben hinter dem Auswahlmenü " °C" stehen haben, bei on oder off nichts.
Grund: $VALUE enthält leider nicht desired-temp, sondern den HTML-Ausdruck für das Menü.
Und da ist die gesamte Menüliste mit allen Werten drin, also auch on und off, so dass der Ausdruck immer "wwahr" ist.
Gruß
Elektrolurch
Ich muss leider diese Frage aus dem März nochmal hochholen, weil ich das wirklich nicht hinbekomme:
Zitat von: justme1968 am 06 März 2015, 11:54:22
@Motivierte linke Hände: in $ROW hast du die nummer der aktuellen zeile. wenn du dein alles ok ganz ans ende stellst und davor alle zeilen leer sind ist $ROW == 1 (oder 2 wenn du überschriften hast). wenn nicht wurde vorher eine zeile angezeigt und du kannst das alles ok weg lassen.
Im valueFormat steht aktuell
{ rg_Meldungen_valueFormat($DEVICE,$READING,$VALUE,$ROW); }
und rg_Meldungen_valueFormat sieht so aus:
sub rg_Meldungen_valueFormat($$$$) {
my ($DEVICE,$READING,$VALUE,$ROW) = @_;
Log 1, ("rg_Meldungen_valueFormat: Gerät $DEVICE, Value >$VALUE<, Readings >$READING<, Row >$ROW<");
[...]
}
Wenn ich in diesem Sub nur die Inhalte der übergebenen Variablen logge, ist $ROW immer leer:
2015.06.14 10:40:59 1: rg_Meldungen_valueFormat: Gerät Fstr_Buero, Value >open<, Readings >state<, Row ><
2015.06.14 10:40:59 1: rg_Meldungen_valueFormat: Gerät Fstr_Gaestebad, Value >open<, Readings >state<, Row ><
2015.06.14 10:40:59 1: rg_Meldungen_valueFormat: Gerät Fstr_Garagentor, Value >closed<, Readings >state<, Row ><
@Andre: Kann ich $ROW nicht in valueFormat verwenden? Wenn nein, wie hattest Du Deinen Tipp oben gemeint, wo sollte ich das einbauen?
Danke für's Anschieben,
Christian
Hallo Andre,
die readingsGroup unterstützen ja auch die Anzeige von Attributen:
define attr_rg readingsGroup fritzbox:?verbose
Was jetzt schön wäre, wenn man Attribute auch verändern könnte:
attr attr_rg commands {'verbose' => 'verbose:'}
und aus der attrlist des Moduls die Eingabe abgeleitet würde, ähnlich wie beim set-Befehl.
Hier also: verbose:0,1,2,3,4
eine Auswahlliste
Ich würde dies für nützlich und interessant halten.
Elektrolurch
P.S.:
Wird zu #1362 vom: 09 Juni 2015, eine Anpassung geben oder muss ich einen Work-around basteln :-) ?
das mit den attributen schaue ich mir an und die änderung für aus dem anderen post kommt auch noch.
gruss
andre
Uii. Das wäre super. Bin nämlich auf den Geschmack gekommen und versuche alles eher jetzt so modulmässig zu programmieren. So manche Steuerungswerte habe ich dann in dummys als readings hinterlegt, aber eigentlich wäre es schon schicker, da Attribute draus zu machen.
für die attribute habe ich eine lösung. rudi muss noch einen drei zeiler am fhemweb javascript file einbauen und dann kommt das readingsGroup update demnächst.
für die value suffix geschichte habe ich auch eine lösung. dazu muss ich aber erst die änderungen zur 'tabellen kalkulation' einchecken. da habe ich intern auch die werte vor dem ersetzen zur verfügung.
magst du mir für die set geschichten vom 6.mai vielleicht doch noch ein beispiel machen? dann würde ich eine lösung dafür auch noch einchecken.
gruss
andre
Hallo Andre,
Zitat:
magst du mir für die set geschichten vom 6.mai vielleicht doch noch ein beispiel machen? dann würde ich eine lösung dafür auch noch einchecken.
Klar. Ist ja ganz einfach:
define myrg readingsGroup myrg:<Ansicht>,Ansicht global:?verbose
attr myrg commands {'Ansicht' => 'Ansicht:Normal,Fachmann', 'verbose' => 'verbose:'}
attr myrg room myrgtest
define myrg_not notify myrg:.* {Log(1,"$NAME $EVENT bei Ansicht -> per modify Anzeige der rg aendern");;}
"Ansicht" ist ein reading von myrg und soll per notify und "modify" die Anzeige der myrg umschalten. Hier gibt es nur die Meldung im Log (reicht ja zum Testen :D).
Derzeit führt das reading der myrg dazu, dass der set-Befehl aufgerufen wird, es dort aber nicht bekannt ist und am Ende auf die Fehlerbehandlung (Ausgabe wie bei set myrg ?) aufläuft.
Ich denke, es gibt zwei Lösungen:
1. readingsGroup_set
...
return undef if(exists($hash->{READINGS}{$cmd}));
return "Unknown argument $cmd, choose one of $list";
}
Nachteil: Das reading muss auf alle Fälle schon einmal mit
setreading myrg Ansicht Fachmann
erzeugt worden sein.
2. habe ich aber noch nicht ausprobiert
a) attrlist wird um setList erweitert
b) return "Unknown argument $cmd, choose one of $list " . AttrVal($name,'setList','');
Habe ich noch nicht ausprobiert, sollte aber funktionieren.
Um eine Anzeige zu erzwingen, wenn das reading noch nicht existiert, sollte man es dann als:
myrg:<Anzeige>,!Anzeige
definieren.
Ich habe derzeit 9 readingsGroups im Einsatz, bei denen ich die Anzeige über eine Auswahlliste modifiziere.
Gruß
Elektrolurch
ab morgen gibt es eine version in der dein valueSuffix problem behoben sein sollte, es setList und setFn attribute gibt und die commands für attribute geht.
gruss
andre
Na, dann sage ich schon mal herzlichen Dank. Ich hoffe, dass sich viele Nutzer der readingsGroup "bereichert" fühlen. Das mit den einstellbaren Attributen halte ich für eine sehr gute Sache. Und wenn man es z.B. dazu nutzt, per disable etwas ein oder auszuschalten.
Gruß
sollte ab morgen behoben sein.
gruß
andre
ps: nur zum einheiten anhängen gibt es inzwischen valueSuffix. das sollte nicht mehr über valueFormat gemacht werden.
Zitat von: justme1968 am 19 Juni 2015, 14:10:56
sollte ab morgen behoben sein.
gruß
andre
ps: nur zum einheiten anhängen gibt es inzwischen valueSuffix. das sollte nicht mehr über valueFormat gemacht werden.
Ich glaube das ist auf meinen Post bezogen, welchen ich gleich wieder gelöscht habe. Du bist schnell. :)
Habe gesehen das in einem anderen Post, ein ähnliches Problem besteht. Habe es mit $NUM lösen können.
Fehler erscheint nicht mehr.
valueSuffix schaue ich mir an.
Danke.
Vor einigen Tagen wurde dieses Modul geändert. Seitdem bekomme ich fehlermeldungen, ohne Änderungen vorgenommen zu haben.
Ich habe die neueste Version des Dashboards installiert. Vielleicht gibt es auch dabei einen Zusammenhang
Meine RG
define rg_Temperaturen readingsGroup <%temp_temperature>,<Temperatur>,<Luftfeuchte> TMP_Aussen:,temperature,humidity TMP_WZ:,temperature,humidity TMP_Ku:,temperature,humidity TMP_SZ:,temperature,humidity TMP_Bu:,temperature,humidity TMP_Bad:,temperature,humidity TMP_Ko:,temperature,humidity TMP_HF:,temperature,<>
attr rg_Temperaturen cellStyle {'style="color:yellow"'}
attr rg_Temperaturen fp_Thermometer 18,182,0,,
attr rg_Temperaturen group Temperaturen
attr rg_Temperaturen nameStyle style="color:yellow"
attr rg_Temperaturen noheading 1
attr rg_Temperaturen room Temperatur
attr rg_Temperaturen valueFormat {temperature => "%.1f °C", humidity =>"%.1f %%" }
attr rg_Temperaturen valueStyle {if($DEVICE eq "TMP_Aussen" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'} elsif($DEVICE eq "TMP_Aussen" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'} elsif($DEVICE eq "TMP_Aussen" && $READING eq "temperature" && $VALUE < 5) { 'style="color:lightblue"'} elsif($DEVICE eq "TMP_Ku" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'} elsif($DEVICE eq "TMP_Ku" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'} elsif($DEVICE eq "TMP_Ku" && $READING eq "temperature" && $VALUE < 5) { 'style="color:lightblue"'} elsif($DEVICE eq "TMP_Bad" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'} elsif($DEVICE eq "TMP_Bad" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'} elsif($DEVICE eq "TMP_Bad" && $READING eq "temperature" && $VALUE < 5) { 'style="color:lightblue"'} elsif($DEVICE eq "TMP_SZ" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'} elsif($DEVICE eq "TMP_SZ" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'} elsif($DEVICE eq "TMP_Kuehl" && $READING eq "temperature" && $VALUE > 7.5) { 'style="color:red"'} elsif($DEVICE eq "TMP_Kuehl" && $READING eq "temperature" && $VALUE > 6.4) { 'style="color:lightgreen"'} elsif($DEVICE eq "TMP_Kuehl" && $READING eq "temperature" && $VALUE < 6.5) { 'style="color:lightblue"'} elsif($DEVICE eq "TMP_SZ" && $READING eq "temperature" && $VALUE < 5) { 'style="color:lightblue"'} elsif($READING eq "humidity" && $VALUE > 65) { 'style="color:red"'} elsif($READING eq "humidity" && $VALUE > 60) { 'style="color:orange"'} else{'style="color:lightgreen"'} }
Die Fehlermeldungen lauten auszugsweise:
2015.06.19 23:47:48 1: PERL WARNING: Argument "22.8 M-BM-0C" isn't numeric in numeric gt (>) at (eval 640) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "48.0 %" isn't numeric in numeric gt (>) at (eval 643) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "21.5 M-BM-0C" isn't numeric in numeric gt (>) at (eval 646) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "43.0 %" isn't numeric in numeric gt (>) at (eval 649) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "44.0 %" isn't numeric in numeric gt (>) at (eval 655) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "23.8 M-BM-0C" isn't numeric in numeric gt (>) at (eval 658) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "45.0 %" isn't numeric in numeric gt (>) at (eval 661) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "44.0 %" isn't numeric in numeric gt (>) at (eval 667) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "14.7 M-BM-0C" isn't numeric in numeric gt (>) at (eval 704) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "62.0 %" isn't numeric in numeric gt (>) at (eval 707) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "42.0 %" isn't numeric in numeric gt (>) at (eval 713) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "22.8 M-BM-0C" isn't numeric in numeric gt (>) at (eval 716) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "48.0 %" isn't numeric in numeric gt (>) at (eval 719) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "21.5 M-BM-0C" isn't numeric in numeric gt (>) at (eval 722) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "43.0 %" isn't numeric in numeric gt (>) at (eval 725) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "44.0 %" isn't numeric in numeric gt (>) at (eval 731) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "23.8 M-BM-0C" isn't numeric in numeric gt (>) at (eval 734) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "45.0 %" isn't numeric in numeric gt (>) at (eval 737) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "44.0 %" isn't numeric in numeric gt (>) at (eval 743) line 1.
2015.06.19 23:48:28 1: PERL WARNING: Use of uninitialized value $v in sprintf at fhem.pl line 1972.
und:
2015.06.19 23:43:29 1: PERL WARNING: Use of uninitialized value $NUM in substitution (s///) at ./FHEM/33_readingsGroup.pm line 336.
Es stören offenbar die Zeichen hinter den Zahlen.
Für einen trottelsicheren, konkreten Hinweis zur Lösung des Problemes wäre ich dankbar.
Danke im Voraus.
die probleme sollten morgen alle behoben sein.
gruss
andre
Das ist mir die liebste Antwort. Danke.
Hallo Andre,
ich kämpfe mit der setList / setFn - Erweiterung.
Zuerst habe ich eine zeitlang gebraucht, bis ich herausgefunden habe, dass es nicht reicht, nur die gewünschte setList - Erweiterung anzugeben, sondern es muss auch eine setFn - Funktion vorhanden sein und zwar auch noch in {} eingeschlossen.
(Ich hatte ursprünglich ein notify an die rg gehängt)
Bei Dir im Code sind dann $CMD und $ARGS belegt.
Das Attr sieht bei mir jetzt so aus:
setFn {Alle_Liste_rg_not($CMD,$ARGS)}
Aber wie kann ich jetzt den hash oder den Namen des devices an die Funktion durchreichen?
Elektrolurch
der name der readingsGroup steckt in $name
du kannst in der setFn alles machen was du möchtest. ein reading setzen und damit ein event für ein notify auslösen, mit trigger ein event auslösen, ein attribut setzen oder direkt eine funktion aufrufen die dann macht was du möchstest.
eben weil es so viele möglichkeiten gibt wird nichts automatisch gemacht.
gruss
andre
Zitat:
der name der readingsGroup steckt in $name
-> also der eval-Aufruf nimmt alle lokal in der sub definierten Variablen mit, gut zu wissen. $CMD und $ARGS sind also nur so aus Gründen der Konvention vorhanden.... aber die lokalen Variablen kennt man ja nur, wenn man den Code anschaut.
Eigentlich müsste es ja nicht $name sondern $DEVICE heissen, damit die commandref stimmt.
Zitat:
du kannst in der setFn alles machen was du möchtest. ein reading setzen und damit ein event für ein notify auslösen, mit trigger ein event auslösen, ein attribut setzen oder direkt eine funktion aufrufen die dann macht was du möchstest.
Ok, das war schon klar. Ich hhatte das vorher als notify dran, habe die sub jetzt aber an den setFn - Aufruf angepasst. Setze darin das reading "Ansicht" und lasse den Bildschirm neu aufbauen, da sich ja der Anzeigeinhalt der rg geändert hat.
Noch eine kleine Anektote:
valueStyle und $NUM:
Ich hatte ja so Werte wie 45.345,1
Da Du ja $NUM nicht durch abschneiden, sondern durch weglassen aller Nichtziffern erzeugst ->
Wenn die Solaranlage bei mir läuft, wird die aktuelle Puffertemperatur und die Starttemperatur im gleichen Feld angezeigt:
45.5 / 43,3 C
Daher der Wert.
Ich habe wieder auf $VALUE umgestellt, in der Routine, die in Abhängigkeit vom reading und der Temperatur die Farbe umschaltet, war es sowieso so implementiert, dass ich hinten den Rest abschneide.
Jetzt läuft alles wieder.... :D
Elektrolurch
nicht nur aus gründen der konvention sondern auch als garantie das sie sich nicht ändern wenn ich am code etwas umbaue. also besser nicht im quelltext schauen was es noch alles gibt :)
nein. $DEVICE ist jeweils der name eines device dessen reading angezeigt wird. $name ist der name der readingsGroup selber.
da fällt mir ein ich wollte ja noch einbauen das man eine komplette readingsGroup refreshen kann. ohne das die komplette seite aktualisiert wird. kommt noch ...
Zitat:
nein. $DEVICE ist jeweils der name eines device dessen reading angezeigt wird. $name ist der name der readingsGroup selber.
Hast ja wie immer recht... -D
Zitat:
da fällt mir ein ich wollte ja noch einbauen das man eine komplette readingsGroup refreshen kann. ohne das die komplette seite aktualisiert wird. kommt noch ...
Ich komme gar nicht so schnell hinterher, alle die netten neuen Featurs einzubauen...
Aber Attribute per rg setzen ist nett, habe mir gerade die dummys für die Treppenhauslichtsteuerung für drei Etagen herausgeworfen und ein kleines Modul gemacht. Die Einstellungen liegen jetzt in Attributen.
Schaut viel ordentlicher aus... :-D
(Auch wenn das Rudi vielleicht nicht hören mag :-(
Gruß
One of my readingsGroup does not show icons since yesterday's update. I hoped the update this morning may bring them back - but still no icons.
All other readingsGroup are fine - with some recent minor modifications.
Based very much on http://forum.fhem.de/index.php/topic,32382.msg254621.html#msg254621 (http://forum.fhem.de/index.php/topic,32382.msg254621.html#msg254621) my fhem.cfg contains
define rgWasteCalendar readingsGroup wastecalendar:!title \ wastecalendar:!day|0,!Grey_bin|0,!Blue_bin|0,!Brown_bin|0 \ wastecalendar:!day|1,!Grey_bin|1,!Blue_bin|1,!Brown_bin|1 \ wastecalendar:!day|2,!Grey_bin|2,!Blue_bin|2,!Brown_bin|2 \ wastecalendar:!day|3,!Grey_bin|3,!Blue_bin|3,!Brown_bin|3 \ wastecalendar:!day|4,!Grey_bin|4,!Blue_bin|4,!Brown_bin|4 \ wastecalendar:!day|5,!Grey_bin|5,!Blue_bin|5,!Brown_bin|5 \ wastecalendar:!day|6,!Grey_bin|6,!Blue_bin|6,!Brown_bin|6 \ wastecalendar:!day|7,!Grey_bin|7,!Blue_bin|7,!Brown_bin|7 \ wastecalendar:!day|8,!Grey_bin|8,!Blue_bin|8,!Brown_bin|8 \ wastecalendar:!day|9,!Grey_bin|9,!Blue_bin|9,!Brown_bin|9 \ wastecalendar:!day|10,!Grey_bin|10,!Blue_bin|10,!Brown_bin|10 \ wastecalendar:!day|11,!Grey_bin|11,!Blue_bin|11,!Brown_bin|11 \ wastecalendar:!day|12,!Grey_bin|12,!Blue_bin|12,!Brown_bin|12 \ wastecalendar:!day|13,!Grey_bin|13,!Blue_bin|13,!Brown_bin|13 \ wastecalendar:!day|14,!Grey_bin|14,!Blue_bin|14,!Brown_bin|14
attr rgWasteCalendar cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:16px"',"c:1"=>'style="font-weight:bold;;;;text-align:right;;;;padding-left:28pt;;;;"'}
attr rgWasteCalendar group rg2
attr rgWasteCalendar nonames 1
attr rgWasteCalendar valueColumns { title => 'colspan="7"' }
attr rgWasteCalendar valueFormat {if($READING eq 'title'){$VALUE="recycling"}else{my($r,$d)=split(/\|/,$READING);;;;;;;;my $v=fhem("get wastecalendar days $d",1);;;;;;;;if($v eq "none"){$VALUE=undef}else{if($r eq 'day'){if($d==0){$VALUE="Today"}elsif($d==1){$VALUE="Tomorrow"}else{$VALUE="In $d Days"}}else{if($v=~m/$r/){$VALUE=1}else{$VALUE=' '}}}}}
attr rgWasteCalendar valueIcon {if($VALUE eq 'recycling'){$VALUE}elsif($VALUE eq 1){if($READING=~m/Grey_bin/){$VALUE='dustbin@5C5959'}elsif($READING=~m/Blue_bin/){$VALUE='dustbin@0617EE'}elsif($READING=~m/Brown_bin/){$VALUE='dustbin@E86915'}}else{$VALUE=''}}
attr rgWasteCalendar valueSuffix {'title'=>' Recycling'}
attr rgWasteCalendar verbose 0
The result should look something like the attached image but I see no icons at all and no error messages.
I suspect I have missed some obvious change through google translate but I have no idea how to get the icons back
Hi,
habe nach dem heutigen Update diese Warnings im Log:
PERL WARNING: Argument "12.1 C (measured)" isn't numeric in numeric gt (>) at (eval 141) line 1.
PERL WARNING: Argument "12.1 C (measured)" isn't numeric in sprintf at /opt/fhem/FHEM/33_readingsGroup.pm line 523
Ich weiß, dass diese Meldungen von meinen Dect200-Steckdosen verursacht werden, aber wie bekomme ich sie weg?
@fruit: i have just fixed the icon problem.
@punker: das es die meldung erst heute gibt kann ich mir nicht vorstellen. du musst alles was nach der zahl kommt abschneiden. z.b. mitattr <rg> valueFormat {$NUM}
gruss
andre
Zitat von: justme1968 am 21 Juni 2015, 10:27:36
@punker: das es die meldung erst heute gibt kann ich mir nicht vorstellen. du musst alles was nach der zahl kommt abschneiden. z.b. mitattr <rg> valueFormat {$NUM}
stimmt, ich hatte die "
use warnings" auskommentiert!
Hab das so wie du schreibst gemacht, aber die Meldung kommt wieder:
PERL WARNING: Argument "17.7 C (measured)" isn't numeric in numeric gt (>) at (eval 137) line 1.
:(
Zitat von: justme1968 am 21 Juni 2015, 10:27:36
@fruit: i have just fixed the icon problem.
Thanks, I guess I hadn't missed anything in translation then.
schalte mal stacktrace ein um zu sehen wo die meldung genau her kommt und zeig mir das log.
gruss
andre
2015.06.21 11:23:23 3: stacktrace:
2015.06.21 11:23:23 3: main::__ANON__ called by (eval 612) (1)
2015.06.21 11:23:23 3: (eval) called by /opt/fhem/FHEM/33_readingsGroup.pm (340)
2015.06.21 11:23:23 3: main::lookup2 called by /opt/fhem/FHEM/33_readingsGroup.pm (622)
2015.06.21 11:23:23 3: main::readingsGroup_value2html called by /opt/fhem/FHEM/33_readingsGroup.pm (990)
2015.06.21 11:23:23 3: main::readingsGroup_2html called by /opt/fhem/FHEM/33_readingsGroup.pm (1079)
2015.06.21 11:23:23 3: main::readingsGroup_detailFn called by /opt/fhem/FHEM/01_FHEMWEB.pm (2548)
2015.06.21 11:23:23 3: main::FW_devState called by /opt/fhem/FHEM/01_FHEMWEB.pm (1428)
2015.06.21 11:23:23 3: main::FW_showRoom called by /opt/fhem/FHEM/01_FHEMWEB.pm (801)
2015.06.21 11:23:23 3: main::FW_answerCall called by /opt/fhem/FHEM/01_FHEMWEB.pm (433)
2015.06.21 11:23:23 3: main::FW_Read called by fhem.pl (3023)
2015.06.21 11:23:23 3: main::CallFn called by fhem.pl (643)
2015.06.21 11:23:23 1: PERL WARNING: Argument "17.7 C (measured)" isn't numeric in numeric gt (>) at (eval 614) line 1.
in deinem valueStyle musst du auch $NUM statt $VALUE verwenden.
Vielen Dank! 8)
Sieht so aus, als ob die Meldungen weg sind!
hallo andre. Habe heute, nach 5 Monaten, nun endlich einen update von fhem gemacht. Leider zeigt meine Heizungswerte2 readingsGroup jetzt ein seltsames Verhalten. Die Buttons für up (red), down (blue) und white "zappeln" völlig sinnlos herum. D.h. alle paar Sekunden wechseln die Buttons die Farbe, zeigen mal up, mal down und mal die Farbe weis an, obwohl sich an den Temperaturen nichts ändert. Anbei mal die Codes:
define notifyHeizungUpDown notify .*:desired-new.* { myUtils_HeizungUpDownNotify($NAME,$EVTPART1);; }
attr notifyHeizungUpDown DbLogExclude .*
define Heizungswerte2 readingsGroup <%sani_heating>, < >,<Act>,<Soll>,<Ist> \
Bad_Heizung_ClimRT_tr|Kueche_Heizung_ClimRT_tr|SZ_Heizung_links_ClimRT_tr|SZ_Heizung_rechts_ClimRT_tr|Kinderzimmer_Heizung_links_ClimRT_tr|Kinderzimmer_Heizung_rechts_ClimRT_tr|Flur_Heizung_Clima|WZ_links_Heizung_Clima|WZ_rechts_Heizung_Clima:ValvePosition,desired-temp,measured-temp,<{myUtils_HeizungUpDown($DEVICE,"down")}@desired.*>,desired.new,<{myUtils_HeizungUpDown($DEVICE,"up")}@desired.*>
attr Heizungswerte2 DbLogExclude .*
attr Heizungswerte2 fp_Heizung_FP 40,250,0,
attr Heizungswerte2 fp_Le_Status 58,650,0,
attr Heizungswerte2 fp_Status 120,1050,0,
attr Heizungswerte2 group Thermostate
attr Heizungswerte2 nameStyle style="color:yellow"
attr Heizungswerte2 noheading 1
attr Heizungswerte2 room Heizung
attr Heizungswerte2 valueStyle {($VALUE eq "00")?'style="visibility:hidden"':''}
Und die sub:
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
#Heizung regeln in readingsGroup
sub
myUtils_HeizungUpDown($$)
{
my($DEVICE,$CMD) = @_;
my $icon = $CMD;
my $VALUE = ReadingsVal($DEVICE,"desired-new","20" );
$VALUE = ReadingsVal($DEVICE,"desired-temp","20" )
if( !$VALUE || $VALUE == 0 );
my $link;
if( $CMD eq "up" ) {
$icon = "control_arrow_upward";
$VALUE += 1;
if( $VALUE <= 24 ) {
$icon .= "\@red";
$link = "setreading $DEVICE desired-new $VALUE";
}
} elsif( $CMD eq "down" ) {
$icon = "control_arrow_downward";
$VALUE -= 1;
if( $VALUE >= 18 ) {
$icon .= "\@blue";
$link = "setreading $DEVICE desired-new $VALUE";
}
}
my $notify = "notifyHeizungUpDown";
if( !defined($defs{$notify}) ) {
CommandDefine(undef,
"$notify notify .*:desired-new.* "
."{ myUtils_HeizungUpDownNotify(\$NAME,\$EVTPART1); }" );
}
my $ret = "%$icon";
$ret .= "%$link" if( $link );
return $ret;
}
sub
myUtils_HeizungUpDownNotify($$)
{
my($DEVICE,$VALUE) = @_;
return if( $VALUE == 0 );
my $at = "triggerHeizungUpDown_$DEVICE";
CommandDelete(undef, $at) if( defined($defs{$at}) );
CommandDefine(undef,
"$at at +00:00:03 "
."{my \$v = ReadingsVal(\"$DEVICE\",\"desired-new\",undef);"
."fhem(\"set $DEVICE desired-temp \$v\") if( \$v );"
."fhem(\"setreading $DEVICE desired-new 00\");}" );
return undef;
}
Vielleicht siehst du ja den Fehler, ich habe, bis auf das update, nichts an der Konfiguration geändert.
VG
Frank
Hallo andre,
für eine readingsGroup in der mehrere EIB aktoren dargestellt werden benutze ich zur Icon Zuweisung !readings. In diesem Fall !light !skylight und !window. Diese werden dann durch valueFormat wieder auf state gemappt
'light' => '{ReadingsVal($DEVICE, "state", "")}'
Nur werden sie nun nicht mehr via longpoll aktualisiert.
Gibt es dazu eine einfache Lösung? Mir würde momentan nur einfallen ein eventMap in den Devices anzulegen z.B.
eventMap on:light_on off:light_off
und dann das icon über state.light_on etc. zuzuweisen.
Edit: Geht natürlich nicht, da ich dann das internal STATE abfragen müsste, welches auch nicht aktualisiert wird. Bleiben nur userreadings.
Grüße
igami
@franky08: gibt es im event monitor events die das flackern auslösen?
@igami: longpoll updates gehen nur wenn es ein original reading gibt und dieses entweder direkt verwendet oder über <{...}@reading> eingebunden wird. ich bin mir nicht sicher ob ich verstehe warum du überhaupt über !readings gehst.
ich würde sagen das einfachste ist im device selber das icon per devStateIcon zu vergeben und dann im der readingGroup in das value icon auf {state => '%devStateIcon'} zu setzen. und ganz nebenbei hast du auch noch im original device ein passendes icon.
alternativ kannst du zwei stufig vorgehen und zuerst per valueFormat ein eindeutiges reading aus devicetyp und state erzeugen und dann dieses per valueIcon anzeigen. aber das ist in deinem fall eigentlich schon zu kompliziert.
gruss
andre
Hallo Andre, ich hab mal einen Ausschnitt vom Event Monitor eingefügt, leider geht das mit dem Filter bei mir nicht, bekomme keine Dialogbox.
Ich hab das Verhalten der readingsGroup mal als Video angehangen.
VG
Frank
Habe jetzt aus meinem Backup die:
# $Id: 33_readingsGroup.pm 7406 2015-01-02 15:02:11Z justme1968 $
zurück kopiert, mit der Version zeigt die readingsGroup wieder "normales" Verhalten.
P.S. eine etwas neuere Version habe ich leider nicht, da mein letztes update Ende Januar war
VG
Frank
Dann ist ja gut. Das lange posting des logs schaut sich sowieso niemand an. Viel hilft nicht immer viel.
Elektrolurch
Der Filter im Event Monitor funktioniert bei mir nicht und Andre wollte die Meldungen aus dem Event Monitor mal sehen.
VG
Frank
Das Listing ist aber ewig lang und macht den Artikel nicht gerade übersichtlicher.
Außerdem wurde hier im Forum auch schon festgestellt, dass das Einstellen von Beiträgen um so länger dauert, je länger der Artikel wird.
Wenn schon langes Listing, dann als Anhang (Datei).
Danke.
Zitat von: justme1968 am 24 Juni 2015, 15:19:52
@igami: longpoll updates gehen nur wenn es ein original reading gibt und dieses entweder direkt verwendet oder über <{...}@reading> eingebunden wird. ich bin mir nicht sicher ob ich verstehe warum du überhaupt über !readings gehst.
ich würde sagen das einfachste ist im device selber das icon per devStateIcon zu vergeben und dann im der readingGroup in das value icon auf {state => '%devStateIcon'} zu setzen. und ganz nebenbei hast du auch noch im original device ein passendes icon.
Ich bin über die !readings gegangen weil es sich immer um state handelt und ich nicht wusste, wie ich dafür unterschiedliche icons angeben sollte, aber das mit dem mappen auf %devStateIcon bewirkt ja genau was ich möchte.
Vielen Dank.
igami
Hallo Andre,
ich habe mir folgendes gebaut:
Da wo in einer rg ein Icon angezeigt werden soll, möchte ich unter dem Icon auch einen Text ausgeben (wg. Barrierefreiheit). Da die Icons anklickbar sind (commands->Befehl) und auf meinem per Tasten bedienbaren Nokia Iconen nicht immer einwandfrei selektiert werden, soll der Label_Text auch noch anklickbar sein und darunter stehen.
leider
Mit valueIcon geht das nicht ganz so einwandfrei, aber mit valueFormat:
...valueFormat {'UP' => '{MakeIconwithLabel("fts_shutter_up",$VALUE,"öffnen")}',...
Die sub sieht so aus:
sub MakeIconwithLabel($$$)
{
my ($icon,$value,$label) = @_;
my $html;
$html = FW_makeImage($icon, $value, "icon");
$html .= '<br><span style="text-align:center"; "font-size:9px">' . $label . '</span>';
return $html;
} # end sub MakeIconwithLabel
klappt auch wie gewünscht.
Nun meine Frage:
Ich möchte den state mit dem devStateIcon ausgeben:
...valueFormat {'state' => '{MakeIconwithLabel("%devStateIcon",$VALUE,$VALUE)}',...
mit %devStateIcon geht es nicht.
Und $devStateIcon gibt es wohl auch nicht.
Vermutlich ist die Lösung ganz einfach, ... aber....
Und da habe ich noch was zum knobeln:
In einer rg zeige ich alle Thermostate an. Die "desired-temp" springt bei den fhts auf 12.0, wenn ein Fenster offen ist. Mit einer entsprechenden valueIcon wird dann statt des Auswahlmenüs für die desired-temp ein offenes Fenster angezeigt. Leider ist dies aber immer noch anklickbar und sendet "set th desired-temp 12.0" an das Thermostat. Im Sommer stehen aber die fhts alle auf "off" (nur bei offenem Fenster wird 12.0 angezeigt). Das Klicken hätte jetzt zur Folge, dass eine Aktivierung des Heizkreises stattfindet.
Wie kann ich also für 12.0 commands für desired-temp ausnehmen?
commands {'desired-temp.12.0' => '', 'desired-temp' => 'desired-temp:-,off,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0'
Das desired-temp.12.0 => '' zeigt leider keine Wirkung.
Das Icon:
valueIcon ... 'desired-temp.12.0' => 'signal_Fenster_Offen.on@red',
funktioniert allerdings, ist aber anklickbar.
Gruß
Elektrolurch
Guten Morgen,
ich habe mal zwei oder drei Fragen zur readingsgroup. Irgendwie kommt man ja um die readingsgroup nicht rum wenn man die Sachen gescheit formatieren möchte ;-) Im Anhang mein Beispiel von dem ich hier rede. Achso und die Fragen stammen von einem Perl Muffel ;-)
1. Wie kann ich ein ValueIcon zentriert platzieren? attr valueStyle style="text-align:center" hilft hier nicht.
2. Kann ich beim attribut commands auch perl code einbauen? Hintergrund ist das ich das "gießen" erst ermöglichen möchte, wenn die Wassertonne noch voll genug ist. Hat diese den Status leer soll die Gießkanne keine Funktion hinterlegt haben.
3. Ich würde gerne die Zeit anzeigen wann die Schaltsteckdose an der die Pumpe angeschlossen ist zuletzt "ausgelöst" wurde. Einfach um zu sehen wann die Blumen das letzte mal bewässert wurden. Nun ist das ein bissel schwierig aber ich würde einfach mal ein Zeitstempel aus irgend einem reading benutzen (auch wenn diese nicht immer stimmen, geade nach einem status request). Wie mache ich das am besten? "attr notime 1" ist gesetzt.
Gruß
Daniel
1. ist noch ein offenes todo
2. jein. direkt perl code geht zwar. aber das ist nicht wirklich praktikabel. siehe z.b. hier: http://forum.fhem.de/index.php/topic,14425.msg262811.html#msg262811 (http://forum.fhem.de/index.php/topic,14425.msg262811.html#msg262811). aber: du kannst dir den perl code einfach in ein notify stecken und es per trigger ... über commands auslösen.
beim nochmal lesen glaube ich aber du meinst etwas ganz anderes :) ...
dazu gibt es zwei möglichkeiten. wenn es einen eindeutigen wert gibt bei dem nichts passieren soll schreib den explizit vorher hin und mappe ihn auf nichts:..., 'tonne.leer' => undef, 'tone.voll' ='set ...', ...
oder wie bei jedem anderen mapping mit perl:..., tonne => '{return undef if( $VALUE <10); return "set ..."; }', ...
3. etwa so:..., <{ReadingsTimestamp($DEVICE,'reading',""}@reading>, ...
gruss
andre
Ahh ok, Punkt 3 klappt (auch wenn ich noch nicht so richtig zufrieden bin, es gibt eben kein Zeitstempel der sagt wann die Dose zuletzt aus gegangen ist. Vermutlich müsste man da im Log schauen) UND das ist nicht Longpoll kompatible, zumindest updated der das erst beim refresh.
Punkt 1, ok, unkritisch.
Wegen Punkt 2: Ich hab in meinem Command Attribut:
commands {"state.off"=>"set %DEVICE on-for-timer 360","state.on"=>"set %DEVICE off"}
Heißt ich müsste ja jetzt noch ein "status.voll" => "set %DEVICE on-for-timer 360" hinzufügen. (status ist das reading von der Tonne) Aber das kann doch so nicht funktionieren oder? Ich brache dann eher eine AND Verknüpfung, also status.voll && state.off, geht das?
Gruß
Daniel
Zu Punkt 3:
Ich habe sowas ähnliches letzte Woche gemacht. Vielleicht hilft es dir ja?!. Lediglich Longpoll funktioniert nicht, das mag aber an dem Unwissen zu readingsGroup liegen.
In die 99_myUtils:
# Rechnet aus einem Zeit String (FMT) die Sekunden aus seit Epoche.
# Author : Reinerlein http://forum.fhem.de/index.php/topic,11304.msg65976.html#msg65976
# Aufruf : GetTimeFromString("2015-07-02 15:05:36")
# Param 1: Datum und Zeit im FHEM fmt Format
# Return : Sekunden seit Epoche
sub GetTimeFromString($) {
my ($timeStr) = @_;
eval {
use Time::Local;
if($timeStr =~ m/^(\d{4})-(\d{2})-(\d{2}) ([0-2]\d):([0-5]\d):([0-5]\d)$/) {
return timelocal($6, $5, $4, $3, $2 - 1, $1 - 1900);
}
}
}
# Berechnet von einem Start Datum aus, wieviel Tage und Wochen vergangen sind.
# Author : TeeVau (fhem@622mbit.de)
# Aufruf : printDateDiff("2015-07-02 15:05:36") oder printDateDiff("2015-07-02 15:05:36", "2015-07-12 16:02:01")
# Param 1: Start Datum.
# Param 2: Optional: End Datum. Wenn nicht angegeben wird das aktuelle genommen.
# Return : <1-12> Woche[n], <> Tag[en]
sub printDateDiff($;$) {
my($from, $to) = @_;
my $logTxt = "";
my $return = undef;
$to = TimeNow() if (!defined($to)); #Ist keine "bis" Zeit angegeben verwende "jetzt"
#Umwandeln in Epoche in die Sekunden subtrahieren
my $diff = GetTimeFromString($to) - GetTimeFromString($from);
#http://wiki.selfhtml.org/wiki/Perl/Funktionen_für_Datum_und_Uhrzeit
my $Wochen = int($diff / (7 * 24 * 3600));
$diff %= (7 * 24 * 3600);
my $Tage = int($diff / (24 * 3600));
$diff %= (24 * 3600);
if ($Wochen != 0) {
$return .= "$Wochen "; #Wert
if ($Wochen == 1) {$return .= "Woche"} else {$return .= "Wochen"} #Text
}
if ($Tage != 0) {
$return .= "$Tage "; #Wert
if ($Tage == 1) {$return .= "Tag"} else {$return .= "Tagen"} #Text
}
if ($Tage == 0 && $Wochen == 0) { $return .= "Heute"; }
return $return;
}
Mit printDateDiff() lasse ich mir dann Ausgeben wieviel Tage bzw. Wochen etwas her ist.
Das ganze sieht dann in der DEF so aus:
aq_wz_ww:,<>,<setWW>,<{printDateDiff(ReadingsTimestamp($DEVICE,"Wasserwechsel",""))}@reading>
Und ergibt im Ganzen das angehängte Bild.
damit longpoll geht musst du den namen des readings angeben (nicht das wort reading):aq_wz_ww:,<>,<setWW>,<{printDateDiff(ReadingsTimestamp($DEVICE,"Wasserwechsel",""))}@Wasserwechsel>
zu 2: geht es jetzt um state oder um status?
gruss
andre
Ach ich hatte das Device hinter dem @, ok aber auch mit dem reading geht bei mir das longpoll nicht. Also so habe ich das jetzt:
<{ReadingsTimestamp('sz_Giessanlage','CommandAccepted','error')}@CommandAccepted>
Es geht um beides, also wenn der state=off ist UND der status=voll dann soll die Gießkanne, also das Icon beim Drücken eine Aktion on-for-timer ausführen. Wenn state=off und status=leer dann soll nichts passieren und wenn state=on dann soll ein set off als command hinterlegt sein. So war mein Plan. Ich möchte halt vermeiden das jemand die Gießanlage aktiviert obwohl die Tonne leer ist.
Das reading "state" kommt von der HM-Steckdose, das reading "status" vom AVR-NET-IO der wiederum den Füllstand der Tonne dort wiederspiegelt.
Gruß
Daniel
erzeugt das Reading ein event um event monitor?
wenn du das kommando von zwei readings abhäng machen willst dann brauchst du die variante mit perl code {...}
wenn du auch dafür eine longpoll aktualisierung willst musst du das zusammenbauen der bedingung aber in ein notify auslagern und nur das ergebnis der verknüpfung in der readingsGroup auswerten.
gruß
andre
Weiß wer warum folgendes readingsGroup nicht aktualisiert wird durch einen LongPoll?
define rg_Raumklima readingsGroup <Raum>,<Status>,<Mode>,<Soll-Temp>,<nextUpdate>,<Ist-Temp>,<Ist-Feuchtigkeit>,<Taupunkt>,<Battery>,<Off>,<On> \
Heizung:state,<>,<>,<>,<>,<>,<>,<>,<{"%temp_temperature_min%set+Heizung+off"}@state>,<{"%sani_heating_timer%set+Heizung+on"}@state> \
.._Heating:state,setMode@{$DEVICE."Valve"},setTemp@{$DEVICE."Valve"},nextUpdate@{$DEVICE."Control"},!temperature@!{$DEVICE."_Climate"},!humidity@!{$DEVICE."_Climate"},!dewpoint@!{$DEVICE."_Climate"},!battery@!{$DEVICE."_Climate"},<{"%temp_temperature_min%set+$DEVICE+off"}@state>,<{"%sani_heating_timer%set+$DEVICE+on"}@state>
attr rg_Raumklima commands { 'setMode' => 'setMode:' }
attr rg_Raumklima mapping { 'WZ_Heating' => 'Wohnzimmer', 'SZ_Heating' => 'Schlafzimmer', 'Heizung' => 'Heizung' }
attr rg_Raumklima nameStyle style='text-align:left;;'
attr rg_Raumklima valueFormat {'temperature' => "%.0f °C", 'setTemp' => "%.0f °C", 'humidity' =>"%.0f %%" , 'nextUpdate' => '{myTimeTillUpdate($VALUE,"")}'}
attr rg_Raumklima valueStyle {myReadingsGroupClimateValueStyle($DEVICE,$READING,$VALUE)}
attr rg_Raumklima valueIcon { state => '%devStateIcon', 'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red' }
attr rg_Raumklima noheading 1
attr rg_Raumklima group Raumklima
Der Status der Devices wird einzeln in FHEM über einen LongPoll aktualisiert aber im readingsGroup Device nicht...
Was mache ich denn falsch?
Zitat von: justme1968 am 07 Juli 2015, 22:34:37
erzeugt das Reading ein event um event monitor?
wenn du das kommando von zwei readings abhäng machen willst dann brauchst du die variante mit perl code {...}
wenn du auch dafür eine longpoll aktualisierung willst musst du das zusammenbauen der bedingung aber in ein notify auslagern und nur das ergebnis der verknüpfung in der readingsGroup auswerten.
Das erzeugt vermutlich kein event nein, aber gut, ich muss mir da was anderes einfallen lassen, die Zeiten sind nicht das was ich brauche, das ist mir zu unsicher. Ich pack das erst mal nach hinten in die queue. Dann schau ich mir mal die funktion oben von TeeVau an, das brauche ich dazu nämlich auch, sieht besser aus als die plumpe Timestamp.
Ja sind zwei readings, ok also perl. Longpoll brauch ich auch, weil sich der status der Tonne ja ändern kann im laufe der Zeit und da muss der ja sofort drauf reagieren und das commando unterbinden. Dann muss ich mir das mit dem Notify mal anschauen, dann werd ich das so machen. Also notify -> Bedingung -> Ergebnis in eine Variable -> die Variable dann auswerten. Gut ich versuch das mal so.
Dank dir.
Gruß
Daniel
Hallo Daniel,
nur zur Info: Je nachdem wie wichtig dir die Genauigkeit der Zeitangabe ist, musst du an meiner Funktion ggf. noch einmal Hand anlegen. Es ist z.B. so, dass erst dann "1 Tag" ausgegeben wird, wenn wirklich 24 Stunden vorbei sind. Alles unter 24 Stunden wird wiederum als "heute" ausgegeben.
Für meinen Anwendungsfall reicht das aus. Ich verwende es als "Logbuch" für diverse Parameter der zwei Aquarien. Die Zeitangabe brauche ich in diesem Fall nicht so akkurat. Ein paar Stunden Toleranz sind da akzeptabel.
@André
Danke für den Hinweis, jetzt funktioniert es (Hab mich schon gewundert über die Syntax. @reading kam mir irgendwie so komisch vor vor;-) )
Hallo Andre,
Zitat:
dazu gibt es zwei möglichkeiten. wenn es einen eindeutigen wert gibt bei dem nichts passieren soll schreib den explizit vorher hin und mappe ihn auf nichts:
Code: [Auswählen]
..., 'tonne.leer' => undef, 'tone.voll' ='set ...', ...
Ich hatte in
« Antwort #1399 am: 27 Juni 2015, 17:56:44 »
folgendes gefragt, aber leider klappt Dein Tipp nicht.
In einer rg zeige ich alle Thermostate an. Die "desired-temp" springt bei den fhts auf 12.0, wenn ein Fenster offen ist. Mit einer entsprechenden valueIcon wird dann statt des Auswahlmenüs für die desired-temp ein offenes Fenster angezeigt. Leider ist dies aber immer noch anklickbar und sendet "set th desired-temp 12.0" an das Thermostat. Im Sommer stehen aber die fhts alle auf "off" (nur bei offenem Fenster wird 12.0 angezeigt). Das Klicken hätte jetzt zur Folge, dass eine Aktivierung des Heizkreises stattfindet.
Wie kann ich also für 12.0 commands für desired-temp ausnehmen?
commands {'desired-temp.12.0' => '', 'desired-temp' => 'desired-temp:-,off,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0'
Das Icon:
valueIcon ... 'desired-temp.12.0' => 'signal_Fenster_Offen.on@red',
funktioniert allerdings, ist aber weiterhin anklickbar.
oder auch
commands {'desired-temp.12.0' => 'undef', 'desired-temp' => 'desired-
zeigt weiterhin das Icon als anklickbar an.
Sind vielleicht die 2 x '.'
in desired-temp.12.0
das Problem?
Elektrolurch
@Elektrolurch: ich kann das problem nur bedingt nachstellen. bzw das eigentliche problem ist nicht das das mapping nicht funktioniert (wenn die seite neu aufgebaut wird wird bei 12.0 nur der wert angezeigt und ist nicht anklickbar und bei anderen werten wird das dropdown angezeigt und is auswählbar) sondern das umschalten zwischen einem aktiven element (das dropdown) und einem reinen text.
das umschalen wäre zwar prinzipiell noch möglich, aber auf fhem/perl seite weiss ich gar nicht nicht das gerade ein dropdown bzw aktives element angezeigt wird. und wenn ich das wüsste könnte ich relativ einfach auch nur vom drop down zum text schalten und nicht wieder zurück.
ich muss mal schauen ob es hierfür eine lösung gibt.
das aktuelle icon musst du dir dann in deiner sub auch selber holen. das geht mit etwa so:my $room = ($FW_room ? "&room=$FW_room" : "");
my (undef, undef, $icon) = FW_devState($name, $room, ());
gruss
andre
Andre, hast du eine Idee warum meine rg nicht über einen LongPoll aktualisiert wird?
Zitat von: ulli am 07 Juli 2015, 22:44:05
Weiß wer warum folgendes readingsGroup nicht aktualisiert wird durch einen LongPoll?
define rg_Raumklima readingsGroup <Raum>,<Status>,<Mode>,<Soll-Temp>,<nextUpdate>,<Ist-Temp>,<Ist-Feuchtigkeit>,<Taupunkt>,<Battery>,<Off>,<On> \
Heizung:state,<>,<>,<>,<>,<>,<>,<>,<{"%temp_temperature_min%set+Heizung+off"}@state>,<{"%sani_heating_timer%set+Heizung+on"}@state> \
.._Heating:state,setMode@{$DEVICE."Valve"},setTemp@{$DEVICE."Valve"},nextUpdate@{$DEVICE."Control"},!temperature@!{$DEVICE."_Climate"},!humidity@!{$DEVICE."_Climate"},!dewpoint@!{$DEVICE."_Climate"},!battery@!{$DEVICE."_Climate"},<{"%temp_temperature_min%set+$DEVICE+off"}@state>,<{"%sani_heating_timer%set+$DEVICE+on"}@state>
attr rg_Raumklima commands { 'setMode' => 'setMode:' }
attr rg_Raumklima mapping { 'WZ_Heating' => 'Wohnzimmer', 'SZ_Heating' => 'Schlafzimmer', 'Heizung' => 'Heizung' }
attr rg_Raumklima nameStyle style='text-align:left;;'
attr rg_Raumklima valueFormat {'temperature' => "%.0f °C", 'setTemp' => "%.0f °C", 'humidity' =>"%.0f %%" , 'nextUpdate' => '{myTimeTillUpdate($VALUE,"")}'}
attr rg_Raumklima valueStyle {myReadingsGroupClimateValueStyle($DEVICE,$READING,$VALUE)}
attr rg_Raumklima valueIcon { state => '%devStateIcon', 'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red' }
attr rg_Raumklima noheading 1
attr rg_Raumklima group Raumklima
Der Status der Devices wird einzeln in FHEM über einen LongPoll aktualisiert aber im readingsGroup Device nicht...
Was mache ich denn falsch?
siehst du etwas in der JavaScript console?
Nein ich bekomme bei dem ReadingGroup keine Updates.
Wenn ich in die rg options gehe sehe ich folgendes auf der JS-console:
"18:43:53.732 FW_queryValue:{ReadingsVal("rg_Raumklima","visibility","")}" fhemweb.js:209:4
"18:43:53.736 FW_queryValue:{AttrVal("rg_Raumklima","room","")}" fhemweb.js:209:4
"18:43:53.967 Longpoll with filter rg_Raumklima" fhemweb.js:209:4
"18:43:54.016 Rcvd: " fhemweb.js:209:4
"18:44:19.047 Rcvd: ["#FHEMWEB:FHEMWEB:192.168.178.32:39372","$('#saveCheck').css('visibility','visible')",""]"
sonst kommt nichts.
Gehe ich jetzt direkt in das Device "WZ_Heating_Climate" welches die Temperaturen beinhaltet, werden die Readings regelmäßig aktualisiert und es gibt folgende Ausgabe auf der js-console:
"18:46:08.099 Rcvd: ["WZ_Heating_Climate-battery","ok","ok"]" fhemweb.js:209:4
"18:46:08.100 Rcvd: ["WZ_Heating_Climate-battery-ts","2015-07-10 18:46:08","2015-07-10 18:46:08"]" fhemweb.js:209:4
"18:46:08.101 Rcvd: ["WZ_Heating_Climate-dewpoint","8.6","8.6"]" fhemweb.js:209:4
"18:46:08.101 Rcvd: ["WZ_Heating_Climate-dewpoint-ts","2015-07-10 18:46:08","2015-07-10 18:46:08"]" fhemweb.js:209:4
"18:46:08.102 Rcvd: ["WZ_Heating_Climate-temperature","24.2","24.2"]" fhemweb.js:209:4
"18:46:08.103 Rcvd: ["WZ_Heating_Climate-temperature-ts","2015-07-10 18:46:08","2015-07-10 18:46:08"]" fhemweb.js:209:4
"18:46:08.103 Rcvd: ["WZ_Heating_Climate-humidity","37","37"]" fhemweb.js:209:4
"18:46:08.104 Rcvd: ["WZ_Heating_Climate-humidity-ts","2015-07-10 18:46:08","2015-07-10 18:46:08"]"
Hallo Andre,
ich habe eine technische Frage zu den ReadingsGroups. In FHEMWEB wird für Dein Modul die JavaScript-Datei
fhemweb_readingsGroup.js
mit in die HTML Seite eingebettet. Diese Datei beinhaltet einen ready-Handler um auf das onload-Event der Seite zu reagieren. Die Methode führt dann folgenden Code aus:
function
FW_readingsGroupReadyFn() {
// replace all informIds of the form devName-readingName with rgName-devName.readingName
$(".readingsGroup").each(function() {
var name = $(this).attr('id').split("-")[1];
$(this).find("[informId]").each(function() {
var informId = $(this).attr('informId');
var parts = informId.split("-");
if( parts[0] != name ) {
informId = name+'-'+informId.replace('-','.');
$(this).attr('informId', informId);
}
});
});
}
Im Dashboard werden die einzelnen Tabs per AJAX nachgeladen, was dazu führt, dass die Methode für die auf diese Weise geladenen Tabs nicht ausgeführt wird. Nun meine Frage, wie wichtig die Ausführung dieser Methode ist? Ich habe sie bei mir im Code nun so eingebaut, dass sie aufgerufen wird, sobald ein Tab geladen ist. Ich weiss aber nicht, ob ich damit etwas kaputt mache, wenn die Methode mehrfach läuft. Für den Use Case im Dashboard wäre es auch nicht schlecht, wenn man der Methode ein Root-Objekt mitgeben kann, auf dem sie anfängt zu suchen. So etwas wie:
function
FW_readingsGroupReadyFn($rootNode) {
// replace all informIds of the form devName-readingName with rgName-devName.readingName
var $selector = $rootNode ? $rootNode.find('.readingsGroup') : $('.readingsGroup');
$selector.each(function() {
var name = $(this).attr('id').split("-")[1];
$(this).find("[informId]").each(function() {
var informId = $(this).attr('informId');
var parts = informId.split("-");
if( parts[0] != name ) {
informId = name+'-'+informId.replace('-','.');
$(this).attr('informId', informId);
}
});
});
}
Damit könnte ich den Overhead entfernen der entsteht, wenn das komplette Dokument durchsucht wird und es nur auf die Objekte im neu geladenen Tab beschränken.
Danke Dir!
Gruss
@ulli: geht es um eine readingsGroup in der raum ansicht oder im dashboard?
@Talkabout: die routine ist dazu da um in widgets (slider, drop down, ...) und dem state icon - die jeweils über fhemweb eigene routinen erzeugt werden und somit eine informid devName-readingName haben - mit einer informId zu versehen bei der die readingsGroup der devName ist. sonst passt die informId nicht zu den events die die readingGroup erzeugt. die original device events werden ja ausgefiltert wenn das eigentliche device nicht im angezeigten raum ist.
ohne die routine gehen dann die longpoll updates für diese elemente nicht. das mehrfach aufrufen sollte kein problem sein.
die idee ein optionales root objekt zu übergeben ist gut. wenn du magst kann ich das nachher genau so einchecken.
gruss
andre
Zitat von: justme1968 am 10 Juli 2015, 19:40:44
@ulli: geht es um eine readingsGroup in der raum ansicht oder im dashboard?
@Talkabout: die routine ist dazu da um in widgets (slider, drop down, ...) und dem state icon - die jeweils über fhemweb eigene routinen erzeugt werden und somit eine informid devName-readingName haben - mit einer informId zu versehen bei der die readingsGroup der devName ist. sonst passt die informId nicht zu den events die die readingGroup erzeugt. die original device events werden ja ausgefiltert wenn das eigentliche device nicht im angezeigten raum ist.
ohne die routine gehen dann die longpoll updates für diese elemente nicht. das mehrfach aufrufen sollte kein problem sein.
die idee ein optionales root objekt zu übergeben ist gut. wenn du magst kann ich das nachher genau so einchecken.
gruss
andre
Danke Dir für die Erklärung.
Einchecken gerne, aber teste es bitte vorher. Ich habe den Code direkt im Forum geändert, daher keine Garantie auf Korrektheit ;)
Gruss
Ich bekomme kein update in der Raum Ansicht und auch nicht im Dashboard.
(ich dachte anfangs das es am Dashboard liegt. Habe aber heute gemerkt das es auch nicht in einem Raum aktualisiert wird.)
Gesendet von meinem SM-P600 mit Tapatalk
Zitat von: ulli am 10 Juli 2015, 19:58:47
Ich bekomme kein update in der Raum Ansicht und auch nicht im Dashboard.
(ich dachte anfangs das es am Dashboard liegt. Habe aber heute gemerkt das es auch nicht in einem Raum aktualisiert wird.)
Gesendet von meinem SM-P600 mit Tapatalk
Hallo Ulli,
kann ich dann erstmal davon ausgehen, dass das Problem für das Dashboard nicht mehr relevant ist? Ich würde gerne die anderen Bugfixes einchecken, aber solange Du noch die Probleme hattest wollte ich warten...
Gruss
So wie es aussieht ist es ein generelles rg problem...daher unabhängig von dashboard.
Ich hoffe daher das andre mir helfen kann.
Besten dank
Gesendet von meinem SM-P600 mit Tapatalk
Zitat von: justme1968 am 10 Juli 2015, 19:40:44
die idee ein optionales root objekt zu übergeben ist gut. wenn du magst kann ich das nachher genau so einchecken.
Ich habe den Aufruf im Dashboard nun so angepasst, dass dort für jeden Tab dessen jquery-Objekt als Parameter an Deine Methode übergeben wird. Wenn Du also meine Änderungen eincheckst, greift diese direkt auch im Dashboard.
Gruss
bin leider noch nicht dazu gekommen. kommt aber auf jeden fall noch.
gruss
andre
Ich habe das Problem endlich gefunden warum mein rg nicht per LongPoll aktualisiert wird.
!temperature@!{$DEVICE."_Climate"}
Das ! nach dem @ führt dazu das das Reading nicht aktualisiert wird.
Es funktioniert nur wie folgt:
!temperature@{$DEVICE."_Climate"}
Zitat von: ulli am 14 Juli 2015, 18:46:23
Ich habe das Problem endlich gefunden warum mein rg nicht per LongPoll aktualisiert wird.
!temperature@!{$DEVICE."_Climate"}
Das ! nach dem @ führt dazu das das Reading nicht aktualisiert wird.
Es funktioniert nur wie folgt:
!temperature@{$DEVICE."_Climate"}
Funktioniert es damit auch im Dashboard?
Gruss
yep! :)
Hallo andre,
mal wieder eine kleine Frage:
in der readingsGroup für meine Heizkörper lasse ich mir den btnLock anzeigen und steuern, funktioniert soweit auch ganz okay, nur haben die HM-CC-RT-DN drei Lock-Modus btnLock, globalBtnLock und ModusBtnLock, um flexibel zu sein habe ich diese in einen Dummy geschrieben, sodass ich dort umschalten kann um die richtige Art in der readingsGroup angezeigt zu bekommen. Gelöst habe ich das momentan über valueFormat
'btnLock' => '{ReadingsVal(readingsGroup($DEVICE,"device"),"R-".AttrVal("default_hc","lockMode","btnLock"),"off")}'
nur wird es hier ja nicht über longpoll aktualisiert. Kann man irgendwie etwas bauen, dass in der DEF steht
...,{"R-".AttrVal("default_hc","lockMode","btnLock")}@readingsGroup($DEVICE,"device"),...
Ansonsten muss ich mir ein notify schreiben, dass die DEF der readingsGroup ändert, sobald ich das Attribut ändere.
Grüße
igami
Hi, hab plötzlich diese Meldungen im Log
2015.08.09 21:38:03.677 1: PERL WARNING: Subroutine VU_UltimoRGvalueFormat redefined at ./FHEM/99_myUtils.pm line 178.
2015.08.09 21:38:03.679 1: PERL WARNING: Subroutine rg_Uno_Schlafzimmer_1valueFormat redefined at ./FHEM/99_myUtils.pm line 195.
2015.08.09 21:38:03.681 1: PERL WARNING: Subroutine rg_Uno_Kellerbar_1valueFormat redefined at ./FHEM/99_myUtils.pm line 212.
2015.08.09 21:38:03.688 1: PERL WARNING: Subroutine MuelltermineA redefined at ./FHEM/99_myUtils.pm line 230.
dabei handelt es sich um rd's
in myUtils steht
in 178:
{
in 195
{
ind 212
{
in 230 genauso {
heisst das am ende fehlen nur 4 }
??
Das kommt bei Änderung der myUtils zur Laufzeit mitunter vor.
Gesendet von meinem GT-I9295
Hallo zusammen,
ich habe ein Problem mit einer ReadingsGroup bzw. mit leeren Spalten in einer RG
Ich habe eine Zeile wie folgt definiert:
DEF
<%max_heizungsthermostat>,<Ventil>,<Soll>,<Ist>,<MaxV>,<GID>,<Mode>,<Batterie>,<Temperatur> MAX_029e10:<>,state,temperature,maxValveSetting,<>,groupid,mode,battery,state@HeizkoerperWohnzimmer
Dazu kommen noch andere Heizkörper, dieses Wandthermostat hat keine Ventilstellung und keine Max-Ventilstellung, daher habe ich diese Spalten mit "<>" leer gemacht.
Wenn ich dies allerdings mache wird der Link auf auf Device aus der rg entfernt. Ohne die <> kann ich in der ersten Spalte auf den Devicenamen klicken und lande in der Detailansicht.
Wie kann ich die Spalten leer lassen und trotzdem den Link aufs Device behalten?
Danke und Grüße
Gizmoh
du kannst entweder den link von hand einbauen. beispiele gibt es weiter oben und ich glaube auch im wiki oder du kannst valueColumn verwenden um ein reading in eine bestimmte spalte zu schieben und die leeren spalten automatisch zu überspringen.
gruss
andre
Hi,
bekomme jetzt beim fhem start diese Meldung:
2015.08.19 06:42:52.501 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
Hab ich was falsch definiert?
EDIT
und bei aktiviertem stacktrace, diesen Log eintrag
2015.08.19 20:33:32.776 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
2015.08.19 20:33:32.776 3: stacktrace:
2015.08.19 20:33:32.776 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (524)
2015.08.19 20:33:32.777 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (992)
2015.08.19 20:33:32.777 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1081)
2015.08.19 20:33:32.777 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1493)
2015.08.19 20:33:32.778 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (806)
2015.08.19 20:33:32.778 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (435)
2015.08.19 20:33:32.778 3: main::FW_Read called by fhem.pl (3046)
2015.08.19 20:33:32.779 3: main::CallFn called by fhem.pl (649)
Hallo,
ich brauch jetzt auch mal Hilfe ;)
Ich versuche die ganze Zeit das Beispiel aus dem Wiki http://www.fhemwiki.de/wiki/ReadingsGroup#Heizungsteuerung_f.C3.BCr_HM_Wand-_und_Heizk.C3.B6rperthermostate für meine FHTs umzusetzen. Soweit so gut, die Anzeige funktioniert samt der Icons.
(http://images.tapatalk-cdn.com/15/08/29/7974be68e061716a448567160e19576c.jpg)
Aber die Anzeige des Ventils (actuator) macht mir im Log PERL WARNINGs
PERL WARNING: Argument "27%" isn't numeric in devision (/) at ...
in fhem sieht das ganze so aus:
attr heatingInfo valueFormat {if($READING eq "actuator" && $VALUE ne "0"){$VALUE = int(int($VALUE)/10)*10}}
Auszug aus
attr heatingInfo valueIcon:
'actuator.0' => 'sani_heating_level_0@002AE0',
'actuator.10' => 'sani_heating_level_10@F8D53D','actuator.20' => 'sani_heating_level_20@FF9341',
'actuator.30' => 'sani_heating_level_30@F17F3F','actuator.40' => 'sani_heating_level_40@E46C3C',
'actuator.50' => 'sani_heating_level_50@DE3B3A','actuator.60' => 'sani_heating_level_60@A30D2D',
'actuator.70' => 'sani_heating_level_70@B40A23','actuator.80' => 'sani_heating_level_80@C40619',
'actuator.90' => 'sani_heating_level_90@D4030F','actuator.100' => 'sani_heating_level_100@E50005'
ich habe schon aus
$VALUE = int($VALUE/10)*10
$VALUE = int(int($VALUE)/10)*10 gemacht. Die Warnings bleiben und müllen mir das Log voll.
int() ist nicht geeignet den nichtnumerischen teil abzuschneiden. das ginge z.b. mit einer regex.
nimm $NUM statt $VALUE. das ist der numerische wert.
gruss
andre
Danke,
Das war's
Gesendet von meinem D5803 mit Tapatalk
Hallo zusammen,
ich stehe gerade etwas auf dem Schlauch, Wenn ich einen Wert ohne Kommas im define angebe, bekomme ich den Timestamp mit rein. Aber wie bekomme ich den wieder, wenn ich mehrere Werte angegeben habe, für einen bestimmten Wert?
Mein define sieht aktuell so aus:
<Raum>,<VOC>,<Luftquali>,<TP>,<Lüftung>,<Fenster>
AirQuality.Bad:sensor_value,state,state@Humidity.Bad,state@Lueftung.Bad,state@Fenster.Bad
AirQuality.Kueche:sensor_value,state,state@Humidity.Kueche,state@Lueftung.Kueche,state@s_Fenster.Schlafen
AirQuality.Schlafen:sensor_value,state,state@Humidity.Schlafen,state@Lueftung.Schlafen,state@s_Fenster.Schlafen
AirQuality.Wohnen:sensor_value,state,state@Humidity.Wohnen,state@Lueftung.Wohnen,state@s_Fenster.Schlafen
Jetzt möchte ich den Timestamp von AirQuality.Bad:sensor_value mit drin haben. An anderer Stelle mache ich das mit
{ReadingsTimestamp("AirQuality.Bad","sensor_value","")}
.
Hier führt der Einbau zum sofortigen Absturz von FHEM.
Hat jemand eine Hilfestellung für mich?
Gruß
Veit
...,<{...}>,...
gruss
andre
...,<{...}>,...
gruss
andre
Danke, funktioniert grundsätzlich, aber ich verliere den Longpoll. Gibt es noch eine andere Möglichkeit den Timestamp wieder reinzubekommen mit Longpoll?
Gruß
Veit
zwischen } und > mit @ den reading namen anhängen
gruss
andre
hallo andre,
ich habe probleme mit freezes (perfmon) bei einer readingsgoup, die seit den veränderungen im juni auftreten. mit der version 8462 scheint noch alles halbwegs normal zu laufen. seit dem müssen sich die verarbeitungszeiten bei einer readingsänderung mindestens verdoppelt haben, sodass nun bei jeder readingsänderung freezes auftauchen, sobald die readingsgroup sichtbar ist.
könntest du mal einen blick riskieren, ob es eventuell möglich ist, ein paar optimierungen zu finden. irgend etwas muss in den neuen versionen ja "hakeln". die readingsgroup ist bestimmt seit frühjahr des jahres unverändert und fehler/warnungen werden mit der aktuellen version auch nicht gemeldet.
http://forum.fhem.de/index.php/topic,40635.msg328563.html#msg328563 (http://forum.fhem.de/index.php/topic,40635.msg328563.html#msg328563)
gruss frank
hab dir im anderen thread geantwortet.
gruss
andre
Hallo,
wollte heute mal die
set name visibility hide
ausprobieren.
1. Dabei ist mir aufgefallen, dass wohl in der Commandref beim set-Befehl das "visibility" in der Beschreibung fehlt (oder es wird mir nicht vorgelesen)
2. set name visibility hide
hat leider nicht zum Ergebnis, dass die rg ausgeblendet wird. Habe ich das falsch verstanden, dass mit dem set name visibility show/hide nicht die Sichtbarkeit in einer Seite ein- oder ausgeschaltet werden kann??
Eine Fehlermeldung gibt es jedenfalls nicht.
Möchte in Abhängigkeit von den in der ersten rg angezeigten Werte die weiteren rgs ein- bzw. ausblenden.
Elektrolurch
Hallo,
das mit visibility klappt nicht, ich habe jetzt disable auf 3 gesetzt und damit bekomme ich die gewünschte (ausgeblendete) Darstellung. Was visibility machen soll, ist mir nicht klar.
Habe da noch ein anderes Problem:
Mit folgender Definition möchte ich das Icon für Shuffle und Repeat nur dann anzeigen, wenn currentNormalAudio = 1 ist, beim Radio-Stram macht ja "zufällige Wiedergabe" oder "Wiederholen" keinen Sinn.
DEF SonosCC:!Previous,transportState,!Next,!VolumeD,!VolumeU,Loudness,!Mute,<{ReadingsVal($DEVICE,'currentNormalAudio',0)?'Shuffle':undef}>@currentNormalAudio,<{ReadingsVal($DEVICE,'currentNormalAudio',0)?'Repeat':undef}>@currentNormalAudio
Und wenn
2015-09-20 15:29:44 currentNormalAudio 1
werden die beiden Icons trotzdem nicht angezeigt.
Ich habe die CommandRef so verstanden, dass
<{perl Ausdruck, der den Readingnamen zurückliefrt}> ist und
@reading2 das reading ist, dass auch longpoll triggert.
Die Anzeige soll sich sowohl aktualisieren, wenn Shuffle oder Repeat sich ändert, als auch wenn der Audiostream umgeschaltet wird (ein/ausblenden der Icons)
Was mache ich da falsch?
Elektrolurch
Hallo,
attr SonosCC_rg0 valueSuffix {'state.on' => '<br><span style="text-align:center">ein<br>$ROOM</span>','state.off' => '<br><span style="text-align:center">aus<br>$ROOM</span>' }
Weder $ROOM noch %ROOM werden ersetzt. Auf dem Screen erscheint an der entsprechenden Stelle nur "$ROOM".
Geht die Ersetzung für ValueSuffix nicht?
Für den vorigen Post habe ich auch noch keine Lösung gefunden.
Elektrolurch
bis jetzt wird ROOM (und GROUP) nur für mapping, valueIcon und nameIcon unterstützt. das muss ich noch vereinheitlichen.
visibility ist dazu da eine readingsGroup (oder einen teil davon) ein und aus zu blenden. du musst aber auch das visibility attribut passend setzen.
das mit dem icons schaue ich mir an.
gruss
andre
Ok. Danke. Hatte schon im Code von Lookup2 nachgesehen.
Habe mir über eine sub einen Workaround gebastelt. Wäre allerdings schön, wenn das tatsächlich einheitlich wäre. Ich muss mir ja wg. Screenreader zu jedem Icon noch einen Text basteln, da brauche ich schon ziemlich häufig das valueSuffix. Hier in dem Fall sollte der Raumname der Schalter angezeigt werden.
Mit dem visibility Attribut hatte ich auch schon herumgespielt, aber mit wenig Erfolg.
Derzeit setze ich für die rgs, die ein-/ausgeblendet werden sollen, disable auf 3 und rufe die js-Funktion für den Screenaufbau auf.
Die hat allerdings den Nachteil, dass bei meinem Firefox (aktuelle Version) eine Nachfrage kommt, wenn zwei Fenster offen sind und dann wird das Fenster im Hintergrund nach vorne gepoppt und fhem ist dann nicht mehr das aktive Fenster. So ganz ist das noch nicht zufriedenstellend..
Gruß und schönes Wk.
Elektrolurch
Hallöchen,
ich habe hier ein ,vielleicht, ganz triviales Problemchen....
Ich möchte in einer rg alle Devices haben, welche mit Temperatur im alias anfangen.
Ich habe mir schon überall den Wolf gesucht aber komme leider nicht weiter -
gibt es hier jemand der mir vielleicht weiterhelfen könnte?
Danke & Gruß, Smeagel
PERL WARNING: Argument "%EVTPART1" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525
Diesen Fehler habe ich seit dem heutigen update. Liegt das am Code selbst oder an einem falschen Einsatz meinerseits?
VG Dieter
das EVTPART in der readingsGroup geht ist mehr oder weniger zufall und nicht direkt beabsichtigt. du solltest $VALUE oder $NUM verwenden.
ansonsten schau mal ob jetzt $EVTPART1 geht. ist teil der featurelevel 5.7 umstellung in fhem.
gruss
andre
Zitat von: justme1968 am 24 November 2015, 11:04:06ansonsten schau mal ob jetzt $EVTPART1 geht. ist teil der featurelevel 5.7 umstellung in fhem.
mit $EVTPART1 gehts, danke Andre - da hatte sich doch glatt ein altes Stück Code versteckt ... :o
ich habe mir eine Readingsgroup erstellt die bisher auch richtig angezeigt hat.
Jetzt habe ich den Terrassen Sensor ausgetauscht weil der auch den Luftdruck anzeigt, diesen bekomme ich aber nicht in der readingsgroup zum anzeigen, wo liegt mein Fehler..?
DEF der readingsgroup:
Temperatur_Norden:,<Temperatur>,temperature,<Luftfeuchte>,humidity Temperatur_Terrasse:,<Temperatur>,temperature,<Luftfeuchte>,humidity,<Helligkeit>,luminosity,<Luftdruck>pressure
valueFormat der readingsgroup:
{ temperature => "%.1f °C", humidity => "%.1f %%", luminosity => "%.1f Lx", pressure => "%i mbar" }
valueStyle der readingsgroup:
{ if($DEVICE eq "Eingang Norden" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'}elsif($DEVICE eq "Eingang Norden" && $READING eq "temperature" && $VALUE > 22) { 'style="color:orange"'}elsif($DEVICE eq "Eingang Norden" && $READING eq "temperature" && $VALUE < 5) { 'style="color:blue"'}elsif($DEVICE eq "Terrasse Süden" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'}elsif($DEVICE eq "Terrasse Süden" && $READING eq "temperature" && $VALUE > 22) { 'style="color:orange"'}elsif($DEVICE eq "Terrasse Süden" && $READING eq "temperature" && $VALUE < 5) { 'style="color:blue"'}elsif($READING eq "humidity" && $VALUE > 65) { 'style="color:red"'}elsif($READING eq "humidity" && $VALUE > 60) { 'style="color:orange"'}elsif($READING eq "luminosity" && $VALUE < 20) { 'style="color:red"'}elsif($READING eq "luminosity" && $VALUE < 150) { 'style="color:orange"'}elsif($READING eq "pressure" && $VALUE < 1000) { 'style="color:red"'}elsif($READING eq "pressure" && $VALUE < 900) { 'style="color:orange"'}else{'style="color:lightgreen"'} }
Frage am Rande, wie habt ihr eure Werte definiert, also ab wann rot, orange, blau und grün angezeigt wird.
Wäre mal interessant zu wissen besonders grad jetzt bei dem Luftdruckwert da ich den bisher nicht hatte.
Kann ich auch vor den Werten jeweils noch ein Icon anzeigen..?
Zitat von: moonsorrox am 25 November 2015, 13:45:26
Frage am Rande, wie habt ihr eure Werte definiert, also ab wann rot, orange, blau und grün angezeigt wird.
Wäre mal interessant zu wissen besonders grad jetzt bei dem Luftdruckwert da ich den bisher nicht hatte.
Hier mal meine Abstufungen:
Luftfeuchte: blau unter 40%, dann grün bis 60%, darüber rot
Temperatur: blau unter 6 °C, dann grün bis 24°C, darüber rot
Den Fehler habe ich jetzt gefunden...! ;)
Hier fehlt ein Komma "<Luftdruck>,pressure"
Zitat von: grappa24 am 25 November 2015, 14:49:58
Hier mal meine Abstufungen:
Luftfeuchte: blau unter 40%, dann grün bis 60%, darüber rot
Temperatur: blau unter 6 °C, dann grün bis 24°C, darüber rot
ja OK Danke
Ich habe das jetzt mal angepaßt mit 6 °C da wir grad 5,2 ° haben, aber hier wird nichts blau :-\
Irgendwo da oben in meinem Code noch ein Fehler drin ?
Heißt dein Device "Temperatur_Terrasse" oder "Terrasse Süden"? Ich nehme an die vergleichst im valueStyle auf den alias und nicht den Devicenamen.
Gruß,
Gero
Zitat von: gero am 26 November 2015, 07:37:03
Heißt dein Device "Temperatur_Terrasse" oder "Terrasse Süden"? Ich nehme an die vergleichst im valueStyle auf den alias und nicht den Devicenamen.
Gruß,
Gero
Oh je macht man es richtig geht es :)
ich hatte einiges geändert gerade weil ich die Namen aufgeräumt hatte und angepaßt, dabei habe ich wie du richtig erkannt hast den Alias eingetragen, was dann natürlich nicht funktioniert...!
Danke
Hi, beim setzen einer Temperatur am HM-CC-RT-DN bekomme ich diese Log Fehlermeldung:
2015.12.12 02:22:53.907 3: CUL_HM set HeizungFenster_Clima desired-temp 19
2015.12.12 02:22:55.737 3: CUL_HM set Heizung_Tuer_ClimRT_tr desired-temp 19.5
2015.12.12 02:24:57.154 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
Was ist da falsch?
Eine kurze Frage zum zentrieren von Icons:
Ich nutze
attr myReadingsGroup valueStyle style="text-align:center"
alles passt. Dann weise ich die Icons zu, und die werden linksbündig angezeigt, sind ja auch kein text, aber wie müsste der Style dann aussehen?
aus meiner Bedienleiste für Sonos
valueColumns {'Play' => 'width="60" align="center"','transportState' => 'width="60" align="center"','Pause' => 'width="60" align="center"','Previous' => 'width="60" align="center"','Next' => 'width="60" align="center"','VolumeD' => 'width="60" align="center"','VolumeU' => 'width="60" align="center"','Loudness' => 'width="60" align="center"','Mute' => 'width="60" align="center"','MuteT' => 'width="60" align="center"','ShuffleT' => 'width="60" align="center"','RepeatT' => 'width="60" align="center"',}
valueIcon {'Play' => 'rc_PLAY.svg','transportState.PLAYING' => 'rc_PLAY.svg','transportState.STOPPED' => 'rc_PAUSE.svg','transportState.PAUSED_PLAYBACK' => 'rc_PAUSE.svg','transportState.ERROR' => 'rc_PAUSE.svg@red','Pause' => 'rc_PAUSE.svg','Previous' => 'rc_PREVIOUS.svg','Next' => 'rc_NEXT.svg','VolumeD' => 'rc_VOLDOWN.svg','VolumeU' => 'rc_VOLUP.svg','Loudness' => 'audio_loudness.svg','Mute.0' => 'rc_MUTE.svg','Mute.1' => 'rc_MUTE.svg@red','Shuffle.0' => 'rc_SHUFFLE.svg','Shuffle.1' => 'rc_SHUFFLE.svg@red','Repeat.0' => 'rc_REPEAT.svg','Repeat.1' => 'rc_REPEAT.svg@red' }
valueStyle {'Play' => 'style="font-size:9px"','transportState' => 'style="font-size:9px"','Pause' => 'style="font-size:9px"','Previous' => 'style="font-size:9px"','Next' => 'style="font-size:9px"','VolumeD' => 'style="font-size:9px"','VolumeU' => 'style="font-size:9px"','Loudness' => 'style="font-size:9px"','Mute' => 'style="font-size:9px"','MuteT' => 'style="font-size:9px"','ShuffleT' => 'style="font-size:9px"','RepeatT' => 'style="font-size:9px"',}
valueSuffix {'Play' => '<br><span style="text-align:center">Start</span>','transportState.PLAYING' => '<br><span style="text-align:center">abspielen</span>','transportState.STOPPED' => '<br><span style="text-align:center">angehalten</span>','transportState.PAUSED_PLAYBACK' => '<br><span style="text-align:center">Pause</span>','transportState.ERROR' => '<br><span style="text-align:center">ausgeschaltet</span>','Pause' => '<br><span style="text-align:center">Pause</span>','Previous' => '<br><span style="text-align:center">Zurück</span>','Next' => '<br><span style="text-align:center">Vorwärts</span>','VolumeD' => '<br><span style="text-align:center">Leiser</span>','VolumeU' => '<br><span style="text-align:center">Lauter</span>','Loudness.0' => '<br><span style="text-align:center">Loudness<br>aus</span>','Loudness.1' => '<br><span style="text-align:center">Loudness<br>ein</span>','Mute.0' => '<br><span
Damit steht unter den Icons noch ein Text u.U. auch noch mit der Wertangabe.
Elektrolurch
Hallo,
hat jemand eine Idee, wie ich das hier in eine readingsGroup kriege?
Würde das gerne für alle Dim Devices im Raum so einstellen.
attr device widgetOverride dim:knob,min:0,max:100,step:1,linecap:round,angleOffset:-125,angleArc:250
Spartacus:
Das müsste doch mit dem command - Attribut der rg gehen:
attr rg commands {'dim' => 'dim:knob,min:0,max:100,step:1,linecap:round,angleOffset:-125,angleArc:250'}
Wenn Du das so schreibst:
attr rg commands {'dim' => 'dim:'}
sollte eigentlich das in fhem für das device default definierte setlist funktionieren. Ob das allerdings mit widgetOverwrite geht, weiß ich nicht. Ausprobieren.
Elektrolurch
Hallo Elektrolurch,
ja, das geht tatsächlich! Sowohl Dein die erste als auch die zweite Variante
Danke Dir!
Spartacus
Hallo,
ich habe noch eine Frage zum Thema readingsGroup.
Habe einen Slider eingebaut, allerdings wird der Wert im Slider selber nicht aktualisiert, wenn ich die Position anfahre(siehe Screenshot). Erst nach einem Browser Refresh wird dann die Zahl dargestellt.
Woran liegt das?
Danke,
Spartacus
Hallo Spartakus,
ist für die Webinstanz von fhem das Attribut "longpoll auf 1 gesetzt?
Wie wird denn der Wert des readings aktualisiert?
Wenn Du die command-Anweisung in der rg für den slider heraus nimmst, dann wird ja nur das reading angezeigt. Wird dann der Wert in der Darstellung aktualisiert?
Alternativ kannst Du auch mal statt des sliders eine dropdown-Liste definieren.
'dim' => 'dim:0,10,20,30' duw.
Wird die richtig akualisiert?
Wenn es mit dem nackten reading oder dem dropdown-Menü funktioniert, dann liegt es am slider....
Elektrolurch
Hallo Elektrolurch,
danke für Deine ausführliche Antwort. Dropdown und ohne Slider funktioniert in der rg wie es soll! Longpoll ist auch gesetzt.
Der Slider im enocean device funktioniert jedoch korrekt, nur halt in der rg nicht.
Hier mal die rg:
Internals:
CFGFN Config/01-Wohnzimmer.cfg
DEF switch.di.02.EG.wz.RO.xx.dum:<%fts_shutter_automatic>,<Automatik>,state,!Ein,!Aus,<>
EG.wz.RO.links:<%fts_shutter_updown>,<Wohnzimmer links>,position,<Position>,!pos,<in %>
EG.wz.RO.rechts:<%fts_shutter_updown>,<Wohnzimmer rechts>,position,<Position>,!pos,<in %>
NAME rg.01.EG.wz.RO
NR 859
NTFY_ORDER 50-rg.01.EG.wz.RO
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
EG.wz.RO.links 1
EG.wz.RO.rechts 1
switch.di.02.EG.wz.RO.xx.dum 1
Content2:
DEVICES:
ARRAY(0x2f5a818)
ARRAY(0x2f5aa40)
ARRAY(0x2f5a950)
Fhem:
lastDefChange 6
last_update 1450194826.45943
Helper:
DEF
commands {'Ein' => 'set $DEVICE on', 'Aus' => 'set $DEVICE off', 'pos' => 'position:slider,0,5,100'}
Positions:
EG.wz.RO.links.pos 2:5
EG.wz.RO.links.position 2:3
EG.wz.RO.rechts.pos 3:5
EG.wz.RO.rechts.position 3:3
switch.di.02.EG.wz.RO.xx.dum.Aus 1:5
switch.di.02.EG.wz.RO.xx.dum.Ein 1:4
switch.di.02.EG.wz.RO.xx.dum.state 1:3
Valueicon:
position %devStateIcon
Values:
formated:
ARRAY(0x2f29be8)
ARRAY(0x2f3e3f0)
ARRAY(0x2f3e810)
orig:
ARRAY(0x2f2c620)
ARRAY(0x2f23f68)
ARRAY(0x2ef63e8)
prefixsuffix:
ARRAY(0x2f3dff8)
ARRAY(0x2f2ec68)
ARRAY(0x2f2c158)
Attributes:
alias Rolladen schalten
commands {'Ein' => 'set $DEVICE on', 'Aus' => 'set $DEVICE off', 'pos' => 'position:slider,0,5,100'}
nonames 1
notime 1
room 01-Wohnzimmer
valueIcon {'position'=> '%devStateIcon' }
...und noch was: Ich versuche krampfhaft für das Dummy-Device "switch.di.02.EG.wz.RO.xx.dum" ein valueIcon für "on" und "off" anzuzeigen. Aber irgendwie klappt das nicht zusammen mit der Posizionsanzeige.
valueIcon {"on" =>"10px-kreis-gruen","off" => "10px-kreis-rot"}
Ich könnte ich auch auf das devStateIcon des Devices mit
{ 'state'=> '%devStateIcon' }
verweisen. Dann funktioniert aber die position für den Rolladen nicht mehr!
Jemand eine Idee?
Christian
Hallo justme1968!
Nach einem Update auf o.g. Rev. funktionieren die Dropdowns in meiner readingsGroup nicht mehr bzw. werden mit dem Match aus dem Mapping-Attribut ersetzt.
Muss ich an der Def etwas ändern oder ist das ein Bug?
Es handelt sich um HM-Thermostate.
list:
Internals:
CFGFN ./FHEM/33_readingsGroup.cfg
DEF <Regler>,<CMD>,<Modus>,<Fenster>,<Temperatur>,<Ventil>,<Steuerung>,<Batterie>,<Bediensperre>
.*_Clima:state@{getDev($DEVICE)},controlMode,R-winOpnMode,measured-temp,ValvePosition,desired-temp,batteryLevel@{getDev($DEVICE)},R-btnLock@{getDev($DEVICE)}
NAME Thermostate_rdg
NR 207
NTFY_ORDER 50-Thermostate_rdg
STATE Initialized
TYPE readingsGroup
CHANGETIME:
Content:
EG_Esszimmer_Thermostat_Heizkoerper_Clima 1
EG_Spielzimmer_Thermostat_Heizkoerper_Clima 1
EG_WC_Thermostat_Fussbodenheizung_Clima 1
EG_Wohnzimmer_Thermostat_Heizkoerper_Clima 1
OG_Bad_Thermostat_Fussbodenheizung_Clima 1
OG_Bad_Thermostat_Heizkoerper_Clima 1
OG_Buero_Thermostat_Heizkoerper_Clima 1
OG_Kinderzimmer_Thermostat_Heizkoerper_Clima 1
OG_Schlafzimmer_Thermostat_Heizkoerper_Clima 1
Content2:
EG_Esszimmer_Thermostat_Heizkoerper 1
EG_Spielzimmer_Thermostat_Heizkoerper 1
EG_WC_Thermostat_Fussbodenheizung 1
EG_Wohnzimmer_Thermostat_Heizkoerper 1
OG_Bad_Thermostat_Fussbodenheizung 1
OG_Bad_Thermostat_Heizkoerper 1
OG_Buero_Thermostat_Heizkoerper 1
OG_Kinderzimmer_Thermostat_Heizkoerper 1
OG_Schlafzimmer_Thermostat_Heizkoerper 1
DEVICES:
ARRAY(0x39c6160)
ARRAY(0x319cd58)
ARRAY(0x39d1f50)
ARRAY(0x389f7b8)
ARRAY(0x39f7618)
ARRAY(0x39dfac8)
ARRAY(0x344bd48)
ARRAY(0x35fc410)
ARRAY(0x349fad8)
ARRAY(0x171a238)
DEVICES2:
ARRAY(0x39c6160)
ARRAY(0x319cd58)
ARRAY(0x39d1f50)
ARRAY(0x389f7b8)
ARRAY(0x39f7618)
ARRAY(0x39dfac8)
ARRAY(0x344bd48)
ARRAY(0x35fc410)
ARRAY(0x349fad8)
ARRAY(0x171a238)
ARRAY(0x3198770)
ARRAY(0x39ddd28)
ARRAY(0x39dd9f8)
ARRAY(0x39d3fc0)
ARRAY(0x39dd258)
ARRAY(0x39d52e8)
ARRAY(0x35e1ff8)
ARRAY(0x39d1288)
ARRAY(0x1806ea8)
ARRAY(0x2b28e68)
ARRAY(0x39dda28)
ARRAY(0x39ccf88)
ARRAY(0x39ece08)
ARRAY(0x34992f0)
ARRAY(0x35d9de8)
ARRAY(0x39cfa68)
ARRAY(0x39da340)
ARRAY(0x39cfff0)
ARRAY(0x31ac4a0)
ARRAY(0x343b7f0)
ARRAY(0x39cd950)
ARRAY(0x389ada8)
ARRAY(0x31abd38)
ARRAY(0x1806fc8)
ARRAY(0x39d94e0)
ARRAY(0x39e8838)
ARRAY(0x208dfc8)
Fhem:
lastDefChange 34
last_update 1450209953.6675
Helper:
DEF
commands { 'desired-temp'=>'desired-temp:','controlMode'=>'controlMode:','R-btnLock.on'=>'set $DEVICE regSet btnLock off','R-btnLock.off'=>'set $DEVICE regSet btnLock on' }
nameStyle style="font-weight:bold;text-align:left"
valueFormat {if($READING eq "batteryLevel"){if($VALUE>=3){$VALUE=100} elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25} else{$VALUE=0}}}
valueStyle { if($READING eq "measured-temp" && $VALUE > 23.0) {'style="color:red;text-align:center"'} elsif($READING eq "measured-temp" && $VALUE < 19.0) {'style="color:blue;text-align:center"'} elsif($READING eq "ValvePosition" && $VALUE >= 60) {'style="color:red;text-align:center"'} elsif($READING eq "ValvePosition" && $VALUE <= 59 && $VALUE >= 11) {'style="color:orange;text-align:center"'} elsif($READING eq "ValvePosition" && $VALUE <= 10) {'style="color:blue;text-align:center"'} else {'style="color:green;text-align:center"'} }
Mapping:
EG_Esszimmer_Thermostat_Heizkoerper_Clima HK Esszimmer
EG_Spielzimmer_Thermostat_Heizkoerper_Clima HK Spielzimmer
EG_WC_Thermostat_Fussbodenheizung_Clima FB WC
EG_Wohnzimmer_Thermostat_Heizkoerper_Clima HK Wohnzimmer
OG_Bad_Thermostat_Fussbodenheizung_Clima FB Bad
OG_Bad_Thermostat_Heizkoerper_Clima HK Bad
OG_Buero_Thermostat_Heizkoerper_Clima HK Buero
OG_Kinderzimmer_Thermostat_Heizkoerper_Clima HK Kinderzimmer
OG_Schlafzimmer_Thermostat_Heizkoerper_Clima HK Schlafzimmer
Valueicon:
R-btnLock.off secur_open@red
R-btnLock.on secur_locked@green
R-btnLock.set_off secur_open@orange
R-btnLock.set_on secur_open@orange
R-winOpnMode.on fts_window_1w@green
battery.low batterie@red
battery.ok batterie@green
batteryLevel.0 measure_battery_0@blue
batteryLevel.100 measure_battery_100@green
batteryLevel.25 measure_battery_25@red
batteryLevel.50 measure_battery_50@orange
batteryLevel.75 measure_battery_75@green
state.CMDs_done edit_settings@green
state.CMDs_pending edit_settings@orange
state.CMDs_processing... edit_settings@red
state.MISSING ACK message_attention@red
Valuesuffix:
ValvePosition %
desired-temp °C
measured-temp °C
Attributes:
commands { 'desired-temp'=>'desired-temp:','controlMode'=>'controlMode:','R-btnLock.on'=>'set $DEVICE regSet btnLock off','R-btnLock.off'=>'set $DEVICE regSet btnLock on' }
mapping { 'OG_Bad_Thermostat_Heizkoerper_Clima'=>'HK Bad','OG_Bad_Thermostat_Fussbodenheizung_Clima'=>'FB Bad','OG_Schlafzimmer_Thermostat_Heizkoerper_Clima'=>'HK Schlafzimmer','EG_Esszimmer_Thermostat_Heizkoerper_Clima'=>'HK Esszimmer','EG_WC_Thermostat_Fussbodenheizung_Clima'=>'FB WC','OG_Buero_Thermostat_Heizkoerper_Clima'=>'HK Buero','EG_Spielzimmer_Thermostat_Heizkoerper_Clima'=>'HK Spielzimmer','EG_Wohnzimmer_Thermostat_Heizkoerper_Clima'=>'HK Wohnzimmer','OG_Kinderzimmer_Thermostat_Heizkoerper_Clima'=>'HK Kinderzimmer'}
nameStyle style="font-weight:bold;text-align:left"
noheading 1
room Reading
style style="text-align:center"
valueFormat {if($READING eq "batteryLevel"){if($VALUE>=3){$VALUE=100} elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25} else{$VALUE=0}}}
valueIcon {'R-winOpnMode.on'=>'fts_window_1w@green','state.CMDs_done'=>'edit_settings@green','state.CMDs_pending'=>'edit_settings@orange','state.CMDs_processing...'=>'edit_settings@red','state.MISSING ACK'=>'message_attention@red','battery.ok'=>'batterie@green','battery.low'=>'batterie@red','batteryLevel.100'=>'measure_battery_100@green','batteryLevel.75'=>'measure_battery_75@green','batteryLevel.50'=>'measure_battery_50@orange','batteryLevel.25'=>'measure_battery_25@red','batteryLevel.0'=>'measure_battery_0@blue','R-btnLock.on'=>'secur_locked@green','R-btnLock.set_on'=>'secur_open@orange','R-btnLock.off'=>'secur_open@red','R-btnLock.set_off'=>'secur_open@orange'}
valueStyle { if($READING eq "measured-temp" && $VALUE > 23.0) {'style="color:red;text-align:center"'} elsif($READING eq "measured-temp" && $VALUE < 19.0) {'style="color:blue;text-align:center"'} elsif($READING eq "ValvePosition" && $VALUE >= 60) {'style="color:red;text-align:center"'} elsif($READING eq "ValvePosition" && $VALUE <= 59 && $VALUE >= 11) {'style="color:orange;text-align:center"'} elsif($READING eq "ValvePosition" && $VALUE <= 10) {'style="color:blue;text-align:center"'} else {'style="color:green;text-align:center"'} }
valueSuffix { 'measured-temp' => " °C", 'ValvePosition' => " %", 'desired-temp' => "°C" }
Zitat von: Tommy82 am 12 Dezember 2015, 02:28:32
Hi, beim setzen einer Temperatur am HM-CC-RT-DN bekomme ich diese Log Fehlermeldung:
2015.12.12 02:22:53.907 3: CUL_HM set HeizungFenster_Clima desired-temp 19
2015.12.12 02:22:55.737 3: CUL_HM set Heizung_Tuer_ClimRT_tr desired-temp 19.5
2015.12.12 02:24:57.154 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
Was ist da falsch?
Hi, ich find den Fehler nicht, wo könnte ich mal suchen!?
Danke
Zitat von: burtb am 15 Dezember 2015, 21:33:02
Nach einem Update auf o.g. Rev. funktionieren die Dropdowns in meiner readingsGroup nicht mehr bzw. werden mit dem Match aus dem Mapping-Attribut ersetzt.
.... kannst Du mir mal deine getDev() zeigen?
@JoeALLb: das ist dazu da um den text vor dem drop down oder slider zu ersetzen. das gab es eigentlich früher schon mal und ist durch einen umbau auf javascript seite mal verloren gegangen. mach mal bitte den match genauer oder liefere genau für das reading mit dem drop down ein undef zurück.
gruss
andre
Hallo,
so, dass mit dem Icon im zweiten Device habe ich jetzt hingekriegt. Allerdings stört mich immer noch die Sache mit dem Slider (siehe Bild, bzw. im Thread weiter oben)!
Weiß niemand, wie man das lösen kann, bzw. ob es zu lösen ist?
Spartacus.
Zitat von: JoeALLb am 16 Dezember 2015, 10:09:56
.... kannst Du mir mal deine getDev() zeigen?
Aber sischer :)
sub getDev($)
{
my $device = shift;
return InternalVal($device,"device","error");
}
Hi Andre,
Zitat von: justme1968 am 16 Dezember 2015, 10:42:22
@JoeALLb: das ist dazu da um den text vor dem drop down oder slider zu ersetzen. das gab es eigentlich früher schon mal und ist durch einen umbau auf javascript seite mal verloren gegangen. mach mal bitte den match genauer oder liefere genau für das reading mit dem drop down ein undef zurück.
Genau das Problem von JoeALLb habe ich auch. Ich habe noch nicht ganz verstanden, was Du brauchst. "Mapping" sieht bei mir aktuell so aus:
[...]dum_Fstr_Sonnenschutztemperatur_aussen => 'Außentemp. Sonnenschutz', dum_Fstr_Sonnenschutztemperatur_innen => 'Innentemp. Sonnenschutz',[...]
Der entsprechende Teil der Definition:
[...]
dum_Fstr_Sonnenschutztemperatur_innen:state
dum_Fstr_Sonnenschutztemperatur_aussen:state
[...]
Wie könnte man den Match noch genauer machen? Ich möchte, dass der im Mapping angegebene Text und dann die Dropdown-Box angezeigt wird. Bis "gerade eben" funktionierte das auch noch so.
Anbei der Vollständigkeit halber noch das list auf die komplette readingsGroup:
Internals:
DEF dum_Rollo_runter_bei_Film:state
dum_Keiner_da_Fstr_auf_Rollo_zu:state
dum_abwesend_Rollo_Ausgang_Terrasse_zu:state
dum_Fstr_auf_Rollo_hoch:state
dum_Rollo_auf_Licht_aus:state
dum_Fstr_Sonnenschutztemperatur_innen:state
dum_Fstr_Sonnenschutztemperatur_aussen:state
NAME rg_Rollooptionen
NR 877
NTFY_ORDER 50-rg_Rollooptionen
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
dum_Fstr_Sonnenschutztemperatur_aussen 1
dum_Fstr_Sonnenschutztemperatur_innen 1
dum_Fstr_auf_Rollo_hoch 1
dum_Keiner_da_Fstr_auf_Rollo_zu 1
dum_Rollo_auf_Licht_aus 1
dum_Rollo_runter_bei_Film 1
dum_abwesend_Rollo_Ausgang_Terrasse_zu 1
Content2:
DEVICES:
ARRAY(0x6e56c18)
ARRAY(0x6fcebe8)
ARRAY(0x747a3a8)
ARRAY(0x6eaf6e0)
ARRAY(0x7a1af20)
ARRAY(0x747c688)
ARRAY(0x6e44208)
Fhem:
lastDefChange 763
last_update 1450347787.24547
Helper:
DEF
valueStyle {if ($READING eq "state") {'style="text-align:center"'}}
Commands:
state state:
Mapping:
dum_Fstr_Sonnenschutztemperatur_aussen Außentemp. Sonnenschutz
dum_Fstr_Sonnenschutztemperatur_innen Innentemp. Sonnenschutz
dum_Fstr_auf_Rollo_hoch Fenster auf, Rollo hoch
dum_Keiner_da_Fstr_auf_Rollo_zu Fstr offen, keiner da, Rollo zu
dum_Rollo_auf_Licht_aus Rolladen auf, hell, Licht aus
dum_Rollo_runter_bei_Film Rollo runter, wenn TV an
dum_abwesend_Rollo_Ausgang_Terrasse_zu Keiner da, Rollo Terrasse zu
Positions:
dum_Fstr_Sonnenschutztemperatur_aussen.state 7:1
dum_Fstr_Sonnenschutztemperatur_innen.state 6:1
dum_Fstr_auf_Rollo_hoch.state 4:1
dum_Keiner_da_Fstr_auf_Rollo_zu.state 2:1
dum_Rollo_auf_Licht_aus.state 5:1
dum_Rollo_runter_bei_Film.state 1:1
dum_abwesend_Rollo_Ausgang_Terrasse_zu.state 3:1
Valueicon:
dum_Fstr_auf_Rollo_hoch %devStateIcon
dum_Keiner_da_Fstr_auf_Rollo_zu %devStateIcon
dum_Rollo_auf_Licht_aus %devStateIcon
dum_Rollo_runter_bei_Film %devStateIcon
dum_abwesend_Rollo_Ausgang_Terrasse_zu %devStateIcon
Values:
formated:
ARRAY(0x6e72f28)
orig:
ARRAY(0x737fa60)
prefixsuffix:
ARRAY(0x6e0b2a8)
Attributes:
commands { 'state' => 'state:' }
fp_fp_Config_Rollos 120,880,0,,
mapping {dum_Rollo_runter_bei_Film => "Rollo runter, wenn TV an", dum_Keiner_da_Fstr_auf_Rollo_zu => 'Fstr offen, keiner da, Rollo zu', dum_abwesend_Rollo_Ausgang_Terrasse_zu => 'Keiner da, Rollo Terrasse zu', dum_Fstr_auf_Rollo_hoch => 'Fenster auf, Rollo hoch', dum_Fstr_Sonnenschutztemperatur_aussen => 'Außentemp. Sonnenschutz', dum_Fstr_Sonnenschutztemperatur_innen => 'Innentemp. Sonnenschutz', dum_Rollo_auf_Licht_aus => 'Rolladen auf, hell, Licht aus' }
noheading 1
nolinks 1
nostate 1
notime 1
room Cfg_Fenster,Cfg_Floorplan
style class="block wide rg_Rollooptionen"
valueIcon { "dum_Rollo_runter_bei_Film" => '%devStateIcon', "dum_Keiner_da_Fstr_auf_Rollo_zu" => '%devStateIcon', "dum_abwesend_Rollo_Ausgang_Terrasse_zu" => '%devStateIcon', 'dum_Fstr_auf_Rollo_hoch' => '%devStateIcon', 'dum_Rollo_auf_Licht_aus' => '%devStateIcon' }
valueStyle {if ($READING eq "state") {'style="text-align:center"'}}
Ich habe ein Beispiel analog zu
http://www.fhemwiki.de/wiki/ReadingsGroup#Heizungswerte.2C_Status_und_Regelm.C3.B6glichkeit
nachgebaut.
Was jedoch bei mir nicht funktioniert ist, das Aktualisieren eines Readings:
Wenn ich diese Zeile im myUtils.pm Skript angebe, bekomme ich bei jedem Klick auf das Icon in der Readinggroup eine Message zugeschickt. Soweit,. so gut!
Jedoch ändert sich der Rückgabewert aus ReadingsVal() nicht!
$link = "set telegram message set $DEVICE ".ReadingsVal("dateTimePickerPopUp2","state","1") ;
Erst wenn ich die Definition der ReadingsGroup neu einlese
<Device><Comment>
.*_Clima:state@{getDev($DEVICE)},<{myUtils_CheckHeizung($DEVICE,"down")}@desired-new>
wird ein zwischenzeitlich aktualisierter Wert des dateTimePickerPopUp2 übernommen.
Was übersehe ich da? Liest die RG den Code myUtils_CheckHeizung() als Cach in den Speicher?
Hallo,
ich muss doch noch einmal fragen, ob jemand eine Idee hat, wie das Slider-Problem in der rg gelöst werden kann. Ich kann die Werte über den Slider einstellen, dann fährt der Rolladen auch in die gewünschte Position aber dann springt der Slider zurück auf "NaN" (was auch immer das bedeutet). im Log ist unter verbose=5 nichts Ungewöhnliches zu finden. Ein Browser Refresh stell dann wieder den Zahlenwert ein.
Longpoll ist gesetzt!
Christian
Zitat von: burtb am 15 Dezember 2015, 21:33:02
Nach einem Update auf o.g. Rev. funktionieren die Dropdowns in meiner readingsGroup nicht mehr
Das ist bei mir und hier (http://forum.fhem.de/index.php/topic,45901.0.html) auch so, nach einem Restore der 33_readingsGroup.pm vom 14.12. funktioniert es bei mir auch wieder.
list der RG (BA_HEIZUNG => HM-CC-RT-DN):
Internals:
CFGFN FHEM/_my_heizung.cfg
DEF <%sani_heating>,<Heiz-Mode>,<Temp-Soll>,<Temp-Ist>,<Feuchte>,<Heiz-Ventil>,<Bat-Level>,<Bat-Status>
BA_HEIZUNG_Clima:controlMode,desired-temp,measured-temp,humidity@BA_SENSOR_TEMP_HUM,ValvePosition,batteryLevel@BA_HEIZUNG,<{batLevelIndicator('BA_HEIZUNG')}>
NAME BA_HEIZUNG_RG
NR 954
NTFY_ORDER 50-BA_HEIZUNG_RG
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
BA_HEIZUNG_Clima 1
Content2:
BA_HEIZUNG 1
BA_SENSOR_TEMP_HUM 1
DEVICES:
ARRAY(0x3838b90)
ARRAY(0x383de48)
DEVICES2:
ARRAY(0x3838b90)
ARRAY(0x383de48)
ARRAY(0x342ec00)
ARRAY(0x3838368)
Fhem:
lastDefChange 1
last_update 1450788370.01858
Helper:
DEF
nameStyle style="xcolor:white"
valueStyle {if( $READING eq "measured-temp" && $VALUE > 24.0 ){ 'style="color:red"' }elsif( $READING eq "measured-temp" && $VALUE < 20.0 ){ 'style="color:CornflowerBlue"' }elsif( $READING eq "measured-temp" ){ 'style="color:green"' }elsif( $READING eq "humidity" && $VALUE < 40.0 ){ 'style="color:CornflowerBlue"' }elsif( $READING eq "humidity" && $VALUE > 60.0 ){ 'style="color:red"' }elsif( $READING eq "humidity" ){ 'style="color:green"' }else{ 'style="color:gray"' }}
Commands:
controlMode controlMode:
desired-temp desired-temp:
Mapping:
controlMode
desired-temp
Positions:
BA_HEIZUNG.batteryLevel 2:6
BA_HEIZUNG_Clima.ValvePosition 2:5
BA_HEIZUNG_Clima.controlMode 2:1
BA_HEIZUNG_Clima.desired-temp 2:2
BA_HEIZUNG_Clima.measured-temp 2:3
BA_SENSOR_TEMP_HUM.humidity 2:4
Valueformat:
ValvePosition %.0f %%
batteryLevel %.1f V
desired-temp %.1f °C
humidity %.1f %
maxValveSetting %.0f %%
measured-temp %.1f °C
Valueicon:
battery.low batterie@red
battery.ok batterie@lightgreen
window.closed fts_window_1w@lightgreen
window.open fts_window_1w_open@red
Values:
formated:
ARRAY(0x3e39b68)
ARRAY(0x4224850)
ARRAY(0x41a7cd0)
ARRAY(0x3e04978)
ARRAY(0x4304018)
ARRAY(0x423e328)
orig:
ARRAY(0x41a80a8)
ARRAY(0x4230260)
ARRAY(0x41a86d8)
ARRAY(0x3187458)
ARRAY(0x423d810)
ARRAY(0x423da08)
prefixsuffix:
ARRAY(0x41a7da8)
ARRAY(0x4302538)
ARRAY(0x429e518)
ARRAY(0x4303338)
ARRAY(0x423e1a8)
ARRAY(0x4232340)
Attributes:
alias Heizung
commands { 'desired-temp' => 'desired-temp:', 'controlMode' => 'controlMode:' }
group Heizung
mapping { 'desired-temp' => '', 'controlMode' => '' }
nameStyle style="xcolor:white"
room Bad
valueFormat {'measured-temp' => "%.1f °C", 'desired-temp' => "%.1f °C", 'ValvePosition' =>"%.0f %%", 'maxValveSetting' =>"%.0f %%" , 'batteryLevel' =>"%.1f V" , 'humidity' =>"%.1f %"}
valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red', 'window.closed' => 'fts_window_1w@lightgreen', 'window.open' => 'fts_window_1w_open@red'}
valueStyle {if( $READING eq "measured-temp" && $VALUE > 24.0 ){ 'style="color:red"' }elsif( $READING eq "measured-temp" && $VALUE < 20.0 ){ 'style="color:CornflowerBlue"' }elsif( $READING eq "measured-temp" ){ 'style="color:green"' }elsif( $READING eq "humidity" && $VALUE < 40.0 ){ 'style="color:CornflowerBlue"' }elsif( $READING eq "humidity" && $VALUE > 60.0 ){ 'style="color:red"' }elsif( $READING eq "humidity" ){ 'style="color:green"' }else{ 'style="color:gray"' }}
Das ist mehr oder weniger von einem Beispiel aus dem Wiki abgeleitet. Ebenso batLevelIndicator($):
sub batLevelIndicator($) {
my $device = shift;
my $myBatLevel = ReadingsVal($device,"batteryLevel", "" );
my $myBatStatus = ReadingsVal($device,"battery", "" );
if (($myBatLevel eq "" && $myBatStatus eq "") || (index($device, "_", 3) > 0)) {
return;
}
else {
if ($myBatLevel eq ""){
if ( $myBatStatus =~ m/ok/ ) {return ("%Battery-hs-100");}
elsif ( $myBatStatus =~ m/low/ ) {return ("%Battery-hs-020");}
}
else {
if ( $myBatLevel <= 2.1) {return ("%Battery-hs-020");}
elsif ( $myBatLevel > 2.1 && $myBatLevel <= 2.3) {return ("%Battery-hs-040");}
elsif ( $myBatLevel > 2.3 && $myBatLevel <= 2.5) {return ("%Battery-hs-060");}
elsif ( $myBatLevel > 2.5 && $myBatLevel <= 3.0) {return ("%Battery-hs-080");}
elsif ( $myBatLevel > 3.0) {return ("%Battery-hs-100");}
}
}
}
Ich vermute, dass es unabhängig von diesem Thema ist, mit beiden Version erscheint foldende Warnung im Log, wenn die RG angezeigt wird:
2015.12.22 13:46:26.880 1: PERL WARNING: Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 525.
2015.12.22 13:46:26.880 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/33_readingsGroup.pm line 525.
/Uli
Ich weiß nicht ob es dasselbe Problem ist wie hier beschrieben aber mir ist auch aufgefallen, dass seit geraumer Zeit die PullDowns innerhalb der ReadingsGroup nicht aktualisiert werden trotz aktiviertem Longpoll.
Fällt mir auch jetzt im Winter wieder auf wo man doch ab und an mal an der Heizung dreht. Im Prinzip stört mich das nicht weiter, nur wenn die soll Temperatur 19 Grad beträgt, das Pul0lDown aber 22 Grad anzeigt und ich jetzt 22 Grad einstellen möchte ist das blöd ;-)
/Daniel
@burtb,dev0: sollte ab morgen wieder gehen.
@ext23: gibt es fehler auf der javascript konsole ?
gruss
andre
Vielen Dank!
Nicht das ich wüsste, hier der Output nachdem ich das Fenster geschlossen habe und so die desired temp auf 21 Grad gesetzt wird (vorher 12).
22:22:42.627 Rcvd: ["Heizungssteuerung-wz_Fenster.state","<svg class=\"icon fts_window_1w 00FF00\" alt=\"closed\" title=\"closed\" version=\"1.0\" xmln...(1718) fhemweb.js:232:5
22:22:42.629 Rcvd: ["Heizungssteuerung-wz_Fenster.state-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:42.630 Rcvd: ["battStatus-wz_Fenster.battery","ok","ok"] fhemweb.js:232:5
22:22:42.630 Rcvd: ["battStatus-wz_Fenster.battery-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:42.631 Rcvd: ["wz_Fenster","closed","<div id=\"wz_Fenster\" class=\"col2\"><img class=' signal_Fenster_Offen_off' src=\"/fhem/images/default/sig...(200) fhemweb.js:232:5
22:22:42.632 Rcvd: ["wz_Fenster-battery","ok","ok"] fhemweb.js:232:5
22:22:42.632 Rcvd: ["wz_Fenster-battery-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:42.633 Rcvd: ["wz_Fenster-contact","closed (to HMLAN1)","closed (to HMLAN1)"] fhemweb.js:232:5
22:22:42.634 Rcvd: ["wz_Fenster-contact-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:42.634 Rcvd: ["wz_Fenster-trigger_cnt","179","179"] fhemweb.js:232:5
22:22:42.635 Rcvd: ["wz_Fenster-trigger_cnt-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:42.636 Rcvd: ["wz_Fenster-state","closed","closed"] fhemweb.js:232:5
22:22:42.637 Rcvd: ["wz_Fenster-state-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:43.241 Rcvd: ["Heizungssteuerung-wz_Fenster.state","<svg class=\"icon fts_window_1w 00FF00\" alt=\"closed\" title=\"closed\" version=\"1.0\" xmln...(1718) fhemweb.js:232:5
22:22:43.242 Rcvd: ["Heizungssteuerung-wz_Fenster.state-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:43.243 Rcvd: ["battStatus-wz_Fenster.battery","ok","ok"] fhemweb.js:232:5
22:22:43.244 Rcvd: ["battStatus-wz_Fenster.battery-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:43.244 Rcvd: ["wz_Fenster","closed","<div id=\"wz_Fenster\" class=\"col2\"><img class=' signal_Fenster_Offen_off' src=\"/fhem/images/default/sig...(200) fhemweb.js:232:5
22:22:43.245 Rcvd: ["wz_Fenster-battery","ok","ok"] fhemweb.js:232:5
22:22:43.246 Rcvd: ["wz_Fenster-battery-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:43.247 Rcvd: ["wz_Fenster-contact","closed (to wz_Thermostat)","closed (to wz_Thermostat)"] fhemweb.js:232:5
22:22:43.247 Rcvd: ["wz_Fenster-contact-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:43.248 Rcvd: ["wz_Fenster-trigger_cnt","179","179"] fhemweb.js:232:5
22:22:43.249 Rcvd: ["wz_Fenster-trigger_cnt-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:43.249 Rcvd: ["wz_Fenster-state","closed","closed"] fhemweb.js:232:5
22:22:43.250 Rcvd: ["wz_Fenster-state-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:43.251 Rcvd: ["wz_Thermostat_WindowRec","last:wz_Fenster:closed","<div id=\"wz_Thermostat_WindowRec\" class=\"col2\">last:wz_Fenster:closed</div...(135) fhemweb.js:232:5
22:22:43.251 Rcvd: ["wz_Thermostat_WindowRec-trigLast","wz_Fenster:closed","wz_Fenster:closed"] fhemweb.js:232:5
22:22:43.252 Rcvd: ["wz_Thermostat_WindowRec-trigLast-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:43.253 Rcvd: ["wz_Thermostat_WindowRec-trig_wz_Fenster","closed","closed"] fhemweb.js:232:5
22:22:43.253 Rcvd: ["wz_Thermostat_WindowRec-trig_wz_Fenster-ts","2015-12-23 22:23:08","2015-12-23 22:23:08"] fhemweb.js:232:5
22:22:45.331 Rcvd: ["Heizungssteuerung-wz_Thermostat.battery","<svg class=\"icon measure_battery_100 0CFB0C\" alt=\"ok\" title=\"ok\" xmlns:dc=\"htt...(12535) fhemweb.js:232:5
22:22:45.334 Rcvd: ["Heizungssteuerung-wz_Thermostat.battery-ts","2015-12-23 22:23:11","2015-12-23 22:23:11"] fhemweb.js:232:5
22:22:45.335 Rcvd: ["Heizungssteuerung-wz_Thermostat.desired-temp","21.0 °C","21.0 °C"] fhemweb.js:232:5
22:22:45.339 Rcvd: ["Heizungssteuerung-wz_Thermostat.desired-temp-ts","2015-12-23 22:23:11","2015-12-23 22:23:11"] fhemweb.js:232:5
22:22:45.340 Rcvd: ["battStatus-wz_Thermostat.battery","ok","ok"] fhemweb.js:232:5
22:22:45.341 Rcvd: ["battStatus-wz_Thermostat.battery-ts","2015-12-23 22:23:11","2015-12-23 22:23:11"] fhemweb.js:232:5
22:22:45.341 Rcvd: ["wz_Thermostat","Temp:21.2 °C, Ventil:0, Soll-Temp:21.0 °C","<div id=\"wz_Thermostat\" class=\"col2\">Temp:21.2 °C, Ventil:0, Soll...(153) fhemweb.js:232:5
22:22:45.342 Rcvd: ["wz_Thermostat-battery","ok","ok"] fhemweb.js:232:5
22:22:45.343 Rcvd: ["wz_Thermostat-battery-ts","2015-12-23 22:23:11","2015-12-23 22:23:11"] fhemweb.js:232:5
22:22:45.343 Rcvd: ["wz_Thermostat-desired-temp","21.0","21.0"] fhemweb.js:232:5
22:22:45.344 Rcvd: ["wz_Thermostat-desired-temp-ts","2015-12-23 22:23:11","2015-12-23 22:23:11"] fhemweb.js:232:5
22:22:45.345 Rcvd: ["wz_Thermostat_Climate","0","<div id=\"wz_Thermostat_Climate\" class=\"col2\">0</div>"] fhemweb.js:232:5
22:22:45.346 Rcvd: ["wz_Thermostat_Climate-desired-temp","21.0","21.0"] fhemweb.js:232:5
22:22:45.346 Rcvd: ["wz_Thermostat_Climate-desired-temp-ts","2015-12-23 22:23:11","2015-12-23 22:23:11"] fhemweb.js:232:5
Gruß
Daniel
wo kommen die °C her ? stehen die wirklich so im reading des device ?
gruss
andre
Mhh nein, im STATE bei den internals.
Im readings sieht das so aus:
desired-temp 21.0 2015-12-23 22:23:10
Gruß
Daniel
in deinem log gibt es aber diese zeile: 22:22:45.335 Dcvd: ["Heizungssteuerung-wz_Thermostat.desired-temp","21.0 °C","21.0 °C"] fhemweb.js:232:5
da geht es ums reading.
zeig mal bitte ein list vom device.
gruss
andre
Da gibt es aber auch eine Zeile ohne das °C.
Internals:
CFGFN /opt/fhem/cfg/Wohnzimmer.cfg
DEF 1D2544
HMLAN1_MSGCNT 2545
HMLAN1_RAWMSG E1D2544,0000,ECAE7F7C,FF,FFB7,C2A2581D25441A2BCA0000
HMLAN1_RSSI -73
HMLAN1_TIME 2015-12-23 22:53:25
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 2545
NAME wz_Thermostat
NR 891
NTFY_ORDER 50-wz_Thermostat
STATE Temp:21.3 °C, Ventil:0, Soll-Temp:21.0 °C
TYPE CUL_HM
channel_01 wz_Thermostat_Weather
channel_02 wz_Thermostat_Climate
channel_03 wz_Thermostat_WindowRec
lastMsg No:C2 - t:58 s:1D2544 d:1A2BCA 0000
protCondBurst on
protLastRcv 2015-12-23 22:53:25
protResnd 3 last_at:2015-12-21 22:48:53
protSnd 287 last_at:2015-12-23 22:23:10
protState CMDs_done
rssi_HMLAN1 avg:-70.5 max:-68 lst:-71 cnt:12 min:-72
rssi_at_HMLAN1 avg:-73.47 lst:-73 max:-68 cnt:2545 min:-93
Readings:
2015-12-21 22:28:33 Activity alive
2015-12-23 22:23:09 CommandAccepted yes
2015-04-03 18:20:31 D-firmware 2.1
2015-04-03 18:20:31 D-serialNr JEQxxxxxxxx
2015-10-11 10:19:16 PairedTo 0xxxxxxx
2014-08-15 15:19:02 R-backlOnMode auto
2014-08-15 15:19:02 R-backlOnTime 25
2014-08-15 15:19:02 R-btnLock off
2014-08-15 15:19:02 R-burstRx on
2014-08-15 15:19:02 R-pairCentral 0xxxxxxx
2015-12-23 22:53:25 actuator 0
2015-12-23 22:23:10 battery ok
2015-12-21 22:51:10 controlMode auto
2015-12-21 22:51:10 day-temp 22 C
2015-12-21 22:51:10 decalcDay Sat
2015-12-23 22:23:10 desired-temp 21.0
2015-12-21 22:51:10 displayMode temp-hum
2015-12-21 22:51:10 displayTemp actual
2015-12-21 22:51:10 displayTempUnit celsius
2015-12-23 22:53:05 humidity 66
2015-12-23 22:53:05 measured-temp 21.3
2015-12-21 22:51:10 night-temp 19 C
2015-12-21 22:51:10 party-temp 20 C
2015-09-23 10:09:27 powerOn 2015-09-23 10:09:27
2015-09-23 10:09:27 recentStateType info
2015-12-23 22:53:05 state T: 21.3 H: 66
2015-05-27 15:30:00 temperature 0
2015-12-23 00:00:09 time-request -
2015-02-04 17:51:51 trigLast wz_Fenster :closed
2015-02-04 17:51:51 trig_wz_Fenster closed
Helper:
HM_CMDNR 194
PONtest 1
cSnd 11xxxxxx1D254402022B,11xxxxxx1D254402022C
mId 0039
rxType 140
Expert:
def 1
det 1
raw 0
tpl 0
Io:
newChn +1D2544,00,00,00
nextSend 1450907605.38767
prefIO
rxt 2
vccu
p:
1D2544
00
00
00
Mrssi:
mNo C2
Io:
HMLAN1 -71
Prt:
awake 0
bErr 0
brstWu 1
sProc 0
sleeping 1
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
Rssi:
Hmlan1:
avg -70.5
cnt 12
lst -71
max -68
min -72
At_hmlan1:
avg -73.4754420432221
cnt 2545
lst -73
max -68
min -93
Attributes:
IODev HMLAN1
actCycle 000:10
actStatus alive
alias Wohnzimmer
autoReadReg 4_reqStatus
burstAccess 1_auto
comment Batteriewechsel: 23.09.2015
expert 1_on
firmware 2.1
fp_Wohnung 300,400,2,Heizung
group Heizung
model HM-CC-TC
room Wohnzimmer
serialNr JEQxxxxxxx
stateFormat Temp:measured-temp °C, Ventil:actuator, Soll-Temp:desired-temp °C
subType thermostat
webCmd desired-temp
zeig bitte auch ein list auf die readingsGroup und einen screenshot.
danke
andre
Internals:
CFGFN /opt/fhem/cfg/ReadingsGroup.cfg
DEF <%sani_heating>,<Soll>,<Soll neu>,<Boost>,<Ist>,<Ventil / RH>,<Modus>,<Fenster>,<Lock>,<Bat>
az_Heizung_Clima:desired-temp,<sollsetz>,!boost,measured-temp,ValvePosition,controlMode,<>,R-btnLock@az_Heizung,batteryLevel@az_Heizung
bz_Heizung_ClimRT_tr:desired-temp,<sollsetz>,!boost,measured-temp,ValvePosition,controlMode,state@bz_Fenster,R-btnLock@bz_Heizung,batteryLevel@bz_Heizung
<>,<>,<>,<>,<>,<>,<>,<>,<>,<>
sz_Thermostat:desired-temp,<sollsetz>,!boost,measured-temp,humidity,controlMode@sz_Thermostat_Climate,state@sz_Fenster,R-btnLock@sz_Thermostat,battery@sz_Thermostat
sz_Stellantrieb_links:<>,<>,<>,<>,ValvePosition,<>,<>,<>,battery
sz_Stellantrieb_rechts:<>,<>,<>,<>,ValvePosition,<>,<>,<>,battery
<>,<>,<>,<>,<>,<>,<>,<>,<>,<>
wz_Thermostat:desired-temp,<sollsetz>,!boost,measured-temp,humidity,controlMode@wz_Thermostat_Climate,state@wz_Fenster,R-btnLock@wz_Thermostat,battery@wz_Thermostat
wz_Stellantrieb_links:<>,<>,<>,<>,ValvePosition,<>,<>,<>,battery
wz_Stellantrieb_rechts:<>,<>,<>,<>,ValvePosition,<>,<>,<>,battery
<>,<>,<>,<>,<>,<>,<>,<>,<>,<>
bz_Handtuchtrockner:state,<>,<>,<>,<>,<>,<>,<>,<>
NAME Heizungssteuerung
NR 1521
NTFY_ORDER 50-Heizungssteuerung
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
az_Heizung_Clima 1
bz_Handtuchtrockner 1
bz_Heizung_ClimRT_tr 1
sz_Stellantrieb_links 1
sz_Stellantrieb_rechts 1
sz_Thermostat 1
wz_Stellantrieb_links 1
wz_Stellantrieb_rechts 1
wz_Thermostat 1
Content2:
az_Heizung 1
bz_Fenster 1
bz_Heizung 1
sz_Fenster 1
sz_Thermostat 1
sz_Thermostat_Climate 1
wz_Fenster 1
wz_Thermostat 1
wz_Thermostat_Climate 1
DEVICES:
ARRAY(0x3e62c698)
ARRAY(0x4504fd90)
ARRAY(0x4504f9b8)
ARRAY(0x3e61fd18)
ARRAY(0x3e59fcf8)
ARRAY(0x4503f318)
ARRAY(0x3e62e490)
ARRAY(0x450519c0)
ARRAY(0x45042668)
ARRAY(0x3e620240)
ARRAY(0x3e62bf60)
ARRAY(0x45020310)
ARRAY(0x3c035ac8)
DEVICES2:
ARRAY(0x3e62c698)
ARRAY(0x4504fd90)
ARRAY(0x4504f9b8)
ARRAY(0x3e61fd18)
ARRAY(0x3e59fcf8)
ARRAY(0x4503f318)
ARRAY(0x3e62e490)
ARRAY(0x450519c0)
ARRAY(0x45042668)
ARRAY(0x3e620240)
ARRAY(0x3e62bf60)
ARRAY(0x45020310)
ARRAY(0x3c035ac8)
ARRAY(0x3e611950)
ARRAY(0x3e62e3a0)
ARRAY(0x450527d8)
ARRAY(0x4504f958)
ARRAY(0x45051a38)
ARRAY(0x3e62de90)
ARRAY(0x45055ac0)
ARRAY(0x45055e80)
ARRAY(0x42a7f7d0)
ARRAY(0x4504fe80)
ARRAY(0x45050240)
ARRAY(0x3e635bb8)
ARRAY(0x45051588)
Fhem:
lastDefChange 106
last_update 1450904468.59736
Helper:
DEF
valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10}elsif($READING eq "batteryLevel"){if($VALUE>=3){$VALUE=100}elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25}else{$VALUE=0}}}
valueStyle {if($READING eq "measured-temp"){my $t=$VALUE;my $d=ReadingsVal($DEVICE,'desired-temp',0);if($t-$d>=1){'style="color:rgb(251,63,11);"'}elsif($t-$d<=-1){'style="color:rgb(79,58,251);"'}else{'style="color:rgb(12,251,12);"'}}}
valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C","ValvePosition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)","humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." % RH","batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"}
Cellstyle:
r:1 style="font-weight:bold;;font-size:16px"
r:13,c:0 style="font-weight:bold"
r:2,c:0 style="font-weight:bold"
r:3,c:0 style="font-weight:bold"
r:5,c:0 style="font-weight:bold"
r:9,c:0 style="font-weight:bold"
Commands:
Heizungssteuerung.sollsetz desired-temp:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0
R-btnLock.off set %DEVICE regSet btnLock on
R-btnLock.on set %DEVICE regSet btnLock off
boost set %DEVICE controlMode boost
controlMode.auto set %DEVICE controlMode manual
controlMode.boost set %DEVICE controlMode auto
controlMode.manual set %DEVICE controlMode auto
state.off set %DEVICE on-for-timer 7200
state.on set %DEVICE off
Mapping:
sz_Stellantrieb_links Regler links
sz_Stellantrieb_rechts Regler rechts
wz_Stellantrieb_links Regler links
wz_Stellantrieb_rechts Regler rechts
Positions:
az_Heizung.R-btnLock 2:8
az_Heizung.batteryLevel 2:9
az_Heizung_Clima.ValvePosition 2:5
az_Heizung_Clima.boost 2:3
az_Heizung_Clima.controlMode 2:6
az_Heizung_Clima.desired-temp 2:1
az_Heizung_Clima.measured-temp 2:4
bz_Fenster.state 3:7
bz_Handtuchtrockner.state 13:1
bz_Heizung.R-btnLock 3:8
bz_Heizung.batteryLevel 3:9
bz_Heizung_ClimRT_tr.ValvePosition 3:5
bz_Heizung_ClimRT_tr.boost 3:3
bz_Heizung_ClimRT_tr.controlMode 3:6
bz_Heizung_ClimRT_tr.desired-temp 3:1
bz_Heizung_ClimRT_tr.measured-temp 3:4
sz_Fenster.state 5:7
sz_Stellantrieb_links.ValvePosition 6:5
sz_Stellantrieb_links.battery 6:9
sz_Stellantrieb_rechts.ValvePosition 7:5
sz_Stellantrieb_rechts.battery 7:9
sz_Thermostat.R-btnLock 5:8
sz_Thermostat.battery 5:9
sz_Thermostat.boost 5:3
sz_Thermostat.desired-temp 5:1
sz_Thermostat.humidity 5:5
sz_Thermostat.measured-temp 5:4
sz_Thermostat_Climate.controlMode 5:6
wz_Fenster.state 9:7
wz_Stellantrieb_links.ValvePosition 10:5
wz_Stellantrieb_links.battery 10:9
wz_Stellantrieb_rechts.ValvePosition 11:5
wz_Stellantrieb_rechts.battery 11:9
wz_Thermostat.R-btnLock 9:8
wz_Thermostat.battery 9:9
wz_Thermostat.boost 9:3
wz_Thermostat.desired-temp 9:1
wz_Thermostat.humidity 9:5
wz_Thermostat.measured-temp 9:4
wz_Thermostat_Climate.controlMode 9:6
recalc:
ARRAY(0x46664af0)
ARRAY(0x455cdd18)
Valueicon:
R-btnLock.off secur_open@0CFB0C
R-btnLock.on secur_locked@F7301D
R-btnLock.set_off hourglass
R-btnLock.set_on hourglass
R-globalBtnLock.off secur_open@0CFB0C
R-globalBtnLock.on secur_locked@F7301D
R-globalBtnLock.set_off hourglass
R-globalBtnLock.set_on hourglass
ValvePosition.0 sani_heating_level_0@002AE0
ValvePosition.10 sani_heating_level_10@F8D53D
ValvePosition.100 sani_heating_level_100@E50005
ValvePosition.20 sani_heating_level_20@FF9341
ValvePosition.30 sani_heating_level_30@F17F3F
ValvePosition.40 sani_heating_level_40@E46C3C
ValvePosition.50 sani_heating_level_50@DE3B3A
ValvePosition.60 sani_heating_level_60@A30D2D
ValvePosition.70 sani_heating_level_70@B40A23
ValvePosition.80 sani_heating_level_80@C40619
ValvePosition.90 sani_heating_level_90@D4030F
battery.low measure_battery_0@E50005
battery.ok measure_battery_100@0CFB0C
batteryLevel.0 measure_battery_0@E50005
batteryLevel.100 measure_battery_100@0CFB0C
batteryLevel.25 measure_battery_25@FB5909
batteryLevel.50 measure_battery_50@F5FF10
batteryLevel.75 measure_battery_75@42BC0A
boost sani_heating_boost@FF0000
controlMode.auto sani_heating_automatic@FFC13A
controlMode.boost sani_heating_boost@FB0C02
controlMode.manual sani_heating_manual@795CFF
controlMode.set_auto hourglass
controlMode.set_boost hourglass
controlMode.set_manual hourglass
humidity humidity@6FD9FB
state.closed fts_window_1w@00FF00
state.off sani_heating_level_0@0000FF
state.on sani_heating_level_100@FF0000
state.open fts_window_1w_open@FF0000
state.set_off hourglass
state.set_on-for-timer 7200 hourglass
state.tilted fts_window_1w_tilt@0000FF
Values:
formated:
ARRAY(0x78c1800)
ARRAY(0x459b2838)
ARRAY(0x4538be98)
ARRAY(0x454e0420)
ARRAY(0x45a10ec8)
ARRAY(0x45f03360)
ARRAY(0x45911328)
ARRAY(0x4586fbe8)
orig:
ARRAY(0x45a7ca78)
ARRAY(0x45807c80)
ARRAY(0x4586f720)
ARRAY(0x3958ecb8)
ARRAY(0x45a42d50)
ARRAY(0x4586d2d8)
ARRAY(0x466c02f0)
ARRAY(0x466bf110)
prefixsuffix:
ARRAY(0x45858540)
ARRAY(0x466c0500)
ARRAY(0x457b08d0)
ARRAY(0x45f046d8)
ARRAY(0x466bf5b8)
ARRAY(0x45abb050)
ARRAY(0x4556f910)
ARRAY(0x459c6f78)
Attributes:
cellStyle { "r:1"=>'style="font-weight:bold;;font-size:16px"',"r:2,c:0"=>'style="font-weight:bold"',"r:3,c:0"=>'style="font-weight:bold"',"r:5,c:0"=>'style="font-weight:bold"',"r:9,c:0"=>'style="font-weight:bold"',"r:13,c:0"=>'style="font-weight:bold"'}
commands {'Heizungssteuerung.sollsetz'=>'desired-temp:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0',"controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual","controlMode.boost"=>"set %DEVICE controlMode auto","R-btnLock.on"=>"set %DEVICE regSet btnLock off","R-btnLock.off"=>"set %DEVICE regSet btnLock on","boost"=>"set %DEVICE controlMode boost","state.on"=>"set %DEVICE off","state.off"=>"set %DEVICE on-for-timer 7200"}
group Heizungssteuerung
mapping {sz_Stellantrieb_links=>" Regler links",sz_Stellantrieb_rechts=>" Regler rechts",wz_Stellantrieb_links=>" Regler links",wz_Stellantrieb_rechts=>" Regler rechts"}
noheading 1
valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10}elsif($READING eq "batteryLevel"){if($VALUE>=3){$VALUE=100}elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25}else{$VALUE=0}}}
valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF','controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02','humidity'=>'humidity@6FD9FB', 'R-globalBtnLock.on'=>'secur_locked@F7301D','R-globalBtnLock.off'=>'secur_open@0CFB0C','R-btnLock.on'=>'secur_locked@F7301D','R-btnLock.off'=>'secur_open@0CFB0C','ValvePosition.0' => 'sani_heating_level_0@002AE0','ValvePosition.10' => 'sani_heating_level_10@F8D53D','ValvePosition.20' => 'sani_heating_level_20@FF9341','ValvePosition.30' => 'sani_heating_level_30@F17F3F','ValvePosition.40' => 'sani_heating_level_40@E46C3C','ValvePosition.50' => 'sani_heating_level_50@DE3B3A','ValvePosition.60' => 'sani_heating_level_60@A30D2D','ValvePosition.70' => 'sani_heating_level_70@B40A23','ValvePosition.80' => 'sani_heating_level_80@C40619','ValvePosition.90' => 'sani_heating_level_90@D4030F','ValvePosition.100' => 'sani_heating_level_100@E50005','batteryLevel.100'=>'measure_battery_100@0CFB0C','batteryLevel.75'=>'measure_battery_75@42BC0A','batteryLevel.50'=>'measure_battery_50@F5FF10','batteryLevel.25'=>'measure_battery_25@FB5909','batteryLevel.0'=>'measure_battery_0@E50005','battery.ok'=>'measure_battery_100@0CFB0C','battery.low'=>'measure_battery_0@E50005','controlMode.set_boost' => 'hourglass','controlMode.set_auto' => 'hourglass','controlMode.set_manual' => 'hourglass','R-globalBtnLock.set_on' => 'hourglass','R-globalBtnLock.set_off' => 'hourglass','R-btnLock.set_on' => 'hourglass','R-btnLock.set_off' => 'hourglass','boost' => 'sani_heating_boost@FF0000','state.open' => 'fts_window_1w_open@FF0000','state.closed' => 'fts_window_1w@00FF00','state.tilted' => 'fts_window_1w_tilt@0000FF','state.on' => 'sani_heating_level_100@FF0000','state.off' => 'sani_heating_level_0@0000FF','state.set_off' => 'hourglass','state.set_on-for-timer 7200' => 'hourglass'}
valueStyle {if($READING eq "measured-temp"){my $t=$VALUE;my $d=ReadingsVal($DEVICE,'desired-temp',0);if($t-$d>=1){'style="color:rgb(251,63,11);"'}elsif($t-$d<=-1){'style="color:rgb(79,58,251);"'}else{'style="color:rgb(12,251,12);"'}}}
valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C","ValvePosition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)","humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." % RH","batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"}
die drop down menus gehören zu sollest, das reaadings heisst aber desired-temp. da kann nichts per longpoll aktualisiert werden. du brauchst ein sollsetz reading (und musst sollsetz verwenden) damit longpoll geht.
warum überhaupt zwei spalten für soll und soll neu? die zeigen doch in deinem fall immer das gleiche an? du kannst doch direkt für desired-temp das drop down verwenden.
gruss
andre
Mhh und wie mache ich das am besten?
Ich hatte damals nur das aus dem Wiki als Vorlage genommen und etwas erweitert und angepasst. Und ich meine auch, dass hat im letzten Jahr noch funktioniert mit dem Longpoll, ich hatte da schon mal Probleme mit aber dann lief es. Das ich zwei Spalten habe, ja stimmt schon, macht kein Sinn. Aber so habe ich immer gesehen wann er es übernommen hat. Außerdem finde ich es optisch besser, gut das °C bekommt man auch in die Box. Könnte man sich auch sparen ja, aber ich wollte da nicht ewig rumfrickeln und war froh das es lief, weißt ja SW Kram ist nicht so meins ;-)
/Daniel
Hallo.
Ich habe zwei Fragen zu den readingsGroup.
Ich habe mir eine Heizungssteuerung (ähnlich den Artikel im Wiki) zusammen gebaut:
Internals:
DEF <%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Ventil>,<Modus>,<Bat>,<RSSI>,<LF>
Wandthermostat_Wohnzimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Wohnzimmer","temperature","")}>,<>,mode,battery,RSSI,<{ReadingsVal("Temperatur_Wohnzimmer","humidity","")}>
Thermostat_Wohnzimmer1:desiredTemperature,<>,<>,valveposition,mode,battery,RSSI
Thermostat_Wohnzimmer2:desiredTemperature,<>,<>,valveposition,mode,battery,RSSI
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Kueche:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Kueche","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Kueche","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Schlafzimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Schlafzimmer","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Schlafzimmer","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Bad:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Bad","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Bad","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Arbeitszimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Arbeitszimmer","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Arbeitszimmer","humidity","")}>
NAME heatingInfo
NR 386
NTFY_ORDER 50-heatingInfo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Thermostat_Arbeitszimmer 1
Thermostat_Bad 1
Thermostat_Kueche 1
Thermostat_Schlafzimmer 1
Thermostat_Wohnzimmer1 1
Thermostat_Wohnzimmer2 1
Wandthermostat_Wohnzimmer 1
Content2:
DEVICES:
ARRAY(0x3106cd0)
ARRAY(0x318eca0)
ARRAY(0x2e1f7f0)
ARRAY(0x3be3088)
ARRAY(0x4073178)
ARRAY(0x37fa338)
ARRAY(0x2bbcfb0)
ARRAY(0x3f240f8)
ARRAY(0x3c86250)
ARRAY(0x2ef8b08)
ARRAY(0x3974108)
ARRAY(0x37a9c48)
Fhem:
lastDefChange 38
last_update 1451562997.05122
Helper:
DEF
Commands:
heatingInfo.sollsetz desiredTemperature:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0
mode.auto set %DEVICE desiredTemperature manual
mode.manual set %DEVICE desiredTemperature auto
Positions:
Thermostat_Arbeitszimmer.RSSI 12:7
Thermostat_Arbeitszimmer.battery 12:6
Thermostat_Arbeitszimmer.desiredTemperature 12:1
Thermostat_Arbeitszimmer.mode 12:5
Thermostat_Arbeitszimmer.valveposition 12:4
Thermostat_Bad.RSSI 10:7
Thermostat_Bad.battery 10:6
Thermostat_Bad.desiredTemperature 10:1
Thermostat_Bad.mode 10:5
Thermostat_Bad.valveposition 10:4
Thermostat_Kueche.RSSI 6:7
Thermostat_Kueche.battery 6:6
Thermostat_Kueche.desiredTemperature 6:1
Thermostat_Kueche.mode 6:5
Thermostat_Kueche.valveposition 6:4
Thermostat_Schlafzimmer.RSSI 8:7
Thermostat_Schlafzimmer.battery 8:6
Thermostat_Schlafzimmer.desiredTemperature 8:1
Thermostat_Schlafzimmer.mode 8:5
Thermostat_Schlafzimmer.valveposition 8:4
Thermostat_Wohnzimmer1.RSSI 3:7
Thermostat_Wohnzimmer1.battery 3:6
Thermostat_Wohnzimmer1.desiredTemperature 3:1
Thermostat_Wohnzimmer1.mode 3:5
Thermostat_Wohnzimmer1.valveposition 3:4
Thermostat_Wohnzimmer2.RSSI 4:7
Thermostat_Wohnzimmer2.battery 4:6
Thermostat_Wohnzimmer2.desiredTemperature 4:1
Thermostat_Wohnzimmer2.mode 4:5
Thermostat_Wohnzimmer2.valveposition 4:4
Wandthermostat_Wohnzimmer.RSSI 2:7
Wandthermostat_Wohnzimmer.battery 2:6
Wandthermostat_Wohnzimmer.desiredTemperature 2:1
Wandthermostat_Wohnzimmer.mode 2:5
Values:
formated:
ARRAY(0x3cd7d88)
ARRAY(0x3f225b8)
ARRAY(0x3389278)
ARRAY(0x4014f98)
ARRAY(0x291c0a8)
orig:
ARRAY(0x3f230e8)
ARRAY(0x2a77778)
ARRAY(0x3f98438)
ARRAY(0x3be7ce8)
ARRAY(0x3c56980)
prefixsuffix:
ARRAY(0x3c42d88)
ARRAY(0x3817830)
ARRAY(0x37d1148)
ARRAY(0x4014a88)
ARRAY(0x3dd5268)
Attributes:
commands {
'heatingInfo.sollsetz'=>'desiredTemperature:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0',
"mode.manual"=>"set %DEVICE desiredTemperature auto","mode.auto"=>"set %DEVICE desiredTemperature manual",
}
room 30_Heizung
1. Ich möchte nun die Heizung immer über den Befehl "desiredTemperature auto" + die gewünschte Temperatur ansprechen. Wenn ich das "auto" nicht mit sende, springt das Thermostat immer in den Manuell Modus. Wie bekomme ich das hin? Ich habe jetzt schon einiges Probiert, allerdings komme ich einfach nicht auf das gewünschte Ergebnis.
2.Ich frage meine Raum-Temperaturen mit <{ReadingsVal("Temperatur_Wohnzimmer","temperature","")}> ab. Jetzt ist mir aufgefallen das er die neuen Temperaturen nur dann aktualisiert, wenn ich am Thermostat eine neue Temperatur eingebe oder die Seite aktualisiere. Eine automatische Aktualisierung funktioniert hier irgendwie nicht. Muss ich noch irgendwas ändern oder ggf. den Code ändern?
Jetz muss ich ier auch mal rein.
Im Event Monitor läuft ja immer die Readings Ausgabe, dabei kommen immer wieder komische Zeilen:
2016-01-06 16:15:07 readingsGroup BatterieStatus HeizungWohnzimmer.battery: image/svg+xml ath9" inkscape:connector-curvature="0" />
2016-01-06 16:15:07 readingsGroup BatterieStatusProzent HeizungWohnzimmer.battery: 84 %
2016-01-06 16:15:07 ZWave HeizungWohnzimmer battery: 84 %
2016-01-06 16:15:07 ZWave HeizungWohnzimmer setpointTemp: 22.0 C heating
2016-01-06 16:15:07 ZWave HeizungWohnzimmer ccsOverride: no, unused
2016-01-06 16:15:07 ZWave HeizungWohnzimmer wakeup: notification
2016-01-06 16:15:26 readingsGroup BatterieStatus HeizungKueche.battery: image/svg+xml " inkscape:connector-curvature="0" />
2016-01-06 16:15:26 readingsGroup BatterieStatusProzent HeizungKueche.battery: 90 %
2016-01-06 16:15:26 ZWave HeizungKueche battery: 90 %
2016-01-06 16:15:26 ZWave HeizungKueche setpointTemp: 19.0 C heating
2016-01-06 16:15:26 ZWave HeizungKueche ccsOverride: no, unused
2016-01-06 16:15:26 ZWave HeizungKueche wakeup: notification
2016-01-06 16:16:10 readingsGroup BatterieStatus HeizungSchlafzimmer.battery: image/svg+xml "path9" inkscape:connector-curvature="0" />
2016-01-06 16:16:10 readingsGroup BatterieStatusProzent HeizungSchlafzimmer.battery: 82 %
2016-01-06 16:16:10 ZWave HeizungSchlafzimmer battery: 82 %
2016-01-06 16:16:10 ZWave HeizungSchlafzimmer setpointTemp: 21.0 C heating
2016-01-06 16:16:10 ZWave HeizungSchlafzimmer ccsOverride: no, unused
2016-01-06 16:16:10 ZWave HeizungSchlafzimmer wakeup: notification
2016-01-06 16:17:56 readingsGroup BatterieStatus HeizungBuero.battery: image/svg+xml z" id="path9" inkscape:connector-curvature="0" />
2016-01-06 16:17:56 readingsGroup BatterieStatusProzent HeizungBuero.battery: 75 %
2016-01-06 16:17:56 ZWave HeizungBuero battery: 75 %
2016-01-06 16:17:56 ZWave HeizungBuero setpointTemp: 20.0 C heating
2016-01-06 16:17:56 ZWave HeizungBuero ccsOverride: no, unused
2016-01-06 16:17:56 ZWave HeizungBuero wakeup: notification
2016-01-06 16:18:01 readingsGroup BatterieStatus HeizungBad.battery: image/svg+xml inkscape:connector-curvature="0" />
2016-01-06 16:18:01 readingsGroup BatterieStatusProzent HeizungBad.battery: 88 %
2016-01-06 16:18:01 ZWave HeizungBad battery: 88 %
2016-01-06 16:18:01 ZWave HeizungBad setpointTemp: 20.0 C heating
2016-01-06 16:18:01 ZWave HeizungBad ccsOverride: no, unused
2016-01-06 16:18:01 ZWave HeizungBad wakeup: notification
2016-01-06 16:20:01 readingsGroup BatterieStatus HeizungWohnzimmer.battery: image/svg+xml
2016-01-06 16:20:01 readingsGroup BatterieStatusProzent HeizungWohnzimmer.battery: 84 %
2016-01-06 16:20:01 ZWave HeizungWohnzimmer battery: 84 %
2016-01-06 16:20:01 ZWave HeizungWohnzimmer setpointTemp: 22.0 C heating
2016-01-06 16:20:01 ZWave HeizungWohnzimmer ccsOverride: no, unused
Das Ergebniss sieht gut aus, aber warum heisst es manchmal nur:
2016-01-06 16:20:01 readingsGroup BatterieStatus HeizungWohnzimmer.battery: image/svg+xml
und dann wieder:
2016-01-06 16:15:07 readingsGroup BatterieStatus HeizungWohnzimmer.battery: image/svg+xml ath9" inkscape:connector-curvature="0" />
Auch der rest dieser Zeilen sieht für mich komisch aus.
Zur Vereinfachung habe ich im ThermostatBad ein Reading mit dem Namen des zugehörigen Fenster/Rollo.
Nun möchte ich in einer Readingsgroup der Thermostate gerne den Status des Rollos anzeigen.
Um nicht alle Rollos von Hand eingeben zu müssen würde ich gerne aus dem Reading "myFenster", das den Namen des Devices enthält, die Daten übernehmen.
So ähnlich hätte ich mir das vorgestellt.
position@<&device{myFenster}>
Nun die Frage: Ist so etwas möglich?
die syntax ist so <reading>@<device>, wobei <device> auch mit {} eingeschlossener perl code sein darf. zwischen den {} darf kein leerzeichen stehen. deshalb ist es das einfachste eine routine aufzurufen. also etwa so <reading>@{myRolloOfThermostat($DEVICE)}.
myRolloOfThermostat musst du dann selber bauen.
im wiki gibt es beispiele.
gruss
andre
Zitat von: justme1968 am 11 Januar 2016, 16:43:11
die syntax ist so <reading>@<device>, wobei <device> auch mit {} eingeschlossener perl code sein darf. zwischen den {} darf kein leerzeichen stehen. deshalb ist es das einfachste eine routine aufzurufen. also etwa so <reading>@{myRolloOfThermostat($DEVICE)}.
myRolloOfThermostat musst du dann selber bauen.
im wiki gibt es beispiele.
Danke, klappt. eigentlich hatte ich es so auch schon versucht... aber irgendwo war wohl ein Fehler mit drin. Mir war der Zusammenhang hier mit den ">" nicht ganz klar,
speziell bei <reading> im Beispiel <reading>@{myRolloOfThermostat($DEVICE)}
Zitat von: Xaser am 01 Januar 2016, 10:58:09
Hallo.
Ich habe zwei Fragen zu den readingsGroup.
Ich habe mir eine Heizungssteuerung (ähnlich den Artikel im Wiki) zusammen gebaut:
Internals:
DEF <%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Ventil>,<Modus>,<Bat>,<RSSI>,<LF>
Wandthermostat_Wohnzimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Wohnzimmer","temperature","")}>,<>,mode,battery,RSSI,<{ReadingsVal("Temperatur_Wohnzimmer","humidity","")}>
Thermostat_Wohnzimmer1:desiredTemperature,<>,<>,valveposition,mode,battery,RSSI
Thermostat_Wohnzimmer2:desiredTemperature,<>,<>,valveposition,mode,battery,RSSI
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Kueche:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Kueche","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Kueche","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Schlafzimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Schlafzimmer","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Schlafzimmer","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Bad:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Bad","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Bad","humidity","")}>
<>,<>,<>,<>,<>,<>,<>,<>
Thermostat_Arbeitszimmer:desiredTemperature,<sollsetz>,<{ReadingsVal("Temperatur_Arbeitszimmer","temperature","")}>,valveposition,mode,battery,RSSI,<{ReadingsVal("Temperatur_Arbeitszimmer","humidity","")}>
NAME heatingInfo
NR 386
NTFY_ORDER 50-heatingInfo
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Thermostat_Arbeitszimmer 1
Thermostat_Bad 1
Thermostat_Kueche 1
Thermostat_Schlafzimmer 1
Thermostat_Wohnzimmer1 1
Thermostat_Wohnzimmer2 1
Wandthermostat_Wohnzimmer 1
Content2:
DEVICES:
ARRAY(0x3106cd0)
ARRAY(0x318eca0)
ARRAY(0x2e1f7f0)
ARRAY(0x3be3088)
ARRAY(0x4073178)
ARRAY(0x37fa338)
ARRAY(0x2bbcfb0)
ARRAY(0x3f240f8)
ARRAY(0x3c86250)
ARRAY(0x2ef8b08)
ARRAY(0x3974108)
ARRAY(0x37a9c48)
Fhem:
lastDefChange 38
last_update 1451562997.05122
Helper:
DEF
Commands:
heatingInfo.sollsetz desiredTemperature:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0
mode.auto set %DEVICE desiredTemperature manual
mode.manual set %DEVICE desiredTemperature auto
Positions:
Thermostat_Arbeitszimmer.RSSI 12:7
Thermostat_Arbeitszimmer.battery 12:6
Thermostat_Arbeitszimmer.desiredTemperature 12:1
Thermostat_Arbeitszimmer.mode 12:5
Thermostat_Arbeitszimmer.valveposition 12:4
Thermostat_Bad.RSSI 10:7
Thermostat_Bad.battery 10:6
Thermostat_Bad.desiredTemperature 10:1
Thermostat_Bad.mode 10:5
Thermostat_Bad.valveposition 10:4
Thermostat_Kueche.RSSI 6:7
Thermostat_Kueche.battery 6:6
Thermostat_Kueche.desiredTemperature 6:1
Thermostat_Kueche.mode 6:5
Thermostat_Kueche.valveposition 6:4
Thermostat_Schlafzimmer.RSSI 8:7
Thermostat_Schlafzimmer.battery 8:6
Thermostat_Schlafzimmer.desiredTemperature 8:1
Thermostat_Schlafzimmer.mode 8:5
Thermostat_Schlafzimmer.valveposition 8:4
Thermostat_Wohnzimmer1.RSSI 3:7
Thermostat_Wohnzimmer1.battery 3:6
Thermostat_Wohnzimmer1.desiredTemperature 3:1
Thermostat_Wohnzimmer1.mode 3:5
Thermostat_Wohnzimmer1.valveposition 3:4
Thermostat_Wohnzimmer2.RSSI 4:7
Thermostat_Wohnzimmer2.battery 4:6
Thermostat_Wohnzimmer2.desiredTemperature 4:1
Thermostat_Wohnzimmer2.mode 4:5
Thermostat_Wohnzimmer2.valveposition 4:4
Wandthermostat_Wohnzimmer.RSSI 2:7
Wandthermostat_Wohnzimmer.battery 2:6
Wandthermostat_Wohnzimmer.desiredTemperature 2:1
Wandthermostat_Wohnzimmer.mode 2:5
Values:
formated:
ARRAY(0x3cd7d88)
ARRAY(0x3f225b8)
ARRAY(0x3389278)
ARRAY(0x4014f98)
ARRAY(0x291c0a8)
orig:
ARRAY(0x3f230e8)
ARRAY(0x2a77778)
ARRAY(0x3f98438)
ARRAY(0x3be7ce8)
ARRAY(0x3c56980)
prefixsuffix:
ARRAY(0x3c42d88)
ARRAY(0x3817830)
ARRAY(0x37d1148)
ARRAY(0x4014a88)
ARRAY(0x3dd5268)
Attributes:
commands {
'heatingInfo.sollsetz'=>'desiredTemperature:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0',
"mode.manual"=>"set %DEVICE desiredTemperature auto","mode.auto"=>"set %DEVICE desiredTemperature manual",
}
room 30_Heizung
1. Ich möchte nun die Heizung immer über den Befehl "desiredTemperature auto" + die gewünschte Temperatur ansprechen. Wenn ich das "auto" nicht mit sende, springt das Thermostat immer in den Manuell Modus. Wie bekomme ich das hin? Ich habe jetzt schon einiges Probiert, allerdings komme ich einfach nicht auf das gewünschte Ergebnis.
2.Ich frage meine Raum-Temperaturen mit <{ReadingsVal("Temperatur_Wohnzimmer","temperature","")}> ab. Jetzt ist mir aufgefallen das er die neuen Temperaturen nur dann aktualisiert, wenn ich am Thermostat eine neue Temperatur eingebe oder die Seite aktualisiere. Eine automatische Aktualisierung funktioniert hier irgendwie nicht. Muss ich noch irgendwas ändern oder ggf. den Code ändern?
Hallo Xaser habe dir hier geantwortet; vielleicht ist das eine Lösung.http://forum.fhem.de/index.php/topic,46418.0.html (http://forum.fhem.de/index.php/topic,46418.0.html)
Hallo
habe ein kleines Problem. Seit ich diese ReadingsGroup definiert habedefine wetter_readings readingsGroup cp_S300TH:<Temperatur ;Carport>,temperature \
cp_S300TH:<Durchschnittstemperatur>,T_avg_day \
<hr> \
ozw672:<Aussentemperatur>,Aussentemperatur \
ozw672:<Durchschnittstemperatur>,Aussentemperatur_avg_day
bekomme ich beim Aufruf immer 2016.01.17 13:11:06 1: PERL WARNING: Useless use of private variable in void context at (eval 2737) line 1.
2016.01.17 13:11:06 1: PERL WARNING: Useless use of private variable in void context at (eval 2738) line 1.
2016.01.17 13:11:06 1: PERL WARNING: Useless use of private variable in void context at (eval 2739) line 1.
2016.01.17 13:11:06 1: PERL WARNING: Useless use of private variable in void context at (eval 2740) line 1.
im log. Mit stacktrace erhalte ich:2016.01.17 13:11:06 1: PERL WARNING: Useless use of private variable in void context at (eval 2737) line 1.
2016.01.17 13:11:06 3: stacktrace:
2016.01.17 13:11:06 3: main::__ANON__ called by (eval 2737) (1)
2016.01.17 13:11:06 3: (eval) called by ./FHEM/33_readingsGroup.pm (342)
2016.01.17 13:11:06 3: main::lookup2 called by ./FHEM/33_readingsGroup.pm (525)
2016.01.17 13:11:06 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (1000)
2016.01.17 13:11:06 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1089)
2016.01.17 13:11:06 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (2715)
2016.01.17 13:11:06 3: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (1531)
2016.01.17 13:11:06 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (889)
2016.01.17 13:11:06 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (444)
2016.01.17 13:11:06 3: main::FW_Read called by fhem.pl (3162)
2016.01.17 13:11:06 3: main::CallFn called by fhem.pl (658)
2016.01.17 13:11:06 1: PERL WARNING: Useless use of private variable in void context at (eval 2738) line 1.
2016.01.17 13:11:06 3: stacktrace:
2016.01.17 13:11:06 3: main::__ANON__ called by (eval 2738) (1)
2016.01.17 13:11:06 3: (eval) called by ./FHEM/33_readingsGroup.pm (342)
2016.01.17 13:11:06 3: main::lookup2 called by ./FHEM/33_readingsGroup.pm (525)
2016.01.17 13:11:06 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (1000)
2016.01.17 13:11:06 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1089)
2016.01.17 13:11:06 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (2715)
2016.01.17 13:11:06 3: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (1531)
2016.01.17 13:11:06 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (889)
2016.01.17 13:11:06 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (444)
2016.01.17 13:11:06 3: main::FW_Read called by fhem.pl (3162)
2016.01.17 13:11:06 3: main::CallFn called by fhem.pl (658)
2016.01.17 13:11:06 1: PERL WARNING: Useless use of private variable in void context at (eval 2739) line 1.
2016.01.17 13:11:06 3: stacktrace:
2016.01.17 13:11:06 3: main::__ANON__ called by (eval 2739) (1)
2016.01.17 13:11:06 3: (eval) called by ./FHEM/33_readingsGroup.pm (342)
2016.01.17 13:11:06 3: main::lookup2 called by ./FHEM/33_readingsGroup.pm (525)
2016.01.17 13:11:06 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (1000)
2016.01.17 13:11:06 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1089)
2016.01.17 13:11:06 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (2715)
2016.01.17 13:11:06 3: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (1531)
2016.01.17 13:11:06 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (889)
2016.01.17 13:11:06 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (444)
2016.01.17 13:11:06 3: main::FW_Read called by fhem.pl (3162)
2016.01.17 13:11:06 3: main::CallFn called by fhem.pl (658)
2016.01.17 13:11:06 1: PERL WARNING: Useless use of private variable in void context at (eval 2740) line 1.
2016.01.17 13:11:06 3: stacktrace:
2016.01.17 13:11:06 3: main::__ANON__ called by (eval 2740) (1)
2016.01.17 13:11:06 3: (eval) called by ./FHEM/33_readingsGroup.pm (342)
2016.01.17 13:11:06 3: main::lookup2 called by ./FHEM/33_readingsGroup.pm (525)
2016.01.17 13:11:06 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (1000)
2016.01.17 13:11:06 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1089)
2016.01.17 13:11:06 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (2715)
2016.01.17 13:11:06 3: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (1531)
2016.01.17 13:11:06 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (889)
2016.01.17 13:11:06 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (444)
2016.01.17 13:11:06 3: main::FW_Read called by fhem.pl (3162)
2016.01.17 13:11:06 3: main::CallFn called by fhem.pl (658)
Kann mir jemand helfen herauszufinden woran das liegt?
Danke
Christof
die warnung kommt aus deinem valueFormat. das hast du leider nicht gezeigt.
gruss
andre
Oh, darauf wäre ich nicht gekommen. Valueformat ist:
{$READING => "%.1f °C"}
Christof
{$READING => "%.1f °C"}
funktioniert nicht. wenn es für jedes reading gelten soll reicht attr <rg> valueFormat %.1f °C
gruss
andre
Super, Danke Andre.
Interessant ist allerdings, dass das Ergebnis passt. Nur die Perl Warnung kommt dazu.
Hallo zusammen,
ich habe eine Frage zum Performance-Tuning von readingsGroup.
In einem anderen Thread (http://forum.fhem.de/index.php/topic,32382.0.html) wurde folgende readingsGroup zur Müllabfuhrvisualisierung veröffentlicht:
define rgAbfallkalender readingsGroup abfallkalender:!title\
abfallkalender:!day|0,!Restabfall|0,!Leichtverpackungen|0,!Papier|0,!Bioabfall|0,!O-Tonne|0,!Tannenbaum|0\
abfallkalender:!day|1,!Restabfall|1,!Leichtverpackungen|1,!Papier|1,!Bioabfall|1,!O-Tonne|1,!Tannenbaum|1\
abfallkalender:!day|2,!Restabfall|2,!Leichtverpackungen|2,!Papier|2,!Bioabfall|2,!O-Tonne|2,!Tannenbaum|2\
abfallkalender:!day|3,!Restabfall|3,!Leichtverpackungen|3,!Papier|3,!Bioabfall|3,!O-Tonne|3,!Tannenbaum|3\
abfallkalender:!day|4,!Restabfall|4,!Leichtverpackungen|4,!Papier|4,!Bioabfall|4,!O-Tonne|4,!Tannenbaum|4\
abfallkalender:!day|5,!Restabfall|5,!Leichtverpackungen|5,!Papier|5,!Bioabfall|5,!O-Tonne|5,!Tannenbaum|5\
abfallkalender:!day|6,!Restabfall|6,!Leichtverpackungen|6,!Papier|6,!Bioabfall|6,!O-Tonne|6,!Tannenbaum|6\
abfallkalender:!day|7,!Restabfall|7,!Leichtverpackungen|7,!Papier|7,!Bioabfall|7,!O-Tonne|7,!Tannenbaum|7\
abfallkalender:!day|8,!Restabfall|8,!Leichtverpackungen|8,!Papier|8,!Bioabfall|8,!O-Tonne|8,!Tannenbaum|8\
abfallkalender:!day|9,!Restabfall|9,!Leichtverpackungen|9,!Papier|9,!Bioabfall|9,!O-Tonne|9,!Tannenbaum|9\
abfallkalender:!day|10,!Restabfall|10,!Leichtverpackungen|10,!Papier|10,!Bioabfall|10,!O-Tonne|10,!Tannenbaum|10\
abfallkalender:!day|11,!Restabfall|11,!Leichtverpackungen|11,!Papier|11,!Bioabfall|11,!O-Tonne|11,!Tannenbaum|11\
abfallkalender:!day|12,!Restabfall|12,!Leichtverpackungen|12,!Papier|12,!Bioabfall|12,!O-Tonne|12,!Tannenbaum|12\
abfallkalender:!day|13,!Restabfall|13,!Leichtverpackungen|13,!Papier|13,!Bioabfall|13,!O-Tonne|13,!Tannenbaum|13\
abfallkalender:!day|14,!Restabfall|14,!Leichtverpackungen|14,!Papier|14,!Bioabfall|14,!O-Tonne|14,!Tannenbaum|14
attr rgAbfallkalender alias Müllabfuhr
attr rgAbfallkalender cellStyle { "r:1"=>'style="font-weight:bold;;font-size:16px"',"c:1"=>'style="font-weight:bold;;text-align:right;;padding-left:28pt;;"'}
attr rgAbfallkalender nonames 1
attr rgAbfallkalender room Information
attr rgAbfallkalender valueColumns { title => 'colspan="7"' }
attr rgAbfallkalender valueFormat {if($READING eq 'title'){$VALUE="recycling"}else{my($r,$d)=split(/\|/,$READING);;;;my $v=fhem("get abfallkalender days $d",1);;;;if($v eq "none"){$VALUE=undef}else{if($r eq 'day'){if($d==0){$VALUE="Heute"}elsif($d==1){$VALUE="Morgen"}else{$VALUE="in $d Tagen"}}else{if($v=~m/$r/){$VALUE=1}else{$VALUE=' '}}}}}
attr rgAbfallkalender valueIcon {if($VALUE eq 'recycling'){$VALUE}elsif($VALUE eq 1){if($READING=~m/Restabfall/){$VALUE='bag'}elsif($READING=~m/Leichtverpackungen/){$VALUE='bag@FFFF00'}elsif($READING=~m/Papier/){$VALUE='bag@01A3F5'}elsif($READING=~m/Bioabfall/){$VALUE='bag@04D921'}elsif($READING=~m/O-Tonne/){$VALUE='dustbin@FF6D00'}elsif($READING=~m/Tannenbaum/){$VALUE='christmas_tree@2B6B17'}}else{$VALUE=''}}
attr rgAbfallkalender valueSuffix {'title'=>' Müllabfuhr'}
Durch den Code im valueFormat wird der Aufruf "fhem("get abfallkalender days $d",1)" für jede Spalte wiederholt und damit jeweils 7 mal mit den identischen Parametern aufgerufen.
Gibt es eine Möglichkeit das irgendwie zu verhindern? Also quasi eine Hilfsvariable, die nur einmal pro Zeile berechnet wird.
Gruß
Leo
den wert ein mal nachts holen und in einen dummy stecken. in der readingsGroup dann den dummy verwenden.
gruss
andre
Hi,
habe heute folgende Meldung im Log:
2016.03.01 21:43:43.154 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
2016.03.01 21:43:43.155 3: stacktrace:
2016.03.01 21:43:43.156 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (524)
2016.03.01 21:43:43.156 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (997)
2016.03.01 21:43:43.157 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1086)
2016.03.01 21:43:43.157 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1592)
2016.03.01 21:43:43.157 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (897)
2016.03.01 21:43:43.158 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (446)
2016.03.01 21:43:43.158 3: main::FW_Read called by fhem.pl (3147)
2016.03.01 21:43:43.158 3: main::CallFn called by fhem.pl (654)
2016.03.01 21:43:44.305 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
2016.03.01 21:43:44.306 3: stacktrace:
2016.03.01 21:43:44.306 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (524)
2016.03.01 21:43:44.307 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (997)
2016.03.01 21:43:44.307 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1086)
2016.03.01 21:43:44.307 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1592)
2016.03.01 21:43:44.308 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (897)
2016.03.01 21:43:44.308 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (446)
2016.03.01 21:43:44.308 3: main::FW_Read called by fhem.pl (3147)
2016.03.01 21:43:44.309 3: main::CallFn called by fhem.pl (654)
Huhu,
ich versuche mich mal grad in die readingsGroup einzulesen und finde die Möglichkeiten recht spannend. Ich hab dazu auch gleich mal eine Frage:
Ich habe folgende RG
define Sonos_Bad_RG readingsGroup steckdose.Sonos_Bad:state Sonos_Bad:state doif.Bad.Sonos.AutoOff:state
attr Sonos_Bad_RG alias Sonos Badezimmer
attr Sonos_Bad_RG mapping {'steckdose.Sonos_Bad' => 'Strom', 'doif.Bad.Sonos.AutoOff' => 'autom. Abschaltung', 'Sonos_Bad' => 'Status'}
attr Sonos_Bad_RG room Badezimmer
attr Sonos_Bad_RG valueIcon { state => '%devStateIcon' }
Bedienung funktioniert super, allerdings scheint er den Status und Icons nur nach einem reload der Seite zu aktualisieren und nicht automatisch per longpoll. Weiß jemand, welchen Fehler ich gemacht habe?
Vielen Dank
hmm, hat keine ne Idee? Andre vielleicht? 8) 8) 8) 8) :o :o
werden die icons der einzelnen devices korrekt aktualisiert? auch in einem zweiten browser fenster?
gibt es events dazu im event monitor?
was sagt verbose 5 auf die readingsGroup?
gruss
andre
Moin Andre
Zitat von: justme1968 am 09 März 2016, 21:32:55
werden die icons der einzelnen devices korrekt aktualisiert? auch in einem zweiten browser fenster?
Ja, hab im zweiter Browserfenster das richtige Device offen und das Devicon aktualisiert ohne reload der Seite - das Icon des gleichen Devices in der RG akualisiert sich nicht automatisch - erst nach Reload des Raums
Zitat von: justme1968 am 09 März 2016, 21:32:55
gibt es events dazu im event monitor?
2016-03-10 07:49:08 IT steckdose.Sonos_Bad on
2016-03-10 07:49:53 readingsGroup Sonos_Bad_RG Sonos_Bad.state: Online
2016-03-10 07:49:53 readingsGroup Sonos_Gruppen item:1:1: readingsGroup Sonos_Gruppen item:1:1:
Zitat von: justme1968 am 09 März 2016, 21:32:55
was sagt verbose 5 auf die readingsGroup?
Im Fhemlog selber ist nichts ausgetaucht, außer das schalten der Steckdose - relevante Zeilen des Event Monitors siehe oben
Danke :D
Hallo zusammen,
ich versuche mit einem readingsGroup alle Geräte anzuzeigen, die aktuell ein Problem wie "MISSING ACK" haben. Diese Info ist im STATE des jeweiligen Geräts zu finden. Gibt es da eine Möglichkeit?
Oder gibt es einen Befehl "stateGroup"?? Leider konnte ich in Forum und Web bislang nichts finden.
Danke für eine Idee. Gruß zYloriC
Hallo Andre,
seit einiger Zeit bekomme ich folgende Warnung im log:
2016.04.05 12:12:01 1: PERL WARNING: Use of uninitialized value $room in substitution (s///) at ./FHEM/33_readingsGroup.pm line 312.
Ich hattte die Zeile 312 um ...if(defined($room));
ergänzt, aber mit dem heutigen Update war das natürlich wieder weg.
Vielleicht kannst Du für die subst in dem Block die if(defined... - Abfragen noch ergänzen, damit die Warnungen nicht mehr kommen.
Danke.
Gruß
Elektrolurch
bitte test mal die angehängte version und schau ob alles andere noch geht. ich glaube das problem ist eigentlich ein anderes.
danke
andre
ok. Scheint zu funktionieren.
Das Problem ist, dass ich in einem mapping - Ausdruck ROOM und ALIAS verwende. Die rg hat aber oben zwei andere Zeilen, da passt das mapping nicht. Vmtl. kommt daher der Fehler. In dem mapping-Ausdruck aber genau die zwei Zeilen auszunehmen, machen ihn ziemlich länglich.
Danke.
Elektrolurch
Hallo, hat jemand noch eine Idee zu diesem Thema?
https://forum.fhem.de/index.php/topic,49929.msg417848.html#msg417848 (https://forum.fhem.de/index.php/topic,49929.msg417848.html#msg417848)
Grüße
cerberus
Hallo zusammen,
habe da ein Verständnisproblem.
Ich möchte in einer readingsGroup den Namen eines Attributes dynamisch berechnen. Habe z.B. die Attribute alarm-name1...alarm-name3 und ein Attribut alarm-level mit den Werten 1 bis 3.
define Alarm_rg readingsGroup Alarm_innen:<Alarmname>,<{Alarm_getNumAttr($DEVICE,'alarm-name')}>@Alarm_innen
zeigt nur den Trailer "Alarmname" an.
Die Funktion Alarm_getNumAttr liefert den String "!?alarm-name2" entsprechend des alarm-level = 2 zurück, also das Attribut alarm-name2, wobei das ! soll sicher stellen, das auch bei nicht gesetztem Attribut ein leeres Textfeld angezeigt werden soll. (die Attribute alarm-name1...3 wurden allerdings gesetzt)
Leider verstehe ich da die Command-Ref nicht, habe schon alle Varianten durchgespielt:
◾ regex can be of the form <STRING> or <{perl}[@readings]> where STRING or the string returned by perl is inserted as a reading or:
so eingesetzt:
Alarm_innen:<Alarmname>,<{Alarm_GetNumAttr($DEVICE,'alarmname')}[@readings]>
liefert in der Anzeige:
Alarmname {Alarm_GetNumAttr($DEVICE,'alarmname')}[@readings]
also der perl-Ausdruck wird nicht evaluiert.
Außerdem steht die obige Angabe aus der Command-Ref im Widerspruch zur Schreibweise:
<String>, denn das wird doch immer als Text und nicht als reading interpretiert.
Auch ist mir die Bedeutung von [@readings] nicht klar.
Sind die [] - Optionsklammern oder gehören sie zur Syntax. Was ist @readings? Ein notwendiges Schlüsselwort für die Syntax oder durch was soll es aktuell ersetzt werden?
Geht das überhaupt für Attribute?
Wer kann mir da weiterhelfen?
Elektrolurch
Hallo, ich habe zwei Fragen zu meiner ReadingsGroup.
In folgendem Beitrag habe ich die ReadingsGroup für Openweather für mich angepasst.
https://forum.fhem.de/index.php/topic,51321.15.html (https://forum.fhem.de/index.php/topic,51321.15.html)
Ich wollte nun die Readings in den Spalten zentriert darstellen, was ja mit der Funktion style="text-align:center" möglich ist. Ich weiß aber nicht wie ich auch die Icons mittig in der Spalte ausrichte. Eines noch dazu, einige Readings, unter anderem auch die Icons werden über 3 Spalten dargestellt damit ich die Min | Max Werte jeweils auch darunter stehen haben. Weiterhin würde ich gern wissen wie ich die Min und Max Temp noch weiter zusammenrücken kann, ich dachte da an style="text-align:right" für Min und style="text-align:left" für Max aber ich weiß nicht wie genau bzw. bekomme es nicht hin :-\
hier der Code
define rg_WetterCom readingsGroup d_label:<%wettercom>,6,11,17,23,fc1_wday@WetterCom,fc2_wday@WetterCom \
WetterCom:<>,fc0_weatherCode06,fc0_weatherCode11,fc0_weatherCode17,fc0_weatherCode23,fc1_weatherCode,fc2_weatherCode\
WetterCom:<>,fc0_weather06,fc0_weather11,fc0_weather17,fc0_weather23,fc1_weather,fc1_weather \
WetterCom:<Min|Max>,fc0_tempMin06,<|>,fc0_tempMax06,fc0_tempMin11,<|>,fc0_tempMax11,fc0_tempMin17,<|>,fc0_tempMax17,fc0_tempMin23,<|>,fc0_tempMax23,fc1_tempMin,<|>,fc1_tempMax,fc2_tempMin,<|>,fc2_tempMax \
WetterCom:<Wind>,fc0_wind06,fc0_wind11,fc0_wind17,fc0_wind23,fc1_wind,fc2_wind \
WetterCom:<Regen>,fc0_chOfRain06,fc0_chOfRain11,fc0_chOfRain17,fc0_chOfRain23,fc1_chOfRain,fc2_chOfRain
attr rg_WetterCom group Heute Wetter
attr rg_WetterCom noheading 1
attr rg_WetterCom nolinks 1
attr rg_WetterCom nonames 1
attr rg_WetterCom nostate 1
attr rg_WetterCom room Wetter_Klima
attr rg_WetterCom style style="border:0px;;background:none;;box-shadow:none"
attr rg_WetterCom valueColumns { '6' => 'colspan="3"', '11' => 'colspan="3"', '17' => 'colspan="3"', '23' => 'colspan="3"', 'fc1_wday' => 'colspan="3"', 'fc2_wday' => 'colspan="3"', \
'fc0_weatherCode06' => 'colspan="3"', 'fc0_weatherCode11' => 'colspan="3"', 'fc0_weatherCode17' => 'colspan="3"', 'fc0_weatherCode23' => 'colspan="3"', 'fc1_weatherCode' => 'colspan="3"', 'fc2_weatherCode' => 'colspan="3"', \
'fc0_weather06' => 'colspan="3"', 'fc0_weather11' => 'colspan="3"', 'fc0_weather17' => 'colspan="3"', 'fc0_weather23' => 'colspan="3"', 'fc1_weather' => 'colspan="3"', 'fc2_weather' => 'colspan="3"', \
'fc0_wind06' => 'colspan="3"', 'fc0_wind11' => 'colspan="3"', 'fc0_wind17' => 'colspan="3"', 'fc0_wind23' => 'colspan="3"', 'fc1_wind' => 'colspan="3"', 'fc2_wind' => 'colspan="3"', \
'fc0_chOfRain06' => 'colspan="3"', 'fc0_chOfRain11' => 'colspan="3"', 'fc0_chOfRain17' => 'colspan="3"', 'fc0_chOfRain23' => 'colspan="3"', 'fc1_chOfRain' => 'colspan="3"', 'fc2_chOfRain' => 'colspan="3"'}
attr rg_WetterCom valueFormat {return "%i ;°C" if( $READING =~ m/temp/ );; \
return "%i ;%%" if( $READING =~ m/chOfRain/ );; \
return "%i ;km/h" if( $READING =~ m/wind/ ) }
attr rg_WetterCom valueIcon {return "openweather/d_%VALUE_S" if( $READING =~ m/Code/ );;\
return "openweather/d_%VALUE_S" if( $READING =~ m/Code06/ );; \
return "openweather/d_%VALUE_S" if( $READING =~ m/Code11/ );; \
return "openweather/d_%VALUE_S" if( $READING =~ m/Code17/ );; \
return "openweather/n_%VALUE_S" if( $READING =~ m/Code23/ )}
attr rg_WetterCom valueStyle style="text-align:center;;Icon:center"
Grüße
cerberus
Du kannst z.B. mit valueFormat zwei Werte in einer Spalte ausgeben.
valueFormat{'mintemp' => '{"$VALUE C / " . ReadingsVal('Wetterstation','maxtemp',0) . " C"}' }
und wenn es noch komplizierter werden soll, das ganze in eine externe sub auslagern.
Mit <br> kann man auch zwei oder mehrere Zeilen in der Spalte ausgeben.
Ich habe mir eine sub gebastelt, die ein valueIcon mit darunter stehendem Text des Wertes zentriert in einer Spalte ausgibt.
Elektrolurch
Hallo Elektrolurch, so sollte es doch funktionieren
{ 'fc0_tempMin06' => '{"$VALUE °C | " . ReadingsVal('WetterCom','fc0_tempMax06',0). " C"}' }
tut es aber nicht :(
Grüße
cerberus
Hallo cerberus,
schau mal in Deinem Ausdruck nach, Du hast " und ' gemischt.
Wenn Du außen für den Hash ' ' verwendest, dann müssen alle Strings inerhalt des Stings mit " gequoted werden.
Elektrolurch
Hallo Elektrolurch
meinst du so
{ "fc0_tempMin06" => {"$VALUE °C | " . ReadingsVal("WetterCom","fc0_tempMax06",0) . " C"} }
leider bekomme ich dann als Reading nur das zu sehen
HASH(0x2baf358)
Na, wie sieht denn ein hash in perl aus?
{'key' => 'value', ...}
und value ist hier ein ausführbares Stück perl-Code was in {} steht.
also so:
{ "fc0_tempMin06" => "{'$VALUE °C | ' . ReadingsVal('WetterCom','fc0_tempMax06',0) . ' C'}" }
und wie schon oben geschrieben: innerhalb des Strings " ... " werden die Strings für die Parameter der Funktionen usw. mit ' ...' geschrieben, da ansonsten ja der äußere String zu früh schließt.
Bitte das also mal nachvollziehen...
Elektrolurch
Ich habe in der Commandref gelesen, dass man die RG mit dem Befehl
set rg_Test visibility hide
ausblenden kann. Zumindest habe ich das so verstanden.
hide
will hide all visible instances of this readingsGroup
Das klappt aber so nicht.
Habe ich den Befehl falsch verstanden?
Was muss ich denn tun, um eine komplette RG auszublenden? Ich finde einfach nichts im Forum dazu.
Klappt bei mir auch nicht. Vermutlich stimmt die Command-Ref nicht oder es fehlt die Beschreibung einer zusätzlichen Bedingung, die noch eingestellt werden müsste.
Was aber geht:
set rgt disable 3
Dann ist sie komplettt ausgeblendet.
Allerdings muss man dann mit "trigger js...." den Screen neu aktualisieren lassen, damit auch die Anzeige aktualisiert wird.
Elektrolurch
Danke dir, aber das scheint bei mir auch nicht zu helfen.
set rg_test disable 3
wird bei mir verweigert mit dem Hinweis auf visibility.
Zitat von: Elektrolurch am 12 April 2016, 10:17:50
Na, wie sieht denn ein hash in perl aus?
{'key' => 'value', ...}
und value ist hier ein ausführbares Stück perl-Code was in {} steht.
also so:
{ "fc0_tempMin06" => "{'$VALUE °C | ' . ReadingsVal('WetterCom','fc0_tempMax06',0) . ' C'}" }
und wie schon oben geschrieben: innerhalb des Strings " ... " werden die Strings für die Parameter der Funktionen usw. mit ' ...' geschrieben, da ansonsten ja der äußere String zu früh schließt.
Bitte das also mal nachvollziehen...
Elektrolurch
Hallo Elektrolurch, das mit den zwei Reading in einer Spalte habe ich jetzt hin bekommen, leider scheitere ich aber noch daran ein Icon mit darunter stehendem Text anzeigen zulassen, damit dieses zentriert dargestellt wird. Würde es aber gern ohne sub machen. Kannst du mir nochmal einen Tip geben?
:-\ bei Perl wurschtel ich mich immer so durch ::)
Grüße
cerberus
Zitat von: Tommy82 am 01 März 2016, 21:59:52
Hi,
habe heute folgende Meldung im Log:
2016.03.01 21:43:43.154 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
2016.03.01 21:43:43.155 3: stacktrace:
2016.03.01 21:43:43.156 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (524)
2016.03.01 21:43:43.156 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (997)
2016.03.01 21:43:43.157 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1086)
2016.03.01 21:43:43.157 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1592)
2016.03.01 21:43:43.157 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (897)
2016.03.01 21:43:43.158 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (446)
2016.03.01 21:43:43.158 3: main::FW_Read called by fhem.pl (3147)
2016.03.01 21:43:43.158 3: main::CallFn called by fhem.pl (654)
2016.03.01 21:43:44.305 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 525.
2016.03.01 21:43:44.306 3: stacktrace:
2016.03.01 21:43:44.306 3: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (524)
2016.03.01 21:43:44.307 3: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (997)
2016.03.01 21:43:44.307 3: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1086)
2016.03.01 21:43:44.307 3: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1592)
2016.03.01 21:43:44.308 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (897)
2016.03.01 21:43:44.308 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (446)
2016.03.01 21:43:44.308 3: main::FW_Read called by fhem.pl (3147)
2016.03.01 21:43:44.309 3: main::CallFn called by fhem.pl (654)
Keiner eine idee waas da bei mir schief läuft
Ein list von der Readingsgroup wäre hilfreich. Der Fehler sagt im Grunde was falsch ist: Du verwendest irgendwo ein - wo eine Zahl erwartet wird.
Zitat von: marvin78 am 25 April 2016, 10:22:11
Ein list von der Readingsgroup wäre hilfreich. Der Fehler sagt im Grunde was falsch ist: Du verwendest irgendwo ein - wo eine Zahl erwartet wird.
Hi,
ja das ist das Problem, ich hab einige readingsGroups, und weiss nicht in welcher der Fehler sein könnte.
Hab schon mal in der fhem.cfg nach "-" gesucht, aber ohne eine auffälligkeit zu finden.
Wie könnte ich dem Problem denn am einfachsten auf die schliche kommen?
Zitat:
set rg_test disable 3
disable ist ein Attribut, also
attr rg disable 3
Elektrolurch
Hallo,
in: « Antwort #1510 am: 10 April 2016, 13:15:39 »
hatte ich gefragt, ob auch Attribute in einer readingsGroup so verwendet werden können, dass der Name des Attributes dynamisch berechnet wird, wie es laut Command-Ref ja für readings gehen soll.
Und ob jemand weiß, wie die korrekte Syntax lautet.
Ich bekomme es jedenfalls für Attribute nicht hin.
Niemand eine Idee?
Elektrolurch
Hallo Andre,
wenn ich in einer rg über das Attribut "commands" für ein reading ein textField für die Eingabe definiere, so erscheint auch nur das Textfeld ohne den Namen des readings.
Mache ich das Gleiche für ein Attribut (!?attname), so wird dem Textfeld der Attributname vorangestellt. Der lässt sich auch nicht mit valuePrefix überschreiben.
Wird statt des textField z.B. eine Auswahlliste für das Attribut per "commands" definiert, so wird der Attributname (so wie es sein sollte) der Liste NICHT vorangestellt.
Lässt sich das für Textfelder ev. auch so anpassen?
(Damit die Symetrie zu readings stimmt :-))
Ich hänge mal den Auszug für die rg an.
Elektrolurch
Guten Tag,
Ich versuche eiine Readingsgroup für meine Dachfenster zu erstellen mit dem Ziel das ich das Fenster über das Icon öffnen und schliessen lassen kann. Daneben in einer weiteren Spalte möchte ich gerne in einer Dropdown Liste verschiedene Zeiten wählen können nach denen das Fenster automatisch wieder geschlossen werden soll. Ist der Wert des Delays 0, soll es offen bleiben bis manuel geschlossen wird (Im Sommer der Default). Im Winter soll dann automatisch der Default auf 5 Minuten gesetzt werden.
Das Fenster wird über den state eines Dummy gesteuert (Auf,Zu). Die Delay Werte sollen im Reading "Delay" des selben Dummy gespeichert werden.
Sobald ein Wert im Dropdown selektiert wird, wollte ich das mittels notify abfangen und mittels einem kleinen Modul über setreading ins Delay Reading des Dummy schreiben.
Fenstersteuerung durch tippen des Icons funktioniert bestens. Sobald ich nun im Dropdown aber einen Wert selektiere, wird der auch in das Dummy Reading geschrieben, leider aber auch gleich noch in den state des Dummy der eigentlich nur die Zu, Auf Stati enthalten sollte.
Ist es überhaupt möglich meine Idee umzusetzen mit den Delay Werten im selben Dummy?
Ich habe jetzt schon ne ziemliche Anzahl Dummys und möchte die Menge gerne etwas deckeln.
Attached meine rG Definition und Dummy Screenshot nach Dropdown aktivierung.
Was mache ich falsch, wie packe ich das am besten an?
Gruss Philipp
schau dir die setList und readingList attribute des dumy an. damit legst du zum einen die möglichen kommandos fest und zum zweiten welche kommandos nicht in state landen sondern in einem anderen reading. dazu brauchst du also kein notify.
testen kannst du dann z.b. mit webCmd und es über das commands mapping in die readingsGroup einbauen.
gruss
andre
Hallo Andre,
Erst mal herzlichen Dank, hat bis aufs testen mit webCmd bestens funktioniert.
Das testen hab ich irgendwie nicht hingekiegt. Wie müsste der webCmd aussehen damit die Dropdown des Delays angezeigt wird?
attr dm_eg.wg.SW.Fenster webCmd Delay
Der funktionierende Dummy sieht nun so aus:
define dm_eg.wg.SW.Fenster dummy
attr dm_eg.wg.SW.Fenster alias Dachfenster Wiga
attr dm_eg.wg.SW.Fenster devStateIcon Zu:fts_window_roof@:Auf Auf:fts_window_roof_open_2@red:Zu
attr dm_eg.wg.SW.Fenster eventMap on:Zu off:Auf
attr dm_eg.wg.SW.Fenster group Dachfenster Wiga
attr dm_eg.wg.SW.Fenster readingList Delay
attr dm_eg.wg.SW.Fenster room Dachfenster,Wiga
attr dm_eg.wg.SW.Fenster setList Zu,Auf
Die readingsGroup so:
# ReadingsGroup Dachfenster
define rg.Dachfenster readingsGroup <%fts_window_roof>,<Status>,<Delay>,<Rain>,<Lock>\
dm_og.fl.SW.Fenster:state,Delay,state@ou.xx.RS.Regen.Sensor,temperature@ou.xx.TH.Pergola\
<>,<>,<>\
dm_eg.wg.SW.Fenster:state,Delay,state@ou.xx.RS.Regen.Sensor,temperature@ou.xx.TH.Pergola\
<>,<>,<>\
attr rg.Dachfenster commands {'state.Zu' => 'set $DEVICE Auf','state.Auf' => 'set $DEVICE Zu','Delay' => 'Delay:0,5,15,30,60,120,180'}
attr rg.Dachfenster group 01 Dachfenster
attr rg.Dachfenster nameStyle style="font-weight:bold"
attr rg.Dachfenster noheading 1
attr rg.Dachfenster nolinks 0
attr rg.Dachfenster room Dachfenster
attr rg.Dachfenster style style="border:3px;;background:none;;box-shadow:none;;"
attr rg.Dachfenster valueIcon {state => '%devStateIcon','temperature'<=2 => 'secur_lock@red', 'temperature'>2 => 'secur_open@lightgreen'}
attr rg.Dachfenster valueStyle style="text-align:center"
Bei der readingsGroup möchte ich nun gerne in Abhängigkeit der Temperatur eines Aussensensors ein Lock Open oder Closed Icon anzeigen. Da limitierte Programmierfähigkeiten vorhanden sind, funktioniert mein obiger erster Versuch nicht unerwartet leider nicht.
Wie könnte das angestellt werden?
Danke
Gruss Philipp
du musst auch noch setList verwenden: attr dm_eg.wg.SW.Fenster setList on off Delay:0,5,15,30,60,120,180
danach geht attr dm_eg.wg.SW.Fenster webCmd Delay
aber wenn du schon die readingsGroup laufen hat brauchst du das ja nicht mehr.
falls du es doch einbaust wird der Delay teil in commands einfacher: ..., 'Delay' => 'Delay:', ...
die keys für einen hash (das links von =>) dürfen nur Strangs sein. für das was du möchtest musst du im wert des jeweiligen mapping eintrage perl code verwenden. etwa:attr rg.Dachfenster valueIcon {state => '%devStateIcon', temperature => '{return \'secur_lock@red\' if( $VALUE <= 2 ); return \'secur_open@lightgreen\' }' }
gruss
andre
Hallo Andre,
Habe nun die Dummy Konfiguration mit dem setList noch angepasst, hatte bisher nicht gewusst dass da mehrere Internals (state) und Readings (Delay) gleichzeitig definiert werden können.
Wie es dann so geht, hat mich natürlich der Ehrgeiz gepackt und ich hätte auch gerne noch dry und rain mit dem icon humidity in Grün und Rot dargestellt und dafür valueIcon wie folgt erweitert:
attr rg.Dachfenster valueIcon {temperature => '{return \'secur_locked@red\' if( $VALUE <= 2 );; return \'secur_open@green\' }', state => '{return \'fts_window_roof@\' if( $VALUE eq \'Zu\');; return \'fts_window_roof_open_2@red\' if( $VALUE eq \'Auf\');; return \'humidity@green\' if( $VALUE eq \'dry\');; return \'humidity@red\' if( $VALUE eq \'rain\') }' }
Jetzt werden aber die Dachfenster Icons mit dem humidity icon angezeigt und beim Mouseover über das Icon wird der state als "on" angezeigt. Ich verwende aber bei Fenstern überall Zu und Auf mittels eventMap. Der Dummy selber funktioniert immer noch mit Zu und Auf. Bei setList verwende ich ebenfalls Zu und Auf.
Wenn ich valueIcon auf on statt Zu und auf off statt Auf umstelle kommen wieder die richtigen Icons.
Ist dieses nur machbar mit on und off oder hast du allenfalls für die Lösung dieses Problems auch noch einen Trick aus deinem unerschöpflichen Fundus?
Herzlichen Dank schon mal für die schnelle und unkomplizierte Hilfe, bin dir sehr dankbar.
Gruss Philipp
Hallo,
ich möchte in Abhängigkeit von state des TV Bedienungselemente dynamisch ein- oder ausblenden. Für anklickbare Icons ist das auch kein Problem: liefert das entsprechende Attribut für das reading undef zurück (valueFormat oder valueIcon) wird die Anzeige des Icons unterdrückt. Leider geht das aber nicht für Ausklapplisten (z.B. Sendermenü).
Das Sender-Menü wird wie die anklickbaren Icons über das Attribut commands definiert. Im Gegensatz zum Icon wird der Wert "undef" für das auszublendende Menü ignoriert.
Hier mal der Code:
define Mz_AB_rg readingsGroup Mz_Media:state,<{ReadingsTime($DEVICE,'state')}@state>,!VolumeD@Sonos_Marinas_Zimmer,!VolumeU@Sonos_Marinas_Zimmer,infoSummarize1@Sonos_Marinas_Zimmer Mz_Receiver:state,channel,input <<
VolumeU, VolumeD sind klickbare Icons, channel und input Ausklappmenüs
commands {'state.on' => 'set $DEVICE aus', 'state.off' => 'set $DEVICE ein', 'VolumeD' => 'set $DEVICE VolumeD', 'VolumeU' => 'set $DEVICE VolumeU', 'channel' => 'channel:', 'input' => 'input:',
valueFormat { 'VolumeD' => '{(ReadingsVal($DEVICE,"state","appeared") eq "appeared")?MakeIconwithLabel("rc_VOLDOWN.svg",$VALUE,"leiser"):undef}','VolumeU' => '{(ReadingsVal($DEVICE,"state","appeared") eq "appeared")?MakeIconwithLabel("rc_VOLUP.svg",$VALUE,"lauter"):undef}', 'infoSummarize1' => '{(ReadingsVal($DEVICE,"state","appeared") eq "appeared")?$VALUE:undef}', 'channel' => '{ReadingsVal($DEVICE,"state","present") eq "present")?$VALUE:undef}', 'input' => '{ReadingsVal($DEVICE,"state","present") eq "present")?$VALUE:undef}' }
Für die Icons, die einschließlich des Labels anklickbar sind, klappt das so mit der valueFormat - Anweisung, für die Ausklapplisten nicht.
Was wünschenswert wäre und das Problem auch einheitlich behandeln würde, wäre folgendes:
commands {'rd1' => '{perl-Code, der das Kommando berechnet oder undef zurück liefert}',....
z.B.
commands {'input' => '{ReadingsVal($DEVICE,"state","present") eq "present")?"input:":undef}' }
geht aber leider derzeit so nicht.
Elektrolurch
Hallo,
ich habe eine Frage zur ReadingsGroup in Verbindung mit Einfache Balkendiagramme. Ich habe es so gemacht wie im Wiki beschrieben. Aber irgendwie hat was mit den stylesheets nicht hin. Ich sehe die Balken, es sieht alles gut aus wie im Anhang 1. Kommt aber durch Longpoll ein Refresh, sehen die Balken etwas anders aus. Die Schriftart scheint sich zu ändern und dadurch wird alles dicker. Siehe Anhang 2. Hat hier jemand ein Tipp für mich an welcher Schraube ich drehen muss? Danke!
/Daniel
Ich würde gerne per valueFormat nur Devices anzeigen die das Alias Attribut gesetzt haben:
{ return $VALUE if ( ReadingsVal($DEVICE,"R-txThrHiPwr","") || ReadingsVal($DEVICE,"all_power","") );; return undef }
möglich ?
wenn du den alias auch anzeigen willst: in der definition z.b. .*:+alias verwenden.
wenn du ihn nicht anzeigen willst einen filter verwenden: .*:FILTER=alias=.+:....
oder in deiner if bedingung noch ein AttrVal mit einbauen: if( AttrVal($DEVICE,'alias','') && (...) ).
gruss
andre
Hallo zusammen,
besteht die Möglichkeit diesem valueStyle noch eine Division durch 1000 hinzuzufügen? D.h., die Ausgabe, die mit der Formatierung "%.2f Wh" erfolgt noch mal durch 1000 zu dividieren damit es kWh werden?
{ ($VALUE ne "-") ? "%.2f Wh" : "-" }
Vielen Dank!
Hallo,
kann man in der Überschrift zur Readingsgroup auch Umlaute verwenden ?
define WetterRG readingsGroup <>,<Tag>,<Temp.>,<gefühlt>,<Luftdruck>,<Tendenz>,<Feuchte>,<Sicht>,<>,<> YahooWetter:day_of_week,temp_c,wind_chill,pressure,pressure_trend_sym,humidity,visibility,condition,wind_condition,pubDate
Das ü von 'gefühlt' wird falsch dargestellt.
Hab schon gesucht, aber nichts dazu gefunden.
Danke
wenn du im web frontend im def bereich gefühlt eingibst geht das ohne probleme. wenn dein telnet terminal auf utf8 steht auch. das gleiche würde für einen editor gelten. oder du verwendest ü wie es bei html vorgesehen ist.
gruss
andre
Hab's mal mit <gefühlt> probiert. Kommt dann aber 'unknown command'
Mach ich da was falsch?
Und wie stelle ich denn auf utf8 ?
; verdoppeln wenn du von hand editierst. gib es im DEF bereich ein
Hab es direkt in der fhem.cfg so eingetragen:
define WetterRG readingsGroup <>,<Tag>,<Temp.>,<gefü;hlt>,<Luftdruck>,<Tendenz>,<Feuchte>,<Sicht>,<>,<> YahooWetter:day_of_week,temp_c,wind_chill,pressure,pressure_trend_sym,humidity,visibility,condition,wind_condition,pubDate
Jetzt wird die Überschrift gar nicht mehr angezeigt.
Hast du noch einen Vorschlag?
Und vielen Dank für deine Mühe!
stimmt. da hat sich ein fehler eingeschlichen. das geht ab morgen wieder.
wenn du das ü über den DEF bereich eingibst sollte es wie gesagt aber trotzdem gehen.
gruss
andre
ps: du solltest die config nicht selber bearbeiten...
OK, dann werde ich morgen mal updaten und testen.
Hab deinen Rat befolgt und die Änderung über den def-Bereich gemacht.
Jetzt sind die Umlaute da.
Und hab mir dann die fhem.cfg runterkopiert und damit auch die aktuellen Werte in meiner fhem.cfg auf dem PC.
Danke nochmal
Hallo!
Kann mir jemand verraten wie ich die Readingsgroup in der Gruppe "Heizung" ge-centert bekomme...
Sollte so sitzen wie der Plot darüber.
Danke!
der plot ist auch nicht zentriert...
Dann anders gefragt: Kann ich irgendwo ein colspan=2 angeben um die readingsgroup über die 2. Tabellenspalte der Gruppe zu ziehen?
du kannst colspan für die spalten innerhalb der readingsgroup setzen. die readingsgroup (und andere nicht normale devices) und die normalen devices darüber stehen in unterschiedlichen tabellen. da kommst du mit relativen größen nicht weit.
schau dir mal das css layout der seite an. du kannst die verwendeten styles anpassen.
Ok danke, dann werde ich die readingsgroup umbauen damit es nicht zu breit wird.
Hallo,
leider blicke ich es irgendwie nicht mit den readingsGroups und den zugehörigen regex.
Ich würde gerne aus dem nmap-Scan-Modul meine Readings in einer readingsGroup anzeigen lassen und dabei die entsprechenden Readings in einer Art Schleife erzeugen.
Aus dem nmap-Modul kommen z.B. folgende Readings:
192.168.1.33_hostname Andy701-WLAN.fritz.box
192.168.1.33_macAddress 00:1F:C6:89:XX:XX
192.168.1.33_macVendor Asustek Computer
192.168.1.34_hostname 192.168.1.34
192.168.1.34_macAddress 00:1F:XX:XX:13:D6
192.168.1.34_macVendor Asustek Computer
d.h. die Readingsname haben jeweils eine entsprechende IP-Adresse vorne dran.
Nun sollte es doch innerhalb einer readingsgroup möglich sein, diese hochzuzählen und nicht
<IP-Adresse>,<Rechner-Name>,<MAC>,<Hersteller>
NetScan:<192.168.1.1>,*.\.1_hostname,*.\.1_macAddress,*.\.1_macVendor
NetScan:<192.168.1.2>,*.\.2_hostname,*.\.2_macAddress,*.\.2_macVendor
NetScan:<192.168.1.3>,*.\.3_hostname,*.\.3_macAddress,*.\.3_macVendor
so jede mögliche Nummer aufbauen zu müssen oder bin ich da komplett auf dem flaschen Dampfer? Ich habe da mit %ROW herumexperimentiert, aber das hilft mir auch nicht wirklich weiter, vielleicht kann mich mal jemand kneifen?
Danke für jede Hilfe...
das geht nicht weil die readingGroup alle readings eigenständig behandelt und nur die möglichkeit bietet devices logisch zusammen zu gruppieren.
ich denke du bist mit einem weblink und etwas perl code das dir eine html Tabelle aus den reading aufbaut besser bedient.
gruss
andre
Hallo,
ok, das war mir nicht ganz klar, ob ich die unterschiedlichen Readings innerhalb einer readingsGroup quasi durchzählen kann, aber dann werd ich das anders versuchen. perl und myutils ist also die bessere Wahl. Danke fürs Bestätigen.
Andreas
warte mal noch einen Moment mit dem selber bauen. ich habe noch eine idee.
gruss
andre
so... anbei ein erster vorschlag wie man das lösen könnte.
der eigentliche knackpunkt ist das die readingsGroup bis jetzt dafür gedacht ist gleiche oder zusammengehörende readings aus unterschiedlichen devices zusammen zu suchen.
hier müssen aber die readings eines devices auseinander sortiert bzw. nach einem muster gruppiert werden.
vorschlag:
- in der definition der readingsGroup wird das reading nach dem gruppiert werden soll gekennzeichnet.
- in der regex dieses readings wird der variable teil per capture group gekennzeichnet
- dieser variable teil ist überall sonst auf der zeile ebenfalls verwendbar
- es steckt keine weitere logik dahinter ausser string ersetzungen
dein anwendungsfall würde dann so aussehen:<IP-Adresse>,<Rechner-Name>,<MAC>,<Hersteller>
NetScan:@2,<#1>,(.*)_hostname,#1_macAddress,#1_macVendor
@2-> kennzeichnet das zweite reading, muss als erstes nach dem : stehen
#1 -> ist die erste capture group die dann als teil jedes anderen strings verwendet werden kann
probleme für die ich noch keine lösung habe:
- die sortierung der readings ist alphabetisch. das passt bei ip adressen nicht.
- wenn im device neue readings erscheinen werden die nicht automatisch sichtbar sondern erst beim refresh
gruss
andre
ps: diskussion bitte hier: https://forum.fhem.de/index.php/topic,58212.0.html (https://forum.fhem.de/index.php/topic,58212.0.html)
edit: es gibt ein neues attribut sortFn mit dem der name einer routine angegeben werden kann mit der die readings sortiert werden. das kann der name einer eigenen routine aus 99_myUtils sein oder die mitgelieferte rgSortIP routine.
edit: 2016-10-02: feature ist so eingecheckt
ich habe das eben so eingecheckt.
gruss
andre
Seit dem letzten Update passt bei mir die Ansicht der Readingsgroup für das einstellen der Thermostate nicht mehr.
Es ist alles etwas verschoben.
Gehe ich auf ein älteres Backup zurück sieht alles wieder normal aus.
https://forum.fhem.de/index.php/topic,26479.msg499035.html#msg499035 (https://forum.fhem.de/index.php/topic,26479.msg499035.html#msg499035)
Hallo zusammen,
ich weiss nicht, ob hier richtig; aber seit gestern habe ich einen merkwürdigen Effekt bei meinem readingsGroups.
Öffne ich ein readingsGroup wie in temp1.jpg, so wird der Wert, hier eine Temperatur korrekt angezeigt; nach wenigen Sekunden wird dann aber nur noch die Definition von "valueStyle" angezeigt, wie in temp2.jpg zu sehen.
Im Logfile wird dazu folgende Fehlermeldung ausgegeben:
2016.10.07 00:39:52 1: PERL WARNING: Use of uninitialized value $list[0] in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 756.
Kann da jemand helfen?
Gruß postman
Ist bei mir auch so.
Bei der longpoll Aktualisierung scheint was nicht zu stimmen.
Sieht so aus als wenn das HTML codiert ankommt.
Gruß
Dan
Habe das gleiche Problem
Bei mir leider auch.
das liegt an den änderungen aus diesem thread: https://forum.fhem.de/index.php/topic,57377.msg499873.html#msg499873 (https://forum.fhem.de/index.php/topic,57377.msg499873.html#msg499873).
gruss
andre
Bei mir kommt auch bei jeder Änderung eines Wertes in einer readingsGroup jede Menge Code, eingeschlossen zwischen <svg .... svg>
wenn ich die Seite im Browser neu lade, erscheint der neue geänderte Zustand korrekt.
Zitat von: HRueck am 07 Oktober 2016, 17:51:57
Bei mir kommt auch bei jeder Änderung eines Wertes in einer readingsGroup jede Menge Code, eingeschlossen zwischen <svg .... svg>
wenn ich die Seite im Browser neu lade, erscheint der neue geänderte Zustand korrekt.
readingsGroup ist meines Erachtens zur Zeit leider nicht wirklich benutzbar durch Änderung der Maskierung (https://forum.fhem.de/index.php/topic,57377.msg499873.html#msg499873) im Longpoll.
Da hilft wohl nur ein Restore von:
01_FHEMWEB.pm
98_JsonList.pm
98_JsonList2.pm
fhemweb.js
Gruß
Dan
Zitat von: DeeSPe am 07 Oktober 2016, 18:09:01
Da hilft wohl nur ein Restore von:
01_FHEMWEB.pm
98_JsonList.pm
98_JsonList2.pm
Leider hilft das bei mir auch nicht. :-(
Zitat von: Masterfunk am 07 Oktober 2016, 18:10:15
Leider hilft das bei mir auch nicht. :-(
fhemweb.js
noch dazu!
Zitat von: DeeSPe am 07 Oktober 2016, 18:13:05
fhemweb.js
noch dazu!
Bingo!
Danke für den Tip
Gruß Detlef
habe eben eine version eingecheckt mit der es erst mal wieder funktioniert sollte.
gruss
andre
was heist "eingecheckt"?
wo kann ich was finden?
beim updaten von fhem kommt "nothing to do"
Gruss Herbert,
und schon mal vielen Dank, dass das Problem eine Lösung zu haben scheint!
Zitat von: HRueck am 07 Oktober 2016, 20:49:35
was heist "eingecheckt"?
wo kann ich was finden?
beim updaten von fhem kommt "nothing to do"
Gruss Herbert,
und schon mal vielen Dank, dass das Problem eine Lösung zu haben scheint!
Ab morgen im Update oder jetzt schon via SVN...
Gruß
Dan
updates werden immer morgens gegen 8 zusammengestellt. also bis dahin warten oder von hand aus dem svn holen.
gruss
andre
Fehler in den Readingsgroups ist anscheinend behoben.
Habe gerade festgestellt das das Modul "lightscene" das gleiche Problem hat.
Gruß Detlef
habs repariert und eingecheckt. readingsHistory war auch noch betroffen.
gruss
andre
Hallo Andre,
danke für die schnelle Hilfe ;D ;D ;D
Ich hab da noch mal eine Frage; weiss aber nicht ob diese hier her gehört:
Es geht und das Command update
M.E. ist eine Backuphistorie von 3 zu wenig (ich habe in der letzten woche mehrere Updates gemacht).
Wo lässt sich die Historie einstellen z.B auf 10 Backups?
Nochmal Danke; Toller support, den ihr da leistet
Gruß Uwe
Danke für die schnelle Hilfe, funktioniert wieder alles!
Grüße
Olli
Zitat von: postman am 08 Oktober 2016, 12:20:29
Wo lässt sich die Historie einstellen z.B auf 10 Backups?
attr global restoreDirs <Anzahl>
Der Wert "0" schaltet die Sicherung ganz ab.
Gruß Detlef
Hallo Detlef,
danke, werde ich mal testen
Gruß Uwe
Irgendwie ist da noch ein Problem.
Meine Sonos Readingsgroups zeigen nach Änderung die Lautsärke mit "0" an.
Nach einem Refresh der Seite ist die Anzeige wieder in Ordnung.
Wenn ich mir statt dem Regler nur die Werte anzeigen lasse, wird der Wert auch richtig aktualisiert.
Hier das List der RG:
Internals:
DEF Sonos_Kueche:<{SONOS_getCoverTitleRG($DEVICE,300)}@infoSummarize2>
NAME Sonos_KuecheRG3
NR 509
NTFY_ORDER 50-Sonos_KuecheRG3
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Sonos_Kueche 1
Content2:
DEVICES:
ARRAY(0x87b2488)
Fhem:
lastDefChange 1
last_update 1476298658.34125
Helper:
DEF
cellStyle style="font-size:14px;color:white"
nameStyle style="text-align:left"
Commands:
Mute.0 set %DEVICE Mute 1
Mute.1 set %DEVICE Mute 0
Repeat.0 set %DEVICE Repeat 1
Repeat.1 set %DEVICE Repeat 0
Shuffle.0 set %DEVICE Shuffle 1
Shuffle.1 set %DEVICE Shuffle 0
Volume Volume:knob,anglearc:315,angleoffset:200,min:0,max:100,step:1,linecap:round,fgColor:#404040,bgColor:white,width:110,height:110
state.off set %DEVICE on
state.on set %DEVICE off
transportState.PAUSED_PLAYBACK set %DEVICE Play
transportState.PLAYING set %DEVICE Pause
transportState.STOPPED set %DEVICE Play
Valueicon:
Mute.0 audio_volume_mute.svg
Mute.1 audio_volume_mute.svg@red
Repeat.0 audio_repeat
Repeat.1 audio_repeat.svg@green
Shuffle.0 audio_shuffle
Shuffle.1 audio_shuffle.svg@green
state.off general_aus@red
state.on general_an@green
transportState.PAUSED_PLAYBACK audio_play.svg
transportState.PLAYING audio_pause.svg
transportState.STOPPED audio_play.svg
Attributes:
cellStyle style="font-size:14px;color:white"
commands { Volume => "Volume:knob,anglearc:315,angleoffset:200,min:0,max:100,step:1,linecap:round,fgColor:#404040,bgColor:white,width:110,height:110", "transportState.PLAYING" => "set %DEVICE Pause", "transportState.PAUSED_PLAYBACK" => "set %DEVICE Play", "transportState.STOPPED" => "set %DEVICE Play", "Shuffle.0" => "set %DEVICE Shuffle 1", "Shuffle.1" => "set %DEVICE Shuffle 0", "Repeat.0" => "set %DEVICE Repeat 1", "Repeat.1" => "set %DEVICE Repeat 0", "Mute.0" => "set %DEVICE Mute 1", "Mute.1" => "set %DEVICE Mute 0", "state.on" => "set %DEVICE off", "state.off" => "set %DEVICE on" }
fp_Grundriss 780,20,0,,
nameStyle style="text-align:left"
noheading 1
nonames 1
notime 1
room Media
valueIcon { 'state.on' => 'general_an@green', 'state.off' => 'general_aus@red', 'transportState.STOPPED' => 'audio_play.svg', 'transportState.PAUSED_PLAYBACK' => 'audio_play.svg', 'transportState.PLAYING' => 'audio_pause.svg', 'Repeat.0' => 'audio_repeat', 'Repeat.1' => 'audio_repeat.svg@green', 'Shuffle.0' => 'audio_shuffle', 'Shuffle.1' => 'audio_shuffle.svg@green', 'Mute.0' => 'audio_volume_mute.svg', 'Mute.1' => 'audio_volume_mute.svg@red' }
verbose 0
Gruß Detlef
Bei mir wird nun nach dem heutigen Update in der ReadingsGroup meiner Sensoren z.B. statt des formatierten Wertes 10.1 für den Taupunkt bei einer Änderung des Wertes folgendes angezeigt:
<pre><html><div style="color:black;font-weight:bold;font-size:14px">10.1 </div></html></pre>
Definiert ist im valueStyle folgendes:
[...]
elsif($READING eq "dewpoint") { 'style="color:black;font-weight:bold;font-size:14px"'}
[...]
Beim ersten Laden der Seite und bei jedem Refresh ist die Formatierung in Ordnung.
Was läuft da falsch?
Zitat von: netwalk am 12 Oktober 2016, 23:39:40
Bei mir wird nun nach dem heutigen Update in der ReadingsGroup meiner Sensoren z.B. statt des formatierten Wertes 10.1 für den Taupunkt bei einer Änderung des Wertes folgendes angezeigt:
<pre><html><div style="color:black;font-weight:bold;font-size:14px">10.1 </div></html></pre>
Definiert ist im valueStyle folgendes:
[...]
elsif($READING eq "dewpoint") { 'style="color:black;font-weight:bold;font-size:14px"'}
[...]
Beim ersten Laden der Seite und bei jedem Refresh ist die Formatierung in Ordnung.
Was läuft da falsch?
- FHEM aktualisieren
- FHEM neu starten
- Browser Caches leeren
- glücklich sein
Gruß
Dan
FHEM ist auf dem aktuellen Stand (update check: nothing to do).
Neustart und Browser Cache leeren bringt leider nichts.
Noch eine Idee?
Ich habe nun einstweilen die Vorgängerversionen von
01_FHEMWEB.pm
98_JsonList.pm
98_JsonList2.pm
fhemweb.js
aus einem Backup vom September eingespielt. Damit scheint es wieder zu funktionieren.
ich kann das problem mit einer aktuellen version nicht reproduzieren.
kann du bitte ein beispiel mit einem dummy, einer rg und einem setreading kommando probieren das genau das problem zeigt?
gruss
andre
Ich habe seit dem gestriegen Update ein ähnliches Verhalten, ich habe mehre readingsGroups womit ich meine HM-CC-RT-DN Thermostate regel, hab dazu das Knob Widget in der RD, wenn ich jetzt eine Temperatur ändere, springt das Knob Element immer direkt auf 5 Grad, wenn ich dann ein reload der Seite durchführe wird dann normalerweisse wieder die richtige Temperatur eingestellt, teilweise springt die Anzeige aber noch mehrmals.
Der Befehl wird aber korrekt an das Device übermittelt.
Bsp.
Internals:
DEF <Gerät>,<Soll>,<Ist>
Heizung_Kinderzimmer_Clima:desired-temp,measured-temp
NAME Heizung_Kinderzimmer_rd
NR 282
NTFY_ORDER 50-Heizung_Kinderzimmer_rd
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Heizung_Kinderzimmer_Clima 1
Content2:
DEVICES:
ARRAY(0x44328b0)
ARRAY(0x441b3e8)
Helper:
Dblog:
Heizung_kinderzimmer_clima.desired-temp:
Mydblog:
TIME 1476382507.06732
VALUE <html>20.5</html>
Heizung_kinderzimmer_clima.measured-temp:
Mydblog:
TIME 1476382507.08732
VALUE <html>21.5</html>
Fhem:
lastDefChange 1
last_update 1476301845.549
Helper:
DEF
nameStyle style="color:yellow;font-weight:bold"
Cellstyle:
r:1,c:2 style="text-align:center;color:yellow;font-weight:bold"
Commands:
desired-temp desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true
Mapping:
Heizung_Kinderzimmer_Clima Kinderzimmer
Positions:
Heizung_Kinderzimmer_Clima.desired-temp 2:1
Heizung_Kinderzimmer_Clima.measured-temp 2:2
Values:
formated:
ARRAY(0x5015e60)
ARRAY(0x4fd6630)
orig:
ARRAY(0x4ffa970)
ARRAY(0x4426098)
prefixsuffix:
ARRAY(0x44f8a18)
ARRAY(0x44f8718)
Attributes:
cellStyle { "r:1,c:2" => 'style="text-align:center;color:yellow;font-weight:bold"', }
commands { 'desired-temp' => 'desired-temp:knob,min:5,max:30,step:0.5,fgColor:#FF9900,anglearc:180,angleoffset:270,bgcolor:#9999CC,width:250,linecap:round,font:lcars,displayPrevious:true'}
fp_Kinderzimmer1 194,147,0,,
mapping {'Heizung_Kinderzimmer_Clima' => 'Kinderzimmer' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
room Kinderzimmer
style style="font-size:20px;color:lightgray;text-align:left"
Danke für die Hilfe
Edit, hab mal auf verbose 5 geloggt beim Temperatur einstellen über die rd
2016.10.13 20:15:30.530 1: PERL WARNING: Use of uninitialized value $v in sprintf at fhem.pl line 2127.
2016.10.13 20:15:30.531 3: stacktrace:
2016.10.13 20:15:30.531 3: main::__ANON__ called by fhem.pl (2127)
2016.10.13 20:15:30.532 3: main::PrintHash called by fhem.pl (2122)
2016.10.13 20:15:30.532 3: main::PrintHash called by fhem.pl (2122)
2016.10.13 20:15:30.533 3: main::PrintHash called by fhem.pl (2215)
2016.10.13 20:15:30.533 3: main::CommandList called by fhem.pl (1085)
2016.10.13 20:15:30.534 3: main::AnalyzeCommand called by fhem.pl (955)
2016.10.13 20:15:30.535 3: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2265)
2016.10.13 20:15:30.535 3: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (765)
2016.10.13 20:15:30.536 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (456)
2016.10.13 20:15:30.536 3: main::FW_Read called by fhem.pl (3222)
2016.10.13 20:15:30.536 3: main::CallFn called by fhem.pl (672)
2016.10.13 20:15:30.537 1: PERL WARNING: Use of uninitialized value $v in sprintf at fhem.pl line 2127.
2016.10.13 20:15:30.538 3: stacktrace:
2016.10.13 20:15:30.538 3: main::__ANON__ called by fhem.pl (2127)
2016.10.13 20:15:30.539 3: main::PrintHash called by fhem.pl (2122)
2016.10.13 20:15:30.539 3: main::PrintHash called by fhem.pl (2122)
2016.10.13 20:15:30.539 3: main::PrintHash called by fhem.pl (2215)
2016.10.13 20:15:30.540 3: main::CommandList called by fhem.pl (1085)
2016.10.13 20:15:30.540 3: main::AnalyzeCommand called by fhem.pl (955)
2016.10.13 20:15:30.541 3: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2265)
2016.10.13 20:15:30.541 3: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (765)
2016.10.13 20:15:30.542 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (456)
2016.10.13 20:15:30.542 3: main::FW_Read called by fhem.pl (3222)
2016.10.13 20:15:30.543 3: main::CallFn called by fhem.pl (672)
2016.10.13 20:15:30.543 1: PERL WARNING: Use of uninitialized value $v in sprintf at fhem.pl line 2127.
2016.10.13 20:15:30.544 3: stacktrace:
2016.10.13 20:15:30.544 3: main::__ANON__ called by fhem.pl (2127)
2016.10.13 20:15:30.545 3: main::PrintHash called by fhem.pl (2122)
2016.10.13 20:15:30.545 3: main::PrintHash called by fhem.pl (2122)
2016.10.13 20:15:30.546 3: main::PrintHash called by fhem.pl (2215)
2016.10.13 20:15:30.546 3: main::CommandList called by fhem.pl (1085)
2016.10.13 20:15:30.546 3: main::AnalyzeCommand called by fhem.pl (955)
2016.10.13 20:15:30.547 3: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2265)
2016.10.13 20:15:30.547 3: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (765)
2016.10.13 20:15:30.548 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (456)
2016.10.13 20:15:30.548 3: main::FW_Read called by fhem.pl (3222)
2016.10.13 20:15:30.549 3: main::CallFn called by fhem.pl (672)
2016.10.13 20:39:20.396 3: CUL_HM set Heizung_Kinderzimmer_Clima desired-temp 21.5
@Masterfunk: ich vermute dein problem ist das gleiche wie bei Tommy82. wenn ja ist es morgen behoben.
@netwalk: ich kann dein problem immer noch nicht nachstellen. es schaut nach einer seltsamen kombination von nicht aktuellen komponenten und alter version im browser cache aus. wenn du sagst das ist nicht so bitte stell es mal woe oben vorgeschlagen mit einem dummy und einer reg nach.
@Tommy82: ich denke das problem habe ich gefunden und behoben. ab morgen im update. ich hoffe es hat keine nebenwirkungen.
die log meldungen schauen nicht so aus als haben sie mit der readingsGroup zu tun.
gruss
andre
War so frei mir das file schon mal aus dem SVN zu holen.
Fehler ist weg, bisher keine Nebenwirkungen.
Danke und Gruß
Detlef
Hi,
ha grade das Update gemacht und sieht so aus als ob das Problem gelöst wäre.
Danke
Habe folgendes Problem nach einem heutigen FHEM Update:
Bei der Readings-Group Anzeige meiner Temperatur Sensoren bekomme ich nach einem Auto-Refresh HTML Tags statt upgedateter Temp. Werte angezeigt.
Hat das jemand auch? Der Fehler tritt bei Chrome + Firefox + IE auf.
Anbei 2 Bildschirm Kopien mit Darstellung der Temp. Werte jeweils vor (mit korrekter Darstellung) und nach einem Refresh (falsche Darstellung)
Andreas
Wenn Du ein aktuelles volles FHEM update gemacht hast, dann kann es eigentlich nur noch am Browser Cache liegen.
Also mal den Cache leeren und dann sollte es wieder funktionieren.
Gruß
Dan
Diese Idee hatte ich auch schon. Habe jetzt auch nochmal extra den Browser Cache gelöscht - gleiches Ergebnis.
Andreas
@fhemfreund: Genau das gleiche Problem habe ich auch. Siehe hier: https://forum.fhem.de/index.php/topic,59209.0.html .
Bei mir sind seit dem Update am 9.10. die Werte mit HTML-Tags versehen.
@fhemfreund: dein fhem ist nicht komplett aktuell. hast du das update auf alles gemacht?
@PEPITO82: dein problem bist nicht das gleiche. hier geht es um die darstellung.
gruss
andre
@Andre - ja habe ich komplett via 'update' gemacht. Gibt es noch eine andere Möglichkeit? Oder eine Art 'force'? Andreas
zeig mal was auf der javascript console steht wenn sich ein reading ändert.
Hier mal ein Auszug nach einem Readings Update (geloggt via Chrome)
Andreas
22:09:00.098 Longpoll with filter room=System%20Temperatur
22:09:28.252 Rcvd:
22:09:28.252 Rcvd: ["rg_battery-LaCrosse_02.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>11.5</div></html>","<html><div style=\u0022t...(179)
22:09:28.254 Rcvd: ["rg_battery-LaCrosse_02.dewpoint-ts","2016-10-24 22:09:20","2016-10-24 22:09:20"]
22:09:28.254 Rcvd: ["rg_battery-LaCrosse_02.temperature","<html><div style=\u0022text-align:right\u0022\u000a>19.2°C</div></html>","<html><div styl...(194)
22:09:28.255 Rcvd: ["rg_battery-LaCrosse_02.temperature-ts","2016-10-24 22:09:20","2016-10-24 22:09:20"]
22:09:33.954 Rcvd: ["rg_battery-LaCrosse_02.temperature","<html><div style=\u0022text-align:right\u0022\u000a>19.3°C</div></html>","<html><div styl...(194)
22:09:33.955 Rcvd: ["rg_battery-LaCrosse_02.temperature-ts","2016-10-24 22:09:25","2016-10-24 22:09:25"]
22:09:33.955 Rcvd: ["rg_battery-LaCrosse_02.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>11.6</div></html>","<html><div style=\u0022t...(179)
22:09:33.956 Rcvd: ["rg_battery-LaCrosse_02.dewpoint-ts","2016-10-24 22:09:25","2016-10-24 22:09:25"]
22:09:39.780 Rcvd: ["rg_battery-LaCrosse_02.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>11.3</div></html>","<html><div style=\u0022t...(179)
22:09:39.781 Rcvd: ["rg_battery-LaCrosse_02.dewpoint-ts","2016-10-24 22:09:30","2016-10-24 22:09:30"]
22:09:39.781 Rcvd: ["rg_battery-LaCrosse_02.humidity","<html><div style=\u0022text-align:right\u0022\u000a>60.0 %</div></html>","<html><div style=\u002...(183)
22:09:39.781 Rcvd: ["rg_battery-LaCrosse_02.humidity-ts","2016-10-24 22:09:30","2016-10-24 22:09:30"]
22:09:39.782 Rcvd: ["rg_battery-LaCrosse_02.temperature","<html><div style=\u0022text-align:right\u0022\u000a>19.2°C</div></html>","<html><div styl...(194)
22:09:39.782 Rcvd: ["rg_battery-LaCrosse_02.temperature-ts","2016-10-24 22:09:30","2016-10-24 22:09:30"]
22:09:45.589 Rcvd: ["rg_battery-LaCrosse_02.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>11.5</div></html>","<html><div style=\u0022t...(179)
22:09:45.590 Rcvd: ["rg_battery-LaCrosse_02.dewpoint-ts","2016-10-24 22:09:35","2016-10-24 22:09:35"]
22:09:45.590 Rcvd: ["rg_battery-LaCrosse_02.humidity","<html><div style=\u0022text-align:right\u0022\u000a>61.0 %</div></html>","<html><div style=\u002...(183)
22:09:45.590 Rcvd: ["rg_battery-LaCrosse_02.humidity-ts","2016-10-24 22:09:35","2016-10-24 22:09:35"]
22:09:56.559 Rcvd: ["rg_battery-LaCrosse_31.battery","<html><svg class=\u0022icon measure_battery_100 white\u0022 data-txt=\u0022ok\u0022 xmlns:dc=\...(14234)
22:09:56.559 Rcvd: ["rg_battery-LaCrosse_31.battery-ts","2016-10-24 22:09:45","2016-10-24 22:09:45"]
22:09:56.559 Rcvd: ["rg_battery-LaCrosse_31.humidity","<html><div style=\u0022text-align:right\u0022\u000a>54.0 %</div></html>","<html><div style=\u002...(183)
22:09:56.559 Rcvd: ["rg_battery-LaCrosse_31.humidity-ts","2016-10-24 22:09:45","2016-10-24 22:09:45"]
22:09:56.559 Rcvd: ["rg_battery-LaCrosse_31.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>13.1</div></html>","<html><div style=\u0022t...(179)
22:09:56.559 Rcvd: ["rg_battery-LaCrosse_31.dewpoint-ts","2016-10-24 22:09:45","2016-10-24 22:09:45"]
22:10:24.554 Rcvd: ["rg_battery-LaCrosse_02.humidity","<html><div style=\u0022text-align:right\u0022\u000a>60.0 %</div></html>","<html><div style=\u002...(183)
22:10:24.554 Rcvd: ["rg_battery-LaCrosse_02.humidity-ts","2016-10-24 22:10:25","2016-10-24 22:10:25"]
22:10:24.554 Rcvd: ["rg_battery-LaCrosse_02.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>11.3</div></html>","<html><div style=\u0022t...(179)
22:10:24.554 Rcvd: ["rg_battery-LaCrosse_02.dewpoint-ts","2016-10-24 22:10:25","2016-10-24 22:10:25"]
22:10:39.740 Rcvd: ["rg_battery-LaCrosse_02.humidity","<html><div style=\u0022text-align:right\u0022\u000a>61.0 %</div></html>","<html><div style=\u002...(183)
22:10:39.741 Rcvd: ["rg_battery-LaCrosse_02.humidity-ts","2016-10-24 22:10:40","2016-10-24 22:10:40"]
22:10:39.742 Rcvd: ["rg_battery-LaCrosse_02.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>11.5</div></html>","<html><div style=\u0022t...(179)
22:10:39.742 Rcvd: ["rg_battery-LaCrosse_02.dewpoint-ts","2016-10-24 22:10:40","2016-10-24 22:10:40"]
das schaut korrekt aus.
dein fhemweb ist vermutlich nicht aktuell bzw. dein browser verwendet noch eine alte version.
bitte verglich mal die version in www/pgm2 mit der svn version und mit der version die dein browser geladen hat.
gruss
andre
Habe gerade eben nochmal ein FHEM Update gemacht - gleicher Fehler. Meine aktuellen Versions-# sind:
$Id: 01_FHEMWEB.pm 12416 2016-10-24 06:21:37Z rudolfkoenig $
$Id: fhem.pl 12423 2016-10-24 17:30:37Z rudolfkoenig $
Die fhemweb.js Version in www/pgm2 wurde auch mit upgedated (sehe ich am Datum). Leider kann ich die Versionen nicht checken, da ich im js-File keine Versionierung sehe. Gibt es da noch einen Trick?
Andreas
in fhemweb.js in zeile 707 passiert die verarbeitung der events.
zuerst das einschliessen in <pre> wenn es ein newline in der nachricht gibt. kommentiere mal bitte zeile 708 und 709 in fhemweb.js aus. ist das problem dann weg? wenn nicht kommt das <pre> woanders her. ich habe aber keine idee woher. laut deiner js console wird es nicht mit gesendet.
im folgenden wird auch der inhalt zwischen den <html>...</html> extrahiert und dann gesetzt. hier könnte auch etwas schief gehen wenn die <html> stehen bleiben.
du kannst mal zwischen zeile 711 und 712 einconsole.log( "'" + d[2] + "'" );
console.log( ma );
einbauen und auf die js console schauen.
gruss
andre
Ok - habe jetzt
1. die <pre> verarbeitung auskommentiert. Ergebnis: siehe Anhang. <pre> taucht nicht mehr auf - der Fehler ist aber der gleiche.
2. deine 2 Code-Zeilen habe ich in die fhemweb.js eingefügt - dabei aber die original Version genommen, sprich Zeilen 708+709 nicht auskommentiert
Andreas
P.S. danke für deine Unterstützung!
15:35:46.994 Longpoll with filter room=System%20Temperatur
15:35:54.656 Rcvd:
15:35:54.832 Rcvd: ["rg_battery-LaCrosse_31.battery","<html><svg class=\u0022icon measure_battery_100 white\u0022 data-txt=\u0022ok\u0022 xmlns:dc=\...(14234)
'<html><svg class="icon measure_battery_100 white" data-txt="ok" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" x="0px" y="0px" width="361px" height="361px" viewBox="0 0 361 361" style="enable-background:new 0 0 361 361;" xml:space="preserve" id="svg2" inkscape:version="0.48.5 r10040" sodipodi:docname="measure_battery_100.svg"><metadata id="metadata36"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs34" /><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="779" inkscape:window-height="480" id="namedview32" showgrid="false" inkscape:zoom="0.65373961" inkscape:cx="180.5" inkscape:cy="180.5" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg2" /> <g id="measure_x5F_battery_x5F_100" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> <g id="g5" style="stroke:#000000;stroke-opacity:1"> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 134.65625,89.15625 c -6.01649,0 -11,4.983509 -11,11 l 0,180 c 0,6.01649 4.98351,11 11,11 l 95.5,0 c 6.01631,0 11,-4.9825 11,-11 l 0,-180 c 0,-6.016491 -4.98351,-11 -11,-11 l -95.5,0 z m 0,10 95.5,0 c 0.60951,0 1,0.390491 1,1 l 0,180 c 0,0.6085 -0.39231,1 -1,1 l -95.5,0 c -0.60951,0 -1,-0.39049 -1,-1 l 0,-180 c 0,-0.609509 0.39049,-1 1,-1 z" id="path7" inkscape:connector-curvature="0" /> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 169.625,69.65625 c -6.01649,0 -11,4.983509 -11,11 l 0,14 10,0 0,-14 c 0,-0.609509 0.39049,-1 1,-1 l 25.5,0 c 0.60951,0 1,0.390491 1,1 l 0,14 10,0 0,-14 c 0,-6.016491 -4.98351,-11 -11,-11 l -25.5,0 z" id="path9" inkscape:connector-curvature="0" /> </g> <g style="stroke:#000000;stroke-opacity:1;display:none" id="g11"> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path13" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path15" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path17" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path19" inkscape:connector-curvature="0" /> </g> <g id="g21" style="fill:white;fill-opacity:1;stroke:none"> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path23" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path25" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path27" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path29" inkscape:connector-curvature="0" /> </g> </g> <g id="Ebene_1" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> </g> </svg></html>'
Array[2]
15:35:54.832 Rcvd: ["rg_battery-LaCrosse_31.battery-ts","2016-10-25 15:35:55","2016-10-25 15:35:55"]
15:35:54.832 Rcvd: ["rg_battery-LaCrosse_31.temperature","<html><div style=\u0022text-align:right\u0022\u000a>22.2°C</div></html>","<html><div styl...(194)
'<pre><html><div style="text-align:right"
>22.2°C</div></html></pre>'
null
15:35:54.832 Rcvd: ["rg_battery-LaCrosse_31.temperature-ts","2016-10-25 15:35:55","2016-10-25 15:35:55"]
15:35:54.832 Rcvd: ["rg_battery-LaCrosse_31.humidity","<html><div style=\u0022text-align:right\u0022\u000a>56.0 %</div></html>","<html><div style=\u002...(183)
'<pre><html><div style="text-align:right"
>56.0 %</div></html></pre>'
null
15:35:54.832 Rcvd: ["rg_battery-LaCrosse_31.humidity-ts","2016-10-25 15:35:55","2016-10-25 15:35:55"]
15:35:54.832 Rcvd: ["rg_battery-LaCrosse_31.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>13.0</div></html>","<html><div style=\u0022t...(179)
'<pre><html><div style="text-align:right"
>13.0</div></html></pre>'
null
15:35:54.832 Rcvd: ["rg_battery-LaCrosse_31.dewpoint-ts","2016-10-25 15:35:55","2016-10-25 15:35:55"]
15:35:55.071 Rcvd: ["rg_battery-LaCrosse_2E.battery","<html><svg class=\u0022icon measure_battery_100 white\u0022 data-txt=\u0022ok\u0022 xmlns:dc=\...(14234)
'<html><svg class="icon measure_battery_100 white" data-txt="ok" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" x="0px" y="0px" width="361px" height="361px" viewBox="0 0 361 361" style="enable-background:new 0 0 361 361;" xml:space="preserve" id="svg2" inkscape:version="0.48.5 r10040" sodipodi:docname="measure_battery_100.svg"><metadata id="metadata36"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs34" /><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="779" inkscape:window-height="480" id="namedview32" showgrid="false" inkscape:zoom="0.65373961" inkscape:cx="180.5" inkscape:cy="180.5" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg2" /> <g id="measure_x5F_battery_x5F_100" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> <g id="g5" style="stroke:#000000;stroke-opacity:1"> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 134.65625,89.15625 c -6.01649,0 -11,4.983509 -11,11 l 0,180 c 0,6.01649 4.98351,11 11,11 l 95.5,0 c 6.01631,0 11,-4.9825 11,-11 l 0,-180 c 0,-6.016491 -4.98351,-11 -11,-11 l -95.5,0 z m 0,10 95.5,0 c 0.60951,0 1,0.390491 1,1 l 0,180 c 0,0.6085 -0.39231,1 -1,1 l -95.5,0 c -0.60951,0 -1,-0.39049 -1,-1 l 0,-180 c 0,-0.609509 0.39049,-1 1,-1 z" id="path7" inkscape:connector-curvature="0" /> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 169.625,69.65625 c -6.01649,0 -11,4.983509 -11,11 l 0,14 10,0 0,-14 c 0,-0.609509 0.39049,-1 1,-1 l 25.5,0 c 0.60951,0 1,0.390491 1,1 l 0,14 10,0 0,-14 c 0,-6.016491 -4.98351,-11 -11,-11 l -25.5,0 z" id="path9" inkscape:connector-curvature="0" /> </g> <g style="stroke:#000000;stroke-opacity:1;display:none" id="g11"> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path13" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path15" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path17" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path19" inkscape:connector-curvature="0" /> </g> <g id="g21" style="fill:white;fill-opacity:1;stroke:none"> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path23" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path25" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path27" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path29" inkscape:connector-curvature="0" /> </g> </g> <g id="Ebene_1" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> </g> </svg></html>'
Array[2]
15:35:55.071 Rcvd: ["rg_battery-LaCrosse_2E.battery-ts","2016-10-25 15:35:55","2016-10-25 15:35:55"]
15:35:55.071 Rcvd: ["rg_battery-LaCrosse_2E.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>13.2</div></html>","<html><div style=\u0022t...(179)
'<pre><html><div style="text-align:right"
>13.2</div></html></pre>'
null
15:35:55.071 Rcvd: ["rg_battery-LaCrosse_2E.dewpoint-ts","2016-10-25 15:35:55","2016-10-25 15:35:55"]
15:35:55.071 Rcvd: ["rg_battery-LaCrosse_2E.humidity","<html><div style=\u0022text-align:right\u0022\u000a>66.0 %</div></html>","<html><div style=\u002...(183)
'<pre><html><div style="text-align:right"
>66.0 %</div></html></pre>'
null
15:35:55.071 Rcvd: ["rg_battery-LaCrosse_2E.humidity-ts","2016-10-25 15:35:55","2016-10-25 15:35:55"]
15:35:55.071 Rcvd: ["rg_battery-LaCrosse_2E.temperature","<html><div style=\u0022text-align:right\u0022\u000a>19.7°C</div></html>","<html><div styl...(194)
'<pre><html><div style="text-align:right"
>19.7°C</div></html></pre>'
null
15:35:55.071 Rcvd: ["rg_battery-LaCrosse_2E.temperature-ts","2016-10-25 15:35:55","2016-10-25 15:35:55"]
15:35:55.694 Rcvd: ["rg_battery-LaCrosse_39.battery","<html><svg class=\u0022icon measure_battery_100 white\u0022 data-txt=\u0022ok\u0022 xmlns:dc=\...(14234)
'<html><svg class="icon measure_battery_100 white" data-txt="ok" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" x="0px" y="0px" width="361px" height="361px" viewBox="0 0 361 361" style="enable-background:new 0 0 361 361;" xml:space="preserve" id="svg2" inkscape:version="0.48.5 r10040" sodipodi:docname="measure_battery_100.svg"><metadata id="metadata36"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs34" /><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="779" inkscape:window-height="480" id="namedview32" showgrid="false" inkscape:zoom="0.65373961" inkscape:cx="180.5" inkscape:cy="180.5" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg2" /> <g id="measure_x5F_battery_x5F_100" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> <g id="g5" style="stroke:#000000;stroke-opacity:1"> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 134.65625,89.15625 c -6.01649,0 -11,4.983509 -11,11 l 0,180 c 0,6.01649 4.98351,11 11,11 l 95.5,0 c 6.01631,0 11,-4.9825 11,-11 l 0,-180 c 0,-6.016491 -4.98351,-11 -11,-11 l -95.5,0 z m 0,10 95.5,0 c 0.60951,0 1,0.390491 1,1 l 0,180 c 0,0.6085 -0.39231,1 -1,1 l -95.5,0 c -0.60951,0 -1,-0.39049 -1,-1 l 0,-180 c 0,-0.609509 0.39049,-1 1,-1 z" id="path7" inkscape:connector-curvature="0" /> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 169.625,69.65625 c -6.01649,0 -11,4.983509 -11,11 l 0,14 10,0 0,-14 c 0,-0.609509 0.39049,-1 1,-1 l 25.5,0 c 0.60951,0 1,0.390491 1,1 l 0,14 10,0 0,-14 c 0,-6.016491 -4.98351,-11 -11,-11 l -25.5,0 z" id="path9" inkscape:connector-curvature="0" /> </g> <g style="stroke:#000000;stroke-opacity:1;display:none" id="g11"> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path13" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path15" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path17" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path19" inkscape:connector-curvature="0" /> </g> <g id="g21" style="fill:white;fill-opacity:1;stroke:none"> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path23" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path25" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path27" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path29" inkscape:connector-curvature="0" /> </g> </g> <g id="Ebene_1" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> </g> </svg></html>'
Array[2]
15:35:55.694 Rcvd: ["rg_battery-LaCrosse_39.battery-ts","2016-10-25 15:35:56","2016-10-25 15:35:56"]
15:35:55.694 Rcvd: ["rg_battery-LaCrosse_39.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>10.2</div></html>","<html><div style=\u0022t...(179)
'<pre><html><div style="text-align:right"
>10.2</div></html></pre>'
null
15:35:55.694 Rcvd: ["rg_battery-LaCrosse_39.dewpoint-ts","2016-10-25 15:35:56","2016-10-25 15:35:56"]
15:35:55.745 Rcvd: ["rg_battery-LaCrosse_39.temperature","<html><div style=\u0022text-align:right\u0022\u000a>23.1°C</div></html>","<html><div styl...(194)
'<pre><html><div style="text-align:right"
>23.1°C</div></html></pre>'
null
15:35:55.746 Rcvd: ["rg_battery-LaCrosse_39.temperature-ts","2016-10-25 15:35:56","2016-10-25 15:35:56"]
15:35:55.746 Rcvd: ["rg_battery-LaCrosse_39.humidity","<html><div style=\u0022text-align:right\u0022\u000a>44.0 %</div></html>","<html><div style=\u002...(183)
'<pre><html><div style="text-align:right"
>44.0 %</div></html></pre>'
null
15:35:55.746 Rcvd: ["rg_battery-LaCrosse_39.humidity-ts","2016-10-25 15:35:56","2016-10-25 15:35:56"]
15:36:00.374 Rcvd: ["rg_battery-LaCrosse_02.battery","<html><svg class=\u0022icon measure_battery_100 white\u0022 data-txt=\u0022ok\u0022 xmlns:dc=\...(14234)
'<html><svg class="icon measure_battery_100 white" data-txt="ok" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" x="0px" y="0px" width="361px" height="361px" viewBox="0 0 361 361" style="enable-background:new 0 0 361 361;" xml:space="preserve" id="svg2" inkscape:version="0.48.5 r10040" sodipodi:docname="measure_battery_100.svg"><metadata id="metadata36"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs34" /><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="779" inkscape:window-height="480" id="namedview32" showgrid="false" inkscape:zoom="0.65373961" inkscape:cx="180.5" inkscape:cy="180.5" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg2" /> <g id="measure_x5F_battery_x5F_100" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> <g id="g5" style="stroke:#000000;stroke-opacity:1"> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 134.65625,89.15625 c -6.01649,0 -11,4.983509 -11,11 l 0,180 c 0,6.01649 4.98351,11 11,11 l 95.5,0 c 6.01631,0 11,-4.9825 11,-11 l 0,-180 c 0,-6.016491 -4.98351,-11 -11,-11 l -95.5,0 z m 0,10 95.5,0 c 0.60951,0 1,0.390491 1,1 l 0,180 c 0,0.6085 -0.39231,1 -1,1 l -95.5,0 c -0.60951,0 -1,-0.39049 -1,-1 l 0,-180 c 0,-0.609509 0.39049,-1 1,-1 z" id="path7" inkscape:connector-curvature="0" /> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 169.625,69.65625 c -6.01649,0 -11,4.983509 -11,11 l 0,14 10,0 0,-14 c 0,-0.609509 0.39049,-1 1,-1 l 25.5,0 c 0.60951,0 1,0.390491 1,1 l 0,14 10,0 0,-14 c 0,-6.016491 -4.98351,-11 -11,-11 l -25.5,0 z" id="path9" inkscape:connector-curvature="0" /> </g> <g style="stroke:#000000;stroke-opacity:1;display:none" id="g11"> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path13" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path15" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path17" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path19" inkscape:connector-curvature="0" /> </g> <g id="g21" style="fill:white;fill-opacity:1;stroke:none"> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path23" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path25" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path27" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path29" inkscape:connector-curvature="0" /> </g> </g> <g id="Ebene_1" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> </g> </svg></html>'
Array[2]
15:36:00.374 Rcvd: ["rg_battery-LaCrosse_02.battery-ts","2016-10-25 15:36:00","2016-10-25 15:36:00"]
15:36:00.374 Rcvd: ["rg_battery-LaCrosse_02.humidity","<html><div style=\u0022text-align:right\u0022\u000a>63.0 %</div></html>","<html><div style=\u002...(183)
'<pre><html><div style="text-align:right"
>63.0 %</div></html></pre>'
null
15:36:00.374 Rcvd: ["rg_battery-LaCrosse_02.humidity-ts","2016-10-25 15:36:00","2016-10-25 15:36:00"]
15:36:00.374 Rcvd: ["rg_battery-LaCrosse_02.temperature","<html><div style=\u0022text-align:right\u0022\u000a>19.6°C</div></html>","<html><div styl...(194)
'<pre><html><div style="text-align:right"
>19.6°C</div></html></pre>'
null
15:36:00.374 Rcvd: ["rg_battery-LaCrosse_02.temperature-ts","2016-10-25 15:36:00","2016-10-25 15:36:00"]
15:36:00.374 Rcvd: ["rg_battery-LaCrosse_02.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>12.4</div></html>","<html><div style=\u0022t...(179)
'<pre><html><div style="text-align:right"
>12.4</div></html></pre>'
null
15:36:00.374 Rcvd: ["rg_battery-LaCrosse_02.dewpoint-ts","2016-10-25 15:36:00","2016-10-25 15:36:00"]
15:36:00.871 Rcvd: ["rg_battery-LaCrosse_2F.battery","<html><svg class=\u0022icon measure_battery_100 white\u0022 data-txt=\u0022ok\u0022 xmlns:dc=\...(14234)
'<html><svg class="icon measure_battery_100 white" data-txt="ok" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" x="0px" y="0px" width="361px" height="361px" viewBox="0 0 361 361" style="enable-background:new 0 0 361 361;" xml:space="preserve" id="svg2" inkscape:version="0.48.5 r10040" sodipodi:docname="measure_battery_100.svg"><metadata id="metadata36"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs34" /><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="779" inkscape:window-height="480" id="namedview32" showgrid="false" inkscape:zoom="0.65373961" inkscape:cx="180.5" inkscape:cy="180.5" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg2" /> <g id="measure_x5F_battery_x5F_100" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> <g id="g5" style="stroke:#000000;stroke-opacity:1"> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 134.65625,89.15625 c -6.01649,0 -11,4.983509 -11,11 l 0,180 c 0,6.01649 4.98351,11 11,11 l 95.5,0 c 6.01631,0 11,-4.9825 11,-11 l 0,-180 c 0,-6.016491 -4.98351,-11 -11,-11 l -95.5,0 z m 0,10 95.5,0 c 0.60951,0 1,0.390491 1,1 l 0,180 c 0,0.6085 -0.39231,1 -1,1 l -95.5,0 c -0.60951,0 -1,-0.39049 -1,-1 l 0,-180 c 0,-0.609509 0.39049,-1 1,-1 z" id="path7" inkscape:connector-curvature="0" /> <path style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:white;fill-opacity:1;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" d="m 169.625,69.65625 c -6.01649,0 -11,4.983509 -11,11 l 0,14 10,0 0,-14 c 0,-0.609509 0.39049,-1 1,-1 l 25.5,0 c 0.60951,0 1,0.390491 1,1 l 0,14 10,0 0,-14 c 0,-6.016491 -4.98351,-11 -11,-11 l -25.5,0 z" id="path9" inkscape:connector-curvature="0" /> </g> <g style="stroke:#000000;stroke-opacity:1;display:none" id="g11"> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path13" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path15" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path17" inkscape:connector-curvature="0" /> <path style="fill:none;stroke:#000000;stroke-width:10;stroke-opacity:1;display:inline" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path19" inkscape:connector-curvature="0" /> </g> <g id="g21" style="fill:white;fill-opacity:1;stroke:none"> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,266.334 c 0,3.313 -2.688,6 -6,6 h -65.5 c -3.313,0 -6,-2.688 -6,-6 v -6 c 0,-3.314 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.686 6,6 v 26 z" id="path23" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,166.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path25" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,120 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -26 c 0,-3.313 2.687,-6 6,-6 h 65.5 c 3.313,0 6,2.687 6,6 v 6 z" id="path27" inkscape:connector-curvature="0" /> <path style="fill:white;fill-opacity:1;stroke:none" d="m 221.141,213.667 c 0,3.313 -2.688,6 -6,6 l -65.5,20 c -3.313,0 -6,-2.687 -6,-6 v -20 c 0,-3.313 2.687,-6 6,-6 l 65.5,-20 c 3.313,0 6,2.687 6,6 v 20 z" id="path29" inkscape:connector-curvature="0" /> </g> </g> <g id="Ebene_1" style="stroke:#000000;stroke-opacity:1" transform="matrix(1.6146267,0,0,1.6146267,-112.50812,-110.12429)"> </g> </svg></html>'
Array[2]
15:36:00.871 Rcvd: ["rg_battery-LaCrosse_2F.battery-ts","2016-10-25 15:36:01","2016-10-25 15:36:01"]
15:36:00.871 Rcvd: ["rg_battery-LaCrosse_2F.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>9.4</div></html>","<html><div style=\u0022te...(177)
'<pre><html><div style="text-align:right"
>9.4</div></html></pre>'
null
15:36:00.871 Rcvd: ["rg_battery-LaCrosse_2F.dewpoint-ts","2016-10-25 15:36:01","2016-10-25 15:36:01"]
15:36:00.871 Rcvd: ["rg_battery-LaCrosse_2F.temperature","<html><div style=\u0022text-align:right\u0022\u000a>13.1°C</div></html>","<html><div styl...(194)
'<pre><html><div style="text-align:right"
>13.1°C</div></html></pre>'
null
15:36:00.871 Rcvd: ["rg_battery-LaCrosse_2F.temperature-ts","2016-10-25 15:36:01","2016-10-25 15:36:01"]
15:36:00.871 Rcvd: ["rg_battery-LaCrosse_2F.humidity","<html><div style=\u0022text-align:right\u0022\u000a>78.0 %</div></html>","<html><div style=\u002...(183)
'<pre><html><div style="text-align:right"
>78.0 %</div></html></pre>'
null
15:36:00.871 Rcvd: ["rg_battery-LaCrosse_2F.humidity-ts","2016-10-25 15:36:01","2016-10-25 15:36:01"]
15:36:02.838 Rcvd: ["#FHEMWEB:WEB_192.168.0.201_49452","$('#saveCheck').css('visibility','hidden')",""]
15:36:04.989 Rcvd: ["rg_battery-LaCrosse_2E.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>13.3</div></html>","<html><div style=\u0022t...(179)
'<pre><html><div style="text-align:right"
>13.3</div></html></pre>'
null
15:36:04.989 Rcvd: ["rg_battery-LaCrosse_2E.dewpoint-ts","2016-10-25 15:36:05","2016-10-25 15:36:05"]
15:36:04.989 Rcvd: ["rg_battery-LaCrosse_2E.temperature","<html><div style=\u0022text-align:right\u0022\u000a>19.8°C</div></html>","<html><div styl...(194)
'<pre><html><div style="text-align:right"
>19.8°C</div></html></pre>'
null
15:36:04.989 Rcvd: ["rg_battery-LaCrosse_2E.temperature-ts","2016-10-25 15:36:05","2016-10-25 15:36:05"]
15:36:05.276 Rcvd: ["rg_battery-GT_WT_02_121.humidity","<html><div style=\u0022text-align:right\u0022\u000a>49.0 %</div></html>","<html><div style=\u00...(184)
'<pre><html><div style="text-align:right"
>49.0 %</div></html></pre>'
null
15:36:05.277 Rcvd: ["rg_battery-GT_WT_02_121.humidity-ts","2016-10-25 15:36:05","2016-10-25 15:36:05"]
15:36:05.277 Rcvd: ["rg_battery-GT_WT_02_121.temperature","<html><div style=\u0022text-align:right\u0022\u000a>22.6°C</div></html>","<html><div sty...(195)
'<pre><html><div style="text-align:right"
>22.6°C</div></html></pre>'
null
15:36:05.278 Rcvd: ["rg_battery-GT_WT_02_121.temperature-ts","2016-10-25 15:36:05","2016-10-25 15:36:05"]
15:36:05.278 Rcvd: ["rg_battery-GT_WT_02_121.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>11.4</div></html>","<html><div style=\u0022...(180)
'<pre><html><div style="text-align:right"
>11.4</div></html></pre>'
null
15:36:05.279 Rcvd: ["rg_battery-GT_WT_02_121.dewpoint-ts","2016-10-25 15:36:05","2016-10-25 15:36:05"]
15:36:06.207 Rcvd: ["rg_battery-GT_WT_02_27.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>9.4</div></html>","<html><div style=\u0022te...(177)
'<pre><html><div style="text-align:right"
>9.4</div></html></pre>'
null
15:36:06.208 Rcvd: ["rg_battery-GT_WT_02_27.dewpoint-ts","2016-10-25 15:36:06","2016-10-25 15:36:06"]
15:36:06.208 Rcvd: ["rg_battery-GT_WT_02_27.humidity","<html><div style=\u0022text-align:right\u0022\u000a>44.0 %</div></html>","<html><div style=\u002...(183)
'<pre><html><div style="text-align:right"
>44.0 %</div></html></pre>'
null
15:36:06.209 Rcvd: ["rg_battery-GT_WT_02_27.humidity-ts","2016-10-25 15:36:06","2016-10-25 15:36:06"]
15:36:06.209 Rcvd: ["rg_battery-GT_WT_02_27.temperature","<html><div style=\u0022text-align:right\u0022\u000a>22.2°C</div></html>","<html><div styl...(194)
'<pre><html><div style="text-align:right"
>22.2°C</div></html></pre>'
null
15:36:06.209 Rcvd: ["rg_battery-GT_WT_02_27.temperature-ts","2016-10-25 15:36:06","2016-10-25 15:36:06"]
15:36:09.572 Rcvd: ["rg_battery-GT_WT_02_117.temperature","<html><div style=\u0022text-align:right\u0022\u000a>20.7°C</div></html>","<html><div sty...(195)
'<pre><html><div style="text-align:right"
>20.7°C</div></html></pre>'
null
15:36:09.572 Rcvd: ["rg_battery-GT_WT_02_117.temperature-ts","2016-10-25 15:36:10","2016-10-25 15:36:10"]
15:36:09.572 Rcvd: ["rg_battery-GT_WT_02_117.humidity","<html><div style=\u0022text-align:right\u0022\u000a>54.0 %</div></html>","<html><div style=\u00...(184)
'<pre><html><div style="text-align:right"
>54.0 %</div></html></pre>'
null
15:36:09.572 Rcvd: ["rg_battery-GT_WT_02_117.humidity-ts","2016-10-25 15:36:10","2016-10-25 15:36:10"]
15:36:09.572 Rcvd: ["rg_battery-GT_WT_02_117.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>11.1</div></html>","<html><div style=\u0022...(180)
'<pre><html><div style="text-align:right"
>11.1</div></html></pre>'
null
15:36:09.572 Rcvd: ["rg_battery-GT_WT_02_117.dewpoint-ts","2016-10-25 15:36:10","2016-10-25 15:36:10"]
15:36:10.183 Rcvd: ["rg_battery-LaCrosse_2E.dewpoint","<html><div style=\u0022text-align:right\u0022\u000a>13.2</div></html>","<html><div style=\u0022t...(179)
'<pre><html><div style="text-align:right"
>13.2</div></html></pre>'
null
15:36:10.184 Rcvd: ["rg_battery-LaCrosse_2E.dewpoint-ts","2016-10-25 15:36:10","2016-10-25 15:36:10"]
15:36:10.184 Rcvd: ["rg_battery-LaCrosse_2E.temperature","<html><div style=\u0022text-align:right\u0022\u000a>19.7°C</div></html>","<html><div styl...(194)
'<pre><html><div style="text-align:right"
>19.7°C</div></html></pre>'
null
15:36:10.184 Rcvd: ["rg_battery-LaCrosse_2E.temperature-ts","2016-10-25 15:36:10","2016-10-25 15:36:10"]
Habe jetzt nochmal etwas probiert - hatte bisher das Attribut
valueStyle style="text-align:right"
verwendet. Sobald ich dieses lösche tritt der Fehler nicht mehr auf.
Andreas
Hallo Andre,
wenn in einer readingsGroup ein reading den Wert undef hat, so wird es nicht angezeigt. Ausnahme: Wenn das reading eine Werteliste (Einblendliste/Menü) hat. Die wird trotz undef angezeigt.
Ich habe an zwei Stellen eine kleine Ergänzung eingebaut:
Das Attribut commands kann auch einen perl-Code beinhalten, der dann den String für ein command zurückliefert.
Beispiel:
attr Alle_Thermostate_rg commands {'Hk2-Betriebsart' => 'Hk2-Betriebsart:','Hk2-Normal-VL-Soll' => '{(ReadingsVal($DEVICE,"Hk2-Betriebsart",0) eq "Normal") ? "Hk2-Normal-VL-Soll:": undef}',
Nur wenn die Betriebsart der Heizung auf "normal" steht wird das Menü für die Vorlauftemp angezeigt.
Es gibt eine Reihe von Fällen, wo das ganz nützlich ist.
Ich habe die Änderungen mit "Elektrolurch" gekennzeichnet und hänge die Datei an. Bitte übernehmen.
Danke.
Elektrolurch
Hi Andre,
ich versuche gerade eine readingsGroup, mit klickbaren Icons, zu erstellen. Grundsätzlich funtioniert das:
DEF <%sani_heating>,<%rc_0>,<%rc_1>,<%rc_2> KE_PUMP:Relay,Led,Led@test
Attributes:
commands {
'Relay.on' => 'set $DEVICE gpio 12 off',
'Relay.off' => 'set $DEVICE gpio 12 on',
'Led.on' => 'set $DEVICE gpio 13 off',
'Led.off' => 'set $DEVICE gpio 13 on'
}
valueIcon {
'Relay.on' => 'ios-on-green',
'Relay.off' => 'ios-off',
'Led.on' => 'ios-on-green',
'Led.off' => 'ios-off'
}
Ich finde aber keinen Ansatz unterschiedliche Befehle zu senden, wenn in mehreren Devices identische Readingnamen verwendet werden. In dem Beispiel möchte ich zB, dass das Icon für Led@test einen anderen gpio Port schaltet. Versuche den key mit 'device:reading.value' oder 'reading@device.value' anzugeben funktionieren nicht.
Verstehst Du was ich meine und gibt es eine Möglichkeit das umzusetzen?
Hallo Andre,
ich habe seit ewigen Zeiten eine rg für meine Heizung (modul VCONTROL) in der ich mir einfach alle Readings anzeigen lassen.
define Heizungsstatus readingsGroup <%sani_boiler_temp@red>,<Status>,<Akt.Datum> Vito200
attr Heizungsstatus mapping $READING
attr Heizungsstatus nameStyle style="color:orange;;;;font-weight:bold"
attr Heizungsstatus nolinks 1
attr Heizungsstatus room Heizung
attr Heizungsstatus style style="font-size:12px"
attr Heizungsstatus valueFormat {"Fehler1"=>"%X","Fehler2"=>"%X","Fehler3"=>"%X","Fehler4"=>"%X","Fehler5"=>"%X","Fehler6"=>"%X","Fehler7"=>"%X","Fehler8"=>"%X","Fehler9"=>"%X","Fehler10"=>"%X","BrennerStartsLastDay" =>"%.0f", "BrennerStartsToday" =>"%.0f", "BrennerStartsDayStart" =>"%.0f", "BrennerLeistung" => "%.0f %%", "Temp-Abgas" =>"%.0f°C", "Temp-Aussen" =>"%.0f°C", "Temp-Kessel-Ist"=>"%.0f°C", "Temp-Kessel-Soll"=>"%.0f°C", "Temp-WarmWasser-Ist"=> "%.0f°C", "Temp-WarmWasser-Soll"=> "%.0f°C"}
Seit einige Tagen bekam ich aber nichts mehr angezeigt (ausser den Header), habe nun mal auf eine ältere Version
(33_readingsGroup.pm 12137 2016-09-11 14:45:55Z justme1968)
eingespielt und diese funktioniert.
Hast Du eine Idee woran dies liegen könnte, hat sich am Modul etwas geändert .....
Danke für die Hilfe vorab
Klaus
@Elektrolurch: baue ich ein. dauert aber noch etwas.
@dev0: du kannst z.b. im mapping ..., '<name>.<reading>' => '{...}', ... verwenden und im perl code dann abhängig von $VALUE den passenden schaltbefehel zurück geben.
ab morgen kannst du als key auch <name>.<reading>.<value> verwenden und den umweg über perl sparen.
@kvo1: zeig mal bitte ein list von der radingsGroup und ein jsonlist2 von der heizung.
gruss
andre
Zitat von: justme1968 am 11 November 2016, 09:40:29
ab morgen kannst du als key auch <name>.<reading>.<value> verwenden und den umweg über perl sparen.
Vielen Dank!
Hallo Andre,
hier die Infos mit der Version wo es noch funktioniert.
33_readingsGroup.pm 12137 2016-09-11 14:45:55Z justme1968
brauchst Du das auch mit der letzten / aktuellen Version ???
...list von der radingsGroup
Internals:
DEF <%sani_boiler_temp@red>,<Status>,<Akt.Datum> Vito200
NAME Heizungsstatus
NR 82
NTFY_ORDER 50-Heizungsstatus
STATE Initialized
TYPE readingsGroup
Content:
Vito200 1
Content2:
DEVICES:
ARRAY(0x282a318)
ARRAY(0x282a2e8)
Fhem:
lastDefChange 1
last_update 1478809445.85701
Helper:
DEF
mapping $READING
nameStyle style="color:orange;;font-weight:bold"
Valueformat:
BrennerLeistung %.0f %%
BrennerStartsDayStart %.0f
BrennerStartsLastDay %.0f
BrennerStartsToday %.0f
Fehler1 %X
Fehler10 %X
Fehler2 %X
Fehler3 %X
Fehler4 %X
Fehler5 %X
Fehler6 %X
Fehler7 %X
Fehler8 %X
Fehler9 %X
Temp-Abgas %.0f°C
Temp-Aussen %.0f°C
Temp-Kessel-Ist %.0f°C
Temp-Kessel-Soll %.0f°C
Temp-WarmWasser-Ist %.0f°C
Temp-WarmWasser-Soll %.0f°C
Attributes:
mapping $READING
nameStyle style="color:orange;;font-weight:bold"
nolinks 1
room Heizung
style style="font-size:12px"
valueFormat {"Fehler1"=>"%X","Fehler2"=>"%X","Fehler3"=>"%X","Fehler4"=>"%X","Fehler5"=>"%X","Fehler6"=>"%X","Fehler7"=>"%X","Fehler8"=>"%X","Fehler9"=>"%X","Fehler10"=>"%X","BrennerStartsLastDay" =>"%.0f", "BrennerStartsToday" =>"%.0f", "BrennerStartsDayStart" =>"%.0f", "BrennerLeistung" => "%.0f %%", "Temp-Abgas" =>"%.0f°C", "Temp-Aussen" =>"%.0f°C", "Temp-Kessel-Ist"=>"%.0f°C", "Temp-Kessel-Soll"=>"%.0f°C", "Temp-WarmWasser-Ist"=> "%.0f°C", "Temp-WarmWasser-Soll"=> "%.0f°C"}
jsonlist2 von der heizung
{
"Arg":"Vito200",
"Results": [
{
"Name":"Vito200",
"PossibleSets":"state:AUS,HWW,WW,P-ON,P-OFF,S-ON,S-OFF",
"PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 disable:0,1 init_every_poll:0,1 update_only_changes:0,1 setList closedev:0,1 event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading System alarmDevice alarmSettings cmdIcon devStateIcon devStateStyle fp_Erdgeschoss fp_Obergeschoss fp_Untergeschoss icon sortby webCmd widgetOverride userattr",
"Internals": {
"DEF": "/dev/ttyUSB0 VScotHO1.cfg 180",
"DURATION": "79.60",
"DeviceName": "/dev/ttyUSB0",
"FD": "10",
"INTERVAL": "180",
"NAME": "Vito200",
"NR": "78",
"PARTIAL": "",
"STATE": "H+WW FS",
"TYPE": "VCONTROL"
},
"Readings": {
"Brenner": { "Value":"on", "Time":"2016-11-11 13:57:53" },
"BrennerLeistung": { "Value":"20", "Time":"2016-11-11 13:57:32" },
"BrennerStarts": { "Value":"61396", "Time":"2016-11-11 13:57:35" },
"BrennerStartsDayStart": { "Value":"61387.00", "Time":"2016-11-11 13:57:35" },
"BrennerStartsLastDay": { "Value":"14.00", "Time":"2016-11-11 00:00:33" },
"BrennerStartsToday": { "Value":"9.00", "Time":"2016-11-11 13:57:35" },
"BrennerStunden": { "Value":"24783.56", "Time":"2016-11-11 13:57:38" },
"BrennerStundenDayStart": { "Value":"24774.31", "Time":"2016-11-11 13:57:38" },
"BrennerStundenLastDay": { "Value":"19.05", "Time":"2016-11-11 00:00:36" },
"BrennerStundenToday": { "Value":"9.25", "Time":"2016-11-11 13:57:38" },
"Fehler1": { "Value":"229", "Time":"2016-11-11 13:57:56" },
"Fehler10": { "Value":"168", "Time":"2016-11-11 13:58:23" },
"Fehler2": { "Value":"169", "Time":"2016-11-11 13:57:59" },
"Fehler3": { "Value":"241", "Time":"2016-11-11 13:58:02" },
"Fehler4": { "Value":"168", "Time":"2016-11-11 13:58:05" },
"Fehler5": { "Value":"168", "Time":"2016-11-11 13:58:08" },
"Fehler6": { "Value":"169", "Time":"2016-11-11 13:58:11" },
"Fehler7": { "Value":"169", "Time":"2016-11-11 13:58:14" },
"Fehler8": { "Value":"241", "Time":"2016-11-11 13:58:17" },
"Fehler9": { "Value":"168", "Time":"2016-11-11 13:58:20" },
"Neigung": { "Value":"2", "Time":"2015-12-06 20:44:57" },
"PumpeDrehzahl": { "Value":"255", "Time":"2016-11-11 13:57:50" },
"Stoerung": { "Value":"off", "Time":"2016-11-11 13:57:08" },
"Temp-Abgas": { "Value":"53.3", "Time":"2016-11-11 13:57:17" },
"Temp-Aussen": { "Value":"4.2", "Time":"2016-11-11 13:57:14" },
"Temp-Kessel-Ist": { "Value":"56", "Time":"2016-11-11 13:57:26" },
"Temp-Kessel-Soll": { "Value":"55.1", "Time":"2016-11-11 13:57:29" },
"Temp-WarmWasser-Ist": { "Value":"57", "Time":"2016-11-11 13:57:20" },
"Temp-WarmWasser-Soll": { "Value":"55", "Time":"2016-11-11 13:57:23" },
"UpdateTime": { "Value":"2016-11-11_13:58:23", "Time":"2016-11-11 13:58:23" },
"Urlaub-Betrieb": { "Value":"on", "Time":"2015-12-06 20:45:00" },
"Zirkulationspumpe": { "Value":"on", "Time":"2016-11-11 13:57:11" },
"state": { "Value":"H+WW FS", "Time":"2016-11-11 13:57:41" },
"state_party": { "Value":"off", "Time":"2016-11-11 13:57:44" },
"state_spar": { "Value":"off", "Time":"2016-11-11 13:57:47" }
},
"Attributes": {
"alias": "Heizung",
"devStateIcon": "ABSCHALT:s_viessmann_abschalt.png WW:s_viessmann_ww H\u005c+WW\u005cx20FS:s_viessmann_h_ww",
"event-on-change-reading": "Stoerung,state,state_party,state_spar,BrennerStarts,BrennerStartsDayStart,BrennerStartsLastDay,BrennerStartsToday,BrennerStundenDayStart,BrennerStundenLastDay,BrennerStundenToday",
"event-on-update-reading": "Temp-Abgas,Temp-Aussen,Temp-WarmWasser-Ist,Temp-WarmWasser-Soll,Temp-Kessel-Ist,Temp-Kessel-Soll,Brenner,BrennerLeistung,Zirkulationspumpe,UpdateTime",
"group": "Heizung",
"room": "Heizung",
"setList": "state:AUS,HWW,WW,P-ON,P-OFF,S-ON,S-OFF",
"userReadings": "0",
"webCmd": "state:"
}
} ],
"totalResultsReturned":1
}
viele Danke
Hm, seit neuestem wird nach einem Neustart von fhem die Readingsgroup erst korrekt angezeigt,
nachdem ich die 99_myUtils.pm reloadet habe. hat jemand eine Idee dazu?
Ich nutze in der rg das getDev($DEVICE) aus dem wiki...
Habe mir eine ReadingsGroup erstellt, in der ich Informationen meines Bluetooth Tags (z.B. Presence Status, Name, usw.) anzeigen lasse. Leider habe ich kein Internal, das den Zeitstempel des letzten Empfangs (wie z.B. CUL0_TIME bei einem CUL) repräsentiert. Was allerdings verfügbar ist, ist ein Zeitstempel eines Readings (also nicht der Readingswert selbst), der mir weiter helfen würde.
Frage daher: wie kann ich in einer ReadingsGroup den Zeitstempel eines Readings - in meinem Fall z.B. 'device_name' - im Codebeispiel für die letzte Spalte definieren?
<Tag>,<Device Name>,<Adresse>,<Status>,<Batterie>,<Letzter Update>
AndreasGtag:device_name,+ADDRESS,+STATE,battery
Andreas
Seit dem heutigen Update wird mir in einer meiner Readingsgroup für ein state keine Auswahlliste mehr angezeigt.
edit:
Der state gehört einen Dummy mit setList´.
@Elektrolurch: ich habe mir gerade deinen vorschlag angeschaut und bin der meinung das dies eigentlich schon gehen sollte. in lookup und lookup2 wird jeweils ein eval gemacht wenn der gefundene wert in geschweifte klammern eingeschlossen ist. kannst du mal bitte schauen warum das bei dir nicht funktioniert?
@kvo1: habs repariert. ab morgen im update.
@fhemfreund: mit <{ReadingsTimestamp($DEVICE,'device_name','???')}@battery>
@stromer-12: das konnte ich gerade nicht reproduzieren. kannst du bitte ein beispiel aus dummy und readingsGroup machen an dem man das problem sieht?
gruss
andre
Ich habe jetzt eingegrenzt bekommen:
geht nicht mehr:
commands { 'testdummy.state' => 'state:' }
geht:
commands { 'state' => 'state:' }
copy&paste fehler gefunden. sollte morgen wieder gehen.
gruss
andre
Zitat von: justme1968 am 12 November 2016, 20:33:52
...
@fhemfreund: mit <{ReadingsVal($DEVICE,'device_name','???')}@battery>
...
gruss
andre
@Andre
bekomme mit dem Konstrukt leider nur (wieder) den Readingswert, aber nicht den Timestamp des Readings. Fehlt da ggf. noch etwas?
Andreas
sorry. es muss natürlich ReadingsTimestamp und nicht ReadingVal heißen.
gruss
andre
Andre - klasse ! Hast mir sehr geholfen. Danke dafür.
Andreas
Hallo Andre,
Zitat@kvo1: habs repariert. ab morgen im update.
nach dem update funktioniert es jetzt weider, danke für die Änderung !
kvo1
Hi, ich hab zwei Fragen zu readingsgroups, die erste ist kann ich einen Zeilenumbruch in eiiner rd einfügen? Ich hab eine rd, welche mir die Batterie Staten meiner Devices darstellt, diese ist aber recht lang, ich hätte die lieber in der mitte getrennt und dann nebeneinander.
Im Moment sieht sie so aus:
Internals:
DEF .*:[Bb]attery .*:[Bb]atteryLevel
NAME rd_Batterie
NR 324
NTFY_ORDER 50-rd_Batterie
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Fhem:
lastDefChange 4
last_update 1479664194.5808
Helper:
DEF
valueFormat {return "0" if( $VALUE eq "low" ); return "100" if( $VALUE eq "ok" ); return "25" if( $VALUE < 2.1 ); return "50" if( $VALUE < 2.3 ); return "75" if( $VALUE < 2.5 ); return "100"}
Positions:
Bewegungsmelder.battery 20:1
Fenster_neben_Couch.battery 60:1
Fenster_ueber_Heizung.battery 62:1
Flur_EG.battery 70:1
Gaeste_WC.battery 83:1
Gaeste_WC.batteryLevel 393:1
HeizungFenster.battery 92:1
HeizungFenster.batteryLevel 402:1
Heizung_Flur.battery 100:1
Heizung_Flur.batteryLevel 410:1
Heizung_Kinderzimmer.battery 102:1
Heizung_Kinderzimmer.batteryLevel 412:1
Heizung_Tuer.battery 111:1
Heizung_Tuer.batteryLevel 421:1
Keller.battery 126:1
Kinderzimmer.battery 129:1
Kinderzimmer_Laya.battery 131:1
Kinderzimmer_Laya.batteryLevel 441:1
Kueche.battery 139:1
Kueche.batteryLevel 449:1
Rauchmelder.battery 162:1
Rauchmelder_Kinderzimmer_Laya.battery 165:1
Terassen_Tuer.battery 231:1
Valueicon:
Battery.0 measure_battery_0@red
Battery.100 measure_battery_100@green
battery.0 measure_battery_0@red
battery.100 measure_battery_100@green
batteryLevel.0 measure_battery_0@red
batteryLevel.100 measure_battery_100@green
batteryLevel.25 measure_battery_25@red
batteryLevel.50 measure_battery_50@orange
batteryLevel.75 measure_battery_75@green
Values:
formated:
ARRAY(0x4abbc60)
orig:
ARRAY(0x53b5740)
prefixsuffix:
ARRAY(0x4da9760)
Attributes:
noheading 1
notime 1
room Zentral
valueFormat {return "0" if( $VALUE eq "low" ); return "100" if( $VALUE eq "ok" ); return "25" if( $VALUE < 2.1 ); return "50" if( $VALUE < 2.3 ); return "75" if( $VALUE < 2.5 ); return "100"}
valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','Battery.0' => 'measure_battery_0@red','Battery.100' => 'measure_battery_100@green','batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}
Die zweite Frage ist, kann ich Text von vorneherein eine gewissen Anzahl Zeichen vorgeben? Der Hintergrund ich lasse mir in einer rd. das aktuelle Fernseh Programm darstellen, und je nachdem wie lange der Film Name ist, verrutschen dann die anderen Anzeigen, von daher möchte ich die Anzeige von vorneherein festlegen.
Danke
zeilenumbruch geht mit <br>
maximal länge geht mit passendem valueFormat oder über style/css
gruss
andre
Hi, vieleicht blöde frage aber wo in der rd von oben muss ich das <br> einfügen?
na da wo der zeilenumbrüche sein soll.
Hallo,
vielleicht kann mir da mal jemand bei der Syntasx weiterhelfen:
Ich habe folgenden Ausdruck
Bu_Fenster:Window,<{'seit '.ReadingsTime($DEVICE,'Previous')}>
Window wird über valueIcon und einen perl-Ausdruck in ein Icon mit Statuswert umgesetz und aktualisiert sich bei jeder Änderung auch korrekt.
<{'seit '.ReadingsTime($DEVICE,'Previous')}>
zeigt an, wie lange das Fenster schon offen, bzw. geschlossen ist.
Leider wird dieser Ausdruck nicht bei jeder Änderung von Window oder previous aktualisiert, sondern nur, wenn ich die Seite neu aufbaue.
Wenn ich die commandref interpretiere, kann man irgendwie auch erreichen, dass dieser Ausruck bei Änderung eines readings neu berechnet wird. Leider verstehe ich aber da die Syntax nicht, wie sie in der commandref dort steht. Oder geht das gar nicht?
Danke.
Elektrolurch
einfach ein @<reading-name> zwischen der schliessenden } und dem > einfügen.
also so:Bu_Fenster:Window,<{'seit '.ReadingsTime($DEVICE,'Previous')}@Previous>
gruss
andre
Zitat von: justme1968 am 20 November 2016, 19:31:41
na da wo der zeilenumbrüche sein soll.
Auf die gefahr hin das ich mir echt auf dem schlauch stehem aber wo soll ich hier das <br> einfügen wenn ich die rd auf dem Bild im Anhang in der mitte geteilt haben will?
Internals:
DEF .*:[Bb]attery .*:[Bb]atteryLevel
NAME rd_Batterie
NR 324
NTFY_ORDER 50-rd_Batterie
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
Fhem:
lastDefChange 4
last_update 1479664194.5808
Helper:
DEF
valueFormat {return "0" if( $VALUE eq "low" ); return "100" if( $VALUE eq "ok" ); return "25" if( $VALUE < 2.1 ); return "50" if( $VALUE < 2.3 ); return "75" if( $VALUE < 2.5 ); return "100"}
Positions:
Bewegungsmelder.battery 20:1
Fenster_neben_Couch.battery 60:1
Fenster_ueber_Heizung.battery 62:1
Flur_EG.battery 70:1
Gaeste_WC.battery 83:1
Gaeste_WC.batteryLevel 393:1
HeizungFenster.battery 92:1
HeizungFenster.batteryLevel 402:1
Heizung_Flur.battery 100:1
Heizung_Flur.batteryLevel 410:1
Heizung_Kinderzimmer.battery 102:1
Heizung_Kinderzimmer.batteryLevel 412:1
Heizung_Tuer.battery 111:1
Heizung_Tuer.batteryLevel 421:1
Keller.battery 126:1
Kinderzimmer.battery 129:1
Kinderzimmer_Laya.battery 131:1
Kinderzimmer_Laya.batteryLevel 441:1
Kueche.battery 139:1
Kueche.batteryLevel 449:1
Rauchmelder.battery 162:1
Rauchmelder_Kinderzimmer_Laya.battery 165:1
Terassen_Tuer.battery 231:1
Valueicon:
Battery.0 measure_battery_0@red
Battery.100 measure_battery_100@green
battery.0 measure_battery_0@red
battery.100 measure_battery_100@green
batteryLevel.0 measure_battery_0@red
batteryLevel.100 measure_battery_100@green
batteryLevel.25 measure_battery_25@red
batteryLevel.50 measure_battery_50@orange
batteryLevel.75 measure_battery_75@green
Values:
formated:
ARRAY(0x4abbc60)
orig:
ARRAY(0x53b5740)
prefixsuffix:
ARRAY(0x4da9760)
Attributes:
noheading 1
notime 1
room Zentral
valueFormat {return "0" if( $VALUE eq "low" ); return "100" if( $VALUE eq "ok" ); return "25" if( $VALUE < 2.1 ); return "50" if( $VALUE < 2.3 ); return "75" if( $VALUE < 2.5 ); return "100"}
valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','Battery.0' => 'measure_battery_0@red','Battery.100' => 'measure_battery_100@green','batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}
ein zeilenumbruch teilt eine lange zeile in kürzere teile die untereinander stehen.
in deiner readingsGroup steht sowieso schon alles untereinander.
du möchtest keinen zeilenumbruch sondern eine zweispaltige darstellung. das geht aktuell nicht automatisch.
als workground würde ich dir vorschlagen nur die readings anzuzeigen die nicht ok m/voll sind. dadurch wird alles sehr viel kürzer. vielleicht für alle die ok sind nur noch die gesammr anzahl und ein link zum umschalten auf die komplette ansicht.
gruss
andre
Ok, sorry hast recht hatte mich falsch ausgedrückt.
Dann versuch ich das ganze mal noch anders, und verteile es auf 2 rd's, dann sollte es auch gehen.
Danke
Zitat von: Tommy82 am 20 November 2016, 18:57:53
Hi, ich hab zwei Fragen zu readingsgroups, die erste ist kann ich einen Zeilenumbruch in eiiner rd einfügen? Ich hab eine rd, welche mir die Batterie Staten meiner Devices darstellt, diese ist aber recht lang, ich hätte die lieber in der mitte getrennt und dann nebeneinander.
Im Moment sieht sie so aus:
[
Die zweite Frage ist, kann ich Text von vorneherein eine gewissen Anzahl Zeichen vorgeben? Der Hintergrund ich lasse mir in einer rd. das aktuelle Fernseh Programm darstellen, und je nachdem wie lange der Film Name ist, verrutschen dann die anderen Anzeigen, von daher möchte ich die Anzeige von vorneherein festlegen.
Danke
Muss dann hier auch nochmal fragen, wie muss ich das valueFormat setzen? Die rd sieht so aus:
Internals:
DEF <Programm>,<Jetzt>,<Dann>,<Uhrzeit>,<PrimeTime>
TV_Programme:13THSTREET@TV_Programme,13THSTREET_next,13THSTREET_next_time,13THSTREET_abend@TV_Programme_abend
TV_Programme:SAT.1@TV_Programme,SAT.1_next,SAT.1_next_time,Sat1_abend@TV_Programme_abend
TV_Programme:Pro7@TV_Programme,Pro7_next,Pro7_next_time,Pro7_abend@TV_Programme_abend
TV_Programme:RTL@TV_Programme,RTL_next,RTL_next_time,RTL_abend@TV_Programme_abend
TV_Programme:KABEL1@TV_Programme,KABEL1_next,KABEL1_next_time,Kabel1_abend@TV_Programme_abend
TV_Programme:rtl2@TV_Programme,rtl2_next,rtl2_next_time,RTL2_abend@TV_Programme_abend
TV_Programme:VOX@TV_Programme,VOX_next,VOX_next_time,VOX_abend@TV_Programme_abend
TV_Programme:ARD@TV_Programme,ARD_next,ARD_next_time,ARD_abend@TV_Programme_abend
TV_Programme:ZDF@TV_Programme,ZDF_next,ZDF_next_time,ZDF_abend@TV_Programme_abend
NAME TV_Programm
NR 165
NTFY_ORDER 50-TV_Programm
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
TV_Programme 1
Content2:
TV_Programme 1
TV_Programme_abend 1
DEVICES:
ARRAY(0x508dd90)
ARRAY(0x4de6180)
ARRAY(0x539d238)
ARRAY(0x4b21bc0)
ARRAY(0x4b24240)
ARRAY(0x56b08b8)
ARRAY(0x4b1b058)
ARRAY(0x4b16e28)
ARRAY(0x3b81470)
ARRAY(0x508dc88)
DEVICES2:
ARRAY(0x508dd90)
ARRAY(0x4de6180)
ARRAY(0x539d238)
ARRAY(0x4b21bc0)
ARRAY(0x4b24240)
ARRAY(0x56b08b8)
ARRAY(0x4b1b058)
ARRAY(0x4b16e28)
ARRAY(0x3b81470)
ARRAY(0x508dc88)
ARRAY(0x4de5ef8)
ARRAY(0x4af5db0)
ARRAY(0x508a820)
ARRAY(0x50dd8d8)
ARRAY(0x5791f70)
ARRAY(0x4da6d50)
ARRAY(0x563d360)
ARRAY(0x4fefb88)
ARRAY(0x4d82f28)
ARRAY(0x4af5858)
ARRAY(0x4b495b0)
ARRAY(0x4fee0e0)
ARRAY(0x5685c20)
ARRAY(0x5648e00)
ARRAY(0x508bab8)
ARRAY(0x5704670)
ARRAY(0x53b79d0)
ARRAY(0x50eabd0)
Helper:
Dblog:
Tv_programme.13thstreet:
Mydblog:
TIME 1479759268.03371
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel 13THSTREET')">Navy CIS</a></html>
Tv_programme.13thstreet_next:
Mydblog:
TIME 1479759267.68016
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel 13THSTREET_next')">Criminal Minds</a></html>
Tv_programme.13thstreet_next_time:
Mydblog:
TIME 1479759267.70775
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel 13THSTREET_next_time')">21:50</a></html>
Tv_programme.ard:
Mydblog:
TIME 1479759268.00841
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel ARD')">Hart aber fair - Hassen, Pöbeln, Gaffen - wie verroht ist unsere Gesellschaft?</a></html>
Tv_programme.ard_next:
Mydblog:
TIME 1479759267.97871
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel ARD_next')">Tagesthemen - Mit Wetter</a></html>
Tv_programme.ard_next_time:
Mydblog:
TIME 1479759267.91993
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel ARD_next_time')">22:15</a></html>
Tv_programme.kabel1:
Mydblog:
TIME 1479759267.54121
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel KABEL1')">Rambo I</a></html>
Tv_programme.kabel1_next:
Mydblog:
TIME 1479759267.65315
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel KABEL1_next')">Rambo 2 - Der Auftrag</a></html>
Tv_programme.kabel1_next_time:
Mydblog:
TIME 1479759267.48882
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel KABEL1_next_time')">22:15</a></html>
Tv_programme.pro7:
Mydblog:
TIME 1479759267.73344
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel Pro7')">The Big Bang Theory</a></html>
Tv_programme.pro7_next:
Mydblog:
TIME 1479759267.59361
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel Pro7_next')">The Big Bang Theory</a></html>
Tv_programme.pro7_next_time:
Mydblog:
TIME 1479759267.75902
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel Pro7_next_time')">21:40</a></html>
Tv_programme.rtl:
Mydblog:
TIME 1479759267.86722
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel RTL')">Wer wird Millionär?</a></html>
Tv_programme.rtl_next:
Mydblog:
TIME 1479759267.62205
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel RTL_next')">Bauer sucht Frau</a></html>
Tv_programme.rtl_next_time:
Mydblog:
TIME 1479759268.06791
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel RTL_next_time')">21:15</a></html>
Tv_programme.sat.1:
Mydblog:
TIME 1479759267.46048
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel SAT.1')">Navy CIS</a></html>
Tv_programme.sat.1_next:
Mydblog:
TIME 1479759267.95301
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel SAT.1_next')">Navy CIS
Tv_programme.sat.1_next_time:
Mydblog:
TIME 1479759268.09378
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel SAT.1_next_time')">21:15</a></html>
Tv_programme.vox:
Mydblog:
TIME 1479759267.56598
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel VOX')">Club der roten Bänder</a></html>
Tv_programme.vox_next:
Mydblog:
TIME 1479759267.78725
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel VOX_next')">Humans</a></html>
Tv_programme.vox_next_time:
Mydblog:
TIME 1479759267.84171
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel VOX_next_time')">22:10</a></html>
Tv_programme.zdf:
Mydblog:
TIME 1479759267.51488
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel ZDF')">Der Andere</a></html>
Tv_programme.zdf_next:
Mydblog:
TIME 1479759267.89439
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel ZDF_next')">heute-journal - Wetter</a></html>
Tv_programme.zdf_next_time:
Mydblog:
TIME 1479759267.81511
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem/floorplan/Server?XHR=1&cmd=set Senderwechsel ZDF_next_time')">21:50</a></html>
Tv_programme_abend.13thstreet_abend:
Mydblog:
TIME 1479759268.78455
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel 13THSTREET_abend')">Navy CIS</a></html>
Tv_programme_abend.ard_abend:
Mydblog:
TIME 1479759268.81391
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ARD_abend')">Lebensmittel-Check mit Tim Mälzer - Süß, salzig, fett - Warum wir essen was wir essen</a></html>
Tv_programme_abend.kabel1_abend:
Mydblog:
TIME 1479759268.6606
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Kabel1_abend')">Rambo I</a></html>
Tv_programme_abend.pro7_abend:
Mydblog:
TIME 1479759268.73592
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Pro7_abend')">The Big Bang Theory</a></html>
Tv_programme_abend.rtl_abend:
Mydblog:
TIME 1479759268.63682
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel RTL_abend')">Wer wird Millionär?</a></html>
Tv_programme_abend.sat1_abend:
Mydblog:
TIME 1479759268.71159
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Sat1_abend')">Navy CIS</a></html>
Tv_programme_abend.vox_abend:
Mydblog:
TIME 1479759268.68768
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel VOX_abend')">Club der roten Bänder</a></html>
Tv_programme_abend.zdf_abend:
Mydblog:
TIME 1479759268.76004
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ZDF_abend')">Der Andere</a></html>
Fhem:
lastDefChange 49
last_update 1479761939.06981
Helper:
DEF
commands {"set Senderwechsel %READING"}
nameStyle style="color:yellow;font-weight:bold"
Nameicon:
13THSTREET 13thstreet
ARD ard
KABEL1 kabel1
Pro7 pro7
RTL rtl
SAT.1 sat1
Sport1 sport1
VOX vox
ZDF zdf
rtl2 rtl2
Positions:
TV_Programme.13THSTREET 2:1
TV_Programme.13THSTREET_next 2:2
TV_Programme.13THSTREET_next_time 2:3
TV_Programme.ARD 9:1
TV_Programme.ARD_next 9:2
TV_Programme.ARD_next_time 9:3
TV_Programme.KABEL1 6:1
TV_Programme.KABEL1_next 6:2
TV_Programme.KABEL1_next_time 6:3
TV_Programme.Pro7 4:1
TV_Programme.Pro7_next 4:2
TV_Programme.Pro7_next_time 4:3
TV_Programme.RTL 5:1
TV_Programme.RTL_next 5:2
TV_Programme.RTL_next_time 5:3
TV_Programme.SAT.1 3:1
TV_Programme.SAT.1_next 3:2
TV_Programme.SAT.1_next_time 3:3
TV_Programme.VOX 8:1
TV_Programme.VOX_next 8:2
TV_Programme.VOX_next_time 8:3
TV_Programme.ZDF 10:1
TV_Programme.ZDF_next 10:2
TV_Programme.ZDF_next_time 10:3
TV_Programme.rtl2 7:1
TV_Programme.rtl2_next 7:2
TV_Programme.rtl2_next_time 7:3
TV_Programme_abend.13THSTREET_abend 2:4
TV_Programme_abend.ARD_abend 9:4
TV_Programme_abend.Kabel1_abend 6:4
TV_Programme_abend.Pro7_abend 4:4
TV_Programme_abend.RTL2_abend 7:4
TV_Programme_abend.RTL_abend 5:4
TV_Programme_abend.Sat1_abend 3:4
TV_Programme_abend.VOX_abend 8:4
TV_Programme_abend.ZDF_abend 10:4
Values:
formated:
Attributes:
commands {"set Senderwechsel %READING"}
fp_Reciever 272,831,0,
group TV_Programm
nameIcon { "13THSTREET" => '13thstreet', Pro7 => 'pro7', "SAT.1" => 'sat1', RTL => 'rtl', Sport1 => 'sport1', ZDF => 'zdf', ARD => 'ard',rtl2 => 'rtl2',KABEL1 => 'kabel1',VOX => 'vox' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
style style="width:530px;color:white;font-size:15px"
für das entsprechende reading etwas in der art:
{return substr($VALUE,0,30) if( length($VALUE) > 30 ); return $VALUE }
Zitat von: justme1968 am 21 November 2016, 22:08:32
für das entsprechende reading etwas in der art:
{return substr($VALUE.0,30) if( length($VALUE) > 30 ); return $VALUE }
Meinst du in etwa so?
<Programm>,<Jetzt>,<Dann>,<Uhrzeit>,<PrimeTime>
TV_Programme:13THSTREET@TV_Programme,13THSTREET_next,13THSTREET_next_time,13THSTREET_abend@TV_Programme_abend
TV_Programme:SAT.1@TV_Programme,SAT.1_next,SAT.1_next_time,Sat1_abend@TV_Programme_abend
TV_Programme:Pro7@TV_Programme,Pro7_next,Pro7_next_time,Pro7_abend@TV_Programme_abend {return substr($VALUE.0,30) if( length($VALUE) > 30 ); return $VALUE }
TV_Programme:RTL@TV_Programme,RTL_next,RTL_next_time,RTL_abend@TV_Programme_abend
TV_Programme:KABEL1@TV_Programme,KABEL1_next,KABEL1_next_time,Kabel1_abend@TV_Programme_abend
TV_Programme:rtl2@TV_Programme,rtl2_next,rtl2_next_time,RTL2_abend@TV_Programme_abend
TV_Programme:VOX@TV_Programme,VOX_next,VOX_next_time,VOX_abend@TV_Programme_abend
TV_Programme:ARD@TV_Programme,ARD_next,ARD_next_time,ARD_abend@TV_Programme_abend
TV_Programme:ZDF@TV_Programme,ZDF_next,ZDF_next_time,ZDF_abend@TV_Programme_abend
Dann wird aber alles nach dem Pro7 reading abgeschnitten
da war noch ein tippfehler drin.
Ok, hab dann jetzt deine geänderte Version genommen, aber leider klappts auch damit nicht
<Programm>,<Jetzt>,<Dann>,<Uhrzeit>,<PrimeTime>
TV_Programme:13THSTREET@TV_Programme,13THSTREET_next,13THSTREET_next_time,13THSTREET_abend@TV_Programme_abend
TV_Programme:SAT.1@TV_Programme,SAT.1_next,SAT.1_next_time,Sat1_abend@TV_Programme_abend {return substr($VALUE,0,30) if( length($VALUE) > 30 ); return $VALUE }
TV_Programme:Pro7@TV_Programme,Pro7_next,Pro7_next_time,Pro7_abend@TV_Programme_abend
TV_Programme:RTL@TV_Programme,RTL_next,RTL_next_time,RTL_abend@TV_Programme_abend
TV_Programme:KABEL1@TV_Programme,KABEL1_next,KABEL1_next_time,Kabel1_abend@TV_Programme_abend
TV_Programme:rtl2@TV_Programme,rtl2_next,rtl2_next_time,RTL2_abend@TV_Programme_abend
TV_Programme:VOX@TV_Programme,VOX_next,VOX_next_time,VOX_abend@TV_Programme_abend
TV_Programme:ARD@TV_Programme,ARD_next,ARD_next_time,ARD_abend@TV_Programme_abend
TV_Programme:ZDF@TV_Programme,ZDF_next,ZDF_next_time,ZDF_abend@TV_Programme_abend
Dann sieht die rd nur noch so aus:
schau ins log. wenn etwas nicht geht und es fehler gibt sollten dort meldungen sein.
der code muss ins valueFormat für das betreffende reading. nicht in die DEF.
Du bist der beste, vielen Dank
Hi, hab leider wieso auch immer plötzlich ein neues Problem mit der rd.
nternals:
DEF <Programm>,<Jetzt>,<Dann>,<Uhrzeit>,<PrimeTime>
TV_Programme:13THSTREET@TV_Programme,13THSTREET_next,13THSTREET_next_time,13THSTREET_abend@TV_Programme_abend
TV_Programme:SAT.1@TV_Programme,SAT.1_next,SAT.1_next_time,Sat1_abend@TV_Programme_abend
TV_Programme:Pro7@TV_Programme,Pro7_next,Pro7_next_time,Pro7_abend@TV_Programme_abend
TV_Programme:RTL@TV_Programme,RTL_next,RTL_next_time,RTL_abend@TV_Programme_abend
TV_Programme:KABEL1@TV_Programme,KABEL1_next,KABEL1_next_time,Kabel1_abend@TV_Programme_abend
TV_Programme:rtl2@TV_Programme,rtl2_next,rtl2_next_time,RTL2_abend@TV_Programme_abend
TV_Programme:VOX@TV_Programme,VOX_next,VOX_next_time,VOX_abend@TV_Programme_abend
TV_Programme:ARD@TV_Programme,ARD_next,ARD_next_time,ARD_abend@TV_Programme_abend
TV_Programme:ZDF@TV_Programme,ZDF_next,ZDF_next_time,ZDF_abend@TV_Programme_abend
NAME TV_Programm
NR 161
NTFY_ORDER 50-TV_Programm
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
TV_Programme 1
Content2:
TV_Programme 1
TV_Programme_abend 1
DEVICES:
ARRAY(0x3cb9898)
ARRAY(0x4436948)
ARRAY(0x43f5df0)
ARRAY(0x3c65d20)
ARRAY(0x4622660)
ARRAY(0x3c70508)
ARRAY(0x3cb37b8)
ARRAY(0x455ace8)
ARRAY(0x4555880)
ARRAY(0x42e64b8)
DEVICES2:
ARRAY(0x3cb9898)
ARRAY(0x4436948)
ARRAY(0x43f5df0)
ARRAY(0x3c65d20)
ARRAY(0x4622660)
ARRAY(0x3c70508)
ARRAY(0x3cb37b8)
ARRAY(0x455ace8)
ARRAY(0x4555880)
ARRAY(0x42e64b8)
ARRAY(0x43c1510)
ARRAY(0x42efc78)
ARRAY(0x48b9d98)
ARRAY(0x4301200)
ARRAY(0x43ca900)
ARRAY(0x48359c8)
ARRAY(0x47da860)
ARRAY(0x3c6f068)
ARRAY(0x47d7998)
ARRAY(0x43011e8)
ARRAY(0x487efc0)
ARRAY(0x43d9f08)
ARRAY(0x4876280)
ARRAY(0x4886268)
ARRAY(0x487e210)
ARRAY(0x3cb2ff0)
ARRAY(0x3c05210)
ARRAY(0x3620f48)
Helper:
Dblog:
Tv_programme.13thstreet:
Mydblog:
TIME 1480102584.916
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel 13THSTREET')">Safe - Todsicher</a></html>
Tv_programme.13thstreet_next:
Mydblog:
TIME 1480102584.96508
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel 13THSTREET_next')">Safe House</a></html>
Tv_programme.13thstreet_next_time:
Mydblog:
TIME 1480102584.73227
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel 13THSTREET_next_time')">21:55</a></html>
Tv_programme.ard:
Mydblog:
TIME 1480102584.66662
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ARD')">Almuth und Rita - Zwei wie Pec</a></html>
Tv_programme.ard_next:
Mydblog:
TIME 1480102584.88346
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ARD_next')">Tagesthemen - Mit Wetter</a></html>
Tv_programme.ard_next_time:
Mydblog:
TIME 1480102584.81385
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ARD_next_time')">21:45</a></html>
Tv_programme.kabel1:
Mydblog:
TIME 1480102584.6331
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel KABEL1')">Forever</a></html>
Tv_programme.kabel1_next:
Mydblog:
TIME 1480102584.7486
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel KABEL1_next')">The Mentalist (OmU)</a></html>
Tv_programme.kabel1_next_time:
Mydblog:
TIME 1480102584.64951
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel KABEL1_next_time')">21:10</a></html>
Tv_programme.pro7:
Mydblog:
TIME 1480102584.76481
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Pro7')">Project
Tv_programme.pro7_next:
Mydblog:
TIME 1480102584.99808
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Pro7_next')">Tomorrow, When the War Began</a></html>
Tv_programme.pro7_next_time:
Mydblog:
TIME 1480102584.94859
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Pro7_next_time')">22:25</a></html>
Tv_programme.rtl:
Mydblog:
TIME 1480102584.83034
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel RTL')">Die 2 - Gottschalk & Jauch</a></html>
Tv_programme.rtl_next:
Mydblog:
TIME 1480102584.78123
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel RTL_next')">RTL Nachtjournal</a></html>
Tv_programme.rtl_next_time:
Mydblog:
TIME 1480102584.89963
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel RTL_next_time')">00:00</a></html>
Tv_programme.sat.1:
Mydblog:
TIME 1480102584.79737
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel SAT.1')">Das Schwiegermonster</a></html>
Tv_programme.sat.1_next:
Mydblog:
TIME 1480102584.8467
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel SAT.1_next')">Knallerfrauen</a></html>
Tv_programme.sat.1_next_time:
Mydblog:
TIME 1480102584.93246
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel SAT.1_next_time')">22:15</a></html>
Tv_programme.vox:
Mydblog:
TIME 1480102584.98159
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel VOX')">Law & Order
Tv_programme.vox_next:
Mydblog:
TIME 1480102584.86269
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel VOX_next')">Law & Order
Tv_programme.vox_next_time:
Mydblog:
TIME 1480102584.61675
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel VOX_next_time')">21:15</a></html>
Tv_programme.zdf:
Mydblog:
TIME 1480102584.71595
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ZDF')">Ein Fall für zwei</a></html>
Tv_programme.zdf_next:
Mydblog:
TIME 1480102584.69943
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ZDF_next')">SOKO Leipzig</a></html>
Tv_programme.zdf_next_time:
Mydblog:
TIME 1480102584.68316
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ZDF_next_time')">21:15</a></html>
Tv_programme_abend.13thstreet_abend:
Mydblog:
TIME 1480102585.4582
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel 13THSTREET_abend')">Safe - Todsicher</a></html>
Tv_programme_abend.ard_abend:
Mydblog:
TIME 1480102585.37556
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ARD_abend')">Almuth und Rita - Zwei wie Pec</a></html>
Tv_programme_abend.kabel1_abend:
Mydblog:
TIME 1480102585.44158
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Kabel1_abend')">Forever</a></html>
Tv_programme_abend.pro7_abend:
Mydblog:
TIME 1480102585.35932
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Pro7_abend')">Project
Tv_programme_abend.rtl_abend:
Mydblog:
TIME 1480102585.3922
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel RTL_abend')">Die 2 - Gottschalk & Jauch</a></html>
Tv_programme_abend.sat1_abend:
Mydblog:
TIME 1480102585.34302
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel Sat1_abend')">Das Schwiegermonster</a></html>
Tv_programme_abend.vox_abend:
Mydblog:
TIME 1480102585.40851
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel VOX_abend')">Law & Order
Tv_programme_abend.zdf_abend:
Mydblog:
TIME 1480102585.425
VALUE <html><a style="cursor:pointer" onClick="FW_cmd('/fhem?XHR=1&cmd=set Senderwechsel ZDF_abend')">Ein Fall für zwei</a></html>
Fhem:
lastDefChange 64
last_update 1480105004.7298
Helper:
DEF
commands {"set Senderwechsel %READING"}
mapping {return substr($VALUE,0,30) if( length($VALUE) > 30 ); return $VALUE } TV_Programme:Pro7@TV_Programme,Pro7_next,Pro7_next_time,Pro7_abend@TV_Programme_abend TV_Programme:RTL@TV_Programme,RTL_next,RTL_next_time,RTL_abend@TV_Programme_abend TV_Programme:KABEL1@TV_Programme,KABEL1_next,KABEL1_next_time,Kabel1_abend@TV_Programme_abend TV_Programme:rtl2@TV_Programme,rtl2_next,rtl2_next_time,RTL2_abend@TV_Programme_abend TV_Programme:VOX@TV_Programme,VOX_next,VOX_next_time,VOX_abend@TV_Programme_abend TV_Programme:ARD@TV_Programme,ARD_next,ARD_next_time,ARD_abend@TV_Programme_abend TV_Programme:ZDF@TV_Programme,ZDF_next,ZDF_next_time,ZDF_abend@TV_Programme_abend
nameStyle style="color:yellow;font-weight:bold"
valueFormat {return substr($VALUE,0,30) if( length($VALUE) > 30 ); return $VALUE }
Nameicon:
13THSTREET 13thstreet
ARD ard
KABEL1 kabel1
Pro7 pro7
RTL rtl
SAT.1 sat1
Sport1 sport1
VOX vox
ZDF zdf
rtl2 rtl2
Positions:
TV_Programme.13THSTREET 2:1
TV_Programme.13THSTREET_next 2:2
TV_Programme.13THSTREET_next_time 2:3
TV_Programme.ARD 9:1
TV_Programme.ARD_next 9:2
TV_Programme.ARD_next_time 9:3
TV_Programme.KABEL1 6:1
TV_Programme.KABEL1_next 6:2
TV_Programme.KABEL1_next_time 6:3
TV_Programme.Pro7 4:1
TV_Programme.Pro7_next 4:2
TV_Programme.Pro7_next_time 4:3
TV_Programme.RTL 5:1
TV_Programme.RTL_next 5:2
TV_Programme.RTL_next_time 5:3
TV_Programme.SAT.1 3:1
TV_Programme.SAT.1_next 3:2
TV_Programme.SAT.1_next_time 3:3
TV_Programme.VOX 8:1
TV_Programme.VOX_next 8:2
TV_Programme.VOX_next_time 8:3
TV_Programme.ZDF 10:1
TV_Programme.ZDF_next 10:2
TV_Programme.ZDF_next_time 10:3
TV_Programme.rtl2 7:1
TV_Programme.rtl2_next 7:2
TV_Programme.rtl2_next_time 7:3
TV_Programme_abend.13THSTREET_abend 2:4
TV_Programme_abend.ARD_abend 9:4
TV_Programme_abend.Kabel1_abend 6:4
TV_Programme_abend.Pro7_abend 4:4
TV_Programme_abend.RTL2_abend 7:4
TV_Programme_abend.RTL_abend 5:4
TV_Programme_abend.Sat1_abend 3:4
TV_Programme_abend.VOX_abend 8:4
TV_Programme_abend.ZDF_abend 10:4
Values:
formated:
ARRAY(0x3c659a8)
ARRAY(0x1338868)
ARRAY(0x471a460)
ARRAY(0x47d6f18)
orig:
ARRAY(0x3c68690)
ARRAY(0x47d4a20)
ARRAY(0x43c4060)
ARRAY(0x47d3200)
prefixsuffix:
ARRAY(0x43b4b18)
ARRAY(0x3d0e0d0)
ARRAY(0x431fff8)
ARRAY(0x3cb9160)
Attributes:
commands {"set Senderwechsel %READING"}
fp_Reciever 272,831,0,
group TV_Programm
mapping {return substr($VALUE,0,30) if( length($VALUE) > 30 ); return $VALUE } TV_Programme:Pro7@TV_Programme,Pro7_next,Pro7_next_time,Pro7_abend@TV_Programme_abend TV_Programme:RTL@TV_Programme,RTL_next,RTL_next_time,RTL_abend@TV_Programme_abend TV_Programme:KABEL1@TV_Programme,KABEL1_next,KABEL1_next_time,Kabel1_abend@TV_Programme_abend TV_Programme:rtl2@TV_Programme,rtl2_next,rtl2_next_time,RTL2_abend@TV_Programme_abend TV_Programme:VOX@TV_Programme,VOX_next,VOX_next_time,VOX_abend@TV_Programme_abend TV_Programme:ARD@TV_Programme,ARD_next,ARD_next_time,ARD_abend@TV_Programme_abend TV_Programme:ZDF@TV_Programme,ZDF_next,ZDF_next_time,ZDF_abend@TV_Programme_abend
nameIcon { "13THSTREET" => '13thstreet', Pro7 => 'pro7', "SAT.1" => 'sat1', RTL => 'rtl', Sport1 => 'sport1', ZDF => 'zdf', ARD => 'ard',rtl2 => 'rtl2',KABEL1 => 'kabel1',VOX => 'vox' }
nameStyle style="color:yellow;font-weight:bold"
noheading 1
room Wohnzimmer
style style="width:530px;color:white;font-size:15px"
valueFormat {return substr($VALUE,0,30) if( length($VALUE) > 30 ); return $VALUE }
Das ganze gelbe gehört da nicht hin
schau dir dein mapping an...
So einfach kann es sein.....Keine Ahnung wie ich das darein bekommen hab.
Danke für den Hinweis, jetzt passt es wieder
Ich brauche Hilfe beim Parameter sortFn einer readingsGroup. Bei einer anderen readingsGroup habe ich es bereits einmal hinbekommen, aber dieses Mal sehe ich nicht wie ich es formulieren muss.
Ich habe eine readingsGroup, die aus diversen Devices ein userReading zusammensammelt, das das Datum des letzten Batteriewechsels enthält. Diese Readings sehen so aus:
setstate Tuer.Keller 2016-11-21 00:39:24 batteriewechsel 2016-06-19
also ein Datum in der Form yyyy-mm-dd. Müsste sich also leicht chronologisch sortieren lassen.
Hier die Definition der readingsGroup
defmod rg_Batteriewechsel readingsGroup <Gerät mit Batterie>,<Datum des Batteriewechsels> .*:batteriewechsel
attr rg_Batteriewechsel mapping %ALIAS
attr rg_Batteriewechsel notime 1
attr rg_Batteriewechsel valueFormat { substr($VALUE,8,2).".".substr($VALUE,5,2).".".substr($VALUE,0,4) }
Wie muss ich sortFn formulieren, damit die Einträge chronologisch, also nach "batteriewechsel" sortiert werden. Ich bekomme es einfach nicht hin.
damit sortiert wird musst du im define die spalte und den teil des readings angeben nach dem sortiert werden soll:
defmod rg_Batteriewechsel readingsGroup <Gerät mit Batterie>,<Datum des Batteriewechsels> .*:@1,batteriewechsel.(.*)
sortFn musst du nicht setzen. der default ist alphabetisch. das sollte passen. falls du es umgekehrt haben möchtes:@{$b}[1] cmp @{$a}[1]
gruss
andre
ok, das sieht viel einfacher aus als alles was ich probiert habe. Danke.
Aber: es erfolgt ein sofortiger Absturz von fhem. Im Log steht als letzte Meldung: Can't use an undefined value as an ARRAY reference at ./FHEM/33_readingsGroup.pm line 800.
Hallo, ich habe seit einiger Zeit Probleme mit meinem Fhem Server und habe die Vermutung das es an meiner Readingsgroup für meine Heizungsregler liegt. Einen Beitrag dazu habe ich hier erstellt.
https://forum.fhem.de/index.php/topic,10607.msg529469.html#msg529469 (https://forum.fhem.de/index.php/topic,10607.msg529469.html#msg529469)
Wenn ich zu Hause bin, stelle ich dann noch die Group ein. Ich hoffe ihr habt eine Idee dazu warum sich mein Fehm immer aufhängt. Vorerst habe ich die Group für die Heizung erst mal raus genommen, wobei ich auch noch Readingsgroups für andere Funktionen scheinbar problemlos betreiben kann.
So hier noch der Code der ReadingsGroup sowie der LOG Auszug. Wenn ich über die ReadingsGroup z.B. die den Mode Automatik/Manual setze passiert es, dass der Server hängen bleibt und weder die Web Oberfläche erreichbar ist noch eine Funkkommunikation stattfindet.
define heatingInfo readingsGroup <%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Feuchte>,<Ventil>,<Modus>,<Lock>,<Bat>\
WT_EG_WO_Climate:desired-temp,<sollsetz>,measured-temp@WT_EG_WO,humidity@WT_EG_WO,actuator@WT_EG_WO,controlMode,R-btnLock@WT_EG_WO,battery@WT_EG_WO \
WT_EG_KU_Climate:desired-temp,<sollsetz>,measured-temp@WT_EG_KU,humidity@WT_EG_KU,actuator@WT_EG_KU,controlMode,R-btnLock@WT_EG_KU,battery@WT_EG_KU \
WT_EG_DU_Climate:desired-temp,<sollsetz>,measured-temp@WT_EG_DU,humidity@WT_EG_DU,actuator@WT_EG_DU,controlMode,R-btnLock@WT_EG_DU,battery@WT_EG_DU \
WT_EG_FL_Climate:desired-temp,<sollsetz>,measured-temp@WT_EG_FL,humidity@WT_EG_FL,actuator@WT_EG_FL,controlMode,R-btnLock@WT_EG_FL,battery@WT_EG_FL \
WT_OG_BA_Climate:desired-temp,<sollsetz>,measured-temp@WT_OG_BA,humidity@WT_OG_BA,actuator@WT_OG_BA,controlMode,R-btnLock@WT_OG_BA,battery@WT_OG_BA \
WT_OG_SC_Climate:desired-temp,<sollsetz>,measured-temp@WT_OG_SC,humidity@WT_OG_SC,actuator@WT_OG_SC,controlMode,R-btnLock@WT_OG_SC,battery@WT_OG_SC \
WT_OG_CH_Climate:desired-temp,<sollsetz>,measured-temp@WT_OG_CH,humidity@WT_OG_CH,actuator@WT_OG_CH,controlMode,R-btnLock@WT_OG_CH,battery@WT_OG_CH \
WT_OG_SA_Climate:desired-temp,<sollsetz>,measured-temp@WT_OG_SA,humidity@WT_OG_SA,actuator@WT_OG_SA,controlMode,R-btnLock@WT_OG_SA,battery@WT_OG_SA
attr heatingInfo cellStyle { "r:1"=>'style="font-weight:bold;;font-size:16px"',"r:2,c:0"=>'style="font-weight:bold"',"r:6,c:0" =>'style="font-weight:bold"',"r:9,c:0"=>'style="font-weight:bold"',"r:12,c:0"=>'style="font-weight:bold"'}
attr heatingInfo commands { 'heatingInfo.sollsetz'=>'desired-temp:', "controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual", "R-btnLock.on"=>"set %DEVICE regSet btnLock off", "R-btnLock.off"=>"set %DEVICE regSet btnLock on"}
attr heatingInfo group Räume
attr heatingInfo noheading 1
attr heatingInfo room Heizung
attr heatingInfo style style="border:0px;;background:none;;box-shadow:none"
attr heatingInfo valueFormat {if($READING eq "actuator" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10}}
attr heatingInfo valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF', 'controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02', 'humidity'=>'humidity@6FD9FB', 'R-btnLock.on'=>'secur_locked@F7301D', 'R-btnLock.off'=>'secur_open@0CFB0C','actuator.0' => 'sani_heating_level_0@002AE0', 'actuator.10' => 'sani_heating_level_10@F8D53D','actuator.20' => 'sani_heating_level_20@FF9341', 'actuator.30' => 'sani_heating_level_30@F17F3F','actuator.40' => 'sani_heating_level_40@E46C3C', 'actuator.50' => 'sani_heating_level_50@DE3B3A','actuator.60' => 'sani_heating_level_60@A30D2D', 'actuator.70' => 'sani_heating_level_70@B40A23','actuator.80' => 'sani_heating_level_80@C40619', 'actuator.90' => 'sani_heating_level_90@D4030F','actuator.100' => 'sani_heating_level_100@E50005', 'battery.ok' => 'measure_battery_100@lightgreen', 'battery.low' => 'measure_battery_50@red','controlMode.set_boost' => 'hourglass', 'controlMode.set_auto' => 'hourglass','controlMode.set_manual' => 'hourglass', 'R-btnLock.set_on' => 'hourglass','R-btnLock.set_off' => 'hourglass'}
attr heatingInfo valueStyle {if($READING eq "measured-temp") {my $t=$VALUE;;my $d=ReadingsVal($DEVICE,'desired-temp',0);; if($t-$d>=1){'style="color:rgb(251,63,11);;"'}elsif($t-$d<=-1){'style="color:rgb(79,58,251);;"'} else{'style="color:rgb(12,251,12);;"'}}}
attr heatingInfo valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C", "actuator"=>" (".ReadingsVal($DEVICE,$READING,0)." %)", "humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." % ", "batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"}
attr heatingInfo mapping {WT_EG_WO_Climate=>"Wohnzimmer", WT_EG_KU_Climate=>"Küche", WT_EG_DU_Climate=>"Dusche", WT_EG_FL_Climate=>"Flur",WT_OG_BA_Climate=>"Bad", WT_OG_SC_Climate=>"Schlafzimmer", WT_OG_CH_Climate=>"Chiara", WT_OG_SA_Climate=>"Saskia",'desired-temp' => }
attr heatingInfo verbose 5
LOG
2016.11.27 14:03:31.228 3: CUL_HM set WT_EG_WO_Climate desired-temp 21.5
2016.11.27 14:03:48.822 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:04:08.847 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:04:08.870 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:04:54.638 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:07.717 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:08.341 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:10.819 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:13.563 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:14.838 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:14.861 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:23.470 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:23.513 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:23.558 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:23.616 5: heatingInfo: not on any display, ignoring notify
2016.11.27 14:05:23.650 3: CUL_HM set WT_EG_WO_Climate controlMode manual
Gruß cerberus
@hartenthaler: der absturz ist ab der morigen version abgefangen. das problem tritt auf wenn die regex für das reading nicht stimmt und die list leer ist. d.h. batteriewechsel.(.*) passt scheinbar nicht auf deine readings.
@cerberus: was genau heisst hängen bleiben? läuft fhem tatsächlich noch? was siehst du wenn du dich mit strace -p <fhem pid> an den fhem prozess hängst?
das log sagt nur das die readingsGroup gerade nicht angezeigt wird und deshalb auch nichts weiter macht. was komisch ist bzw. gar nicht geht wenn du über die readingsGroup etwas einstellst.
Fein, dann werde ich mit der stabilisierten Version dann weiter testen. Danke Dir!
Was funktioniert (aber eben unsortiert)
defmod rg_Batteriewechsel readingsGroup <Gerät mit Batterie>,<Datum des Batteriewechsels> .*:batteriewechsel
Es wird hier nicht sortiert, wenn ich eine sortFn angebe
{ @{$b}[1] cmp @{$a}[1] }
Alle folgenden Versionen führen mit der noch aktuellen Version zum sofortigen Absturz von fhem
defmod rg_Batteriewechsel readingsGroup <Gerät mit Batterie>,<Datum des Batteriewechsels> .*:@1,batteriewechsel.(.*)
defmod rg_Batteriewechsel readingsGroup <Gerät mit Batterie>,<Datum des Batteriewechsels> .*:@1,batteriewechsel(.*)
defmod rg_Batteriewechsel readingsGroup <Gerät mit Batterie>,<Datum des Batteriewechsels> .*:@1,batteriewechsel
Hallo justme1968, danke für deine Antwort.
Ich habe nun den Fall mal nachgestellt und mit strace einen Log gemacht. Ich habe den Eindruck das nach dem set desired-temp wenn dann automatisch das getConfig durchgeführt wird, der Server überlastet ist. Im Fhem LOG kann man sehen das plötzlich der RS485 LAN Gateway neu startet, das WEB Frontend hängt dann auch und die Funkkommunikation. Nach einer Weile fängt sich der Server wieder, aber oft hatte ich es auch schon das nichts mehr ging.
Grüße
cerberus
Ich habe hier https://forum.fhem.de/index.php/topic,61705.msg531630.html#msg531630 (https://forum.fhem.de/index.php/topic,61705.msg531630.html#msg531630)
ein Problem mit readingsChange und Readingsgroup geschildert. Das Problem könnte im Modul RG liegen.
Ich bitte mal um gelegentliche Prüfung, ob es ein Bug ist. Werte aus readingsChange werden in der RG nicht aktualisiert.
Hat aber keine Eile, da ich das Konstrukt nur einmal zum Test benutzt habe.
Vielen Dank.
Hi, habe heute folgende Warnung im Log.
2016.12.02 22:29:40.589 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 528.
2016.12.02 22:29:40.590 1: stacktrace:
2016.12.02 22:29:40.590 1: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (527)
2016.12.02 22:29:40.591 1: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (1048)
2016.12.02 22:29:40.591 1: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1137)
2016.12.02 22:29:40.592 1: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (2838)
2016.12.02 22:29:40.592 1: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (1547)
2016.12.02 22:29:40.592 1: main::FW_makeDeviceLine called by ./FHEM/01_FHEMWEB.pm (1655)
2016.12.02 22:29:40.592 1: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (913)
2016.12.02 22:29:40.593 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (456)
2016.12.02 22:29:40.593 1: main::FW_Read called by fhem.pl (3264)
2016.12.02 22:29:40.593 1: main::CallFn called by fhem.pl (672)
2016.12.02 22:30:00.259 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 528.
2016.12.02 22:30:00.260 1: stacktrace:
2016.12.02 22:30:00.260 1: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (527)
2016.12.02 22:30:00.261 1: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (1048)
2016.12.02 22:30:00.261 1: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1137)
2016.12.02 22:30:00.261 1: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (2838)
2016.12.02 22:30:00.262 1: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (1547)
2016.12.02 22:30:00.262 1: main::FW_makeDeviceLine called by ./FHEM/01_FHEMWEB.pm (1655)
2016.12.02 22:30:00.262 1: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (913)
2016.12.02 22:30:00.263 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (456)
2016.12.02 22:30:00.263 1: main::FW_Read called by fhem.pl (3264)
2016.12.02 22:30:00.263 1: main::CallFn called by fhem.pl (672)
Wo hab ich meinen Fehler?
Zitat von: hartenthaler am 27 November 2016, 16:55:39
Ich habe eine readingsGroup, die aus diversen Devices ein userReading zusammensammelt, das das Datum des letzten Batteriewechsels enthält. Diese Readings sehen so aus:
setstate Tuer.Keller 2016-11-21 00:39:24 batteriewechsel 2016-06-19
also ein Datum in der Form yyyy-mm-dd. Müsste sich also leicht chronologisch sortieren lassen.
Hier die Definition der readingsGroup
defmod rg_Batteriewechsel readingsGroup <Gerät mit Batterie>,<Datum des Batteriewechsels> .*:batteriewechsel
attr rg_Batteriewechsel mapping %ALIAS
attr rg_Batteriewechsel notime 1
attr rg_Batteriewechsel valueFormat { substr($VALUE,8,2).".".substr($VALUE,5,2).".".substr($VALUE,0,4) }
Das ergibt eine Liste in folgender Form
Gerät mit Batterie Datum des Batteriewechsels
-----------------------------------------------------------
Balkontür Schlafzimmer Flügel 07.08.2016
Balkontür Wohnzimmer Flügel 10.08.2016
Tür Keller 19.06.2016
...
Wie kann ich diese eigentlich schon fast perfekte Liste nun noch nach dem Datum sortieren (älteste zuerst)? Die Angabe einer sortFn hat nicht funktioniert bzw. ich habe es nicht hinbekommen.
Andre, Du hattest mir folgenden Rat gegeben:
Zitat von: justme1968 am 27 November 2016, 17:25:50
damit sortiert wird musst du im define die spalte und den teil des readings angeben nach dem sortiert werden soll:
defmod rg_Batteriewechsel readingsGroup <Gerät mit Batterie>,<Datum des Batteriewechsels> .*:@1,batteriewechsel.(.*)
Das hatte zum Absturz von fhem geführt. Nachdem mit der neuen Version des Moduls dieses Problem nun behoben ist, konnte ich weiter testen, aber alle Versuche führten zu keinem brauchbaren Ergebnis. Entweder ist die Liste dann ganz leer oder die erste Spalte mit den Gerätenamen ist leer. Und sortiert wird auch nicht. Eigentlich ist die Liste doch so einfach strukturiert, da müsste ich es doch hinbekommen. Tue ich aber nicht. Grrr. Hilfe!
wir hatten aneinander vorbei geredet.
mit der sortFn kann man nach (teilen) der reading namen sortieren. nicht nach dem inhalt der readings.
nach dem inhalt der readings zu sortieren ist aktuell nicht möglich. unter anderem weil ja die readings per longpoll aktualisiert werden und dann eigentlich auch die reihenfolge korrigiert werden muss.
da die readingsGroup die readings einfach der reihenfolge nach durchgeht und die tabelle aufbaut ist ein weiteres problem. hier zu sortieren würde ein zweistufiges vorgehen nötig machen.
aber: das was du möchtest lässt sich vermutlich hiermit: https://forum.fhem.de/index.php/topic,61020.0.html (https://forum.fhem.de/index.php/topic,61020.0.html) besser lösen. ich habe es aber noch nicht probiert und weiss nicht ob und wie man eine default sortierung vorgeben kann.
gruss
andre
Hab heute noch ein paar Meldungen mehr im LOG:
2016.12.04 20:10:56.027 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1310.
2016.12.04 20:10:56.028 1: stacktrace:
2016.12.04 20:10:56.029 1: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (1307)
2016.12.04 20:10:56.029 1: main::readingsGroup_Notify called by fhem.pl (3264)
2016.12.04 20:10:56.030 1: main::CallFn called by fhem.pl (3186)
2016.12.04 20:10:56.030 1: main::DoTrigger called by fhem.pl (4077)
2016.12.04 20:10:56.031 1: main::readingsEndUpdate called by ./FHEM/70_ENIGMA2.pm (2246)
2016.12.04 20:10:56.032 1: main::ENIGMA2_ReceiveCommand called by FHEM/HttpUtils.pm (89)
2016.12.04 20:10:56.032 1: main::HttpUtils_Err called by fhem.pl (2866)
2016.12.04 20:10:56.033 1: main::HandleTimeout called by fhem.pl (604)
2016.12.04 20:11:22.305 2: Cul433 IT_set: Steckdose_Buero_Schrank_Licht off
2016.12.04 20:31:14.050 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 528.
2016.12.04 20:31:14.051 1: stacktrace:
2016.12.04 20:31:14.051 1: main::__ANON__ called by ./FHEM/33_readingsGroup.pm (527)
2016.12.04 20:31:14.052 1: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (1048)
2016.12.04 20:31:14.052 1: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1519)
2016.12.04 20:31:14.052 1: main::readingsGroup_Get called by fhem.pl (3264)
2016.12.04 20:31:14.053 1: main::CallFn called by fhem.pl (1690)
2016.12.04 20:31:14.053 1: main::CommandGet called by fhem.pl (1085)
2016.12.04 20:31:14.053 1: main::AnalyzeCommand called by fhem.pl (955)
2016.12.04 20:31:14.054 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2274)
2016.12.04 20:31:14.054 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (728)
2016.12.04 20:31:14.054 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (456)
2016.12.04 20:31:14.054 1: main::FW_Read called by fhem.pl (3264)
2016.12.04 20:31:14.055 1: main::CallFn called by fhem.pl (672)
Zitat von: justme1968 am 04 Dezember 2016, 18:30:48
...
aber: das was du möchtest lässt sich vermutlich hiermit: https://forum.fhem.de/index.php/topic,61020.0.html (https://forum.fhem.de/index.php/topic,61020.0.html) besser lösen. ich habe es aber noch nicht probiert und weiss nicht ob und wie man eine default sortierung vorgeben kann.
Danke Andre, das war's genau. Funktionierte auf Anhieb. Es gibt keine Standardvorgabe für die Sortierung, man klickt auf einen Spaltenkopf und es erscheint ein kleiner Pfeil und die Tabelle ist sortiert. Nochmal klicken sortiert in der anderen Reihenfolge. Allerdings natürlich entsprechend des angezeigten Inhalts. Ich musste also mein angepasstes Format dd.mm.yyyy wieder wegnehmen, damit die Originalinhalte mit yyyy-mm-dd angezeigt und so nach Datum sortierbar sind. Wenn ich in die .js einsteigen würde, ginge das sicher auch noch anders. Aber der Hauptzweck zu sehen welche Batterie am ältesten ist, ist nun gut erfüllt.
Danke für den Hinweis!
@hartenthaler: ich habe eine erste version eingecheckt die die sortier funktionalität aus dem anderen thread direkt eingebaut hat. mit der zusätzlichen möglichkeit automatisch nach dem seitenaufbau schon nach einer spalte zu sortieren. mehr hier: https://forum.fhem.de/index.php/topic,62440.0.html (https://forum.fhem.de/index.php/topic,62440.0.html)
Hallo,
haben folgende Readings Group. Ist ein Bsp. aus diesem Beitrag https://forum.fhem.de/index.php/topic,26479.msg202888.html#msg202888 (https://forum.fhem.de/index.php/topic,26479.msg202888.html#msg202888).
Leider werden aus für mich nicht verständlichen Gründen die pull-down (drop-down) Menüs nicht mehr angezeigt.
List auf die Readingsgroup:
Internals:
CFGFN /opt/fhem/FHEM/red.cfg
DEF <>,<Ist-,>,<Regler>,<Batterie>,<Tages->,<Werktag>,<>,<Wochenende>,<>,<Wochenplan>
<>,<Solltemperatur>,<Lock>,<Modus>,<Temperatur>,<start>,<ende>,<start>,<ende>,<schreiben>
.*_Clima:measured-temp,ValvePosition,batteryLevel@{getDevice($DEVICE)},imposible@{$DEVICE},<{getDayTemp($DEVICE)}>,<{getTime($DEVICE,"R_2_tempListMon","start")}>,<{getTime($DEVICE,"R_2_tempListMon","end")}>,<{getTime($DEVICE,"R_0_tempListSat","start")}>,<{getTime($DEVICE,"R_0_tempListSat","end")}>,state@{getDevice($DEVICE)},<br>,impossible@{$DEVICE},desired-temp,R-globalBtnLock@{getDevice($DEVICE)},imposible@{$DEVICE},controlMode,state@d_dayTemp,state@d_workdayStart,state@d_workdayEnd,state@d_saturdayStart,state@d_saturdayEnd,imposible@{$DEVICE},<%system_fhem_update>
NAME Thermostate
NR 709
NTFY_ORDER 50-Thermostate
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
BR_Thermostat_Clima 1
DR_Thermostat_Clima 1
FBR_Thermostat_Clima 1
FBRn_Thermostat_Clima 1
KIT_Thermostat_Clima 1
LR_Thermostat_Clima 1
MBR_Thermostat_Clima 1
NBR_Thermostat_Clima 1
RR_Thermostat_Clima 1
Content2:
BR_Thermostat 1
BR_Thermostat_Clima 1
DR_Thermostat 1
DR_Thermostat_Clima 1
FBR_Thermostat 1
FBR_Thermostat_Clima 1
FBRn_Thermostat_Clima 1
KIT_Thermostat 1
KIT_Thermostat_Clima 1
LR_Thermostat 1
LR_Thermostat_Clima 1
MBR_Thermostat 1
MBR_Thermostat_Clima 1
NBR_Thermostat 1
NBR_Thermostat_Clima 1
OF_Thermostat 1
RR_Thermostat 1
RR_Thermostat_Clima 1
d_dayTemp 1
d_saturdayEnd 1
d_saturdayStart 1
d_workdayEnd 1
d_workdayStart 1
DEVICES:
ARRAY(0x6fba0c8)
ARRAY(0x67642d8)
ARRAY(0x6763ba0)
ARRAY(0x6e593f0)
ARRAY(0x7039aa0)
ARRAY(0x7021180)
ARRAY(0x7023648)
ARRAY(0x6fd9880)
ARRAY(0x702a600)
ARRAY(0x6869208)
ARRAY(0x6722de0)
DEVICES2:
ARRAY(0x6fba0c8)
ARRAY(0x67642d8)
ARRAY(0x6763ba0)
ARRAY(0x6e593f0)
ARRAY(0x7039aa0)
ARRAY(0x7021180)
ARRAY(0x7023648)
ARRAY(0x6fd9880)
ARRAY(0x702a600)
ARRAY(0x6869208)
ARRAY(0x6722de0)
ARRAY(0x6742d80)
ARRAY(0x6fdc1a0)
ARRAY(0x6e5e5c8)
ARRAY(0x7025278)
ARRAY(0x6ad3f68)
ARRAY(0x6ad44f0)
ARRAY(0x6761c58)
ARRAY(0x6efc3d0)
ARRAY(0x674ef78)
ARRAY(0x674c5e0)
ARRAY(0x6ece7b0)
ARRAY(0x676c7a8)
ARRAY(0x6ace660)
ARRAY(0x6ad43a0)
ARRAY(0x673d348)
ARRAY(0x6841d30)
ARRAY(0x6756ac0)
ARRAY(0x701e3c0)
ARRAY(0x675f008)
ARRAY(0x7016560)
ARRAY(0x675a728)
ARRAY(0x7022ff0)
ARRAY(0x6f754b0)
ARRAY(0x6f00838)
ARRAY(0x6f02990)
ARRAY(0x6f5aef8)
ARRAY(0x672fba0)
ARRAY(0x6764590)
ARRAY(0x674a828)
ARRAY(0x6728300)
ARRAY(0x6ececf0)
ARRAY(0x6767040)
ARRAY(0x673db10)
ARRAY(0x6738b08)
ARRAY(0x6755110)
ARRAY(0x6763bb8)
ARRAY(0x673fad8)
ARRAY(0x6f599d0)
ARRAY(0x6ec68f8)
ARRAY(0x674be18)
ARRAY(0x6e58d90)
ARRAY(0x6764338)
ARRAY(0x6e69ca0)
ARRAY(0x6e5e268)
ARRAY(0x6adc4a8)
ARRAY(0x6ace558)
ARRAY(0x6ad7030)
ARRAY(0x6e2b0b8)
ARRAY(0x6e5e5e0)
ARRAY(0x6ace108)
Fhem:
lastDefChange 3
last_update 1482922483.55619
Helper:
DEF
commands { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE', 'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE', 'state' => 'state:', 'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
nameStyle style="font-weight:bold"
valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:lightblue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}
Positions:
BR_Thermostat.batteryLevel 3:3
BR_Thermostat.state 3:9
BR_Thermostat_Clima.ValvePosition 3:2
BR_Thermostat_Clima.controlMode 4:2
BR_Thermostat_Clima.desired-temp 4:1
BR_Thermostat_Clima.measured-temp 3:1
DR_Thermostat.batteryLevel 5:3
DR_Thermostat.state 5:9
DR_Thermostat_Clima.ValvePosition 5:2
DR_Thermostat_Clima.controlMode 6:2
DR_Thermostat_Clima.desired-temp 6:1
DR_Thermostat_Clima.measured-temp 5:1
FBR_Thermostat.batteryLevel 7:3
FBR_Thermostat.state 7:9
FBR_Thermostat_Clima.ValvePosition 7:2
FBR_Thermostat_Clima.controlMode 8:2
FBR_Thermostat_Clima.desired-temp 8:1
FBR_Thermostat_Clima.measured-temp 7:1
FBRn_Thermostat_Clima.ValvePosition 9:2
FBRn_Thermostat_Clima.controlMode 10:2
FBRn_Thermostat_Clima.desired-temp 10:1
FBRn_Thermostat_Clima.measured-temp 9:1
KIT_Thermostat.batteryLevel 11:3
KIT_Thermostat.state 11:9
KIT_Thermostat_Clima.ValvePosition 11:2
KIT_Thermostat_Clima.controlMode 12:2
KIT_Thermostat_Clima.desired-temp 12:1
KIT_Thermostat_Clima.measured-temp 11:1
LR_Thermostat.batteryLevel 13:3
LR_Thermostat.state 13:9
LR_Thermostat_Clima.ValvePosition 13:2
LR_Thermostat_Clima.controlMode 14:2
LR_Thermostat_Clima.desired-temp 14:1
LR_Thermostat_Clima.measured-temp 13:1
MBR_Thermostat.batteryLevel 15:3
MBR_Thermostat.state 15:9
MBR_Thermostat_Clima.ValvePosition 15:2
MBR_Thermostat_Clima.controlMode 16:2
MBR_Thermostat_Clima.desired-temp 16:1
MBR_Thermostat_Clima.measured-temp 15:1
NBR_Thermostat.batteryLevel 17:3
NBR_Thermostat.state 17:9
NBR_Thermostat_Clima.ValvePosition 17:2
NBR_Thermostat_Clima.controlMode 18:2
NBR_Thermostat_Clima.desired-temp 18:1
NBR_Thermostat_Clima.measured-temp 17:1
OF_Thermostat.batteryLevel 9:3
OF_Thermostat.state 9:9
RR_Thermostat.batteryLevel 19:3
RR_Thermostat.state 19:9
RR_Thermostat_Clima.ValvePosition 19:2
RR_Thermostat_Clima.controlMode 20:2
RR_Thermostat_Clima.desired-temp 20:1
RR_Thermostat_Clima.measured-temp 19:1
Valueformat:
ValvePosition %0.1f %%
desired-temp %0.1f °C
measured-temp %0.1f °C
Valueicon:
R-globalBtnLock.off secur_open@red
R-globalBtnLock.off secur_open@red
R-globalBtnLock.on secur_locked@green
R-globalBtnLock.on secur_locked@green
R-globalBtnLock.set_off secur_open@orange
R-globalBtnLock.set_on secur_locked@orange
battery.low batterie@red
battery.ok batterie@green
controlMode.auto sani_heating_automatic@green
controlMode.manual sani_heating_manual@red
controlMode.set_auto sani_heating_automatic@orange
controlMode.set_manual sani_heating_manual@orange
Values:
formated:
undef
ARRAY(0x67f21c0)
ARRAY(0x6e6a150)
ARRAY(0x67f3928)
undef
undef
undef
undef
undef
ARRAY(0x7029f88)
orig:
undef
ARRAY(0x6ad6c70)
ARRAY(0x675b2e0)
ARRAY(0x6fd0080)
undef
undef
undef
undef
undef
ARRAY(0x67e32d0)
prefixsuffix:
undef
ARRAY(0x6e77400)
ARRAY(0x7029d90)
ARRAY(0x6fcb240)
undef
undef
undef
undef
undef
ARRAY(0x6fdf6d8)
Attributes:
commands { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE', 'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE', 'state' => 'state:', 'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
nameStyle style="font-weight:bold"
room Heating
sortDevices 1
valueFormat { 'desired-temp' => "%0.1f °C", 'measured-temp' => "%0.1f °C", 'ValvePosition' => "%0.1f %%" }
valueIcon { 'controlMode.auto' => 'sani_heating_automatic@green','controlMode.set_auto' => 'sani_heating_automatic@orange','controlMode.manual' => 'sani_heating_manual@red','controlMode.set_manual' => 'sani_heating_manual@orange', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red', 'R-globalBtnLock.on' => 'secur_locked@green', 'R-globalBtnLock.on ' => 'secur_locked@green', 'R-globalBtnLock.set_on ' => 'secur_locked@orange', 'R-globalBtnLock.off' => 'secur_open@red', 'R-globalBtnLock.off ' => 'secur_open@red', 'R-globalBtnLock.set_off ' => 'secur_open@orange'}
valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:light blue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}
Die Werte für die Menüs sind in dummys abgelegt.
define d_dayTemp dummy
attr d_dayTemp room Unsorted
attr d_dayTemp setList state:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0
attr d_dayTemp webCmd state
define d_workdayStart dummy
attr d_workdayStart room Unsorted
attr d_workdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayStart webCmd state
define d_workdayEnd dummy
attr d_workdayEnd room Unsorted
attr d_workdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayEnd webCmd state
define d_saturdayStart dummy
attr d_saturdayStart room Unsorted
attr d_saturdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayStart webCmd state
define d_saturdayEnd dummy
attr d_saturdayEnd room Unsorted
attr d_saturdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayEnd webCmd state
define d_sundayStart dummy
attr d_sundayStart room Unsorted
attr d_sundayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayStart webCmd state
define d_sundayEnd dummy
attr d_sundayEnd room Unsorted
attr d_sundayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayEnd webCmd state
define ntfy_toggleControlMode notify ntfy_toggleControlMode {toggleMode($EVENT)}
define ntfy_toggleBtnLock notify ntfy_toggleBtnLock {toggleLock($EVENT)}
define ntfy_setTimeTable notify ntfy_setTimeTable {setTimeTable($EVENT)}
Ergänzend noch der MyUtils Code.
sub getDevice($){
my $device = shift;
return InternalVal($device,"device","error");
}
sub toggleMode($){
my $device = shift;
my $Mode = ReadingsVal($device,"controlMode","error");
if ($Mode eq "manual")
{fhem("set $device controlMode auto")}
elsif ($Mode eq "auto")
{fhem("set $device controlMode manual")}
elsif ($Mode eq "set_manual")
{fhem("set $device controlMode auto")}
elsif ($Mode eq "set_auto")
{fhem("set $device controlMode manual")};
}
sub toggleLock($){
my $device = shift;
my $lockState = ReadingsVal($device,"R-globalBtnLock","error");
if ($lockState eq "on "){
{fhem("set $device regSet globalBtnLock off")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "off "){
{fhem("set $device regSet globalBtnLock on")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "on"){
{fhem("set $device regSet globalBtnLock off")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "off"){
{fhem("set $device regSet globalBtnLock on")}
{fhem ("set $device getConfig")}}
else
{return $lockState.$device};
}
sub getDayTemp($){
my $device = shift;
my $timeTable = ReadingsVal($device,"R_2_tempListMon","error Reading");
my $dayTemp = substr $timeTable, 17, 5;
return ($dayTemp." °C");
}
sub getTime($$$){
my $device = shift;
my $reading = shift;
my $status = shift;
my $timeTable = ReadingsVal($device,$reading,"error Reading");
my $time = "error Return";
if ($status eq "start")
{$time = substr $timeTable, 0, 6}
elsif ($status eq "end")
{$time = substr $timeTable, 11, 6}
return $time;
}
sub setTimeTable($){
my $device = shift;
my $dayTemp = ReadingsVal("d_dayTemp","state","dt error");
my $nightTemp = "15.0";
my $startWorkday = ReadingsVal("d_workdayStart","state","eds error");
my $endWorkday = ReadingsVal("d_workdayEnd","state","wde error");
my $startSaturday = ReadingsVal("d_saturdayStart","state","sds error");
my $endSaturday = ReadingsVal("d_saturdayEnd","state","sde error");
my $startSunday = ReadingsVal("d_sundayStart","state","snds error");
my $endSunday = ReadingsVal("d_sundayEnd","state","snde error");
{ fhem ("set $device tempListMon prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListTue prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListWed prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListThu prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListFri prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSat prep $startSaturday $nightTemp $endSaturday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSun exec $startSunday $nightTemp $endSunday $dayTemp 24:00 $nightTemp")};
}
Folgende Fehlermeldung bekomme ich im Log
PERL WARNING: Redundant argument in sprintf at ./FHEM/33_readingsGroup.pm line 529.
2016.12.28 19:48:27 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^batteryLevel@{ <-- HERE getDevice($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1322.
2016.12.28 19:48:27 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^imposible@{ <-- HERE $DEVICE}$/ at ./FHEM/33_readingsGroup.pm line 1322.
2016.12.28 19:48:27 1:
Wer hat bitte eine Tipp für mich.
Danke vorab
Gruß
Hallo! Ich habe ein Problem mit der Readingsgroup bezüglich eines Thermostats HM-CC-RT-DN, eingebunden per CCU2 an FHEM.
Mein aktueller Stand ist im Anhang zu sehen.
Hier der momentane Code, Probleme habe ich vor allem erstmal mit der Solltemperatur. Diese würde ich gerne per Dropdown-Menü einstellen. Scheint ja schon vielen Leuten gelungen sein, jedoch per desired-temp. Diese Option habe ich bei mir nicht gesehen, sondern wie im folgenden Code per "set %DEVICE datapoint 4.SET_TEMPERATURE 20.0" beispielsweise. Wie kann ich anstelle des festen Wertes eine Dropdownliste einbinden? :-/ Danke für eure Hilfe, ich tue mich mit der readingsgroup auch nach zahlreichen Versuchen noch extrem schwer. Meine Umsetzung zur Umschaltung von Auto / Manu / Boost funktioniert. Auch das Auslesen der Werte. Nicht funktionsfähig ist aber vor allem das Setzen der Temperatur
# Readinggroup der Werte
define HeizungRg readingsGroup <%sani_heating@D4BA90>,<>,<Soll>,<>,<Soll neu>,<>,<Ist>,<>,<Ventil>,<>,<Modus>,<>,<Batterie>,<>,<Boost>,<>,<Auto On>,<>,<Manu On>,<>,<An>,<>,<Aus>\
HM_HM_CC_RT_DN_NEQ1011241:<>,4.SET_TEMPERATURE,<>,<sollsetz>,<>,4.ACTUAL_TEMPERATURE,<>,4.VALVE_STATE,<>,<%sani_heating@D4BA90>,<>,<{if(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"ubatterie","0")>=3.0){"%measure_battery_100"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"ubatterie","0")>=2.7){"%measure_battery_75"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"ubatterie","0")>=2.5){"%measure_battery_50"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"ubatterie","0")>=2.2){"%measure_battery_25"}else{"%measure_battery_25"}}>,<>,<%sani_heating_boost>,<>,<%sani_heating_automatic>,<>,<%sani_heating_manual>,<>,<%general_an>,<>,<%general_aus>\
attr HeizungRg commands {"HeizungRg.sollsetz" => "set %DEVICE datapoint 4.SET_TEMPERATURE 20.0","HeizungRg.sani_heating_boost"=>"set %DEVICE Boost","HeizungRg.sani_heating_automatic"=>"set %DEVICE Auto","HeizungRg.sani_heating_manual"=>"set %DEVICE Manu","HeizungRg.general_an"=>"set %DEVICE on","HeizungRg.general_aus"=>"set %DEVICE off","HeizungRg.ubatterie"=>"get %DEVICE datapoint 4.BATTERY_STATE"}
attr HeizungRg eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost/datapoint 4.MANU_MODE 4.5:off/datapoint 4.MANU_MODE 30.5:on/
attr HeizungRg group Raumklima
attr HeizungRg nameStyle style="color:white;;font-weight:bold"
attr HeizungRg nolinks 1
attr HeizungRg room Wohnzimmer
attr HeizungRg valueFormat {if(($READING eq "4.ACTUAL_TEMPERATURE")or( $READING eq "4.SET_TEMPERATURE") ){ "$VALUE °C"}elsif(($READING eq "4.VALVE_STATE")){"$VALUE %"}}
# Bad-Thermostat
define HM_HM_CC_RT_DN_NEQ1011241 HMCCUDEV NEQ1011241
attr HM_HM_CC_RT_DN_NEQ1011241 IODev HMLAN1
attr HM_HM_CC_RT_DN_NEQ1011241 alias Bad_Thermostat
attr HM_HM_CC_RT_DN_NEQ1011241 ccureadingfilter (^UNREACH|LOWBAT|TEMPERATURE|VALVE_STATE|CONTROL)
attr HM_HM_CC_RT_DN_NEQ1011241 ccureadingformat datapoint
attr HM_HM_CC_RT_DN_NEQ1011241 cmdIcon Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus
attr HM_HM_CC_RT_DN_NEQ1011241 controldatapoint 4.SET_TEMPERATURE
attr HM_HM_CC_RT_DN_NEQ1011241 event-on-change-reading .*
attr HM_HM_CC_RT_DN_NEQ1011241 eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost/datapoint 4.MANU_MODE 4.5:off/datapoint 4.MANU_MODE 30.5:on/
attr HM_HM_CC_RT_DN_NEQ1011241 group Raumklima
attr HM_HM_CC_RT_DN_NEQ1011241 room Wohnzimmer
attr HM_HM_CC_RT_DN_NEQ1011241 stateFormat Temperatur: 4.ACTUAL_TEMPERATURE°C\
Batterie: 4.BATTERY_STATE[V]\
Ventil: 4.VALVE_STATE%
attr HM_HM_CC_RT_DN_NEQ1011241 statedatapoint 4.SET_TEMPERATURE
attr HM_HM_CC_RT_DN_NEQ1011241 stripnumber 1
attr HM_HM_CC_RT_DN_NEQ1011241 substexcl control
attr HM_HM_CC_RT_DN_NEQ1011241 substitute UNREACH,LOWBAT!(0|false):no,(1|true):yes;;CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on
attr HM_HM_CC_RT_DN_NEQ1011241 webCmd control:Auto:Manu:Boost:on:off
attr HM_HM_CC_RT_DN_NEQ1011241 widgetOverride control:slider,3.5,0.5,30.5,1
Zitat von: ChHerrm am 10 Januar 2017, 21:11:12
Hallo! Ich habe ein Problem mit der Readingsgroup bezüglich eines Thermostats HM-CC-RT-DN, eingebunden per CCU2 an FHEM.
...
...
define HM_HM_CC_RT_DN_NEQ1011241 HMCCUDEV NEQ1011241
attr HM_HM_CC_RT_DN_NEQ1011241 IODev HMLAN1
...
Ich habe ein Verständnisproblem: "eingebunden per CCU2" und "IODEV HMLAN1" passt doch nicht zusammen. Oder?
Ich glaube nicht, da bei mir alles gut läuft. Vlt aber auch etwas unklar da ich extra nicht den ganzen Brocken Code gepostet habe (der zumindest nichts mit der readingsgroup zu tun hatte).
Mein Problem habe ich inzwischen endlich gelöst, hier mal mein gesamter Code falls jemand mal auf ähnliche Probleme stößt. Im Anhang auch ne Darstellung davon.
# Homematic-Konfiguration
define HMLAN1 HMCCU 192.168.0.21
attr HMLAN1 rpcport 2001,9292
attr HMLAN1 rpcserver on
attr HMLAN1 stateFormat rpcstate/state
#attr HMLAN1 rpcinterval 5
#set HMLAN1 rpcserver on
# Schlafzimmer-Thermostat
define HM_HM_CC_RT_DN_NEQ1005861 HMCCUDEV NEQ1005861
attr HM_HM_CC_RT_DN_NEQ1005861 IODev HMLAN1
attr HM_HM_CC_RT_DN_NEQ1005861 alias Schlafzimmer
attr HM_HM_CC_RT_DN_NEQ1005861 ccureadingfilter (^UNREACH|LOWBAT|TEMPERATURE|VALVE_STATE|CONTROL|BATTERY_STATE)
attr HM_HM_CC_RT_DN_NEQ1005861 ccureadingformat datapoint
attr HM_HM_CC_RT_DN_NEQ1005861 cmdIcon Auto:sani_heating_automatic Manu:sani_heating_manual Boost:sani_heating_boost on:general_an off:general_aus
attr HM_HM_CC_RT_DN_NEQ1005861 controldatapoint 4.SET_TEMPERATURE
attr HM_HM_CC_RT_DN_NEQ1005861 event-on-change-reading .*
attr HM_HM_CC_RT_DN_NEQ1005861 eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost/datapoint 4.MANU_MODE 4.5:off/datapoint 4.MANU_MODE 30.5:on/
attr HM_HM_CC_RT_DN_NEQ1005861 stateFormat Temperatur: 4.ACTUAL_TEMPERATURE°C\
Batterie: 4.BATTERY_STATE[V]\
Ventil: 4.VALVE_STATE%
attr HM_HM_CC_RT_DN_NEQ1005861 statedatapoint 4.SET_TEMPERATURE
attr HM_HM_CC_RT_DN_NEQ1005861 stripnumber 1
attr HM_HM_CC_RT_DN_NEQ1005861 substexcl control
attr HM_HM_CC_RT_DN_NEQ1005861 substitute UNREACH,LOWBAT!(0|false):no,(1|true):yes;;CONTROL_MODE!0:AUTO,1:MANU,2:PARTY,3:BOOST;;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on
attr HM_HM_CC_RT_DN_NEQ1005861 webCmd control:Auto:Manu:Boost:on:off
attr HM_HM_CC_RT_DN_NEQ1005861 widgetOverride control:5.0,17.0,20.0,21.0,22.0
# Readinggroup der Werte
define HeizungRg readingsGroup <%sani_heating@D4BA90>,<Soll>,<Vorgabewert>,<Ist>,<Ventil>,<Modus>,<Batterie>,<Boost>,<Auto>,<Manu>,<An>,<Aus>\
HM_HM_CC_RT_DN_NEQ1011241:4.SET_TEMPERATURE,<sollsetz>,4.ACTUAL_TEMPERATURE,4.VALVE_STATE,4.CONTROL_MODE,4.BATTERY_STATE,<%sani_heating_boost>,<%sani_heating_automatic>,<%sani_heating_manual>,<%general_an>,<%general_aus>\
HM_HM_CC_RT_DN_NEQ1005861:4.SET_TEMPERATURE,<sollsetz>,4.ACTUAL_TEMPERATURE,4.VALVE_STATE,4.CONTROL_MODE,4.BATTERY_STATE,<%sani_heating_boost>,<%sani_heating_automatic>,<%sani_heating_manual>,<%general_an>,<%general_aus>\
HM_HM_CC_RT_DN_NEQ1011150:4.SET_TEMPERATURE,<sollsetz>,4.ACTUAL_TEMPERATURE,4.VALVE_STATE,4.CONTROL_MODE,4.BATTERY_STATE,<%sani_heating_boost>,<%sani_heating_automatic>,<%sani_heating_manual>,<%general_an>,<%general_aus>\
HM_HM_CC_RT_DN_NEQ1011157:4.SET_TEMPERATURE,<sollsetz>,4.ACTUAL_TEMPERATURE,4.VALVE_STATE,4.CONTROL_MODE,4.BATTERY_STATE,<%sani_heating_boost>,<%sani_heating_automatic>,<%sani_heating_manual>,<%general_an>,<%general_aus>
attr HeizungRg alias Heizungsübersicht
attr HeizungRg commands {'HeizungRg.sollsetz' => 'control:17.0,18.0,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,24.0,25.0',"HeizungRg.sani_heating_boost"=>"set %DEVICE Boost","HeizungRg.sani_heating_automatic"=>"set %DEVICE Auto","HeizungRg.sani_heating_manual"=>"set %DEVICE Manu","HeizungRg.general_an"=>"set %DEVICE on","HeizungRg.general_aus"=>"set %DEVICE off"}
attr HeizungRg eventMap /datapoint 4.MANU_MODE 20.0:Manu/datapoint 4.AUTO_MODE 1:Auto/datapoint 4.BOOST_MODE 1:Boost
attr HeizungRg group Raumklima
attr HeizungRg nameStyle style="color:white;;font-weight:bold"
attr HeizungRg room Wohnzimmer
attr HeizungRg sortDevices 1
attr HeizungRg valueFormat {if(($READING eq "4.ACTUAL_TEMPERATURE")or( $READING eq "4.SET_TEMPERATURE") ){ "$VALUE °C"}elsif(($READING eq "4.VALVE_STATE")){"$VALUE %"}}
attr HeizungRg valueIcon {if($READING eq "4.BATTERY_STATE" && $VALUE > 3.0){'measure_battery_100@green'}elsif($READING eq "4.BATTERY_STATE" && $VALUE > 2.8){'measure_battery_75@lightgreen'}elsif($READING eq "4.BATTERY_STATE" && $VALUE > 2.6){'measure_battery_50@yellow'}elsif($READING eq "4.BATTERY_STATE" && $VALUE >= 2.3){'measure_battery_25@orange'}elsif($READING eq "4.BATTERY_STATE" && $VALUE <= 2.2){'measure_battery_0@red'}elsif($READING eq "4.CONTROL_MODE" && $VALUE eq "AUTO"){'sani_heating_automatic@yellow'}elsif($READING eq "4.CONTROL_MODE" && $VALUE eq "MANU"){'sani_heating_manual@yellow'}elsif($READING eq "4.CONTROL_MODE" && $VALUE eq "BOOST"){'sani_heating_boost@red'}}
attr HeizungRg valueStyle {if($READING eq "4.VALVE_STATE" && $VALUE < 10){ 'style="color:blue;;;;font-weight:bold"'}elsif($READING eq "4.VALVE_STATE" && $VALUE >= 80){ 'style="color:red;;;;font-weight:bold"'}elsif($READING eq "4.ACTUAL_TEMPERATURE" && $VALUE < 19){ 'style="color:blue;;;;font-weight:bold"'}elsif($READING eq "4.ACTUAL_TEMPERATURE" && $VALUE >= 22){ 'style="color:red;;;;font-weight:bold"'}elsif($READING eq "4.SET_TEMPERATURE" && $VALUE < 19){ 'style="color:blue;;;;font-weight:bold"'}elsif($READING eq "4.SET_TEMPERATURE" && $VALUE >= 22){ 'style="color:red;;;;font-weight:bold"'}}
Mit der Bitte um HILFE: Habe das Problem immer noch und komme einfach nicht dahinter......
Zitat von: Newbee am 29 Dezember 2016, 08:44:00
Hallo,
haben folgende Readings Group. Ist ein Bsp. aus diesem Beitrag https://forum.fhem.de/index.php/topic,26479.msg202888.html#msg202888 (https://forum.fhem.de/index.php/topic,26479.msg202888.html#msg202888).
Leider werden aus für mich nicht verständlichen Gründen die pull-down (drop-down) Menüs nicht mehr angezeigt.
List auf die Readingsgroup:
Internals:
CFGFN /opt/fhem/FHEM/red.cfg
DEF <>,<Ist-,>,<Regler>,<Batterie>,<Tages->,<Werktag>,<>,<Wochenende>,<>,<Wochenplan>
<>,<Solltemperatur>,<Lock>,<Modus>,<Temperatur>,<start>,<ende>,<start>,<ende>,<schreiben>
.*_Clima:measured-temp,ValvePosition,batteryLevel@{getDevice($DEVICE)},imposible@{$DEVICE},<{getDayTemp($DEVICE)}>,<{getTime($DEVICE,"R_2_tempListMon","start")}>,<{getTime($DEVICE,"R_2_tempListMon","end")}>,<{getTime($DEVICE,"R_0_tempListSat","start")}>,<{getTime($DEVICE,"R_0_tempListSat","end")}>,state@{getDevice($DEVICE)},<br>,impossible@{$DEVICE},desired-temp,R-globalBtnLock@{getDevice($DEVICE)},imposible@{$DEVICE},controlMode,state@d_dayTemp,state@d_workdayStart,state@d_workdayEnd,state@d_saturdayStart,state@d_saturdayEnd,imposible@{$DEVICE},<%system_fhem_update>
NAME Thermostate
NR 709
NTFY_ORDER 50-Thermostate
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
BR_Thermostat_Clima 1
DR_Thermostat_Clima 1
FBR_Thermostat_Clima 1
FBRn_Thermostat_Clima 1
KIT_Thermostat_Clima 1
LR_Thermostat_Clima 1
MBR_Thermostat_Clima 1
NBR_Thermostat_Clima 1
RR_Thermostat_Clima 1
Content2:
BR_Thermostat 1
BR_Thermostat_Clima 1
DR_Thermostat 1
DR_Thermostat_Clima 1
FBR_Thermostat 1
FBR_Thermostat_Clima 1
FBRn_Thermostat_Clima 1
KIT_Thermostat 1
KIT_Thermostat_Clima 1
LR_Thermostat 1
LR_Thermostat_Clima 1
MBR_Thermostat 1
MBR_Thermostat_Clima 1
NBR_Thermostat 1
NBR_Thermostat_Clima 1
OF_Thermostat 1
RR_Thermostat 1
RR_Thermostat_Clima 1
d_dayTemp 1
d_saturdayEnd 1
d_saturdayStart 1
d_workdayEnd 1
d_workdayStart 1
DEVICES:
ARRAY(0x6fba0c8)
ARRAY(0x67642d8)
ARRAY(0x6763ba0)
ARRAY(0x6e593f0)
ARRAY(0x7039aa0)
ARRAY(0x7021180)
ARRAY(0x7023648)
ARRAY(0x6fd9880)
ARRAY(0x702a600)
ARRAY(0x6869208)
ARRAY(0x6722de0)
DEVICES2:
ARRAY(0x6fba0c8)
ARRAY(0x67642d8)
ARRAY(0x6763ba0)
ARRAY(0x6e593f0)
ARRAY(0x7039aa0)
ARRAY(0x7021180)
ARRAY(0x7023648)
ARRAY(0x6fd9880)
ARRAY(0x702a600)
ARRAY(0x6869208)
ARRAY(0x6722de0)
ARRAY(0x6742d80)
ARRAY(0x6fdc1a0)
ARRAY(0x6e5e5c8)
ARRAY(0x7025278)
ARRAY(0x6ad3f68)
ARRAY(0x6ad44f0)
ARRAY(0x6761c58)
ARRAY(0x6efc3d0)
ARRAY(0x674ef78)
ARRAY(0x674c5e0)
ARRAY(0x6ece7b0)
ARRAY(0x676c7a8)
ARRAY(0x6ace660)
ARRAY(0x6ad43a0)
ARRAY(0x673d348)
ARRAY(0x6841d30)
ARRAY(0x6756ac0)
ARRAY(0x701e3c0)
ARRAY(0x675f008)
ARRAY(0x7016560)
ARRAY(0x675a728)
ARRAY(0x7022ff0)
ARRAY(0x6f754b0)
ARRAY(0x6f00838)
ARRAY(0x6f02990)
ARRAY(0x6f5aef8)
ARRAY(0x672fba0)
ARRAY(0x6764590)
ARRAY(0x674a828)
ARRAY(0x6728300)
ARRAY(0x6ececf0)
ARRAY(0x6767040)
ARRAY(0x673db10)
ARRAY(0x6738b08)
ARRAY(0x6755110)
ARRAY(0x6763bb8)
ARRAY(0x673fad8)
ARRAY(0x6f599d0)
ARRAY(0x6ec68f8)
ARRAY(0x674be18)
ARRAY(0x6e58d90)
ARRAY(0x6764338)
ARRAY(0x6e69ca0)
ARRAY(0x6e5e268)
ARRAY(0x6adc4a8)
ARRAY(0x6ace558)
ARRAY(0x6ad7030)
ARRAY(0x6e2b0b8)
ARRAY(0x6e5e5e0)
ARRAY(0x6ace108)
Fhem:
lastDefChange 3
last_update 1482922483.55619
Helper:
DEF
commands { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE', 'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE', 'state' => 'state:', 'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
nameStyle style="font-weight:bold"
valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:lightblue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}
Positions:
BR_Thermostat.batteryLevel 3:3
BR_Thermostat.state 3:9
BR_Thermostat_Clima.ValvePosition 3:2
BR_Thermostat_Clima.controlMode 4:2
BR_Thermostat_Clima.desired-temp 4:1
BR_Thermostat_Clima.measured-temp 3:1
DR_Thermostat.batteryLevel 5:3
DR_Thermostat.state 5:9
DR_Thermostat_Clima.ValvePosition 5:2
DR_Thermostat_Clima.controlMode 6:2
DR_Thermostat_Clima.desired-temp 6:1
DR_Thermostat_Clima.measured-temp 5:1
FBR_Thermostat.batteryLevel 7:3
FBR_Thermostat.state 7:9
FBR_Thermostat_Clima.ValvePosition 7:2
FBR_Thermostat_Clima.controlMode 8:2
FBR_Thermostat_Clima.desired-temp 8:1
FBR_Thermostat_Clima.measured-temp 7:1
FBRn_Thermostat_Clima.ValvePosition 9:2
FBRn_Thermostat_Clima.controlMode 10:2
FBRn_Thermostat_Clima.desired-temp 10:1
FBRn_Thermostat_Clima.measured-temp 9:1
KIT_Thermostat.batteryLevel 11:3
KIT_Thermostat.state 11:9
KIT_Thermostat_Clima.ValvePosition 11:2
KIT_Thermostat_Clima.controlMode 12:2
KIT_Thermostat_Clima.desired-temp 12:1
KIT_Thermostat_Clima.measured-temp 11:1
LR_Thermostat.batteryLevel 13:3
LR_Thermostat.state 13:9
LR_Thermostat_Clima.ValvePosition 13:2
LR_Thermostat_Clima.controlMode 14:2
LR_Thermostat_Clima.desired-temp 14:1
LR_Thermostat_Clima.measured-temp 13:1
MBR_Thermostat.batteryLevel 15:3
MBR_Thermostat.state 15:9
MBR_Thermostat_Clima.ValvePosition 15:2
MBR_Thermostat_Clima.controlMode 16:2
MBR_Thermostat_Clima.desired-temp 16:1
MBR_Thermostat_Clima.measured-temp 15:1
NBR_Thermostat.batteryLevel 17:3
NBR_Thermostat.state 17:9
NBR_Thermostat_Clima.ValvePosition 17:2
NBR_Thermostat_Clima.controlMode 18:2
NBR_Thermostat_Clima.desired-temp 18:1
NBR_Thermostat_Clima.measured-temp 17:1
OF_Thermostat.batteryLevel 9:3
OF_Thermostat.state 9:9
RR_Thermostat.batteryLevel 19:3
RR_Thermostat.state 19:9
RR_Thermostat_Clima.ValvePosition 19:2
RR_Thermostat_Clima.controlMode 20:2
RR_Thermostat_Clima.desired-temp 20:1
RR_Thermostat_Clima.measured-temp 19:1
Valueformat:
ValvePosition %0.1f %%
desired-temp %0.1f °C
measured-temp %0.1f °C
Valueicon:
R-globalBtnLock.off secur_open@red
R-globalBtnLock.off secur_open@red
R-globalBtnLock.on secur_locked@green
R-globalBtnLock.on secur_locked@green
R-globalBtnLock.set_off secur_open@orange
R-globalBtnLock.set_on secur_locked@orange
battery.low batterie@red
battery.ok batterie@green
controlMode.auto sani_heating_automatic@green
controlMode.manual sani_heating_manual@red
controlMode.set_auto sani_heating_automatic@orange
controlMode.set_manual sani_heating_manual@orange
Values:
formated:
undef
ARRAY(0x67f21c0)
ARRAY(0x6e6a150)
ARRAY(0x67f3928)
undef
undef
undef
undef
undef
ARRAY(0x7029f88)
orig:
undef
ARRAY(0x6ad6c70)
ARRAY(0x675b2e0)
ARRAY(0x6fd0080)
undef
undef
undef
undef
undef
ARRAY(0x67e32d0)
prefixsuffix:
undef
ARRAY(0x6e77400)
ARRAY(0x7029d90)
ARRAY(0x6fcb240)
undef
undef
undef
undef
undef
ARRAY(0x6fdf6d8)
Attributes:
commands { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE', 'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE', 'state' => 'state:', 'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
nameStyle style="font-weight:bold"
room Heating
sortDevices 1
valueFormat { 'desired-temp' => "%0.1f °C", 'measured-temp' => "%0.1f °C", 'ValvePosition' => "%0.1f %%" }
valueIcon { 'controlMode.auto' => 'sani_heating_automatic@green','controlMode.set_auto' => 'sani_heating_automatic@orange','controlMode.manual' => 'sani_heating_manual@red','controlMode.set_manual' => 'sani_heating_manual@orange', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red', 'R-globalBtnLock.on' => 'secur_locked@green', 'R-globalBtnLock.on ' => 'secur_locked@green', 'R-globalBtnLock.set_on ' => 'secur_locked@orange', 'R-globalBtnLock.off' => 'secur_open@red', 'R-globalBtnLock.off ' => 'secur_open@red', 'R-globalBtnLock.set_off ' => 'secur_open@orange'}
valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:light blue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}
Die Werte für die Menüs sind in dummys abgelegt.
define d_dayTemp dummy
attr d_dayTemp room Unsorted
attr d_dayTemp setList state:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0
attr d_dayTemp webCmd state
define d_workdayStart dummy
attr d_workdayStart room Unsorted
attr d_workdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayStart webCmd state
define d_workdayEnd dummy
attr d_workdayEnd room Unsorted
attr d_workdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayEnd webCmd state
define d_saturdayStart dummy
attr d_saturdayStart room Unsorted
attr d_saturdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayStart webCmd state
define d_saturdayEnd dummy
attr d_saturdayEnd room Unsorted
attr d_saturdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayEnd webCmd state
define d_sundayStart dummy
attr d_sundayStart room Unsorted
attr d_sundayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayStart webCmd state
define d_sundayEnd dummy
attr d_sundayEnd room Unsorted
attr d_sundayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayEnd webCmd state
define ntfy_toggleControlMode notify ntfy_toggleControlMode {toggleMode($EVENT)}
define ntfy_toggleBtnLock notify ntfy_toggleBtnLock {toggleLock($EVENT)}
define ntfy_setTimeTable notify ntfy_setTimeTable {setTimeTable($EVENT)}
Ergänzend noch der MyUtils Code.
sub getDevice($){
my $device = shift;
return InternalVal($device,"device","error");
}
sub toggleMode($){
my $device = shift;
my $Mode = ReadingsVal($device,"controlMode","error");
if ($Mode eq "manual")
{fhem("set $device controlMode auto")}
elsif ($Mode eq "auto")
{fhem("set $device controlMode manual")}
elsif ($Mode eq "set_manual")
{fhem("set $device controlMode auto")}
elsif ($Mode eq "set_auto")
{fhem("set $device controlMode manual")};
}
sub toggleLock($){
my $device = shift;
my $lockState = ReadingsVal($device,"R-globalBtnLock","error");
if ($lockState eq "on "){
{fhem("set $device regSet globalBtnLock off")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "off "){
{fhem("set $device regSet globalBtnLock on")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "on"){
{fhem("set $device regSet globalBtnLock off")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "off"){
{fhem("set $device regSet globalBtnLock on")}
{fhem ("set $device getConfig")}}
else
{return $lockState.$device};
}
sub getDayTemp($){
my $device = shift;
my $timeTable = ReadingsVal($device,"R_2_tempListMon","error Reading");
my $dayTemp = substr $timeTable, 17, 5;
return ($dayTemp." °C");
}
sub getTime($$$){
my $device = shift;
my $reading = shift;
my $status = shift;
my $timeTable = ReadingsVal($device,$reading,"error Reading");
my $time = "error Return";
if ($status eq "start")
{$time = substr $timeTable, 0, 6}
elsif ($status eq "end")
{$time = substr $timeTable, 11, 6}
return $time;
}
sub setTimeTable($){
my $device = shift;
my $dayTemp = ReadingsVal("d_dayTemp","state","dt error");
my $nightTemp = "15.0";
my $startWorkday = ReadingsVal("d_workdayStart","state","eds error");
my $endWorkday = ReadingsVal("d_workdayEnd","state","wde error");
my $startSaturday = ReadingsVal("d_saturdayStart","state","sds error");
my $endSaturday = ReadingsVal("d_saturdayEnd","state","sde error");
my $startSunday = ReadingsVal("d_sundayStart","state","snds error");
my $endSunday = ReadingsVal("d_sundayEnd","state","snde error");
{ fhem ("set $device tempListMon prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListTue prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListWed prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListThu prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListFri prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSat prep $startSaturday $nightTemp $endSaturday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSun exec $startSunday $nightTemp $endSunday $dayTemp 24:00 $nightTemp")};
}
Folgende Fehlermeldung bekomme ich im Log
PERL WARNING: Redundant argument in sprintf at ./FHEM/33_readingsGroup.pm line 529.
2016.12.28 19:48:27 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^batteryLevel@{ <-- HERE getDevice($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1322.
2016.12.28 19:48:27 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^imposible@{ <-- HERE $DEVICE}$/ at ./FHEM/33_readingsGroup.pm line 1322.
2016.12.28 19:48:27 1:
Wer hat bitte eine Tipp für mich.
Danke vorab
Gruß
hallo
ich bin nun seit tagen am suchen und versuchen und riskier jetzt halt trotzde, eine frage zu stellen die evtl. schonmal beantwortet ist..
ich möchte in einer ganz einfachen readingsGroup den Wert, resp das Icon dazu vor dem Namen anzeigen, also sowas wie:
define info.battlevel readingsGroup .*:batteryLevel|[Bb]attery
anstatt
<name> <wert/icon> <datum>
möchte ich
<wert/icon> <name> <datum>
ich habs über einen umweg mit dem attribut nameIcon geschafft, indem ich das umbiege und via perl-code den Wert resp. das Icon anzeige, ist aber recht umständlich...
attr info.battlevel nameIcon {
'battery' => (ReadingsVal($DEVICE,$READING,undef) eq 'ok') ? 'radio_checked@0CFB0C' : 'radio_checked@FB5909'
}
was hab ich übersehen, kann das einfacher gemacht werden?
vielen dank für allfällige hilfe schon im voraus...
Hallo
Wie kann ich eine Readingsgroup genauso anzeigen wie einen Dummy (ohne Einrückungund den Wert rechtsbündig) ?
Beide devices sollten doch eigentlich gleich anzeigt werden (siehe Beispiel), oder ?
Gruss Peter
define check_dummy dummy
attr check_dummy eventMap on:on off:off
attr check_dummy group demo
attr check_dummy room demo
define check_readingsgroup readingsGroup check_dummy
attr check_readingsgroup group demo
attr check_readingsgroup mapping {'check_dummy' => 'readingsgroup'}
attr check_readingsgroup noheading 1
attr check_readingsgroup notime 1
attr check_readingsgroup room demo
attr check_readingsgroup style style="border:0px;;box-shadow:none"
attr check_readingsgroup valueStyle style="text-align:right"
@clumsy: du musst auf den mehrspalten modus wechseln.
du kannst mit +NAME das internal NAME als normale spalte anzeigen. alles zusammen könnte dann etwa so aussehen:
define <rg> readingsGroup .*:FILTER=battery=.+:battery,+NAME,<{ReadingsTimestamp($DEVICE,"battery","")}@battery>
attr <rg> nonames 1
den filter musst du anpassen und/oder mehrere solcher blöcke im define angeben.
@PeterS: nein. beides ist nicht gleich. readingsGroup ist was die anzeige angeht kein normales device sondern selber schon eine art gruppe. wenn du diese noch mal in eine gruppe steckst wird eine ebene zusätzlich eingerückt. man kann nur per css etwas spielen und das unauffälliger machen: https://wiki.fhem.de/wiki/ReadingsGroup#readingsGroup_in_einer_Gruppe (https://wiki.fhem.de/wiki/ReadingsGroup#readingsGroup_in_einer_Gruppe).
vielen dank!! klappt!! das "attr nonames 1" war wohl mein problem. das hatte ich übersehen/vergessen.... war wohl zu spät zu viel... danke auf jedenfall für den hinweis!
Eine readingsgroup wird bei im Raum immer als letztes angezeigt.
Die Sortierung ist auch nicht über den alias oder den rg Namen zu ändern, ist halt immer unten.
Kann man das ändern?
LG
Tom
Das geht ;D. Habe es erst heute so eingestellt. Ich habe der readingsGroup das Attribut "group" gesetzt. Mit einem Namen, der im Raum ganz oben erscheint.
Viele Grüße
Rainer
Hallo,
ich hab hier einen seltsamen Fehler bei folgendem Code:
define wz_silent_tON dummy
attr wz_silent_tON alias Ruhe
attr wz_silent_tON event-on-change-reading .*
define wz_silent_tOFF dummy
attr wz_silent_tOFF event-on-change-reading .*
define vh_wz_t readingsGroup wz_silent_tON:,<von>,state@wz_silent_tON,<bis>,state@wz_silent_tOFF
attr vh_wz_t cellStyle { "r:1,c:0"=>'style="font-weight:bold"' \
}
attr vh_wz_t commands { \
'state' => ":time" \
}
attr vh_wz_t group Heizung Wohnzimmer
attr vh_wz_t noheading 1
attr vh_wz_t nolinks
attr vh_wz_t room EG Wohnzimmer
beim ändern einer der beiden Zeiten steht plötzlich HTML-Code statt des eingestellten Wertes drin (siehe Anhang).
Nach einem reload der Seite ist jedoch der eingestellte Zeitwert richtig eingetragen.
Eigentlich hatte ich ursprünglich vor, die beiden Zeitwerte in readings nur eines Devices zu hinterlegen.
da aber meine Frage in einem anderen Thread noch unbeantwortet blieb, gehen mir so langsam die Ideen aus, wie ich die grunsätzliche Problemstellung lösen kann.
Hallo Andre,
ich habe seit einem kürzlichen Update ein Problem mit berechneten Werten mittel "alwaysTrigger" auf "2".
Folgendes ist meine Definition:
define heizung_Sammler_Stellventile readingsGroup <Name>,<Modus>,<Wunschtemperatur>,<Ventilstellung> <hr> type=HeatingThermostat:mode,desiredTemperature,valveposition <hr> heizung_Sammler_Stellventile:<Max. Ventilstellung>,<>,<>,$max(:3)@ventilmax
attr heizung_Sammler_Stellventile userattr event-on-change-reading
attr heizung_Sammler_Stellventile alias Heizung Stellventile
attr heizung_Sammler_Stellventile alwaysTrigger 2
attr heizung_Sammler_Stellventile event-on-change-reading .*
attr heizung_Sammler_Stellventile nameStyle style="font-weight: bold;;"
attr heizung_Sammler_Stellventile valueFormat { desiredTemperature => "%.1f °C", valveposition => "%i %", ventilmax => "%i %" }
attr heizung_Sammler_Stellventile valueStyle { desiredTemperature => 'style="text-align:right"', valveposition => 'style="text-align:right"', ventilmax => 'style="text-align:right"' }
Damit werden mir alle Max Heizungsthermostate mit ihren Ventilstellungen angezeigt.
Ziel ist, die maximale Ventilstellung zu ermitteln, damit ich danach meine Heizungsanlage einregeln kann (eine Bedarfssteuerung).
Früher wurde das Ventilmax-Reading stets bei Änderung irgendeiner Ventilstellung aktualisiert. Mittlerweile nur noch, wenn die Readingsgroup selbst angezeigt wird.
Das ist natürlich blöd, da deswegen heute Nacht die Heizungsanlage aus geblieben ist :(
Kann ich da irgendwas machen, bzw. habe ich etwas fehlerhaft bezogen auf die aktuelle Version eingestellt?
Danke schon mal im Vorraus...
Grüße
Reiner
@Peedy2495: zeig mal bitte einen vorher/nacher screenshot
@Reinerlein: ich denke ich habe das problem behoben.
die ursache war das direkt nach einem fhem neu start fhemweb noch keine seite ausgeliefert hatte und deshalb eine interne variable noch nicht gesetzt wurde. um einen die entsprechende perl meldung im log zu vermeiden habe ich die komplette initialisierung übersprungen. das hat dann leider auch die readings und events unterdrückt.
ab morgen im update.
gruss
andre
Hallo & danke das du dir das mal anschauen willst ...
also bevor ich etwas einstellen will, ist nach dem Ersten laden der Seite alles ok ...
danach ist, wie schon erwähnt, der html-Code drin.
Was ich jedoch nun gesehen habe ist, dass manchmal kurz der neue Wert angezeigt wird, jedoch danach der html-Code hinein geschrieben wird.
beim öffnen mit dem enthaltenen html-Code im Anzeigefeld sind auch alle Slider auf "0"
Ich hoffe, es hilft bei der Suche ...
Bis bald ... Peedy
Zitat von: Peedy2495 am 21 Februar 2017, 12:46:57
beim öffnen mit dem enthaltenen html-Code im Anzeigefeld sind auch alle Slider auf "0"
Da skann ich auch bestätigen. Vorallem am Android-Browser kommt das immer wieder vor.
Ich habe Firefox (Win7, Linux & Android), Dolphin (Android), IE11 (Win7), und Konqueror (Linux, KDE) ausprobiert.
Überall das selbe Ergebnis ...
Hi Andre,
bei der von mir beschriebenen readingsGroup mit den Ventilständen scheint es jetzt zu gehen. Dafür habe ich das Problem, dass eine andere die Readings nicht (mehr?) aktualisiert:
define heizung_Sammler_FK readingsGroup <Name>,<Zustand>,<Zeitpunkt> <hr> list heizung_[^_]+_FK.*:state <hr> heizung_Sammler_FK:<Anzahl ;offene>,<>,$count(opened)(:1)@open heizung_Sammler_FK:<Anzahl ;geschlossene>,<>,$count(closed)(:1)@close heizung_Sammler_FK:<Gesamtanzahl>,<>,$scalar(:1)@count
attr heizung_Sammler_FK alias Heizung Fensterübersicht
attr heizung_Sammler_FK alwaysTrigger 2
attr heizung_Sammler_FK group 1. Grundsätzliches
attr heizung_Sammler_FK mapping $DEVICE
attr heizung_Sammler_FK nameStyle style="font-weight: bold;; text-align: left;;"
attr heizung_Sammler_FK nostate 1
attr heizung_Sammler_FK room Heizung
attr heizung_Sammler_FK valueStyle { open => 'style="text-align:right"', close => 'style="text-align:right"', count => 'style="text-align:right"' }
setstate heizung_Sammler_FK 2017-02-26 11:33:44 close 8
setstate heizung_Sammler_FK 2017-02-26 11:33:44 count 10
setstate heizung_Sammler_FK 2017-02-26 11:33:44 open 2
Hier sollen die offenen und geschlossenen Fenster ausgewertet werden. Die Summen unter der Liste sind stets korrekt. Die entsprechenden Readings allerdings nicht.
Auf dem Screenshot ist der Unterschied direkt zu sehen... Die Werte unter der Liste sind die korrekten...
Noch ein Problem? oder bin ich der Fehler ? :)
Danke schon mal...
Edit: Gerade beobachtet: Er aktualisiert die Werte nur, wenn ich die readingsGroup gerade auf dem Bildschirm sehe, und ein Fensterkontakt gerade aktualisiert... Bei meinem anderen Problem musste ich die readingsGroup einmal anzeigen, dann ging es aber auch im Hintergrund...
Grüße
Reiner
Hi Andre,
ich muss das nochmal hochholen... ich muss mir sonst was anders einfallen lassen, da auf diesen Werten meine Fernwärmestation gesteuert wird...
Mittlerweile geht auch die andere ReadingsGroup mit den Ventilständen nicht mehr...
Eine Idee?
Danke schon mal...
Grüße
Reiner
ich konnte das problem noch nicht reproduzieren. eigentlich sollte einfach alles gehen ...
was heisst es geht jetzt auch nicht mehr? mach dem update ging es und dann plötzlich nicht mehr?
gruss
andre
Hi Andre,
zumindest dachte ich, dass es geht, war aber wahrscheinlich nicht so. Es ist aktuell so, dass die Readings meistens erst aktualisiert werden, wenn ich die Readingsgroup auf dem Bildschirm sehe, also die Detaildarstellung (das mit allen Internals, Readings und Attributen). Diese Seite muss ich ein paar Sekunden offen haben, dann wird das Reading (oder die Readings) aktualisiert, und erhält den Wert (bzw. die Werte), der (oder die) bereits unter der Auflistung selbst dargestellt werden...
Im Hintergrund wird es nicht regelmäßig (aber irgendwann dann halt doch) aktualisiert. Eben habe ich nochmal bei der Ventilsteuerung geschaut (auf einer anderen Seite als der ReadingsGroup-Seite wird ein Graph mit den ermittelten Ventilstellungen angezeigt): Vor 15 Minuten hat er den Wert aktualisiert, ohne dass ich mir die Readingsgroup angeschaut hätte...
Was kann ich denn loggen, damit dir das bei der Problemlösung hilft?
Grüße
Reiner
Hi Andre,
ich habe das Problem vermutlich gefunden.
Ich hatte in meiner ReadingsGroup Heizungsthermostate mit ihren Ventilstellungen und der gewünschten Temperatur aufgelistet.
Außerdem hatte ich für das Format der Werte das Attribut valueFormat definiert.
Leider sind im Reading "desiredTemperature" nicht nur Zahlenwerte, sondern auch Texte enthalten (was ich persönlich sehr unglücklich finde), sodass mein Format "%.1f °C" immer Fehler der Art "Argument "on" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 529." im Log verursacht hat.
Des Weiteren hatte ich für meinen Prozent-ValueFormat einen Fehler. Ich hatte "%i %" definiert (wo es ja "%i %%" heißen muss), und damit zusätzlich noch die Meldung "Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 529." und "Invalid conversion in sprintf: end of string at ./FHEM/33_readingsGroup.pm line 1339" im Log erhalten.
Dadurch ist er immer aus der Notify-Methode ausgestiegen, und hat keinerlei Werte mehr im Hintergrund aktualisiert.
Wenn man die Readingsgroup auf dem Bildschirm gesehen hat, wurde alles immer korrekt angezeigt, sodass ich keinerlei Fehler in meiner Attribut-Definition erwartet habe (warum ging das eigentlich?).
Kann man da irgendeine Art von Überprüfung einbauen, oder etwas Fehlertoleranz bei dem "sprintf"?
Ich musste mir für meine Max-Thermostate jetzt ein UserReading bauen, welches immer einen Zahlenwert liefert (anstatt der Worte "on", "off", "eco", "comfort" und "boost").
Früher war das nicht so, dass muss mit irgendeinem Update Anfang des Jahres zusammenhängen...
Danke schon mal.
Grüße
Reiner
sehr gut. kein wunder das ich es nicht reproduzieren konnte:)
am sichersten ist es sich nicht auf die einfache valueFormat variante zu verlassen sondern selber mit printf und $NUM zu formatieren. hier kannst du dann auch auf die nicht numerischen werte prüfen. d.h. z.b. mit ..., desiredTemperature =>'{...}', ...
perl code variante des attributs zu verwenden.
du kannst auch die jeweiligen alphabetischen varianten mit eigenen spezifischeren valueFormat einträgen der art 'desiredTemperature.on' => ..., 'desiredTemperature.off' => ...
abfangen. dann reicht die einfache variante für die numerischen werte eventuell doch wieder.
da der printf format string theoretisch beliebig kompliziert ausfallen kann ist es schwierig hier etwas vorher zu überprüfen. man könnte höchstens alles in ein eval stecken und dann schauen ob es fehler gab und diese dann loggen. das würde zumindest das abbrechen verhindern.
gruss
andre
Hi Andre,
danke für die Tipps, die werde ich mir nochmal zu Gemüte führen.
Was für mich verwirrend war, war, dass es in der Detailansicht korrekt dargestellt wurde, und im Hintergrund eben zu einem Abbruch der Aktualisierung führte.
Wird denn das mit dem spezifischeren valueFormat auf jeden Fall vor dem allgemeinen Format durchgeführt/geprüft?
Dann könnte ich ja ein allgemeines für die Zahlen lassen, und nur die fünf Worte durch jeweils ein spezielles definieren...
Ich hatte dann auch versucht mit einem eval{}-Block um das sprintf den Fehler abzufangen, das war aber leider nicht erfolgreich.
Wahrscheinlich ist es besser, dass in einem eval()-String zusammenzubauen und testweise auswerten zu lassen. Dabei wäre zumindest der Fehler mit dem einzelnen Prozentzeichen aufgefallen.
Aber im Prinzip reicht die Logausgabe dann doch aus, nur abbrechen sollte der im Hintergrund nicht :)
Das heißt: eine Erweiterung wäre schon gut: Ich konnte an der Log-Errormeldung so erstmal gar nicht sehen, welche meiner 30 ReadingsGroups jetzt überhaupt betroffen war... Man selber sieht die Fehler ja sowieso nicht... sonst wären sie ja gar nicht drin :)
Grüße
Reiner
Hallo zusammen,
kann es sein das da eine Zeile zuviel an Code in der aktuellen Version von 33_readingsGroup.pm liegt?
Zeile 1384
my $value = $value;
if( $format eq 't' || $format eq 'sec' ) {
$value = TimeNow();
$value = time() - time_str2num($value) if($format eq 'sec');
} elsif( $format =~ m/^[dir]/ ) {
$value = rgVal2Num($value);
$value = int($value) if( $format eq 'i' );
$value = round($value, defined($1) ? $1 : 1) if($format =~ /^r(\d)?/);
}
my $value_style = lookup2($hash->{helper}{valueStyle},$n,$reading,$value);
--> my $value = $value; <---
my $value_orig = $value;
Ferner wollte ich mal fragen, ob mir jemand eine Debugging-Info stricken kann, mit der ich herausfinden kann, von welchem Device die folgende Meldung im Log erscheint.
Betroffene Codezeile in readingsGroup.pm
next if( $lattr eq 'IODev' && $defs{$d}{$lattr}{NAME} !~ m/^$re$/);
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Es scheint also um das Attribut IODev zu gehen, diese habe ich für meine HM-Devices gesetzt, da ich eine VCCu mit 3 IFs nutze. Wie könnte ich an der Stelle ein sinnhaftes Log einbauen um dem Fehler auf die Spur zu kommen?
Danke für Eure Hilfe und viele Grüße,
Marcel
die zeile ist mit absicht drin und korrekt.
schalte mal stacktrace ein und schau ob du mehr zur meldung siehst. ich tippe es gibt kein device das zum wert aus IODev gehört.
auf welchen wert hast du IODev gesetzt?
wenn du eine vccu verwendest ist das setzen von hand nicht nötig, IODev dann von der vccu verwendet und gesetzt.
Die Zeile "my $value = $value;"erzeugt auf jeden Fall einen Logeintrag - aber natürlich nicht so wild.
Ich habe "attr global stacktrace 1" gesetzt, bekomme aber nicht wirklich mehr Infos ins log. Muss ich verbose hochsetzen?
Zusätzlich bekomme ich jetzt noch einen neuen Eintraga aus Zeile 261, wobei das eher vom Aufruf aller rGs her rührt.
sub
rgVal2Num($)
{
my ($val) = @_;
#$val =~ s/[^-\.\d]//g if( defined($val) );
$val = ($val =~ /(-?\d+(\.\d+)?)/ ? $1 : "");
Use of uninitialized value $val in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 261.
sorry. mit der doppelten zeile hattest du doch recht. da ist beim einchecken etwas schief gegangen.
die rgVal2Num habe ich hoffentlich auch eben behoben.
mit stacktrace solltest du im log den call stack sehen. aber schau dir noch mal an was ich oben geschrieben hatte:
Zitatauf welchen wert hast du IODev gesetzt?
wenn du eine vccu verwendest ist das setzen von hand nicht nötig, IODev dann von der vccu verwendet und gesetzt.
Hallo justme,
ich war mit meiner Aussage bezüglich der IOdefs nicht wirklich präzise, es hätte heißen müssen, all HM-Devices haben ein attr IODef - welches automatisch gesetzt wurde. Manuell habe ich im Zusammenhang der Umstellung auf VCCU nur die IOgrp für die devices gesetzt.
Stacktrace hat bei mir nicht eine Zeile mehr ins Log gebracht, es erscheint immer noch nur:
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
Ich würde mich ja schon freuen zu wissen von welcher readingsGroup das ausgelöst wird. Interessanterweise kommt die Meldung auch, wenn keine rG angezeigt wird.
Ich werde morgen ersteinmal die geänderte Version laden und mal schauen ob der folgende Fehler damit eliminiert wurde.
Use of uninitialized value $val in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 261.
Danke erstmal und viele Grüße,
Marcel
ich sehe gerade die meldung kommt nicht von einem IODev attribut sondern von einem IODev internal.
schau mal bitte ob der Actiondetector in einer deiner readingsGroups landet. der scheint einen leeren hash als IODev internal zu haben. ich würde sagen das ist eigentlich ein fehler.
ab morgen wird der fehler abgefangen. ich denke du solltest den Actiondetector aber trotzdem nicht mit in der readingsGroup haben.
Hallo justme,
ah, da habe ich in die völlig falsche Richtung gedacht.
Also sollte es der Action Detector sein, dann könnte er beispielweise über solch eine rG Definition reinkommen, wenn der Filter nicht funktioniert.
<Gerät>,<letzte Bewegung>,<Helligkeit>,<Batterie> TYPE=CUL_HM:FILTER=NAME=.*_MDIR:lastMotion,brightness,battery
Ist das so erlaubt oder habe ich mir da zuviel von list abgeschaut?
Bzw. es könnte auch folgende rG sein, dort selektiere ich (da ich es nicht besser hinbekommen habe) leider auch einen virtuellen Aktor und die VCCU selbst.
<Alias>,<Model>,<SerNo>,<Battery>,<Level>,<Cover>,<Activity>,<RSSI-1>,<RSSI-2>,<RSSI-3>,<Paired> IODev=HMLAN(1|2|3):alias,!?model,!D-serialNr,!battery,!batteryLevel,!cover,!Activity,!+HMLAN1_RSSI,!+HMLAN2_RSSI,!+HMLAN3_RSSI,!PairedTo
Danke für deine Hilfe!!!
der filter sollte passen. schau was ein list mit diesem
filter ausgibt und vergleich es mir den devices die du bei einem list auf die readingsGroup in den internals siehst.
schau in die beiden devices eine leeres IODev internal haben.
Hallo justme,
Zitatschau in die beiden devices eine leeres IODev internal haben.
Das habe ich nicht wirklich verstanden.
Der andere Vergleich war erfolgreich, ein List mit identischem Filter liefert die gleichen Ergebnisse wie die rG. Ferner hat die VCCU und der virtuelle Aktor auch ein IODef eingetragen, das war also eine falsche Vermutung von mir. Der Actiondetector taucht nicht auf.
Hallo justme,
kurze Info zu meiner Erkenntnis, durch das heute Update musste ich natürlich ein "shutdown restart" machen, danach tauchte stacktrace das erste mal im Log auf und zwar so:
2017.04.20 09:23:13 1: PERL WARNING: Prototype mismatch: sub main::Log ($$) vs none at /opt/fhem//FHEM/33_readingsGroup.pm line 31, <$fh> line 322.
2017.04.20 09:23:13 1: stacktrace:
2017.04.20 09:23:13 1: main::__ANON__ called by /opt/fhem//FHEM/33_readingsGroup.pm (31)
2017.04.20 09:23:13 1: (eval) called by fhem.pl (2403)
2017.04.20 09:23:13 1: (eval) called by fhem.pl (2402)
2017.04.20 09:23:13 1: main::CommandReload called by fhem.pl (1817)
2017.04.20 09:23:13 1: main::LoadModule called by fhem.pl (1874)
2017.04.20 09:23:13 1: main::CommandDefine called by fhem.pl (1149)
2017.04.20 09:23:13 1: main::AnalyzeCommand called by fhem.pl (1018)
2017.04.20 09:23:13 1: main::AnalyzeCommandChain called by fhem.pl (1284)
2017.04.20 09:23:13 1: main::CommandInclude called by fhem.pl (1149)
2017.04.20 09:23:13 1: main::AnalyzeCommand called by fhem.pl (1018)
2017.04.20 09:23:13 1: main::AnalyzeCommandChain called by fhem.pl (1284)
2017.04.20 09:23:13 1: main::CommandInclude called by fhem.pl (527)
2017.04.20 09:23:13 1: PERL WARNING: Prototype mismatch: sub main::Log3 ($$$) vs none at /opt/fhem//FHEM/33_readingsGroup.pm line 32, <$fh> line 322.
2017.04.20 09:23:13 1: stacktrace:
2017.04.20 09:23:13 1: main::__ANON__ called by /opt/fhem//FHEM/33_readingsGroup.pm (32)
2017.04.20 09:23:13 1: (eval) called by fhem.pl (2403)
2017.04.20 09:23:13 1: (eval) called by fhem.pl (2402)
2017.04.20 09:23:13 1: main::CommandReload called by fhem.pl (1817)
2017.04.20 09:23:13 1: main::LoadModule called by fhem.pl (1874)
2017.04.20 09:23:13 1: main::CommandDefine called by fhem.pl (1149)
2017.04.20 09:23:13 1: main::AnalyzeCommand called by fhem.pl (1018)
2017.04.20 09:23:13 1: main::AnalyzeCommandChain called by fhem.pl (1284)
2017.04.20 09:23:13 1: main::CommandInclude called by fhem.pl (1149)
2017.04.20 09:23:13 1: main::AnalyzeCommand called by fhem.pl (1018)
2017.04.20 09:23:13 1: main::AnalyzeCommandChain called by fhem.pl (1284)
2017.04.20 09:23:13 1: main::CommandInclude called by fhem.pl (527)
Da ich mich in Perl nicht wirklich auskenne, hier die Frage, müssen keine Übergabeparameter definiert werden?
31: sub Log;
32: sub Log3;
Die vorherigen Meldungen:
Use of uninitialized value $val in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 261.
Use of uninitialized value in pattern match (m//) at /opt/fhem//FHEM/33_readingsGroup.pm line 121.
kann ich aktuell nicht mehr feststellen - DANKE!
Viele Grüße,
Marcel
natürlich müssen da übergabe parameter hin. der checken dafür ist gestern hängen geblieben und ich habe es nicht bemerkt.
habe es eben nachgeholt. ab morgen im update
gruss
andre
Ah Ok,
kannst du mir erklären warum die Funktion dort überhaupt definiert werden muss? Die stand doch früher auch ohne die Definition zur Verfügung!?
Gruß Marcel
man muss nicht. es hat auch nichts weiter mit deinen meldungen zu tun.
ich teste nur gerade den perl syntax checker und der meckert sonst.
Hallo,
kann mir jemand einen Tipp geben, wie die angehängte Darstellung erzeugt wird?
Mein VCONTROL-Modul liefert mir viele Werte, die ich gerne wie im Beispiel a) jeweils mit eigenem Icon und b) zweispaltig darstellen möchte.
Danke für die Hilfe.
Frank
Aller Guten Dinge sind drei! ;)
Fehlermeldung aus dem log, wenn ich FHEM neu starte!
2017.05.14 07:58:24 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^batteryLevel@{ <-- HERE getDevice($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1381.
2017.05.14 07:58:24 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^imposible@{ <-- HERE $DEVICE}$/ at ./FHEM/33_readingsGroup.pm line 1381.
2017.05.14 07:58:24 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^state@{ <-- HERE getDevice($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1381.
2017.05.14 07:58:24 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^impossible@{ <-- HERE $DEVICE}$/ at ./FHEM/33_readingsGroup.pm line 1381.
2017.05.14 07:58:24 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^R-globalBtnLock@{ <-- HERE getDevice($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1381.
Zitat von: Newbee am 29 Dezember 2016, 08:44:00
Hallo,
haben folgende Readings Group. Ist ein Bsp. aus diesem Beitrag https://forum.fhem.de/index.php/topic,26479.msg202888.html#msg202888 (https://forum.fhem.de/index.php/topic,26479.msg202888.html#msg202888).
Leider werden aus für mich nicht verständlichen Gründen die pull-down (drop-down) Menüs nicht mehr angezeigt.
List auf die Readingsgroup:
Internals:
CFGFN /opt/fhem/FHEM/red.cfg
DEF <>,<Ist-,>,<Regler>,<Batterie>,<Tages->,<Werktag>,<>,<Wochenende>,<>,<Wochenplan>
<>,<Solltemperatur>,<Lock>,<Modus>,<Temperatur>,<start>,<ende>,<start>,<ende>,<schreiben>
.*_Clima:measured-temp,ValvePosition,batteryLevel@{getDevice($DEVICE)},imposible@{$DEVICE},<{getDayTemp($DEVICE)}>,<{getTime($DEVICE,"R_2_tempListMon","start")}>,<{getTime($DEVICE,"R_2_tempListMon","end")}>,<{getTime($DEVICE,"R_0_tempListSat","start")}>,<{getTime($DEVICE,"R_0_tempListSat","end")}>,state@{getDevice($DEVICE)},<br>,impossible@{$DEVICE},desired-temp,R-globalBtnLock@{getDevice($DEVICE)},imposible@{$DEVICE},controlMode,state@d_dayTemp,state@d_workdayStart,state@d_workdayEnd,state@d_saturdayStart,state@d_saturdayEnd,imposible@{$DEVICE},<%system_fhem_update>
NAME Thermostate
NR 709
NTFY_ORDER 50-Thermostate
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
Content:
BR_Thermostat_Clima 1
DR_Thermostat_Clima 1
FBR_Thermostat_Clima 1
FBRn_Thermostat_Clima 1
KIT_Thermostat_Clima 1
LR_Thermostat_Clima 1
MBR_Thermostat_Clima 1
NBR_Thermostat_Clima 1
RR_Thermostat_Clima 1
Content2:
BR_Thermostat 1
BR_Thermostat_Clima 1
DR_Thermostat 1
DR_Thermostat_Clima 1
FBR_Thermostat 1
FBR_Thermostat_Clima 1
FBRn_Thermostat_Clima 1
KIT_Thermostat 1
KIT_Thermostat_Clima 1
LR_Thermostat 1
LR_Thermostat_Clima 1
MBR_Thermostat 1
MBR_Thermostat_Clima 1
NBR_Thermostat 1
NBR_Thermostat_Clima 1
OF_Thermostat 1
RR_Thermostat 1
RR_Thermostat_Clima 1
d_dayTemp 1
d_saturdayEnd 1
d_saturdayStart 1
d_workdayEnd 1
d_workdayStart 1
DEVICES:
ARRAY(0x6fba0c8)
ARRAY(0x67642d8)
ARRAY(0x6763ba0)
ARRAY(0x6e593f0)
ARRAY(0x7039aa0)
ARRAY(0x7021180)
ARRAY(0x7023648)
ARRAY(0x6fd9880)
ARRAY(0x702a600)
ARRAY(0x6869208)
ARRAY(0x6722de0)
DEVICES2:
ARRAY(0x6fba0c8)
ARRAY(0x67642d8)
ARRAY(0x6763ba0)
ARRAY(0x6e593f0)
ARRAY(0x7039aa0)
ARRAY(0x7021180)
ARRAY(0x7023648)
ARRAY(0x6fd9880)
ARRAY(0x702a600)
ARRAY(0x6869208)
ARRAY(0x6722de0)
ARRAY(0x6742d80)
ARRAY(0x6fdc1a0)
ARRAY(0x6e5e5c8)
ARRAY(0x7025278)
ARRAY(0x6ad3f68)
ARRAY(0x6ad44f0)
ARRAY(0x6761c58)
ARRAY(0x6efc3d0)
ARRAY(0x674ef78)
ARRAY(0x674c5e0)
ARRAY(0x6ece7b0)
ARRAY(0x676c7a8)
ARRAY(0x6ace660)
ARRAY(0x6ad43a0)
ARRAY(0x673d348)
ARRAY(0x6841d30)
ARRAY(0x6756ac0)
ARRAY(0x701e3c0)
ARRAY(0x675f008)
ARRAY(0x7016560)
ARRAY(0x675a728)
ARRAY(0x7022ff0)
ARRAY(0x6f754b0)
ARRAY(0x6f00838)
ARRAY(0x6f02990)
ARRAY(0x6f5aef8)
ARRAY(0x672fba0)
ARRAY(0x6764590)
ARRAY(0x674a828)
ARRAY(0x6728300)
ARRAY(0x6ececf0)
ARRAY(0x6767040)
ARRAY(0x673db10)
ARRAY(0x6738b08)
ARRAY(0x6755110)
ARRAY(0x6763bb8)
ARRAY(0x673fad8)
ARRAY(0x6f599d0)
ARRAY(0x6ec68f8)
ARRAY(0x674be18)
ARRAY(0x6e58d90)
ARRAY(0x6764338)
ARRAY(0x6e69ca0)
ARRAY(0x6e5e268)
ARRAY(0x6adc4a8)
ARRAY(0x6ace558)
ARRAY(0x6ad7030)
ARRAY(0x6e2b0b8)
ARRAY(0x6e5e5e0)
ARRAY(0x6ace108)
Fhem:
lastDefChange 3
last_update 1482922483.55619
Helper:
DEF
commands { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE', 'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE', 'state' => 'state:', 'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
nameStyle style="font-weight:bold"
valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:lightblue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}
Positions:
BR_Thermostat.batteryLevel 3:3
BR_Thermostat.state 3:9
BR_Thermostat_Clima.ValvePosition 3:2
BR_Thermostat_Clima.controlMode 4:2
BR_Thermostat_Clima.desired-temp 4:1
BR_Thermostat_Clima.measured-temp 3:1
DR_Thermostat.batteryLevel 5:3
DR_Thermostat.state 5:9
DR_Thermostat_Clima.ValvePosition 5:2
DR_Thermostat_Clima.controlMode 6:2
DR_Thermostat_Clima.desired-temp 6:1
DR_Thermostat_Clima.measured-temp 5:1
FBR_Thermostat.batteryLevel 7:3
FBR_Thermostat.state 7:9
FBR_Thermostat_Clima.ValvePosition 7:2
FBR_Thermostat_Clima.controlMode 8:2
FBR_Thermostat_Clima.desired-temp 8:1
FBR_Thermostat_Clima.measured-temp 7:1
FBRn_Thermostat_Clima.ValvePosition 9:2
FBRn_Thermostat_Clima.controlMode 10:2
FBRn_Thermostat_Clima.desired-temp 10:1
FBRn_Thermostat_Clima.measured-temp 9:1
KIT_Thermostat.batteryLevel 11:3
KIT_Thermostat.state 11:9
KIT_Thermostat_Clima.ValvePosition 11:2
KIT_Thermostat_Clima.controlMode 12:2
KIT_Thermostat_Clima.desired-temp 12:1
KIT_Thermostat_Clima.measured-temp 11:1
LR_Thermostat.batteryLevel 13:3
LR_Thermostat.state 13:9
LR_Thermostat_Clima.ValvePosition 13:2
LR_Thermostat_Clima.controlMode 14:2
LR_Thermostat_Clima.desired-temp 14:1
LR_Thermostat_Clima.measured-temp 13:1
MBR_Thermostat.batteryLevel 15:3
MBR_Thermostat.state 15:9
MBR_Thermostat_Clima.ValvePosition 15:2
MBR_Thermostat_Clima.controlMode 16:2
MBR_Thermostat_Clima.desired-temp 16:1
MBR_Thermostat_Clima.measured-temp 15:1
NBR_Thermostat.batteryLevel 17:3
NBR_Thermostat.state 17:9
NBR_Thermostat_Clima.ValvePosition 17:2
NBR_Thermostat_Clima.controlMode 18:2
NBR_Thermostat_Clima.desired-temp 18:1
NBR_Thermostat_Clima.measured-temp 17:1
OF_Thermostat.batteryLevel 9:3
OF_Thermostat.state 9:9
RR_Thermostat.batteryLevel 19:3
RR_Thermostat.state 19:9
RR_Thermostat_Clima.ValvePosition 19:2
RR_Thermostat_Clima.controlMode 20:2
RR_Thermostat_Clima.desired-temp 20:1
RR_Thermostat_Clima.measured-temp 19:1
Valueformat:
ValvePosition %0.1f %%
desired-temp %0.1f °C
measured-temp %0.1f °C
Valueicon:
R-globalBtnLock.off secur_open@red
R-globalBtnLock.off secur_open@red
R-globalBtnLock.on secur_locked@green
R-globalBtnLock.on secur_locked@green
R-globalBtnLock.set_off secur_open@orange
R-globalBtnLock.set_on secur_locked@orange
battery.low batterie@red
battery.ok batterie@green
controlMode.auto sani_heating_automatic@green
controlMode.manual sani_heating_manual@red
controlMode.set_auto sani_heating_automatic@orange
controlMode.set_manual sani_heating_manual@orange
Values:
formated:
undef
ARRAY(0x67f21c0)
ARRAY(0x6e6a150)
ARRAY(0x67f3928)
undef
undef
undef
undef
undef
ARRAY(0x7029f88)
orig:
undef
ARRAY(0x6ad6c70)
ARRAY(0x675b2e0)
ARRAY(0x6fd0080)
undef
undef
undef
undef
undef
ARRAY(0x67e32d0)
prefixsuffix:
undef
ARRAY(0x6e77400)
ARRAY(0x7029d90)
ARRAY(0x6fcb240)
undef
undef
undef
undef
undef
ARRAY(0x6fdf6d8)
Attributes:
commands { 'controlMode' => 'trigger ntfy_toggleControlMode $DEVICE', 'R-globalBtnLock' => 'trigger ntfy_toggleBtnLock $DEVICE', 'state' => 'state:', 'Thermostate.system_fhem_update' => 'trigger ntfy_setTimeTable $DEVICE'}
nameStyle style="font-weight:bold"
room Heating
sortDevices 1
valueFormat { 'desired-temp' => "%0.1f °C", 'measured-temp' => "%0.1f °C", 'ValvePosition' => "%0.1f %%" }
valueIcon { 'controlMode.auto' => 'sani_heating_automatic@green','controlMode.set_auto' => 'sani_heating_automatic@orange','controlMode.manual' => 'sani_heating_manual@red','controlMode.set_manual' => 'sani_heating_manual@orange', 'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red', 'R-globalBtnLock.on' => 'secur_locked@green', 'R-globalBtnLock.on ' => 'secur_locked@green', 'R-globalBtnLock.set_on ' => 'secur_locked@orange', 'R-globalBtnLock.off' => 'secur_open@red', 'R-globalBtnLock.off ' => 'secur_open@red', 'R-globalBtnLock.set_off ' => 'secur_open@orange'}
valueStyle { if($READING eq "measured-temp" && $VALUE >= 19){ 'style="color:green;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE < 19 ){ 'style="color:light blue;font-weight:bold"' }elsif( $READING eq "measured-temp" && $VALUE > 23 ){ 'style="color:red;font-weight:bold"' }else{ 'style="color:gray;font-weight:bold"' }}
Die Werte für die Menüs sind in dummys abgelegt.
define d_dayTemp dummy
attr d_dayTemp room Unsorted
attr d_dayTemp setList state:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0
attr d_dayTemp webCmd state
define d_workdayStart dummy
attr d_workdayStart room Unsorted
attr d_workdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayStart webCmd state
define d_workdayEnd dummy
attr d_workdayEnd room Unsorted
attr d_workdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_workdayEnd webCmd state
define d_saturdayStart dummy
attr d_saturdayStart room Unsorted
attr d_saturdayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayStart webCmd state
define d_saturdayEnd dummy
attr d_saturdayEnd room Unsorted
attr d_saturdayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_saturdayEnd webCmd state
define d_sundayStart dummy
attr d_sundayStart room Unsorted
attr d_sundayStart setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayStart webCmd state
define d_sundayEnd dummy
attr d_sundayEnd room Unsorted
attr d_sundayEnd setList state:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45,24:00,
attr d_sundayEnd webCmd state
define ntfy_toggleControlMode notify ntfy_toggleControlMode {toggleMode($EVENT)}
define ntfy_toggleBtnLock notify ntfy_toggleBtnLock {toggleLock($EVENT)}
define ntfy_setTimeTable notify ntfy_setTimeTable {setTimeTable($EVENT)}
Ergänzend noch der MyUtils Code.
sub getDevice($){
my $device = shift;
return InternalVal($device,"device","error");
}
sub toggleMode($){
my $device = shift;
my $Mode = ReadingsVal($device,"controlMode","error");
if ($Mode eq "manual")
{fhem("set $device controlMode auto")}
elsif ($Mode eq "auto")
{fhem("set $device controlMode manual")}
elsif ($Mode eq "set_manual")
{fhem("set $device controlMode auto")}
elsif ($Mode eq "set_auto")
{fhem("set $device controlMode manual")};
}
sub toggleLock($){
my $device = shift;
my $lockState = ReadingsVal($device,"R-globalBtnLock","error");
if ($lockState eq "on "){
{fhem("set $device regSet globalBtnLock off")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "off "){
{fhem("set $device regSet globalBtnLock on")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "on"){
{fhem("set $device regSet globalBtnLock off")}
{fhem ("set $device getConfig")}}
elsif ($lockState eq "off"){
{fhem("set $device regSet globalBtnLock on")}
{fhem ("set $device getConfig")}}
else
{return $lockState.$device};
}
sub getDayTemp($){
my $device = shift;
my $timeTable = ReadingsVal($device,"R_2_tempListMon","error Reading");
my $dayTemp = substr $timeTable, 17, 5;
return ($dayTemp." °C");
}
sub getTime($$$){
my $device = shift;
my $reading = shift;
my $status = shift;
my $timeTable = ReadingsVal($device,$reading,"error Reading");
my $time = "error Return";
if ($status eq "start")
{$time = substr $timeTable, 0, 6}
elsif ($status eq "end")
{$time = substr $timeTable, 11, 6}
return $time;
}
sub setTimeTable($){
my $device = shift;
my $dayTemp = ReadingsVal("d_dayTemp","state","dt error");
my $nightTemp = "15.0";
my $startWorkday = ReadingsVal("d_workdayStart","state","eds error");
my $endWorkday = ReadingsVal("d_workdayEnd","state","wde error");
my $startSaturday = ReadingsVal("d_saturdayStart","state","sds error");
my $endSaturday = ReadingsVal("d_saturdayEnd","state","sde error");
my $startSunday = ReadingsVal("d_sundayStart","state","snds error");
my $endSunday = ReadingsVal("d_sundayEnd","state","snde error");
{ fhem ("set $device tempListMon prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListTue prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListWed prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListThu prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListFri prep $startWorkday $nightTemp $endWorkday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSat prep $startSaturday $nightTemp $endSaturday $dayTemp 24:00 $nightTemp")};
{ fhem ("set $device tempListSun exec $startSunday $nightTemp $endSunday $dayTemp 24:00 $nightTemp")};
}
Folgende Fehlermeldung bekomme ich im Log
siehe oben....
Wer hat bitte eine Tipp für mich.
Danke vorab
Gruß
ich hab mir eine ReadingsGroup gebaut mit Einträgen von AgroWeather. (Wie) kann man denn verhindern, dass die manchmal auftretenden langen Texte den Platz auf meinem floorplan "sprengen"?
Du könntest z.B. über das Attribut valueFormat eine Längenbegrenzung des Textes berechnen lassen.
Elektrolurch
Hallo Andre,
ich bin jetzt über einen kleinen Schönheitsfehler gestolpert:
Wird das Attribut valueIcon für ein reading gesetzt z.B.
valueIcon {'Play' => '{MakeIconwithLabel("rc_PLAY.svg",$VALUE,"abspielen")}',...
und dann $VALUE z.B. im Attribut commands verwendet, dann ist in $VALUE nicht mehr der Wert des readings vorhanden, sondern der vom valueIcon.
Bei valueFormat will man ja vermutlich den modifizierten Wert vom reading weiter verwenden, bei valueIcon macht das aber keinen Sinn.
Ich habe mir den html-Quelltext der Seite angesehen, und man sieht im command-Bereich für das anklickbare Icon den Text, den valueIcon errechnet hat.
Gruß
Elektrolurch
h
ich habe eine RG erstellt und möchte gern zugehörige Icons positionieren. Dies Wettericons sollen zentriert werden in der jeweiligen Spalte
Es gelingt mir leider nicht das hinzubekommen. Ich dachte das ich es mit "cellStyle" hinbekomme dem ist nicht so. Die Icons befinden sich in "r:2" - hier habe ich schon mit "center" einige Versuche aber ich bekomme es nicht hin
Ich hänge mal das list von der RG ran, evtl. weiß es jemand und kann mir das sagen. ;)
Internals:
CFGFN ./FHEM/Wetter.cfg
DEF WUweather:<%weather_cloudy@AntiqueWhite>,fc0_title,fc0_title_night,fc1_title,fc1_title_night,fc2_title,fc2_title_night,fc3_title,fc3_title_night
WUweather:<>,fc0_icon,fc0_icon_night,fc1_icon,fc1_icon_night,fc2_icon,fc2_icon_night,fc3_icon,fc3_icon_night
WUweather:<>,fc0_condition,fc1_condition,fc2_condition,fc3_condition
WUweather:<Vorhersage>,fc0_text,fc0_text_night,fc1_text,fc1_text_night,fc2_text,fc2_text_night,fc3_text,fc3_text_night
WUweather:<Regenwahrscheinlichkeit/-menge>,fc0_pop,fc0_pop_night,fc1_pop,fc1_pop_night,fc2_pop,fc2_pop_night,fc3_pop,fc3_pop_night
WUweather:<Schnee>,fc0_snow_day,fc0_snow_night,fc1_snow_day,fc1_snow_night,fc2_snow_day,fc2_snow_night,fc3_snow_day,fc3_snow_night
WUweather:<Temperatur min|max>,fc0_low_c,fc1_low_c,fc2_low_c,fc3_low_c
WUweather:<rel. Luftfeuchtigkeit>,fc0_humidity,fc1_humidity,fc2_humidity,fc3_humidity
WUweather:<Wind (Böen)>,fc0_wind_speed,fc1_wind_speed,fc2_wind_speed,fc3_wind_speed
NAME rg_WUweather
NR 1771
NTFY_ORDER 50-rg_WUweather
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CONTENT:
WUweather 1
CONTENT2:
DEVICES:
ARRAY(0x89d72a0)
ARRAY(0x8daac00)
ARRAY(0x98babe8)
ARRAY(0x8d8ee28)
ARRAY(0x89fea68)
ARRAY(0x89fe618)
ARRAY(0x9024fc8)
ARRAY(0x8dc5d18)
ARRAY(0x8230d40)
fhem:
lastDefChange 49
last_update 1501686583.31866
helper:
DEF
valueFormat {
fc0_low_c => "{'$VALUE °C | ' . ReadingsVal('WUweather','fc0_high_c',0) . ' °C'}" , fc1_low_c => "{'$VALUE °C | ' . ReadingsVal('WUweather','fc1_high_c',0) . ' °C'}" , fc2_low_c => "{'$VALUE °C | ' . ReadingsVal('WUweather','fc2_high_c',0) . ' °C'}" , fc3_low_c => "{'$VALUE °C | ' . ReadingsVal('WUweather','fc3_high_c',0) . ' °C'}" ,
fc0_humidity => '%.0f %%' , fc1_humidity => '%.0f %%' , fc2_humidity => '%.0f %%' , fc3_humidity => '%.0f %%' ,
fc0_wind_speed => "{'$VALUE km/h (' . ReadingsVal('WUweather','fc0_wind_speed_max','') . ' km/h) ' }" , fc1_wind_speed => "{'$VALUE km/h (' . ReadingsVal('WUweather','fc1_wind_speed_max','') . ' km/h) ' }" , fc2_wind_speed => "{'$VALUE km/h (' . ReadingsVal('WUweather','fc2_wind_speed_max','') . ' km/h) ' }" , fc3_wind_speed => "{'$VALUE km/h (' . ReadingsVal('WUweather','fc3_wind_speed_max','') . ' km/h) ' }" ,
fc0_pop => "{'$VALUE % | ' . ReadingsVal('WUweather','fc0_rain_day','') . ' mm'}" , fc0_pop_night => "{'$VALUE % | ' . ReadingsVal('WUweather','fc0_rain_night','') . ' mm'}" , fc1_pop => "{'$VALUE % | ' . ReadingsVal('WUweather','fc1_rain_day','') . ' mm'}" , fc1_pop_night => "{'$VALUE % | ' . ReadingsVal('WUweather','fc1_rain_night','') . ' mm'}" , fc2_pop => "{'$VALUE % | ' . ReadingsVal('WUweather','fc2_rain_day','') . ' mm'}" , fc2_pop_night => "{'$VALUE % | ' . ReadingsVal('WUweather','fc2_rain_night','') . ' mm'}" , fc3_pop => "{'$VALUE % | ' . ReadingsVal('WUweather','fc3_rain_day','') . ' mm'}" , fc3_pop_night => "{'$VALUE % | ' . ReadingsVal('WUweather','fc3_rain_night','') . ' mm'}" ,
fc0_snow_day => '%.0f mm' , fc0_snow_night => '%.0f mm' , fc1_snow_day => '%.0f mm' , fc1_snow_night => '%.0f mm' , fc2_snow_day => '%.0f mm' , fc2_snow_night => '%.0f mm' , fc3_snow_day => '%.0f mm' , fc3_snow_night => '%.0f mm' ,
}
valueStyle {return 'style="text-align:center;font-weight:normal"' if($READING =~ m/title/); return 'style="text-align:center"'}
cellStyle:
c:1 style="font-weight:normal;font-size:14px;text-align:left;padding-left:0pt;color:LightSteelBlue;"
r:1 style="font-weight:normal;font-size:14px;text-align:center;color:LightSteelBlue;"
r:2 style="font-weight:normal;font-size:14px;text-align:center;padding-left:0pt;color:LightSteelBlue;"
r:3 style="font-weight:normal;font-size:14px;text-align:center;color:RoyalBlue;"
r:4 style="font-weight:italic;font-size:14px;text-align:center;color:AntiqueWhite;"
r:5 style="font-weight:normal;font-size:14px;text-align:left;padding-left:0pt;color:RoyalBlue;"
positions:
WUweather.fc0_condition 3:2
WUweather.fc0_humidity 8:2
WUweather.fc0_icon 2:2
WUweather.fc0_icon_night 2:3
WUweather.fc0_low_c 7:2
WUweather.fc0_pop 5:2
WUweather.fc0_pop_night 5:3
WUweather.fc0_snow_day 6:2
WUweather.fc0_snow_night 6:3
WUweather.fc0_text 4:2
WUweather.fc0_text_night 4:3
WUweather.fc0_title 1:2
WUweather.fc0_title_night 1:3
WUweather.fc0_wind_speed 9:2
WUweather.fc1_condition 3:3
WUweather.fc1_humidity 8:3
WUweather.fc1_icon 2:4
WUweather.fc1_icon_night 2:5
WUweather.fc1_low_c 7:3
WUweather.fc1_pop 5:4
WUweather.fc1_pop_night 5:5
WUweather.fc1_snow_day 6:4
WUweather.fc1_snow_night 6:5
WUweather.fc1_text 4:4
WUweather.fc1_text_night 4:5
WUweather.fc1_title 1:4
WUweather.fc1_title_night 1:5
WUweather.fc1_wind_speed 9:3
WUweather.fc2_condition 3:4
WUweather.fc2_humidity 8:4
WUweather.fc2_icon 2:6
WUweather.fc2_icon_night 2:7
WUweather.fc2_low_c 7:4
WUweather.fc2_pop 5:6
WUweather.fc2_pop_night 5:7
WUweather.fc2_snow_day 6:6
WUweather.fc2_snow_night 6:7
WUweather.fc2_text 4:6
WUweather.fc2_text_night 4:7
WUweather.fc2_title 1:6
WUweather.fc2_title_night 1:7
WUweather.fc2_wind_speed 9:4
WUweather.fc3_condition 3:5
WUweather.fc3_humidity 8:5
WUweather.fc3_icon 2:8
WUweather.fc3_icon_night 2:9
WUweather.fc3_low_c 7:5
WUweather.fc3_pop 5:8
WUweather.fc3_pop_night 5:9
WUweather.fc3_snow_day 6:8
WUweather.fc3_snow_night 6:9
WUweather.fc3_text 4:8
WUweather.fc3_text_night 4:9
WUweather.fc3_title 1:8
WUweather.fc3_title_night 1:9
WUweather.fc3_wind_speed 9:5
valueColumns:
fc0_condition colspan="2"
fc0_humidity colspan="2"
fc0_low_c colspan="2"
fc0_wind_speed colspan="2"
fc1_condition colspan="2"
fc1_humidity colspan="2"
fc1_low_c colspan="2"
fc1_wind_speed colspan="2"
fc2_condition colspan="2"
fc2_humidity colspan="2"
fc2_low_c colspan="2"
fc2_wind_speed colspan="2"
fc3_condition colspan="2"
fc3_humidity colspan="2"
fc3_low_c colspan="2"
fc3_wind_speed colspan="2"
valueIcon:
fc0_icon wunderground/black/svg/%VALUE
fc0_icon_night wunderground/black/svg/%VALUE
fc1_icon wunderground/black/svg/%VALUE
fc1_icon_night wunderground/black/svg/%VALUE
fc2_icon wunderground/black/svg/%VALUE
fc2_icon_night wunderground/black/svg/%VALUE
fc3_icon wunderground/black/svg/%VALUE
fc3_icon_night wunderground/black/svg/%VALUE
values:
formated:
undef
undef
ARRAY(0x8d4b278)
ARRAY(0x8c0f7f8)
ARRAY(0x949f040)
ARRAY(0x91bd680)
ARRAY(0x8d7e3d8)
ARRAY(0x8dc8450)
ARRAY(0x98baac8)
ARRAY(0x8958258)
orig:
undef
undef
ARRAY(0x9b45058)
ARRAY(0x9165928)
ARRAY(0x90276e8)
ARRAY(0x9119790)
ARRAY(0x8da1580)
ARRAY(0x8bc02d8)
ARRAY(0x8d71408)
ARRAY(0x8e820d8)
prefixsuffix:
undef
undef
ARRAY(0x8db2978)
ARRAY(0x8da55c8)
ARRAY(0x895fe08)
ARRAY(0x89d6b80)
ARRAY(0x8a72e80)
ARRAY(0x8d74718)
ARRAY(0x8f38208)
ARRAY(0x8d54c98)
Attributes:
alias 4 - Tages Vorschau
cellStyle { "c:1"=>'style="font-weight:normal;font-size:14px;text-align:left;padding-left:0pt;color:LightSteelBlue;"', "r:1"=>'style="font-weight:normal;font-size:14px;text-align:center;color:LightSteelBlue;"', "r:2"=>'style="font-weight:normal;font-size:14px;text-align:center;padding-left:0pt;color:LightSteelBlue;"', "r:3"=>'style="font-weight:normal;font-size:14px;text-align:center;color:RoyalBlue;"', "r:4"=>'style="font-weight:italic;font-size:14px;text-align:center;color:AntiqueWhite;"', "r:5"=>'style="font-weight:normal;font-size:14px;text-align:left;padding-left:0pt;color:RoyalBlue;"'}
group Resse Wetter
nonames 1
nostate 1
room Wettervorhersage
sortby 51
style style="border:0px;background:none;box-shadow:none"
valueColumns { 'fc0_condition' => 'colspan="2"', 'fc1_condition' => 'colspan="2"', 'fc2_condition' => 'colspan="2"', 'fc3_condition' => 'colspan="2"', 'fc0_low_c' => 'colspan="2"', 'fc1_low_c' => 'colspan="2"', 'fc2_low_c' => 'colspan="2"', 'fc3_low_c' => 'colspan="2"', 'fc0_humidity' => 'colspan="2"', 'fc1_humidity' => 'colspan="2"', 'fc2_humidity' => 'colspan="2"', 'fc3_humidity' => 'colspan="2"', 'fc0_wind_speed' => 'colspan="2"', 'fc1_wind_speed' => 'colspan="2"', 'fc2_wind_speed' => 'colspan="2"', 'fc3_wind_speed' => 'colspan="2"' }
valueFormat {
fc0_low_c => "{'$VALUE °C | ' . ReadingsVal('WUweather','fc0_high_c',0) . ' °C'}" , fc1_low_c => "{'$VALUE °C | ' . ReadingsVal('WUweather','fc1_high_c',0) . ' °C'}" , fc2_low_c => "{'$VALUE °C | ' . ReadingsVal('WUweather','fc2_high_c',0) . ' °C'}" , fc3_low_c => "{'$VALUE °C | ' . ReadingsVal('WUweather','fc3_high_c',0) . ' °C'}" ,
fc0_humidity => '%.0f %%' , fc1_humidity => '%.0f %%' , fc2_humidity => '%.0f %%' , fc3_humidity => '%.0f %%' ,
fc0_wind_speed => "{'$VALUE km/h (' . ReadingsVal('WUweather','fc0_wind_speed_max','') . ' km/h) ' }" , fc1_wind_speed => "{'$VALUE km/h (' . ReadingsVal('WUweather','fc1_wind_speed_max','') . ' km/h) ' }" , fc2_wind_speed => "{'$VALUE km/h (' . ReadingsVal('WUweather','fc2_wind_speed_max','') . ' km/h) ' }" , fc3_wind_speed => "{'$VALUE km/h (' . ReadingsVal('WUweather','fc3_wind_speed_max','') . ' km/h) ' }" ,
fc0_pop => "{'$VALUE % | ' . ReadingsVal('WUweather','fc0_rain_day','') . ' mm'}" , fc0_pop_night => "{'$VALUE % | ' . ReadingsVal('WUweather','fc0_rain_night','') . ' mm'}" , fc1_pop => "{'$VALUE % | ' . ReadingsVal('WUweather','fc1_rain_day','') . ' mm'}" , fc1_pop_night => "{'$VALUE % | ' . ReadingsVal('WUweather','fc1_rain_night','') . ' mm'}" , fc2_pop => "{'$VALUE % | ' . ReadingsVal('WUweather','fc2_rain_day','') . ' mm'}" , fc2_pop_night => "{'$VALUE % | ' . ReadingsVal('WUweather','fc2_rain_night','') . ' mm'}" , fc3_pop => "{'$VALUE % | ' . ReadingsVal('WUweather','fc3_rain_day','') . ' mm'}" , fc3_pop_night => "{'$VALUE % | ' . ReadingsVal('WUweather','fc3_rain_night','') . ' mm'}" ,
fc0_snow_day => '%.0f mm' , fc0_snow_night => '%.0f mm' , fc1_snow_day => '%.0f mm' , fc1_snow_night => '%.0f mm' , fc2_snow_day => '%.0f mm' , fc2_snow_night => '%.0f mm' , fc3_snow_day => '%.0f mm' , fc3_snow_night => '%.0f mm' ,
}
valueIcon { 'fc0_icon' => 'wunderground/black/svg/%VALUE' , 'fc1_icon' => 'wunderground/black/svg/%VALUE' , 'fc2_icon' => 'wunderground/black/svg/%VALUE' , 'fc3_icon' => 'wunderground/black/svg/%VALUE' , 'fc0_icon_night' => 'wunderground/black/svg/%VALUE' , 'fc1_icon_night' => 'wunderground/black/svg/%VALUE' , 'fc2_icon_night' => 'wunderground/black/svg/%VALUE' , 'fc3_icon_night' => 'wunderground/black/svg/%VALUE' }
valueStyle {return 'style="text-align:center;font-weight:normal"' if($READING =~ m/title/); return 'style="text-align:center"'
Hallo,
da sind wir ja schon zwei im Bunde.
Zitat:
r:1 style="font-weight:normal;font-size:14px;text-align:center;color:LightSteelBlue;"
r:2 style="font-weight:normal;font-size:14px;text-align:center;padding-left:0pt;color:LightSteelBlue;"
r:3 style="font-weight:normal;font-size:14px;text-align:center;color:RoyalBlue;"
r:4 style="font-weight:italic;font-size:14px;text-align:center;color:AntiqueWhite;"
r:5 style="font-weight:normal;font-size:14px;text-align:left;padding-left:0pt;color:RoyalBlue;"
Das sind alles nur style - Angaben für den Text. Für die Zelle gibt es:
vertical-align:center; horizontal-align:center;
Aber bei mir klappt es trotzdem nicht.
Wenn man sich den html - Code ansieht für eine Zelle:
<td><div style=... Die angaben von cellStyle> ...Icon und Text </div></td>
Ich bin mir nicht sicher, ob die styles für die Zellausrichtung nicht schon im <td> - Teil stehen müssten, dafür bin ich zu wenig vertraut mit dem htmp / css - Kram.
Was ich noch probiert habe, ist die cellStyle - Definitionen in eine eigene css - Datei zu legen, wäre nämlich eleganter:
attr WEBphone CssFiles pgm2/darkiphone.css
und dort steht dann bspw:
/* Datei darkiphone.css */
#ButtonIcon {vertical-align:center; horizontal-align:center;
text-align: center;
font-size:10px;
font-color:#ffffff;
}
Das Attribut für eine Zelle in der rg sollte dann so lauten:
attr rg cellStyle {'r:1,c:2' => 'id="ButtonIcon"'}
Klappt aber nicht. Vielleicht liest hier ein css - Experte mit und kann da helfen.
Elektrolurch
Zitat von: Elektrolurch am 03 August 2017, 10:24:17
Das sind alles nur style - Angaben für den Text. Für die Zelle gibt es:
vertical-align:center; horizontal-align:center;
Ja, dass ist mir schon klar... habe es damit ja auch probiert und so wie du es sagst es funktionierte bei mir auch nicht, deshalb habe ich es gar nicht erst erwähnt ;)
Na mal schauen ob jemand das hinbekommt...!
Hallo moonsorrox,
da wir ja das gleiche Problem hatten, habe ich etwas an der eadingsGroup herumgebastelt:
Der cellStyle wirkt jetzt auch die <td> ... </td> Klammer, so dass man nun auch die Breite, Ränder usw. von Zellen verändern kann.
Ich habe es sowohl mit css class als auch id in einer eigenen Datei ausprobiert.
Die fügt man der Web-Instanz über das Attribut CssFiles <Dateipfad> (wurzel das Verzeichnis www) hinzu. Z.B.
attr WEBphone CssFiles pgms/mystyle.css
Inhalt (beispiel) für zentrierte Icons:
.IconwithLabel {width:64px; vertical-align:middle; horizontal-align:center; text-align: center; font-size:10px;
font-color:ffffff;}
.PowerButton {
font-color:f88000;
border:2px solid #ff0000;
border-collapse: separate; /* initial-Wert */
border-spacing: 4px;
/* background: #003344;*/
box-shadow:2px 2px 0px #000;
border-radius:2px;
}
.ButtonList {width:25%;
font-color:ffffff;
}
Um z.B. nun eine Reihe von Audio-Knöpfen zu bekommen (vier Stück schön ausgerichtet nebeneinander)
attr VolumenButtons_rg cellStyle {'r:1' => 'class="IconwithLabel PowerButton ButtonList"'}
Dann habe ich bei der Erzeugung des html der readingsGroup bei jedem </td> noch ein \n eingefuegt, dass erleichert erheblich, sich den Quelltext der Seite anzusehen.
Damit man nun aber erst so richtig komfortabel mit css arbeiten kann, habe ich noch ein Attribut tableStyle hinzugefügt, unterstützt aber derzeit auch nur einen weiteren Klassennamen in die Tabellendefinition des html-outputs zu schreiben.
$ret .= "<tr><td><table class=\"block wide $class_style\">";
Wie man sieht, gibt es bei jeder rg standardmässig die Klasse block und wide, die nun noch individuell um eine weitere per Attribut tableStyle gesetzte Klasse ergänzt werden kann.
Beispiel:
attr .*Geraete_rg tableStyle class="Powerknopf"
also class und "" nicht vergessen.
Damit kann man dann per css-Files die Icons für diese Klasse "PowerKnopf" wieder anders gestalten.
Ach ja: Wenn Zeilen ausgeblendet wurden, dann wurde cellStyle um display:"none" ergaenzt. Ich habe das mal durch cell_style = "display:"none"; ersetzt. Wenn nichts angezeigt werden soll, braucht man auch die style nicht, oder sehe ich das falsch?
Ich hänge mal die geänderte 33_readingsGroup.pm hier an.
Vielleicht kann ja Andre die Änderungen übernehmen....
Elektrolurch
Hallo Elektrolurch...
das ist toll das du dieses in Angriff genommen hast, aber auch sehr aufwendig... da muss ich erst einmal wieder in meinen CSS/HTML Kenntnissen herum suchen... das an einem ruhigen Tag wenn mal Zeit ist.
Ob ich das so umsetze weiß ich noch nicht evtl. gibt es mal von André eine einfachere Variante über das cellStyle Attribut...
Ich lebe erst einmal mit den linksbündig angezeigten Icons, weil ich grad nicht soviel Zeit habe...
Hallo moonsorrox ,
natürlich kannst Du weiterhin die cellStyle auch direkt angeben:
attr rg cellStyle {'r:1' => 'style="...."', ....}
Und da diese jetzt in der td - Klammer sind, geht auch vertikale und horizontale Ausrichtung in einer Zelle.
Mit der class - Definition und in eine CssFiles daas auszulagern, macht halt die Pflege und Anpassung einfacher. Daher gleich der generelle Ansatz.
Aber ansonsten funktioniert es wie bisher.
Elektrolurch
EDIT:// ich hatte etwas vergessen , jetzt geht es...!!! ;) :D Danke
tableStyle IconwithLabel
ich habe noch etwas festgestellt horizontal-align
funktioniert nicht mehr, oder wird wohl nicht mehr verwendet weil er es bei mir in meinem Editor ausgraut...!!
ich hatte jetzt etwas Zeit, aber es klappt bei mir nicht.
Da ich für meinen Style schon eine .css Datei hatte, habe ich folgendes eingetragen.
/* Wettericons zentriert */
.IconwithLabel {
width: 64px;
vertical-align:middle; horizontal-align:center;
text-align: center;
font-size:10px;
color:ffffff;
}
1. Hast Du die externe Csss-Datei bei Deiner Web-Instanz mit dem Attribut CssFiles und dem richtigen Pfad auch bekannt gemacht?
2. Wie hast Du die cellStyle eingegeben?
Falls über die Kommandline, dann musst Du ja die ; verdoppeln.
Mal mit displayattr kontrollieren.
Wenn Du die bisherige 33_readingsGroup.pm - Datei durch meine version ersetzt hast, musst Du entweder
reload FHEM/33_readingsGroup.pm
eingeben oder mal einen Neustrt durchführen, sonst geht es nicht.
Elektrolurch
habe oben editiert, es geht jetzt
zu 1. ja habe ich die gab es ja vorher schon...
Bei einem Neustart bekomme ich aber folgende 2 Perl-Fehleranzeigen
2017.08.08 10:52:28 1: PERL WARNING: Invalid conversion in sprintf: "% |" at ./FHEM/33_readingsGroup.pm line 1466.
2017.08.08 10:47:45 1: PERL WARNING: Invalid conversion in sprintf: "% |" at ./FHEM/33_readingsGroup.pm line 544.
Die genannte Zeilen haben nichts mit meinen Änderungen zu tun. Du hast irgendwo eine valueFormat - Anweisung mit einem % - Zeichen drin.....
die von sprintf nicht korrekt verarbeitet werden kann. Vielleicht hast Du zwei % Zeichen drin? Musste man ja früher escapen, da ja in fhem das % - Zeichen eine sprezielle Bedeutung hatte, aber jetzt ist das, so glaube ich, ja gelöst. Oder so ähnlich?
Hallo,
ich hab das gleiche Problem wie in einem Beitrag aus 2014: https://forum.fhem.de/index.php/topic,14425.msg187699.html#msg187699 (https://forum.fhem.de/index.php/topic,14425.msg187699.html#msg187699)
Zitat von: awel am 29 Juli 2014, 22:54:15
Ausrichtung 1.Spalte mit SVG bei Style SmallScreen
Hallo und vielen Dank für das tolle Modul.
Ich habe ein Problem bei Verwendung eines Styles vom Typ SmallScreen (darksmallscreen, ios7smallscreen und [default] smallscreen):
Es handelt sich um eine Anrufliste mit der svg-Garfik in der ersten Spalte. Beim Style Smallscreen wird diese erste Spalte unnötig breit -breiter als alle anderen Elemente des rooms- dargestellt, während gleichzeitig die svg-Grafik ganz rechts in der Spalte sitzt.
Wie bekomme ich im Smallscreen die readingsgroup-Tabelle passend?
Als Anlage 2 Screenshots.
Vielen Dank für jede Hilfe oder Anpassung des Moduls,
awel
So (ähnlich) wie im Bild (aus dem Jahr 2014) sieht es bei mir auch aus.
Dort wurde zwar eine Lösung gefunden, aber nicht genau genug beschrieben, wie sie funktioniert.
Vielleicht kann mir hier jemand helfen.
Viele Grüße Gisbert
Ich bekomme ich FHEM Log immer wieder den Fehler:
PERL WARNING: Useless use of reference constructor in void context at (eval 860220) line 8
2017.09.30 00:04:28 1: stacktrace:
2017.09.30 00:04:28 1: PERL WARNING: Useless use of reference constructor in void context at (eval 860220) line 8.
2017.09.30 00:04:28 1: main::CallFn called by fhem.pl (692)
2017.09.30 00:04:28 1: main::FW_Read called by fhem.pl (3448)
2017.09.30 00:04:28 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (548)
2017.09.30 00:04:28 1: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (1065)
2017.09.30 00:04:28 1: main::readingsGroup_detailFn called by ./FHEM/01_FHEMWEB.pm (1879)
2017.09.30 00:04:28 1: main::readingsGroup_2html called by ./FHEM/33_readingsGroup.pm (1209)
2017.09.30 00:04:28 1: main::readingsGroup_value2html called by ./FHEM/33_readingsGroup.pm (1109)
2017.09.30 00:04:28 1: main::lookup2 called by ./FHEM/33_readingsGroup.pm (647)
2017.09.30 00:04:28 1: (eval) called by ./FHEM/33_readingsGroup.pm (357)
2017.09.30 00:04:28 1: main::__ANON__ called by (eval 860220) (5)
Das readingsgroup Device habe ich eigentlich auf attr disable 1.
@TWART016: mit deinem valueStyle ist vermutlich etwas komisch. zeig mal bitte ein list.
disable 1 verhindert nur das events ausgeartet werden. die readingsGroup wird noch angezeigt.
warum sollte cmdalias falsch sein.
du möchtest den wert den ein set entgegen nimmt ändern bevor er verwendet wird. dafür ist cmdalias genau richtig.
ValueStyle habe ich gar nicht.
Internals:
DEF <Sender>,<Ab>,<Aktuelle Sendung>,<Ab>,<Nachfolgende Sendung>
mod_TV_Programme:Das_Erste_time,Das_Erste,Das_Erste_next_time,Das_Erste_next
mod_TV_Programme:ZDF_time,ZDF,ZDF_next_time,ZDF_next
mod_TV_Programme:SWR_BW_time,SWR_BW,SWR_BW_next_time,SWR_BW_next
mod_TV_Programme:Pro7_MAXX_time,Pro7_MAXX,Pro7_MAXX_next_time,Pro7_MAXX_next
mod_TV_Programme:Sport_1_time,Sport_1,Sport_1_next_time,Sport_1_next
mod_TV_Programme:Eurosport_time,Eurosport,Eurosport_next_time,Eurosport_next
mod_TV_Programme:RTL_time,RTL,RTL_next_time,RTL_next
mod_TV_Programme:Sat1_time,Sat1,Sat1_next_time,Sat1_next
mod_TV_Programme:Pro7_time,Pro7,Pro7_next_time,Pro7_next
mod_TV_Programme:RTL2_time,RTL2,RTL2_next_time,RTL2_next
mod_TV_Programme:VOX_time,VOX,VOX_next_time,VOX_next
mod_TV_Programme:Kabel_eins_time,Kabel_eins,Kabel_eins_next_time,Kabel_eins_next
mod_TV_Programme:DMAX_time,DMAX,DMAX_next_time,DMAX_next
mod_TV_Programme:N24_time,N24,N24_next_time,N24_next
mod_TV_Programme:NTV_time,NTV,NTV_next_time,NTV_next
mod_TV_Programme:WDR_time,WDR,WDR_next_time,WDR_next
mod_TV_Programme:NDR_time,NDR,NDR_next_time,NDR_next
mod_TV_Programme:MDR_time,MDR,MDR_next_time,MDR_next
mod_TV_Programme:Bayern_time,Bayern,Bayern_next_time,Bayern_next
mod_TV_Programme:HR_time,HR,HR_next_time,HR_next
mod_TV_Programme:RBB_time,RBB,RBB_next_time,RBB_next
NAME TV_Programm_Next
NR 632
NTFY_ORDER 50-TV_Programm_Next
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CONTENT:
mod_TV_Programme 1
CONTENT2:
DEVICES:
ARRAY(0x73a3b98)
ARRAY(0x71fdd60)
ARRAY(0x79482c8)
ARRAY(0x71fb1d8)
ARRAY(0x75b6568)
ARRAY(0x71d7418)
ARRAY(0x71f7868)
ARRAY(0x7488ed8)
ARRAY(0x731bad0)
ARRAY(0x75b5058)
ARRAY(0x71ff9d0)
ARRAY(0x77220b0)
ARRAY(0x71f8580)
ARRAY(0x235b578)
ARRAY(0x6d2a588)
ARRAY(0x6bf0098)
ARRAY(0x75b5550)
ARRAY(0x7723408)
ARRAY(0x748dff8)
ARRAY(0x6d2c778)
ARRAY(0x731ff10)
ARRAY(0x7572308)
fhem:
lastDefChange 2
last_update 1507381719.90025
helper:
DEF
nameStyle style="font-weight:bold; text-align:center"
nameIcon:
ARTE_time tv/tvlogo_arte_s
Bayern_time tv/tvlogo_bayern_s
COMEDYCENTRAL_time tv/comedy_central
DMAX_time tv/tvlogo_dmax_s
DREISAT_time tv/tvlogo_3sat_s
Das_Erste_time tv/tvlogo_ard_s
EINSFESTIVAL_time tv/tvlogo_eins-festival_s
EINSPLUS_time tv/tvlogo_eins-plus_s
Eurosport_time tv/tvlogo_eurosport_s
HR_time tv/tvlogo_hr_s
Kabel_eins_time tv/tvlogo_kabel-eins_s
MDR_time tv/tvlogo_mdr_s
N24_time tv/tvlogo_n24_s
NDR_time tv/tvlogo_ndr_s
NTV_time tv/tvlogo_n-tv_s
Pro7_MAXX_time tv/tvlogo_pro7maxx_s
Pro7_time tv/tvlogo_pro7_s
RBB_time tv/tvlogo_rbb_s
RTL2_time tv/tvlogo_rtl2_s
RTLNITRO_time tv/rtl_nitro
RTL_time tv/tvlogo_rtl_s
SAT1GOLD_time tv/tvlogo_sat1_rgb_sat1gold
SIXX_time tv/sixx
SUPERRTL_time tv/tvlogo_super_rtl_logo
SWR_BW_time tv/tvlogo_swr-bw_s
Sat1_time tv/tvlogo_sat1_s
Sport_1_time tv/tvlogo_sport-1_s
TELE5_time tv/tvlogo_tele-5_s
VOX_time tv/tvlogo_vox_s
WDR_time tv/tvlogo_wdr_s
ZDFNEO_time tv/tvlogo_zdf-neo_s
ZDF_time tv/tvlogo_zdf_s
positions:
mod_TV_Programme.Bayern 20:2
mod_TV_Programme.Bayern_next 20:4
mod_TV_Programme.Bayern_next_time 20:3
mod_TV_Programme.Bayern_time 20:1
mod_TV_Programme.DMAX 14:2
mod_TV_Programme.DMAX_next 14:4
mod_TV_Programme.DMAX_next_time 14:3
mod_TV_Programme.DMAX_time 14:1
mod_TV_Programme.Das_Erste 2:2
mod_TV_Programme.Das_Erste_next 2:4
mod_TV_Programme.Das_Erste_next_time 2:3
mod_TV_Programme.Das_Erste_time 2:1
mod_TV_Programme.Eurosport 7:2
mod_TV_Programme.Eurosport_next 7:4
mod_TV_Programme.Eurosport_next_time 7:3
mod_TV_Programme.Eurosport_time 7:1
mod_TV_Programme.HR 21:2
mod_TV_Programme.HR_next 21:4
mod_TV_Programme.HR_next_time 21:3
mod_TV_Programme.HR_time 21:1
mod_TV_Programme.Kabel_eins 13:2
mod_TV_Programme.Kabel_eins_next 13:4
mod_TV_Programme.Kabel_eins_next_time 13:3
mod_TV_Programme.Kabel_eins_time 13:1
mod_TV_Programme.MDR 19:2
mod_TV_Programme.MDR_next 19:4
mod_TV_Programme.MDR_next_time 19:3
mod_TV_Programme.MDR_time 19:1
mod_TV_Programme.N24 15:2
mod_TV_Programme.N24_next 15:4
mod_TV_Programme.N24_next_time 15:3
mod_TV_Programme.N24_time 15:1
mod_TV_Programme.NDR 18:2
mod_TV_Programme.NDR_next 18:4
mod_TV_Programme.NDR_next_time 18:3
mod_TV_Programme.NDR_time 18:1
mod_TV_Programme.NTV 16:2
mod_TV_Programme.NTV_next 16:4
mod_TV_Programme.NTV_next_time 16:3
mod_TV_Programme.NTV_time 16:1
mod_TV_Programme.Pro7 10:2
mod_TV_Programme.Pro7_MAXX 5:2
mod_TV_Programme.Pro7_MAXX_next 5:4
mod_TV_Programme.Pro7_MAXX_next_time 5:3
mod_TV_Programme.Pro7_MAXX_time 5:1
mod_TV_Programme.Pro7_next 10:4
mod_TV_Programme.Pro7_next_time 10:3
mod_TV_Programme.Pro7_time 10:1
mod_TV_Programme.RBB 22:2
mod_TV_Programme.RBB_next 22:4
mod_TV_Programme.RBB_next_time 22:3
mod_TV_Programme.RBB_time 22:1
mod_TV_Programme.RTL 8:2
mod_TV_Programme.RTL2 11:2
mod_TV_Programme.RTL2_next 11:4
mod_TV_Programme.RTL2_next_time 11:3
mod_TV_Programme.RTL2_time 11:1
mod_TV_Programme.RTL_next 8:4
mod_TV_Programme.RTL_next_time 8:3
mod_TV_Programme.RTL_time 8:1
mod_TV_Programme.SWR_BW 4:2
mod_TV_Programme.SWR_BW_next 4:4
mod_TV_Programme.SWR_BW_next_time 4:3
mod_TV_Programme.SWR_BW_time 4:1
mod_TV_Programme.Sat1 9:2
mod_TV_Programme.Sat1_next 9:4
mod_TV_Programme.Sat1_next_time 9:3
mod_TV_Programme.Sat1_time 9:1
mod_TV_Programme.Sport_1 6:2
mod_TV_Programme.Sport_1_next 6:4
mod_TV_Programme.Sport_1_next_time 6:3
mod_TV_Programme.Sport_1_time 6:1
mod_TV_Programme.VOX 12:2
mod_TV_Programme.VOX_next 12:4
mod_TV_Programme.VOX_next_time 12:3
mod_TV_Programme.VOX_time 12:1
mod_TV_Programme.WDR 17:2
mod_TV_Programme.WDR_next 17:4
mod_TV_Programme.WDR_next_time 17:3
mod_TV_Programme.WDR_time 17:1
mod_TV_Programme.ZDF 3:2
mod_TV_Programme.ZDF_next 3:4
mod_TV_Programme.ZDF_next_time 3:3
mod_TV_Programme.ZDF_time 3:1
values:
formated:
undef
ARRAY(0x6bd70e0)
ARRAY(0x71ff5e0)
ARRAY(0x6bd6f60)
ARRAY(0x71f9898)
orig:
undef
ARRAY(0x794c220)
ARRAY(0x6bd72d8)
ARRAY(0x71dfdf8)
ARRAY(0x75b49f8)
prefixsuffix:
undef
ARRAY(0x7200a48)
ARRAY(0x73f9c20)
ARRAY(0x7951ba8)
ARRAY(0x71fbb68)
Attributes:
comment http://www.klack.de/fernsehprogramm/2015-im-tv/0/-1/free.html
disable 1
nameIcon { Das_Erste_time => 'tv/tvlogo_ard_s', ZDF_time => 'tv/tvlogo_zdf_s', Pro7_time => 'tv/tvlogo_pro7_s', RTL_time => 'tv/tvlogo_rtl_s', Sat1_time => 'tv/tvlogo_sat1_s', Kabel_eins_time => 'tv/tvlogo_kabel-eins_s', VOX_time => 'tv/tvlogo_vox_s', RTL2_time => 'tv/tvlogo_rtl2_s', DMAX_time => 'tv/tvlogo_dmax_s', SUPERRTL_time => 'tv/tvlogo_super_rtl_logo', NDR_time => 'tv/tvlogo_ndr_s', Bayern_time => 'tv/tvlogo_bayern_s', HR_time => 'tv/tvlogo_hr_s', MDR_time => 'tv/tvlogo_mdr_s', RBB_time => 'tv/tvlogo_rbb_s', SWR_BW_time => 'tv/tvlogo_swr-bw_s', WDR_time => 'tv/tvlogo_wdr_s', ZDFNEO_time => 'tv/tvlogo_zdf-neo_s', RTLNITRO_time => 'tv/rtl_nitro', SAT1GOLD_time => 'tv/tvlogo_sat1_rgb_sat1gold', SIXX_time => 'tv/sixx', TELE5_time => 'tv/tvlogo_tele-5_s', DREISAT_time => 'tv/tvlogo_3sat_s', EINSPLUS_time => 'tv/tvlogo_eins-plus_s', EINSFESTIVAL_time => 'tv/tvlogo_eins-festival_s', Sport_1_time => 'tv/tvlogo_sport-1_s', Eurosport_time => 'tv/tvlogo_eurosport_s', N24_time => 'tv/tvlogo_n24_s', COMEDYCENTRAL_time => 'tv/comedy_central', ARTE_time => 'tv/tvlogo_arte_s', NTV_time => 'tv/tvlogo_n-tv_s', Pro7_MAXX_time => 'tv/tvlogo_pro7maxx_s'}
nameStyle style="font-weight:bold; text-align:center"
style style="font-size:18px"
Hallo,
ich versuche nun seit einigen Stunden in meiner readingsGroup meinen Readings über das Attribut mapping Namen zu vergeben.
Leider bekomme ich es nicht hin und ich weiß nicht was ich falsch mache.
Die Readings werden über das Modul VCONTROL erzeugt.
Meine readingsGroup hat folgende Definitionen:
define rg_Heizung2 readingsGroup < >,<Ist>,<Soll> Heizung:Heizung-Raumtemperatur,<soll1> Heizung:Fussbodenheizung-Raumtemperatur,<soll2> Heizung:Heizung-reduzierte-Raumtemperatur,<soll3>
attr rg_Heizung2 alias Heizungssteuerung
attr rg_Heizung2 commands {'rg_Heizung2.soll1'=>'HK1_Raum_Solltemp:15,19,20,21,22,23,24','rg_Heizung2.soll2'=>'HK2_Raum_Solltemp:15,19,22,21,22,23,24','rg_Heizung2.soll3'=>'HK1_red_Raumtemp:15,19,22,21,22,23,24'}
attr rg_Heizung2 group Test
# attr rg_Heizung2 mapping $DEVICE-$READING
# attr rg_Heizung2 mapping {'Heizung-Raumtemperatur'=>'x','Fussbodenheizung-Raumtemperatur'=>'y','Heizung-reduzierte-Raumtemperatur'=>'z'}
# attr rg_Heizung2 mapping {'Heizung:Heizung-Raumtemperatur'=>'x','Heizung:Fussbodenheizung-Raumtemperatur'=>'y','Heizung:Heizung-reduzierte-Raumtemperatur'=>'z'}
attr rg_Heizung2 mapping $READING
attr rg_Heizung2 nameStyle style="color:yellow;;font-weight:bold"
attr rg_Heizung2 room Heizung
Die Werte in den Readings werden richtig angezeigt und können auch über das erzeugte Dropdown Menü verändert werden.
Ich habe diverse Kombinationen ausprobiert. Unter anderem auch die Auskommentierten.
Leider wird entweder kein Name angezeigt oder bei jedem Reading nur "Heizung".
Was mache ich falsch?
Gruß Martin
Hallo,
ich wollte mal fragen, was ist denn der gewünschte/vorgesehen Weg, um Bugs im Code von ReadingsGroup zu reporten?
Hallo,
ich binde, wie es auf dem angehängten Bild zu sehen ist, Ventile plus einen Wandthermostat zusammen ein. Kann ich irgendwie den Versatz kompensieren da das Wandgerät keinen Ventilstatus hat?
Sieht halt etwas doof aus so.
Wie sieht denn Deine Definition der Readingsgroup genau aus? Man kann "leere" Felder einfügen.
<Sensor>,<Ventil>,<Soll>,<Ist>,<Mode>,<Batterie>
DEF=(HeatingThermostat.*|WallMountedThermostat.*):valveposition,desiredTemperature,temperature,mode,battery
Im Zweifelsfall musst Du die Thermostate einzeln auführen und dann bei dem einen ohne Ventilstatus ein "< >" statt "valveposition" in die Definition einfügen.
Das hatte ich befürchtet. Schade aber nicht tragisch :-)
Hi,
man könnte doch im Device ein userReadings mit valvePosition einfügen und z.B. auf leer oder X setzen
gruss
Zitat von: eisman am 06 November 2017, 09:42:51
Hi,
man könnte doch im Device ein userReadings mit valvePosition einfügen und z.B. auf leer oder X setzen
gruss
Treffer!
Danke für den Tipp :-)
setreading MAX_17a8af valveposition 0
dafür gibt es das valueColumn attribut. damit kann man readings an spalten ausrichten.
oder man verwendet den ! modifier um auch readings anzuzeigen die es garnicht gibt.
@justme1968:
Hallo,
es scheint ein Problem mit dem Modul ReadingsGroup zu geben, das FHEM reproduzierbar zum Absturz bringt. Ich habe dieses hier (https://forum.fhem.de/index.php/topic,78337.0.html (https://forum.fhem.de/index.php/topic,78337.0.html)) beschrieben, aber leider keine Antwort bekommen. Ich habe daraufhin hier (https://forum.fhem.de/index.php/topic,14425.msg705211.html#msg705211 (https://forum.fhem.de/index.php/topic,14425.msg705211.html#msg705211)) gefragt, was die gewünschte Methode ist, um Fehler zu reporten, aber leider auch ohne Antwort... :(
Deswegen versuche ich es jetzt nochmal hier, kurz zusammengefasst:
Folgt man der Wiki-Dokumentation (https://wiki.fhem.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices und erstelle eine ReadingsGroup mit Werten aus min. 2 Devices (https://wiki.fhem.de/wiki/ReadingsGroup#Readings_aus_zus.C3.A4tzlichen_Devices%20und%20erstelle%20eine%20ReadingsGroup%20mit%20Werten%20aus%20min.%202%20Devices)) und erstellt eine ReadingsGroup mit Werten aus min. 2 verschiedenen Devices, so kommt schon sehr lange eine Warnung im Logfile, die eine "Unescaped left brace in regex" moniert, aber bisher lief es zumindest. Seit der Perl-Version 5.26.0 stürzt FHEM damit komplett ab!
Also entweder ist dies ein Fehler im Wiki, weil das so nicht mehr unterstützt wird und/oder weil es einen (mir unbekannten) Workaround gibt, dann sollte man das Wiki anpassen.
Oder es ist ein Fehler in 33_readingsGroup.pm, der behoben werden sollte.
In beiden Fällen würde ich mich sehr über eine kurze Stellungnahme von dir, justme1968 freuen!
Vielen Dank, auch für die bisher geleistete Arbeit!
VG linuzer
hi,
ich habe mehrere verschieden readings und device in einer RG ohne Probleme
mit redings@"device"
gruss
PS:solltest vielleicht dein RG mit reinlegen sonst kann keiner den Fehler finden
Zitat von: eisman am 07 November 2017, 12:22:00
ich habe mehrere verschieden readings und device in einer RG ohne Probleme mit redings@"device"
Folge der Anleitung im Wiki und schreibe das 2. Device "dynamisch": ReadingFromSecondDevice@{valveOfDevice($DEVICE)} und Du bekommst mit Pearl < 5.26.0 eine Warnung im Log und mit >= 5.26.0 einen harten FHEM-Absturz!
hi,
hatte ich mir gedacht, @{valveOfDevice($DEVICE)} habe ich nie zum laufen bekommen,
deswegen trage ich bei mir immer z.B. state@"Device" oder battery@"Device" ein,
es gehen einige dinge aus der wiki nicht, gibt aber auch immer eine andere Lösung,die
zu ziel führt. Wegen "dynamisch" mit dem stehe ich zu Zeit auch auf Kriegsfuss, hatte
deswegen auch schon nachgefragt und warte auf eine Antwort von justme1968.
das kann er leider nur beantworten.
gruss
Naja, das Beispiel im Wiki kann nur funktionieren, wenn MAX-Thermostate eingesetzt werden und die Devices die gleiche Namensstruktur haben.
Wie heißen deine beteiligten Devices und Readings denn?
Wie sieht deine valveOfDevice Funktion in 99_myUtils.pm aus?
Hi, nö,
habe keine max nur HM-TC und geht doch, das es bei mir nicht ging war "eigene blöheit" >>99_myUtils.pm<< wenn man's auch so schreiben
also bei mir geht es mit debian
sorry. ich hatte die threads mit dem regex problem nicht gesehen.
ich denke ich weiss woran es liegt. komme aber erst am wochenende dazu es zu reparieren.
gruss
andre
Keine Eile!
Vielen Dank!
VG linuzer
Hi,
mein Problem mit @Device hat sich erledigt, habe es selber Funktionsfähig hinbekommen,
Nur der Nutzen rechtfertigt den Aufwand nicht! Ich habe das Projekt verworfen und löse es
nun anders.
Ich brauche nur noch die Tag- und Nachtzeit + Temperatur (war schon als RG vorhanden),
der Rest wird über einen MicroSchalter automatisch gelöst. Wenn die Wohnungstür
abgeschlossen wird, fährt die Wohnung in den Nacht- bzw Alarmmodus.
gruss
Liebe Community,
ich benötige mal wieder Hilfe. Diesmal mit readingsgroup.
Ich hole mir das Fernsehprogramm über HTTPMOD und übergebe in die readingsgroup die aktuelle Sendung und die folgende. Das funktioniert alles auch ganz prima.
Klicke ich nun auf das Senderlogo, lande ich wieder in meinem HTTPMOD (siehe angehängtes Bild). Soweit so gut.
Frage: wie kann ich den Link hinter dem Logo so modifizieren, dass ich damit auf diesen Sender meines Enigma2 Receivers schalten kann? Der Receiver ist in fhem eingebunden und funktioniert. Mit einem
set VuPlus channel Das%20Erste
kann ich umschalten und genau das benötige ich als Link hinter den Senderlogos.
Ich hoffe, ich habe mich verständlich ausgedrückt?! Leider bin ich beim Durchlesen dieses Threads nicht auf die Lösung gestoßen.
Danke und liebe Grüße
Wolf
attr meine_rg commands {'LogoDasErste' => 'set VuPlus channel Das%20Erste', .... unf so weiter für jedes Logo }
' musst u natürlich auf den Namen Deines readings anpassen, welches das Logo darstellt.
Elektrolurch
Hallo Elektrolurch,
vielen Dank für Deine Antwort - leider muss ich noch einmal genau nachfragen, denn ich bekomme es noch nicht hin.
Mit dem Attribut:
commands {'ard' => 'set VuPlus channel Das%20Erste'}
Lande ich immer noch auf dem falschen Link.
Das Logo für "Das Erste" habe mit folgendem Attribut definiert:
nameicon {Das_Erste => 'tvmovie/ard', ZDF => 'tvmovie/zdf'....'}
Denn Sender habe ich so in meiner readingsgroup so definiert:
<Sender>,<Aktuelle Sendung>,<Ab>,<Nachfolgende Sendung>
TV_Programme:Das_Erste,Das_Erste_Nexttime,Das_Erste_Next
Ich habe es jetzt mit "ard", mit "Das_Erste" versucht, leider ohne Erfolg. Kannst Du mir noch einen Schubs in die richtige Richtung geben?
Edit: gebe ich "Das_Erste" nach Deinem Muster ein, führt das Logo immer an die gleiche (falsche) Stelle.
Danke und einen schönen Feierabend
wolf
Edit: Also, das "Problem" habe ich soweit eingegrenzt, dass ich den funktionierenden Link im Prinzip überall hinbekomme, nur nicht hinter das Senderlogo. ....ich "erreiche" nicht die Logospalte mit dem Link...
Zitat von: justme1968 am 07 November 2017, 20:38:44
ich denke ich weiss woran es liegt. komme aber erst am wochenende dazu es zu reparieren.
Hallo Andre,
will nicht drängeln... nur neugierig nachfragen: Konntest Du das Problem finden/lösen?
LG linuzer
Zitat von: linuzer am 15 November 2017, 01:25:55
Hallo Andre,
Zitat von: justme1968 am 07 November 2017, 20:38:44
sorry. ich hatte die threads mit dem regex problem nicht gesehen.
ich denke ich weiss woran es liegt. komme aber erst am wochenende dazu es zu reparieren.
gruss
andre
will nicht drängeln... nur neugierig nachfragen: Konntest Du das Problem finden/lösen?
LG linuzer
Hallo Andre,
Kann ich denn bei irgend etwas behilflich sein? Z.B. testen, zur Verfügung stellen weiterer Informationen, etc.?
...ich wäre wirklich sehr froh, wenn meine ReadingsGroup wieder funktionieren würde...!
Viele Grüße
Gibt es eigentlich eine Möglichkeit, etwas mehr Abstand zwischen dem Spaltentrenner | vorzusehen. Bei mir ist das alles ein bisschen sehr eng, siehe Screenshot.
Herzliche Grüße
Christian
Ein eigenes style anlegen, welches deinen Style importiert und folgendes einbauen
.wide td {
padding:4px;
}
Zitat von: marvin78 am 09 Januar 2018, 10:22:35
Ein eigenes style anlegen, welches deinen Style importiert und folgendes einbauen
.wide td {
padding:4px;
}
Ganz herzlichen Dank - wieder was gelernt, das war es!
Christian
Hallo!
Ich habe scheinbar ein Verständnisproblem mit Readingsgroup.
Ich möchte mir die Wetterdaten einer WS1600 anzeigen lassen und zwar in der 2. Spalte von links die aktuellen Werte und bei Temp. und Humidity die Min/Max.Werte (siehe Bild).
Sobald ich aber in einer Zeile wie in Zeile 2 und 3 diese weiteren Readings hinzufüge, stellt mir die RG in den beiden Zeilen 2 und 3 nur noch den Devicenamen dar, so dass ich kein Mapping mehr vornehmen kann, wenn 2 Zeilen gleich heissen.
Ich möchte, daß die 1. Spalte so dargestellt wird:
WS_1600:temperature
WS_1600:humidity
WS_1600:dewpoint
WS_1600:rain
WS_1600:windSpeed
WS_1600:windDirectionDegree
WS_1600:windDirectionText
WS_1600:windGust
Wetterdaten2:twc_o
und nicht, wie im Bild ohne temperature und humidity
Hier das List zur RG:
Internals:
DEF <%weather_cloudy>,<Aktuell>,<Historie>
WS_1600:temperature,<MAX:>,temperature_day_max@Wetterdaten2,<MIN:>,temperature_day_min@Wetterdaten2
WS_1600:humidity,<MAX:>,humidity_day_max@Wetterdaten2,<MIN:>,humidity_day_min@Wetterdaten2
WS_1600:dewpoint
WS_1600:rain
WS_1600:windSpeed
WS_1600:windDirectionDegree
WS_1600:windDirectionText
WS_1600:windGust
Wetterdaten2:twc_o
NAME Wetterstation
NR 1025
NTFY_ORDER 50-Wetterstation
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CONTENT:
WS_1600 1
Wetterdaten2 1
CONTENT2:
Wetterdaten2 1
DEVICES:
ARRAY(0x3e0ab40)
ARRAY(0x4582000)
ARRAY(0x44a4618)
ARRAY(0x47d2a98)
ARRAY(0x3f90530)
ARRAY(0x43e6a88)
ARRAY(0x480c3b8)
ARRAY(0x3ac1498)
ARRAY(0x3f375d0)
ARRAY(0x4880968)
DEVICES2:
ARRAY(0x3e0ab40)
ARRAY(0x4582000)
ARRAY(0x44a4618)
ARRAY(0x47d2a98)
ARRAY(0x3f90530)
ARRAY(0x43e6a88)
ARRAY(0x480c3b8)
ARRAY(0x3ac1498)
ARRAY(0x3f375d0)
ARRAY(0x4880968)
ARRAY(0x42a1f80)
ARRAY(0x1e4ecc8)
ARRAY(0x48154a0)
ARRAY(0x4580960)
fhem:
lastDefChange 683
last_update 1518029683.5433
helper:
DEF
nameStyle style="color:darkblue;;font-weight:bold"
positions:
WS_1600.dewpoint 4:1
WS_1600.humidity 3:1
WS_1600.rain 5:1
WS_1600.temperature 2:1
WS_1600.windDirectionDegree 7:1
WS_1600.windDirectionText 8:1
WS_1600.windGust 9:1
WS_1600.windSpeed 6:1
Wetterdaten2.humidity_day_max 3:3
Wetterdaten2.humidity_day_min 3:5
Wetterdaten2.temperature_day_max 2:3
Wetterdaten2.temperature_day_min 2:5
Wetterdaten2.twc_o 10:1
recalc:
undef
ARRAY(0x4222860)
valueFormat:
dewpoint %.1f °C
humidity %2d %%
humidity_day_max %2d %%
humidity_day_min %2d %%
rain %03.1f mm
temperature %.1f °C
temperature_day_max %.1f °C
temperature_day_min %.1f °C
twc_o %.1f °C
windDirectionDegree %03.1f Grad
windGust %03d Km/h
windSpeed %03d Km/h
values:
formated:
undef
ARRAY(0x2f9c1d0)
undef
ARRAY(0x3ab49b0)
undef
ARRAY(0x43d8ed8)
orig:
undef
ARRAY(0x1e94d20)
undef
ARRAY(0x3e9d5c0)
undef
ARRAY(0x44a0408)
prefixsuffix:
undef
ARRAY(0x41c61e8)
undef
ARRAY(0x3f785d0)
undef
ARRAY(0x3b151e0)
Attributes:
group Wetterstation
nameStyle style="color:darkblue;;font-weight:bold"
nostate 1
notime 1
room Wohnzimmer
sortby 1
valueFormat {temperature => "%.1f °C",
temperature_day_min => "%.1f °C",
temperature_day_max => "%.1f °C",
humidity => "%2d %%",
humidity_day_max => "%2d %%",
humidity_day_min => "%2d %%",
dewpoint => "%.1f °C",
rain => "%03.1f mm",
windDirectionDegree => "%03.1f Grad",
windSpeed => "%03d Km/h",
windGust => "%03d Km/h",
twc_o => "%.1f °C"
}
Was mache ich falsch?
VG
Alex
die readingsGroup lässt die reading namen weg weil der name nicht mehr eindeutig ist sobald es mehr als reading in einer zeile gibt. über mapping solltest du das wieder hin konfigurieren können.
wenn das nicht geht: die reading namen mit nonames komplett weg konfigurieren und z.b. über eine der <...> varianten von hand einbauen.
wer mit dem 'Unescaped left brace in regex' fehler zu kämpfen hat:
bitte mal hier schauen: https://forum.fhem.de/index.php/topic,78337.msg765210.html#msg765210 (https://forum.fhem.de/index.php/topic,78337.msg765210.html#msg765210)
Bei Option nonames = 1:
Die <> Expr kann ich aber nicht in die 1. Spalte setzen, da diese doch nur der Reading Namen vorbehalten ist, oder?
also:
<%weather_cloudy>,<Aktuell>,<Historie>
<Temperatur: >,WS_1600:temperature,<MAX:>,temperature_day_max@Wetterdaten2,<MIN:>,temperature_day_min@Wetterdaten2
<Luftfeuchte: >, WS_1600:humidity,<MAX:>,humidity_day_max@Wetterdaten2,<MIN:>,humidity_day_min@Wetterdaten2
wird so nicht funktionieren, oder?
und mit der 2. Option über mapping habe ich bislang keine Vorstellung, wie ich das hinbekomme. Müsste dann die Zeilennummer abfragen (%ROW) und dann entsprechend den Text zurückliefern, oder?
Hallo FHEM-Gemeinde,
ich habe exakt das gleiche Problem, welches wolfram in Beitrag #1728 erläutert hat. Ich hab dann etwas in der commandref geblättert und bin auf folgendes gestoßen:
Zitat
regex can be of the form <STRING> or <{perl}[@readings]> where STRING or the string returned by perl is inserted as a reading or:
.
.
if STRING is of the form %ICON[%CMD] ICON will be used as the name of an icon instead of a text and CMD as the command to be executed if the icon is clicked. also see the commands attribute.
Also folgendes außprobiert:
http_TVProgramm:<%DasErste[%set kodi_Fernseher openchannelid 1]>,DasErste,DasErste_Nexttime,DasErste_Next
Hab das ganze auch noch in allen möglichen Abwandlungen ausprobiert, bspw das Kommando in "" oder '' gesetzt. Es führt aber alles auf ein Problem:
Zitat
* fhem.service - FHEM Perl Server
Loaded: loaded (/usr/lib/systemd/system/fhem.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2018-02-16 12:04:06 CET; 33s ago
Process: 31121 ExecStart=/usr/bin/fhem.pl /etc/fhem.cfg (code=exited, status=0/SUCCESS)
Main PID: 31122 (code=exited, status=255)
Feb 16 12:03:30 alarmpi systemd[1]: Starting FHEM Perl Server...
Feb 16 12:03:37 alarmpi systemd[1]: Started FHEM Perl Server.
Feb 16 12:04:06 alarmpi systemd[1]: fhem.service: Main process exited, code=exited, status=255/n/a
Feb 16 12:04:06 alarmpi systemd[1]: fhem.service: Failed with result 'exit-code'.
FHEM verarbschiedet sich, sobald der Raum mit der readingsGroup geladen wird. Das FHEM Log hat dazugehörig folgenden Eintrag hinterlassen
Zitat
http_TVProgramm: %DasErste[%set: Unmatched [ in regex; marked by <-- HERE in m/^%DasErste[ <-- HERE %set$/ at /usr/share/fhem/FHEM/33_readingsGroup.pm line 1076.
Wahrscheinlich mach ich irgendetwas falsch. Wäre für Hilfe dankbar
Viele Grüße
bitte diese version testen: https://forum.fhem.de/index.php/topic,78337.msg765210.html#msg765210 (https://forum.fhem.de/index.php/topic,78337.msg765210.html#msg765210)
Vielen Dank für die schnelle Antwort,
leider hat sich das Verhalten durch diese Version nicht geändert.
Viele Grüße
bei %ICON[%CMD] bedeuten die eckigen klammern das der teil optional ist. wenn du das verwendest dann ohne die klammern.
Vielen Dank!
hab die Zeile wie Folgt geändert:
Zitat
http_TVProgramm:<%DasErste%set kodi_Fernseher openchannelid 1>,DasErste,DasErste_Nexttime,DasErste_Next
Jetzt stürzt er zumindest nicht mehr ab. Aber er listet jetzt sämtliche readings des Devices kodi_Fernseher in der readingsGroup auf.
Macht also auch nicht das richtige.
Viele Grüße
Hallo,
ich möchte mir gern Infos aus einem Filelog in FHEM anzeigen lassen. Daher bin ich hier auf readingsGroup gekommen.
Ich weis aber nicht ob dies umgesetzt werden kann, daher Frage ich hier ob das überhaupt funktioniert.
im Filelog steht folgendes:
2017-10-01_00:00:19 CN.Gasverbrauch appCountsPerMonth: 363.5
2017-11-01_00:00:19 CN.Gasverbrauch appCountsPerMonth: 333.5
2017-12-01_00:00:19 CN.Gasverbrauch appCountsPerMonth: 370.5
2018-01-01_00:00:19 CN.Gasverbrauch appCountsPerMonth: 380.5
2018-02-01_00:00:19 CN.Gasverbrauch appCountsPerMonth: 373.5
Ich möchte es so in etwa angezeigt bekommen:
GASVERBRAUCH MONAT
Oktober 2017 - 363.5m³
November 2017 - 333.5m³
Dezember 2017- 370.5m³
Januar 2018 - 380.5m³
Februar 2018 - 373.5m³
Geht dies überhaupt?
zur Not könnte statt den Monaten auch der Zeitstempel stehen.
Die readingsGroup(Tabelle) müsste dann monatlich automatisch erweitert werden, sobald neue Daten in den Logfile kommen.
LG Thomas
Guten Morgen,
ich würde gern bei allen Geräten einer readingsGroup ein Kommando auslösen.
Leider komme ich mit der Suche/Wiki zu FILTER und devspec2array nicht weiter.
Kann mich jemand unterstützen?
Idee wäre folgende:
attr <Filter_der_Readingsgroupgeräte> archivedir xyz
Alternativ gerne alle Geräte, die das Attribut archivedir (leider mit unterschiedlichen Werten) verwenden.
Vielen Dank vorab,
Manuel
Versuch mal sowas wie
define <NAME> readingsGroup .*:FILTER=archivedir=.*
Wobei du evtl. die RegEx am Ende noch anpassen musst jenachdem was da genau gematched werden soll...
Erstmal danke für die Antwort.
Ich möchte das Attribut archivedir auf alle Devices der ReadingsGroup anwenden. Dein Code verändert m.E.n. nur die ReadingsGroup.
Sorry, dann hab ich das falsch verstanden ;)
Aber die <DEVSPEC> sollte genau gleich auch beim attr
kommando funktionieren. also sowas wie
attr .*:FILTER=archivedir=.* archivedir=<WERT>
resp. bei der devicespec einfach die gleiche nehmen wie bei der readingsgroup definition... ansonsten muss jemand anders weiterhelfen ;)
Ich habe es jetzt manuell gemacht.
Problem liegt bei Deinem Vorschlag darin, dass bei
list .*:FILTER=archivedir=.*
alle Geräte gezeigt werden, auch, wenn das attribut nicht gesetzt ist.
Lustigerweise klappt damit aber die Bildung einer korrekten ReadingsGroup.
Vielen Dank trotzdem.
Folgendes Kommando sollte nur die Geräte auflisten, die archivedir gesetzt haben ...
list .*:FILTER=archivedir!=
list .*:FILTER=archivedir!=
Klappt, danke!
Hi,
ich hoffe ich nerv nicht, aber ich würde gerne wissen, ob Perl Code in dem Attribut commands geht und wie der eingebunden wird. Ich hab schon mehrere Sachen und Aussagen gefunden (geht nicht, muss URL Encodiert werden etc), aber die Aussagen scheinen (?) obsolet?
Ich würd gerne folgendes machen:
{'battery.low' => 'setreading %DEVICE Batteriewechsel {my $date = strftime '%d.%m.%Y', localtime;;return $date;;}'}
also per setreading ein Reading mit dem aktuellen Datum setzen, welches ich mit Perl berechne.
Ich bin mir aber nicht sicher, ob die Anführungszeichen/Hochkommata richtig gesetzt worden sind.
jedenfalls kommt dann ein Fehler:
Global symbol "%m" requires explicit package name at (eval 1496823) line 2.
Global symbol "%Y" requires explicit package name at (eval 1496823) line 2.
syntax error at (eval 1496823) line 3, near "%Y', localtime;;return $date;;}
'"
syntax error at (eval 1496823) line 3, near "}}"
Wenn ich {my $date = strftime '%d.%m.%Y', localtime;;return $date;;}
in der Kommandozeile einfüge, kommt das erwartete Ergebnis raus.
Zitat von: Kai-Alfonso am 07 März 2019, 13:32:21
Hi,
ich hoffe ich nerv nicht, aber ich würde gerne wissen, ob Perl Code in dem Attribut commands geht und wie der eingebunden wird. Ich hab schon mehrere Sachen und Aussagen gefunden (geht nicht, muss URL Encodiert werden etc), aber die Aussagen scheinen (?) obsolet?
Ich würd gerne folgendes machen:
{'battery.low' => 'setreading %DEVICE Batteriewechsel {my $date = strftime '%d.%m.%Y', localtime;;return $date;;}'}
also per setreading ein Reading mit dem aktuellen Datum setzen, welches ich mit Perl berechne.
Ich bin mir aber nicht sicher, ob die Anführungszeichen/Hochkommata richtig gesetzt worden sind.
jedenfalls kommt dann ein Fehler:
Global symbol "%m" requires explicit package name at (eval 1496823) line 2.
Global symbol "%Y" requires explicit package name at (eval 1496823) line 2.
syntax error at (eval 1496823) line 3, near "%Y', localtime;;return $date;;}
'"
syntax error at (eval 1496823) line 3, near "}}"
Wenn ich {my $date = strftime '%d.%m.%Y', localtime;;return $date;;}
in der Kommandozeile einfüge, kommt das erwartete Ergebnis raus.
Probier mal:
{'battery.low' => 'setreading %DEVICE Batteriewechsel {strftime "%d.%m.%Y", localtime}'}
Gruß
Dan
Zitat von: DeeSPe am 07 März 2019, 13:37:37
Probier mal:
{'battery.low' => 'setreading %DEVICE Batteriewechsel {strftime "%d.%m.%Y", localtime}'}
Gruß
Dan
Hi Dan,
zumindest kann ich das Attribut setzen, allerdings kommt beim klick auf das Icon dann folgendes
fhem?room=HomeMatic line 208:
Uncaught SyntaxError: Invalid or unexpected token
Hat vielleicht jemand noch eine Idee? :o
Hallo Andre,
ich hab da mal ein Problemchen - vielmehr wohl Wunsch...: kurz DEF -> READING
Ich versuch's mal ein wenig abstrakt (auch auf die Gefahr, dass ich da irgend'was überlesen oder nicht quergedacht habe bei diesem gigantischen Modul):
ich habe eine riesige Datenmenge (tatsächlich) verteilt auf ca. 100.000 Readings, verteilt auf ca. 250 Dummies.
Diese muss ich zeitabhängig - minütlich - aktualisieren, wobei Werte, somit Readings, aus der Vergangenheit für die Übersicht in der Readingsgroup wegfallen, jedoch in den Dummies noch 30 Tage verbleiben müssen (Archiv...).
Um nun das Ganze möglichst rechenarm darstellen, somit umsetzen zu können, kam mir die Idee "nur" die DEF mittels SUB oder NOTIFY (DEFMOD...) in der Readingsgroup anpassen zu lassen, quasi als 'Wegweiser'-Anpassung.
Das hat jedoch einen 'Schönheitsfehler': es sind korrekterweise Strukturänderungen und lösen somit jeweils 'Rote Fragezeichen' aus.
Daher die Frage, ist es machbar die DEF in ein unkritisches READING auszulagern ?
Damit könnte man ja generell den DEF-Part 'DYNAMISCH' gestalten, vielleicht ja auch ein neues Feature für ähnliche Situationen...
Das 'rote Fragezeichen' zu umgehen wäre wohl auch eine Möglichkeit, jedoch müsste ich wohl in die 'fhem.pl' eingreifen, was ich vermeiden möchte.
Oder gibt es für Dein Modul einen anderen mir unbekannten Weg, evt. eben (DEF-)Reading-Zuweisung per Attribut?
Viele Grüße
BillyPbg
Hallo Andre,
mir fallen in letzter Zeit immer häufiger folgende Logeinträge auf:
2019.05.06 13:54:59.119 3: eval: {FensterTuerSensor_signal("Fenstergruppe")}
2019.05.06 13:59:59.109 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^state@{ <-- HERE FT2UFT_Mapping($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1383, <GEN11> line 15180.
2019.05.06 13:59:59.110 3: eval: {FensterTuerSensor_signal("Fenstergruppe")}
2019.05.06 14:02:59.107 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^state@{ <-- HERE FT2UFT_Mapping($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1383, <GEN11> line 15182.
2019.05.06 14:02:59.108 3: eval: {FensterTuerSensor_signal("Fenstergruppe")}
2019.05.06 14:07:59.130 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^state@{ <-- HERE FT2UFT_Mapping($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1383, <GEN11> line 15184.
2019.05.06 14:07:59.131 3: eval: {FensterTuerSensor_signal("Fenstergruppe")}
2019.05.06 14:16:59.116 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^state@{ <-- HERE FT2UFT_Mapping($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1383, <GEN51> line 667.
2019.05.06 14:16:59.117 3: eval: {FensterTuerSensor_signal("Fenstergruppe")}
2019.05.06 14:17:59.148 3: Signal_out: Voice-Out: Badfenster im Dachgeschoss offen
2019.05.06 14:17:59.175 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^state@{ <-- HERE FT2UFT_Mapping($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1383, <GEN51> line 671.
2019.05.06 14:17:59.176 3: eval: {FensterTuerSensor_signal("Fenstergruppe")}
2019.05.06 14:18:59.112 1: PERL WARNING: Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^state@{ <-- HERE FT2UFT_Mapping($DEVICE)}$/ at ./FHEM/33_readingsGroup.pm line 1383, <GEN51> line 675.
Es ist ne RG für die Darstellung von Stati der Fenster/Türenmit folgender Def:
Internals:
DEF <%fts_window_1w@black>,<Status | >,<disable | >,<Alarmfkt. | >,<Alarm-Level | >,<T-dep. Sign. | >,<Sign.Intervall | >,<Max. Rep. | >,<1. Sig. nach | >,<Rep. | >,<Überwachung>
FTS.*:state,?disable,?AA_Examine,?AA_Level,?Temp_control,?Signal_Rep_Time,?Signal_Rep_Count,Timer,Signal_repetitions,state@{FT2UFT_Mapping($DEVICE)}
NAME rg_FT_List
NR 1315
NTFY_ORDER 50-rg_FT_List
STATE Initialized
TYPE readingsGroup
mayBeVisible 1
CONTENT:
FTS_1.OG_Bad 1
FTS_Arbeitszimmer_l 1
FTS_Arbeitszimmer_r 1
FTS_DG_Bad 1
FTS_DG_Ost_l 1
FTS_DG_Ost_r 1
FTS_DG_West_l 1
FTS_DG_West_r 1
FTS_Dachluke 1
FTS_Fahrradschuppen 1
FTS_Gaeste_WC 1
FTS_Garage_GTor 1
FTS_Garage_GTuer 1
FTS_Gartentuere 1
FTS_HK_Kellerfenster 1
FTS_HK_Tuere 1
FTS_Haustuere 1
FTS_Kueche 1
FTS_Partyraum_Fenster 1
FTS_Partyraum_Tuere 1
FTS_Schlafzimmer 1
FTS_Waschraumfenster 1
FTS_Wohnzimmer 1
CONTENT2:
Ueberwachung_FT_1.OG_Bad 1
Ueberwachung_FT_Arbeitszimmer_l 1
Ueberwachung_FT_Arbeitszimmer_r 1
Ueberwachung_FT_DG_Bad 1
Ueberwachung_FT_DG_Ost_l 1
Ueberwachung_FT_DG_Ost_r 1
Ueberwachung_FT_DG_West_l 1
Ueberwachung_FT_DG_West_r 1
Ueberwachung_FT_Dachluke 1
Ueberwachung_FT_Fahrradschuppen 1
Ueberwachung_FT_Gaeste_WC 1
Ueberwachung_FT_Garage_GTor 1
Ueberwachung_FT_Garage_GTuer 1
Ueberwachung_FT_Gartentuere 1
Ueberwachung_FT_HK_Kellerfenster 1
Ueberwachung_FT_HK_Tuere 1
Ueberwachung_FT_Haustuere 1
Ueberwachung_FT_Kueche 1
Ueberwachung_FT_Partyraum_Fenster 1
Ueberwachung_FT_Partyraum_Tuere 1
Ueberwachung_FT_Schlafzimmer 1
Ueberwachung_FT_Waschraumfenster 1
Ueberwachung_FT_Wohnzimmer 1
DEVICES:
ARRAY(0x5bddba0)
ARRAY(0x5c0dbb8)
ARRAY(0x5af1f08)
ARRAY(0x5ad1ee8)
ARRAY(0x5c97b58)
ARRAY(0x5bb6880)
ARRAY(0x58fcf38)
ARRAY(0x5cda290)
ARRAY(0x5a30428)
ARRAY(0x4fb7508)
ARRAY(0x6258120)
ARRAY(0x62584e0)
ARRAY(0x593df20)
ARRAY(0x58fea30)
ARRAY(0x58cadf8)
ARRAY(0x26c9a00)
ARRAY(0x58bc5c8)
ARRAY(0x26c3db8)
ARRAY(0x5a77a08)
ARRAY(0x2686118)
ARRAY(0x268eda8)
ARRAY(0x63755d0)
ARRAY(0x58faea8)
ARRAY(0x5a75430)
DEVICES2:
ARRAY(0x5bddba0)
ARRAY(0x5c0dbb8)
ARRAY(0x5af1f08)
ARRAY(0x5ad1ee8)
ARRAY(0x5c97b58)
ARRAY(0x5bb6880)
ARRAY(0x58fcf38)
ARRAY(0x5cda290)
ARRAY(0x5a30428)
ARRAY(0x4fb7508)
ARRAY(0x6258120)
ARRAY(0x62584e0)
ARRAY(0x593df20)
ARRAY(0x58fea30)
ARRAY(0x58cadf8)
ARRAY(0x26c9a00)
ARRAY(0x58bc5c8)
ARRAY(0x26c3db8)
ARRAY(0x5a77a08)
ARRAY(0x2686118)
ARRAY(0x268eda8)
ARRAY(0x63755d0)
ARRAY(0x58faea8)
ARRAY(0x5a75430)
ARRAY(0x5c0ce50)
ARRAY(0x592e650)
ARRAY(0x5940ab0)
ARRAY(0x272b370)
ARRAY(0x63774f0)
ARRAY(0x2676e80)
ARRAY(0x5c848d8)
ARRAY(0x594de68)
ARRAY(0x5bb2970)
ARRAY(0x637b848)
ARRAY(0x26c9e80)
ARRAY(0x6258b70)
ARRAY(0x27222a0)
ARRAY(0x5cd0920)
ARRAY(0x5af0020)
ARRAY(0x6373540)
ARRAY(0x617aa20)
ARRAY(0x266f1c0)
ARRAY(0x62ca9c8)
ARRAY(0x5c83e88)
ARRAY(0x58e6190)
ARRAY(0x5cc4560)
ARRAY(0x6373bb8)
fhem:
lastDefChange 29
last_update 1557139905.81778
helper:
DEF
cellStyle:
r:1 style="font-weight:bold;;;;font-size:16px"
commands:
AA_Level.high attr %DEVICE AA_Level low
AA_Level.low attr %DEVICE AA_Level mid
AA_Level.mid attr %DEVICE AA_Level high
disable.0 attr %DEVICE disable 1
disable.1 attr %DEVICE disable 0
positions:
FTS_1.OG_Bad.AA_Examine 2:3
FTS_1.OG_Bad.AA_Level 2:4
FTS_1.OG_Bad.Signal_Rep_Count 2:7
FTS_1.OG_Bad.Signal_Rep_Time 2:6
FTS_1.OG_Bad.Signal_repetitions 2:9
FTS_1.OG_Bad.Temp_control 2:5
FTS_1.OG_Bad.Timer 2:8
FTS_1.OG_Bad.disable 2:2
FTS_1.OG_Bad.state 2:1
FTS_Arbeitszimmer_l.AA_Examine 3:3
FTS_Arbeitszimmer_l.AA_Level 3:4
FTS_Arbeitszimmer_l.Signal_Rep_Count 3:7
FTS_Arbeitszimmer_l.Signal_Rep_Time 3:6
FTS_Arbeitszimmer_l.Signal_repetitions 3:9
FTS_Arbeitszimmer_l.Temp_control 3:5
FTS_Arbeitszimmer_l.Timer 3:8
FTS_Arbeitszimmer_l.disable 3:2
FTS_Arbeitszimmer_l.state 3:1
FTS_Arbeitszimmer_r.AA_Examine 4:3
FTS_Arbeitszimmer_r.AA_Level 4:4
FTS_Arbeitszimmer_r.Signal_Rep_Count 4:7
FTS_Arbeitszimmer_r.Signal_Rep_Time 4:6
FTS_Arbeitszimmer_r.Signal_repetitions 4:9
FTS_Arbeitszimmer_r.Temp_control 4:5
FTS_Arbeitszimmer_r.Timer 4:8
FTS_Arbeitszimmer_r.disable 4:2
FTS_Arbeitszimmer_r.state 4:1
FTS_DG_Bad.AA_Examine 5:3
FTS_DG_Bad.AA_Level 5:4
FTS_DG_Bad.Signal_Rep_Count 5:7
FTS_DG_Bad.Signal_Rep_Time 5:6
FTS_DG_Bad.Signal_repetitions 5:9
FTS_DG_Bad.Temp_control 5:5
FTS_DG_Bad.Timer 5:8
FTS_DG_Bad.disable 5:2
FTS_DG_Bad.state 5:1
FTS_DG_Ost_l.AA_Examine 6:3
FTS_DG_Ost_l.AA_Level 6:4
FTS_DG_Ost_l.Signal_Rep_Count 6:7
FTS_DG_Ost_l.Signal_Rep_Time 6:6
FTS_DG_Ost_l.Signal_repetitions 6:9
FTS_DG_Ost_l.Temp_control 6:5
FTS_DG_Ost_l.Timer 6:8
FTS_DG_Ost_l.disable 6:2
FTS_DG_Ost_l.state 6:1
FTS_DG_Ost_r.AA_Examine 7:3
FTS_DG_Ost_r.AA_Level 7:4
FTS_DG_Ost_r.Signal_Rep_Count 7:7
FTS_DG_Ost_r.Signal_Rep_Time 7:6
FTS_DG_Ost_r.Signal_repetitions 7:9
FTS_DG_Ost_r.Temp_control 7:5
FTS_DG_Ost_r.Timer 7:8
FTS_DG_Ost_r.disable 7:2
FTS_DG_Ost_r.state 7:1
FTS_DG_West_l.AA_Examine 8:3
FTS_DG_West_l.AA_Level 8:4
FTS_DG_West_l.Signal_Rep_Count 8:7
FTS_DG_West_l.Signal_Rep_Time 8:6
FTS_DG_West_l.Signal_repetitions 8:9
FTS_DG_West_l.Temp_control 8:5
FTS_DG_West_l.Timer 8:8
FTS_DG_West_l.disable 8:2
FTS_DG_West_l.state 8:1
FTS_DG_West_r.AA_Examine 9:3
FTS_DG_West_r.AA_Level 9:4
FTS_DG_West_r.Signal_Rep_Count 9:7
FTS_DG_West_r.Signal_Rep_Time 9:6
FTS_DG_West_r.Signal_repetitions 9:9
FTS_DG_West_r.Temp_control 9:5
FTS_DG_West_r.Timer 9:8
FTS_DG_West_r.disable 9:2
FTS_DG_West_r.state 9:1
FTS_Dachluke.AA_Examine 10:3
FTS_Dachluke.AA_Level 10:4
FTS_Dachluke.Signal_Rep_Count 10:7
FTS_Dachluke.Signal_Rep_Time 10:6
FTS_Dachluke.Signal_repetitions 10:9
FTS_Dachluke.Temp_control 10:5
FTS_Dachluke.Timer 10:8
FTS_Dachluke.disable 10:2
FTS_Dachluke.state 10:1
FTS_Fahrradschuppen.AA_Examine 11:3
FTS_Fahrradschuppen.AA_Level 11:4
FTS_Fahrradschuppen.Signal_Rep_Count 11:7
FTS_Fahrradschuppen.Signal_Rep_Time 11:6
FTS_Fahrradschuppen.Signal_repetitions 11:9
FTS_Fahrradschuppen.Temp_control 11:5
FTS_Fahrradschuppen.Timer 11:8
FTS_Fahrradschuppen.disable 11:2
FTS_Fahrradschuppen.state 11:1
FTS_Gaeste_WC.AA_Examine 12:3
FTS_Gaeste_WC.AA_Level 12:4
FTS_Gaeste_WC.Signal_Rep_Count 12:7
FTS_Gaeste_WC.Signal_Rep_Time 12:6
FTS_Gaeste_WC.Signal_repetitions 12:9
FTS_Gaeste_WC.Temp_control 12:5
FTS_Gaeste_WC.Timer 12:8
FTS_Gaeste_WC.disable 12:2
FTS_Gaeste_WC.state 12:1
FTS_Garage_GTor.AA_Examine 13:3
FTS_Garage_GTor.AA_Level 13:4
FTS_Garage_GTor.Signal_Rep_Count 13:7
FTS_Garage_GTor.Signal_Rep_Time 13:6
FTS_Garage_GTor.Signal_repetitions 13:9
FTS_Garage_GTor.Temp_control 13:5
FTS_Garage_GTor.Timer 13:8
FTS_Garage_GTor.disable 13:2
FTS_Garage_GTor.state 13:1
FTS_Garage_GTuer.AA_Examine 14:3
FTS_Garage_GTuer.AA_Level 14:4
FTS_Garage_GTuer.Signal_Rep_Count 14:7
FTS_Garage_GTuer.Signal_Rep_Time 14:6
FTS_Garage_GTuer.Signal_repetitions 14:9
FTS_Garage_GTuer.Temp_control 14:5
FTS_Garage_GTuer.Timer 14:8
FTS_Garage_GTuer.disable 14:2
FTS_Garage_GTuer.state 14:1
FTS_Gartentuere.AA_Examine 15:3
FTS_Gartentuere.AA_Level 15:4
FTS_Gartentuere.Signal_Rep_Count 15:7
FTS_Gartentuere.Signal_Rep_Time 15:6
FTS_Gartentuere.Signal_repetitions 15:9
FTS_Gartentuere.Temp_control 15:5
FTS_Gartentuere.Timer 15:8
FTS_Gartentuere.disable 15:2
FTS_Gartentuere.state 15:1
FTS_HK_Kellerfenster.AA_Examine 16:3
FTS_HK_Kellerfenster.AA_Level 16:4
FTS_HK_Kellerfenster.Signal_Rep_Count 16:7
FTS_HK_Kellerfenster.Signal_Rep_Time 16:6
FTS_HK_Kellerfenster.Signal_repetitions 16:9
FTS_HK_Kellerfenster.Temp_control 16:5
FTS_HK_Kellerfenster.Timer 16:8
FTS_HK_Kellerfenster.disable 16:2
FTS_HK_Kellerfenster.state 16:1
FTS_HK_Tuere.AA_Examine 17:3
FTS_HK_Tuere.AA_Level 17:4
FTS_HK_Tuere.Signal_Rep_Count 17:7
FTS_HK_Tuere.Signal_Rep_Time 17:6
FTS_HK_Tuere.Signal_repetitions 17:9
FTS_HK_Tuere.Temp_control 17:5
FTS_HK_Tuere.Timer 17:8
FTS_HK_Tuere.disable 17:2
FTS_HK_Tuere.state 17:1
FTS_Haustuere.AA_Examine 18:3
FTS_Haustuere.AA_Level 18:4
FTS_Haustuere.Signal_Rep_Count 18:7
FTS_Haustuere.Signal_Rep_Time 18:6
FTS_Haustuere.Signal_repetitions 18:9
FTS_Haustuere.Temp_control 18:5
FTS_Haustuere.Timer 18:8
FTS_Haustuere.disable 18:2
FTS_Haustuere.state 18:1
FTS_Kueche.AA_Examine 19:3
FTS_Kueche.AA_Level 19:4
FTS_Kueche.Signal_Rep_Count 19:7
FTS_Kueche.Signal_Rep_Time 19:6
FTS_Kueche.Signal_repetitions 19:9
FTS_Kueche.Temp_control 19:5
FTS_Kueche.Timer 19:8
FTS_Kueche.disable 19:2
FTS_Kueche.state 19:1
FTS_Partyraum_Fenster.AA_Examine 20:3
FTS_Partyraum_Fenster.AA_Level 20:4
FTS_Partyraum_Fenster.Signal_Rep_Count 20:7
FTS_Partyraum_Fenster.Signal_Rep_Time 20:6
FTS_Partyraum_Fenster.Signal_repetitions 20:9
FTS_Partyraum_Fenster.Temp_control 20:5
FTS_Partyraum_Fenster.Timer 20:8
FTS_Partyraum_Fenster.disable 20:2
FTS_Partyraum_Fenster.state 20:1
FTS_Partyraum_Tuere.AA_Examine 21:3
FTS_Partyraum_Tuere.AA_Level 21:4
FTS_Partyraum_Tuere.Signal_Rep_Count 21:7
FTS_Partyraum_Tuere.Signal_Rep_Time 21:6
FTS_Partyraum_Tuere.Signal_repetitions 21:9
FTS_Partyraum_Tuere.Temp_control 21:5
FTS_Partyraum_Tuere.Timer 21:8
FTS_Partyraum_Tuere.disable 21:2
FTS_Partyraum_Tuere.state 21:1
FTS_Schlafzimmer.AA_Examine 22:3
FTS_Schlafzimmer.AA_Level 22:4
FTS_Schlafzimmer.Signal_Rep_Count 22:7
FTS_Schlafzimmer.Signal_Rep_Time 22:6
FTS_Schlafzimmer.Signal_repetitions 22:9
FTS_Schlafzimmer.Temp_control 22:5
FTS_Schlafzimmer.Timer 22:8
FTS_Schlafzimmer.disable 22:2
FTS_Schlafzimmer.state 22:1
FTS_Waschraumfenster.AA_Examine 23:3
FTS_Waschraumfenster.AA_Level 23:4
FTS_Waschraumfenster.Signal_Rep_Count 23:7
FTS_Waschraumfenster.Signal_Rep_Time 23:6
FTS_Waschraumfenster.Signal_repetitions 23:9
FTS_Waschraumfenster.Temp_control 23:5
FTS_Waschraumfenster.Timer 23:8
FTS_Waschraumfenster.disable 23:2
FTS_Waschraumfenster.state 23:1
FTS_Wohnzimmer.AA_Examine 24:3
FTS_Wohnzimmer.AA_Level 24:4
FTS_Wohnzimmer.Signal_Rep_Count 24:7
FTS_Wohnzimmer.Signal_Rep_Time 24:6
FTS_Wohnzimmer.Signal_repetitions 24:9
FTS_Wohnzimmer.Temp_control 24:5
FTS_Wohnzimmer.Timer 24:8
FTS_Wohnzimmer.disable 24:2
FTS_Wohnzimmer.state 24:1
Ueberwachung_FT_1.OG_Bad.state 2:10
Ueberwachung_FT_Arbeitszimmer_l.state 3:10
Ueberwachung_FT_Arbeitszimmer_r.state 4:10
Ueberwachung_FT_DG_Bad.state 5:10
Ueberwachung_FT_DG_Ost_l.state 6:10
Ueberwachung_FT_DG_Ost_r.state 7:10
Ueberwachung_FT_DG_West_l.state 8:10
Ueberwachung_FT_DG_West_r.state 9:10
Ueberwachung_FT_Dachluke.state 10:10
Ueberwachung_FT_Fahrradschuppen.state 11:10
Ueberwachung_FT_Gaeste_WC.state 12:10
Ueberwachung_FT_Garage_GTor.state 13:10
Ueberwachung_FT_Garage_GTuer.state 14:10
Ueberwachung_FT_Gartentuere.state 15:10
Ueberwachung_FT_HK_Kellerfenster.state 16:10
Ueberwachung_FT_HK_Tuere.state 17:10
Ueberwachung_FT_Haustuere.state 18:10
Ueberwachung_FT_Kueche.state 19:10
Ueberwachung_FT_Partyraum_Fenster.state 20:10
Ueberwachung_FT_Partyraum_Tuere.state 21:10
Ueberwachung_FT_Schlafzimmer.state 22:10
Ueberwachung_FT_Waschraumfenster.state 23:10
Ueberwachung_FT_Wohnzimmer.state 24:10
valueIcon:
AA_Examine.off general_aus@red
AA_Examine.on general_an@green
AA_Level.high general_high@red
AA_Level.low general_low@green
AA_Level.mid general_mid@blue
Temp_control.0 general_aus@blue
Temp_control.1 general_an@orange
disable.0 general_aus@green
disable.1 general_an@red
state %devStateIcon
valueSuffix:
Signal_Rep_Time Min.
Timer Min.
values:
formated:
undef
ARRAY(0x5c7f2e0)
ARRAY(0x5a9d4a8)
ARRAY(0x5950c38)
ARRAY(0x5923e68)
ARRAY(0x62c8f30)
ARRAY(0x5bb3198)
ARRAY(0x585f970)
ARRAY(0x5aa3978)
ARRAY(0x58fde40)
ARRAY(0x594f3e8)
orig:
undef
ARRAY(0x62c5870)
ARRAY(0x58bab20)
ARRAY(0x5a36fd0)
ARRAY(0x5a393d8)
ARRAY(0x637f1e0)
ARRAY(0x5aeac08)
ARRAY(0x58609c8)
ARRAY(0x5a3efb8)
ARRAY(0x5c2c700)
ARRAY(0x625a908)
prefixsuffix:
undef
ARRAY(0x5aeaaa0)
ARRAY(0x5bb2128)
ARRAY(0x25b87a0)
ARRAY(0x595d0d8)
ARRAY(0x5cc7488)
ARRAY(0x5966690)
ARRAY(0x58bcb68)
ARRAY(0x595f2e0)
ARRAY(0x5c096f0)
ARRAY(0x5c7ede8)
Attributes:
alias Status der Fenster und Türen
cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:16px"'
}
commands {
"AA_Level.low" =>"attr %DEVICE AA_Level mid",
"AA_Level.mid" =>"attr %DEVICE AA_Level high",
"AA_Level.high"=>"attr %DEVICE AA_Level low",
"disable.0"=>"attr %DEVICE disable 1",
"disable.1"=>"attr %DEVICE disable 0"
}
group FTS
notime 1
room Kontrollraum
valueIcon {
state => '%devStateIcon',
'disable.0' => 'general_aus@green',
'disable.1' => 'general_an@red',
'AA_Examine.off' => 'general_aus@red',
'AA_Examine.on' => 'general_an@green',
'AA_Level.low' => 'general_low@green',
'AA_Level.mid' => 'general_mid@blue',
'AA_Level.high' => 'general_high@red',
'Temp_control.0'=> 'general_aus@blue',
'Temp_control.1'=> 'general_an@orange'
}
valueSuffix {
"Timer"=>" Min.",
"Signal_Rep_Time"=>" Min."
}
verbose 0
In der letzten Spalte der RG wird der Zustand der Überwachungsschalter = "on" oder "off" (Dummy für jedes FTS) dargestellt.
Das Mapping geschieht in der DEF. der RG. mit Aufruf der folgenden Sub:
state@{FT2UFT_Mapping($DEVICE)}
Hier die Sub in der 99_Util..
sub FT2UFT_Mapping($){
# Routine dient für die ReadingsGroup FTS zum Ableiten der Namen der Überwachungs-Dummies aus den in der RG ermittelten FTS
my $device = shift;
my $t = "Ueberwachung_FT_".substr($device,4,20);
return $t;
} # End FT2UFT_Mapping()
Hast Du vielleicht eine Idee, was dies auslöst?
VG
Alex
Vielleicht
<state>@{FT2UFT_Mapping($DEVICE)}
oder
<state@{FT2UFT_Mapping($DEVICE)}>
?
Hallo mumpitzstuff,
beides funktioniert leider nicht. Das Orginal von mir funktioniert ja, nur es kommen sporadisch diese perl warnings, also nicht bei jedem
Aufruf der RG.
Kann mir jemand sagen was das <GEN11> in den warnings bedeutet?
...... at ./FHEM/33_readingsGroup.pm line 1383, <GEN11> line 15170
.
Das kommt fast ausschliesslich vor
VG
Alex
Das Programm meckert glaube ich, das die geschweiften Klammern nicht escaped sind.
state@\{FT2UFT_Mapping($DEVICE)\}
Geht sowas zufällig?
Nein, leider nicht. Ich denke dass das Problem an einer anderen Stelle, vielleicht sogar ausserhalb der RG liegt.
LEO:
deprecated - veraltet
In der "Computerwelt" ist es sinnvoll, 'deprecated' mit 'veraltet' zu übersetzen.
Hab die warnings glaube ich erst seit Featurelevel 5.8.
Funktioniert ja, nur sporadisch kommen diese Warnings.
Gruß
Alex
Danke, das wäre geklärt.
Bleibt noch die Frage, warum ich in der readinggroup nicht die Zeiten ändern kann.
Lajut wiki sollte dies mit einem Dropdwon Menu funktionieren.
Ich glaube das Modul readingsGroup wird nicht mehr gepflegt. Wer ist denn der aktuelle Maintainer?
Das Problem mit den Fehlermeldungen bei Verwendung geschweifter Klammern wurde bereits 2017 entdeckt. Hier https://forum.fhem.de/index.php/topic,78337.msg798594.html#msg798594 (https://forum.fhem.de/index.php/topic,78337.msg798594.html#msg798594) habe ich im April 2018 eine mögliche Lösung vorgeschlagen die noch keine Beachtung fand.
Problem ist die laut Doku der readingsGroup vorgesehene "unescaped" Nutzung der geschweiften Klammer im Regex. Aus der Doku: "Regex kann die Form <regex>@{perl} haben, um Readings von einem anderen Gerät zu verwenden".
Das ist seit Perl v5.22 deprecated und ab Perl v5.26 ein Syntax Error. Syntax Error bedeutet FHEM startet gar nicht bzw. bleibt hängen.