[gelöst]Verschiedene DevStateIcons in Floorplan und Dashboard beim selben Device

Begonnen von Spook112, 23 August 2016, 10:53:36

Vorheriges Thema - Nächstes Thema

Spook112

Hi,
dies ist mehr eine Verständnisfrage, denn das Problem habe ich gelöst bekommen - nur wie ich finde unschön.

Aufgabenstellung:
Ich möchte für ein und dasselbe Device "TV+Audio_Steckdose" im FHEM Web Dashboard andere "Zustands-Icons" angezeigt bekommen als im Floorplan.
Im Dashboard möchte ich je nach Status/Zustand die Icons Update.png oder Shutdown.png (oder die svg Versionen) angezeigt bekommen.
Das funktioniert durch entsprechende Zuweisung der Icons mittels devStateIcon für das Device.
on:Update@green
off:Shutdown@red

Die entsprechende Anzeige im Web GUI funktioniert einwandfrei.

Im Floorplan "Grundriss_EG" werden dann standardmäßig dieselben Icons angezeigt.
Das möchte ich aber nicht.

Durch anlegen des Verzeichnisses .../www/images/Grundriss_EG
und dortiger Ablage anderer Icons (anderer Inhalt) mit denselben Namen wie oben genannt, erscheinen im Floorplan die anderen (inhaltlich) Icons, so wie gewünscht.


Somit ist das Ziel eigentlich erreicht.
Was mir an der Sache aber nicht gefällt ist, dass ich dadurch unter demselben Namen in zwei unterschiedlichen Verzeichnissen inhaltlich unterschiedliche Icons liegen habe.
Ich habe das jetzt zwar dadurch "entschärft", dass ich im Floorplanverzeichnis keine Dateien liegen habe sondern nur einen Link auf die eigentliche (inhaltlich andere) Datei, die im "fhem_SVG" Verzeichnis liegt.
Somit erkennt man zumindest noch, dass es sich eigentlich um ein anderes Icon handelt.
Ideal ist das trotzdem nicht.

Gibt es dafür eine bessere Lösung oder geht es tatsächlich nur darüber, dass je nach dem ob Floorplan oder Dashboard bei demselben Icon-Namen ein anderes Icon sich dahinter verbergen muss ?   

Danke im Voraus
Michael
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

Benni

Wenn du kein Problem mit zusätzlichen Devices hast, kannst du auch mit readingsProxy oder auch clonedummy arbeiten.
Ich arbeite genau dafür bei mir im InfoPanel teilweise mit readingsProxy-Devices

Spook112

Hm,
danke für die Info.
Nun habe ich zwar keinerlei Erfahrung mit readingsProxy oder clonedummy - allerdings erscheint es mir eher noch komplizierter mit mehreren "Devices" zu arbeiten, die ich ja eigentlich gar nicht brauche.

Im Prinzip möchte ich ja nur für ein und dasselbe Device, je nach dem ob im Floorplan oder im Web GUI dargestellt, unterschiedliche Icons für die devStateIcons angezeigt bekommen - und das nach Möglichkeit ohne verschiedenen Icons mit gleichem Namen in verschiedenen Verzeichnissen ablegen zu müssen.
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

KernSani

Das DevStateIcon kann perl... Habe aber keine Ahnung, ob man in einer Sub rausfindet, wer gerade "ruft"...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

KernSani

Mir hat's keine Ruhe gelassen... Im perl liefert $FW_subdir das aktuelle subdir - also beim Floorplan i.d.R./floorplan/<floorplan name> Das kann man im devStateIcon nutzen und z.B. sowas machen:

attr dummy01 devStateIcon {if($FW_subdir ne "") {return "on:general_aus"} else {return "on:general_an"}}

Wenn der Dummy auf "on" steht, bekomme ich im Floorplan das "Aus" Icon, im WEB das "An" Icon.
Das Ganze natürlich in eine myUtils Sub gepackt...
Weiß nicht, ob's was eleganteres gibt.

Grüße,

Oli 
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Spook112

Das klingt doch schon mal gut.
Allerdings stehe ich da noch etwas auf dem Schlauch was die praktische Umsetzung bei mir angeht:

Ich habe es so versucht:
attr WZ_TV_Audio_Steckdose devStateIcon {if($FW_subdir ne "") {return "on:Update@green off:Shutdown@red"} else {return  "on:it_television_on@green off:it_television_off@red"}

Aber irgendwie klappt das nicht.
Mir ist auch nicht klar was mit dem Satz gemeint ist:
ZitatDas Ganze natürlich in eine myUtils Sub gepackt...

Was hat es damit genau auf sich - was für eine Sub (Subroutine?) ist damit gemeint?

Und was hat es genau damit auf sich ?
Zitatif($FW_subdir ne ""
Speziell der rot markierte Bereich ist mir nicht klar.
Soll das so sein oder muss ich da noch etwas anpassen?
Ich vermute mal in etwa so: if($FW_subdir ne "/Grundriss_EG")

Klappt aber auch nicht :-(
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

schka17

ne bedeutet not equal, "" entspricht kein Inhalt (sorry das ist sehr laienhaft ausgedrückt) also wenn die Variable etwas anderes als nichts beinhaltet dann trifft die Bedingung zu.


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

KernSani

Zitat von: schka17 am 23 August 2016, 23:04:22
ne bedeutet not equal, "" entspricht kein Inhalt (sorry das ist sehr laienhaft ausgedrückt) also wenn die Variable etwas anderes als nichts beinhaltet dann trifft die Bedingung zu.
Genau, oder anders ausgedrückt, wenn FW_subdir nicht leer ist, bist du nicht im FHEMWEB ansonsten woanders (also z.B. im Floorplan)

Zitat von: Spook112 am 23 August 2016, 22:59:33
Was hat es damit genau auf sich - was für eine Sub (Subroutine?) ist damit gemeint?
Ich meinte damit, dass es etwas umständlich ist, den kompletten Perl-Code in das devStateIcon-Attribut zu packen, besser wäre ein Subroutine in 99_myUtils (http://www.fhemwiki.de/wiki/99_myUtils_anlegen). 

Zitat von: Spook112 am 23 August 2016, 22:59:33
Ich habe es so versucht:
attr WZ_TV_Audio_Steckdose devStateIcon {if($FW_subdir ne "") {return "on:Update@green off:Shutdown@red"} else {return  "on:it_television_on@green off:it_television_off@red"}
Aber irgendwie klappt das nicht.
@ hat in Perl eine besondere Bedeutung (im Prinzip werden damit Arrays erzeugt). Deshalb musst du das mit "\" escapen. also:
attr WZ_TV_Audio_Steckdose devStateIcon {if($FW_subdir ne "") {return "on:Update\@green off:Shutdown\@red"} else {return  "on:it_television_on\@green off:it_television_off\@red"}
 
Viel Erfolg,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Spook112

Jetzt habe ich es damit versucht --> Teilerfolg.
{if($FW_subdir eq "") {return "on:Update off:Shutdown"} else {return "on:it_television_on\@green off:it_television_off\@red"}}
Ergebnis:
Beim ersten Aufruf der Seite für das Wohnzimmer im Web GUI wird/werden die Icons Update.png oder Shutdown.png angezeigt - je nach Status und alles so weit richtig.
Auch nach dem Schalten der Icons oder der Commands auf der Seite werden weiterhin die richtigen icons angezeigt.
So weit so gut.

Beim ersten Aufruf des Floorplan für das EG (Grundriss_EG) wird/werden die Icons it_television_on.svg mit der Farbe grün oder it_television_off.svg mit der Farbe rot angezeigt - je nach Status auch hier alles richtig.

Aber - wenn ich im Floorplan dann die Icons schalte wird nach dem Schalten entweder Update.png oder Shutdown.png angezeigt - also die "falschen" Icons.
Die Icons wechseln also von richtig nach falsch :-(

Wenn ich danach einmal F5 drücke, um den Floorplan neu zu laden, werden wieder die richtigen Icons (je nach Status) angezeigt.
Nach erneutem Schalten im Floorplan dann wieder die falschen.

Wenn ich den Floorplan "lange genug" geöffnet lasse wechselt das Icon von alleine vom richtigen zum falschen Icon. Manchmal sogar innerhalb von Sekundenbruchteilen.

Hat jemand eine Idee woran das liegen könnte und was man tun muss, damit das nicht mehr passiert ?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

ujaudio

ZitatWenn ich den Floorplan "lange genug" geöffnet lasse

Floorplan aktualisiert sich regelmäßig so als ob man F5 gedrückt hätte. Ich habe gerade versucht herauszufinden wo ich das eingestellt habe, muss ich noch weiter suchen...
Damit ist aber der Effekt, den du beschreibst, erklärt. Zum restlichen verhalten kann ich momentan nichts beitragen.
Einen lieben Gruß
Jürgen

schka17

Ich denke das daran longpoll schuld ist, beim laden der Seite wird der perlcode ausgeführt, beim longpoll nicht ( reine Vermutung meinerseits)


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

Spook112

Ja, das habe ich auch schon vermutet.
Aber was wäre eine Lösung, um das dauerhaft zu erreichen, was ich oben beschrieben habe.
Hat noch jemand eine Idee?
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren

ht

Ich hatte für meinen Floorplan mal mit einer "iconalias.txt" Datei gespielt. Ein Beispiel findest Du in ".../www/images/fhemSVG". Das funktioniert auch in eigenen Ordnern. Allerdings musste ich die Icons dafür trotzdem in den eigenen Order duplizieren (bzw. einen Link dafür anlegen), anscheinend sucht er das Icon nur in demselben Ordner wie die Datei und nicht in allen Image-Ordnern. Das entspricht also Deiner Lösung, nur dass die Icon-Dateien ihren ursprünglichen Namen behalten können.

Am Ende bin ich aber dazu übergegangen, für den Floorplan eigene ReadingGroups anzulegen. Bei denen funktioniert Gott sei Dank das Attribut valueIcon mit Perl Code auf bei longpoll.
FHEM 5.7, RasPI 2, HomeMatic über HMUSB, JeeLink Clone, Viessmann Heizung

Spook112

Danke für den Tip mit der "iconalias.txt" Datei.
Ich habe diese nun im Unterverzeichniss des Floorplans angelegt und darin die folgenden Einträge gemacht:


Update            it_television_on.svg
Shutdown        it_television_off.svg


Nun hat man die Möglichkeit entweder Kopien der Icons in dem Verzeichnis des Floorplans (bei mir Grundriss_EG) abzulegen oder dort die Links auf den originären Ort an dem die Icons liegen zu erzeugen.
Das sieht dann so:

-rw-r--r-- 1 fhem root 9737 Aug 22 22:54 it_television_off.svg
-rw-r--r-- 1 fhem root 8691 Aug 22 22:54 it_television_on.svg

oder so aus:

lrwxrwxrwx 1 root root   32 Aug 30 00:23 it_television_off.svg -> ../fhemSVG/it_television_off.svg
lrwxrwxrwx 1 root root   31 Aug 30 00:24 it_television_on.svg -> ../fhemSVG/it_television_on.svg


Beide Möglichkeiten funktionieren,
nach einem erneuten set WEB rereadicons.
Die icons behalten also ihrem richtigen Namen im Verzeichnis des Floorplans oder an ihrem originären Ort.

Danke nochmals für die Tips - Problem gelöst.
Raspberry PI / RaZberry ZWAVE Modul / RFXTRX433E / 13 Fibaro FGS-222-EN-A-v1.00 / 17 VISION ZD2102-5 / 10 Somfy RTS / 4 Greenwave GWRENS310-F / Gardena Sileno City / 3 Gardena Gartensteckdosen / 2 devolo Home Control Funkschalter / 8 FIBARO System FGSD002 Smoke Sensoren