weblink erweiterung

Begonnen von justme1968, 04 Juli 2013, 23:55:07

Vorheriges Thema - Nächstes Thema

justme1968

es gab hier den wunsch in der raum übersicht mehr als nur den einzeiligen state eines device zu sehen.

ich habe das gerade eben eine lösung dafür syssstat modul eingebaut und wollte es eigentlich dann als devStateIcon per {SYSSTAT_toHtml($name)} verwenden. das war aber zu kurz gedacht weil dann ja immer noch der device name in einer spalte davor steht und es eher so ausschaut wie bei den filelogs in der raumübersicht.

das richtige aussehen bekomme ich wenn ich die html version in einen eigenen weblink packe statt devStateIcon zu verwenden: define wl_systemStatus weblink htmlCode {SYSSTAT_toHtml("sysstat")}
eigentlich ist das aber nicht sysstat spezifisch sondern eventuell noch für andere devices verwendbar. wie wäre es mit einer erweiterung von weblink:define wl_systemStatus weblink readings <device> [regex]um alle readings bei denen regex matched in einer html tabelle anzuzeigen?

diese version ohne regex habe ich eben gerade probiert. falls du das als patch akzeptierst würde ich es noch um die regex und ein oder zwei konfigurationsparamter erweitern.

ein mapping von den reading namen in sprechendere labels wie auf dem screenshot aus dem link oben wäre auch schön aber ich habe noch keine rechte idee wie.

gruss
  andre

edit: das mapping wäre mit einem hash aus perl code als parameter einfach möglich. {{'temperature' => 'Temperatur in &deg;C'}}
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Ich habe nichts gegen den Patch, obwohl ich meine, dass wir z.Zt. genug Alternativen mit dummy und stateFormat haben.

Es gibt aber auch die Loesung fuer dein sysstat Modul (was auch weblink verwendet): FW_summaryFn und FW_atPageEnd setzen.

justme1968

ich finde es nicht sehr elegant sich 5 oder 10 readings aus einem oder mehreren devices per notify in die entsprechende anzahl dummys zusammen zu kopieren und stateFormat funktioniert nur einzeilig und nur für ein device.

für sysstat alleine würde es mit FW_atPageEnd tatsächlich funktionieren. inzwischen sind mir aber noch andere anwendungsfälle eingefallen und ich habe die idee von oben noch auf die readings mehrere devices erweitert.

die allgemeine syntax ist jetzt folgende:define <wl_device> weblink readings <device1>[:regex] [<device2>[:regex]]* [modifier]* [{...}]
es werden alle readings aus allen angegebenen devices die auf regex matchen zusammen in einer tabelle dargestellt. optional lässt sich der header, der timestamp und/oder das state reading weg lassen. mit dem {...} ausdruck kann man die namen der readings auf einen darzustellenden namen mappen.

die readings werden automatisch per longpoll aktualisiert und die readings sind anklickbar und verlinken auf das device aus dem die readings kommen.

zwei beispiele:

mehrere readings aus einem sysstat device mit geänderten namen in einer tabelle anzeigen. entweder in der raumübersicht oder im floorplan:
define wl_Systemstatus weblink readings sysstat *nostate *notime  {{ 'load' => 'Systemauslastung in %', 'temperature' => 'Systemtemperatur in &deg;;C'}}
attr wl_Systemstatus alias Systemstatus


(siehe Anhang / see attachement)


die temperatur readings von drei unterschiedlichen 1-wire devices zusammen in einer tabelle anzeigen:
define wl_heizung weblink readings t1:temperature t2:temperature t3:temperature *notime {{ 't1.temperature' => 'Vorlauf', 't2.temperature' => 'R&uuml;;cklauf', 't3.temperature' => 'Zirkulation'}}
attr wl_heizung alias Heizung


(siehe Anhang / see attachement)


ich würde das ganze gerne noch erweitern so das auch beim device ein regulärer ausdruck möglich ist um z.b. aus allen devices alle batterie readings zusammen zu suchen. ich habe aber noch keine version die mir gefallen hat.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

hier die zweite version des patches mit der zusätzlichen möglichkeit die devices per regex auszuwählen.

alle battery und voltage readings aus allen devices zusammen suchen und den device namen vor den reading namen schreiben:
define wl_battery weblink readings .*:battery .*:voltage { {'battery' => '$NAME battery', 'voltage' => '$NAME voltage'}}

(siehe Anhang / see attachement)


im gegensatz zu einer umsetzung mit dummys kostet die weblink version keinerlei rechenleistung wenn sie nicht angezeigt wird (keine notifys und sets) und wenn sie angezeigt wird genau ein mal beim seitenaufbau etwa genau so viel wie die dummy version. longpoll ist bei beiden wieder gleich. ancklickbare readings die zum original device zeigen gehen mit den dummys nicht wirklich. die dummys als ein objekt in einen floorplan einzublenden auch nicht.

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

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

rudolfkoenig


justme1968

danke.

ich hab eben noch ein fehlendes <br> in der doku ergänzt.

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

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

Tobias

kann man damit auch alle anderen Definitions zusammenfassen?
Ich möchte zb. eine Übersicht aller RSSI-Werte haben
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

justme1968

im momment geht es nur für readings.

ich bin aber gerade dabei ein 'richtiges' modul daraus zu machen und nicht wie rudi sagen würde weblink dafür zu missbrauchen. in die version kann ich dann gerne auch die internal values mit einbauen.

die ideen die ich gerne noch mit einbauen möchte sind:
 - eine möglichkeit die tabelle zu formatieren wie es mit stateFormat möglich ist
 - eine zusammenfassung bzw. warnung ob alles im grünen bereicht ist oder ob es ein problem gibt wie mit dem DeviceMonitor modul
 - einen update der readigs per longpoll auch wenn die zusammenfassung nicht im gleichen raum ist wie die devices (das ist der eigentliche grund)

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

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

justme1968

das angekündigte modul readingsGroup ist demnächst per update verfügbar.

es wird weblink readings ersetzen und hat unter anderem die folgenden vorteile:

- das aussehen der tabelle ist mit html styles analog zu devStateStyle konfigurierbar.

- die readings werden per longpoll aktualisiert

- einzelne zeilen können dynamisch abhängig vom readings wert im aussehen geändert werden. leider noch nicht per longpoll.

die internal values und das formatieren einzelner werte kommen noch.

wer es schon mal probieren möchte findet die aktuelle version hier:http://forum.fhem.de/index.php?t=getfile&id=5213&rid=430

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

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

justme1968

ich habe es eben offiziell eingecheckt. inklusive der internal values.

wichtig: longpoll geht für internal values nicht. um die werte zu aktualisieren ist ein refresh nötig.

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

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

Tobias

ich denke du hast urlaub??
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

justme1968

klar. und zeit zum entspannen :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Tobias

Hi,
hab meinen Batteriestatus auf readingsgroup umgeschrieben. Funktioniert perfekt.
Habe jetzt auch eine Readingsgroup auf die InternalValues meiner Heizkörperthermostet erstellt um die rferros zu identifizieren. Leider gibts bei den Namen aber wohl noch einen Bug. Das Mapping und der Namestyle funktioniert nicht bzw hat keine Auswirkung:
define wl_rferror readingsgroup HZ_.*:a+rferror
attr wl_rferror mapping {'RF-Error' => ' %DEVICE'}
attr wl_rferror namestyle  {($VALUE eq "1")?'style="color:red"':'style="color:green"'}
attr wl_rferror valuestyle {($VALUE eq "1")?'style="color:red"':'style="color:green"'}


Mein Value ist rot/grün. Der Name hat sich weder auf RF-Error noch auf eine Farbe geändert

HZ_KG_WK:rferror  1 2013-08-26 09:28:06
HZ_OG_Bad:rferror 0 2013-08-26 09:28:06
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

justme1968

zu den Farben: mist da war noch was. hab ich völlig verdrängt. aus irgendeinem grund funktioniert in der namens spalte das setzen von color nicht. alles was mit dem font zu tun hat geht. also z.b. font-size oder font-weight. background geht auch. nur die vordergrund farbe zu setzen hat keine auswirkung. ich vermute es hängt mit dem stylesheet zusammen. ich habe aber noch keine idee woran es liegt.

ich habe eben zum testen z.b. DEF und NR aus den internal values gemappt. genau so wie du in deinem beispiel auf %DEVICE. das hat funktioniert.

wenn das label rferror ist musst du natürlich auch genau den verwenden. nicht in anderer schreibweise also z.b. so:attr wl_rferror mapping {'rferror' => 'RF-Error %DEVICE'}
gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Tobias

ok, da hatte ich ein verständnisproblem beim mapping. Funktioniert natürlich..
Das Ganze weite ich jetzt noch auf Logging der RSSI Werte aus :)

Bekommt man auch eine Sortierung hin? zb. die schlechtesten RSSI-Werte stehen oben...
Es gibt zb. ein Attr Sortby
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter