FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: gestein am 29 März 2022, 20:01:33

Titel: [gelöst] Aktuelles StateIcon eines Devices auslesen?
Beitrag von: gestein am 29 März 2022, 20:01:33
Hallo,

Ist es möglich, das aktuelle Icon eines Devices auszulesen?

Hintergrund:
Ich habe da mehrere Devices, deren Status ich gerne in einer Übersicht darstellen würde.
Die haben alle unterschiedliche StateIcons.
Natürlich könnte ich den Status auslesen und mittels des Attributs devStateIcon das Icon ermitteln.
Das erscheint mir aber relativ viel Aufwand zu sein.

Steht das vielleicht irgendwo im hash?
Oder gibt es dazu eine fhem-Funktion?

Danke für jeden Tipp.

Lg, Gerhard
Titel: Antw:Aktuelles StateIcon eines Devices auslesen?
Beitrag von: supernova1963 am 30 März 2022, 07:08:44
Hallo gestein,

ich habe keine Antwort auf deine Frage, aber vielleicht einen Lösungsansatz für dein Ziel:


defmod raunet_22 readingsGroup room=2.*:FILTER=group=2.*:?alias,state
attr raunet_22 alias Beleuchtung Kellergeschoss
attr raunet_22 mapping %ALIAS
attr raunet_22 nameIcon {AttrVal($DEVICE,"icon",$DEVICE)}
attr raunet_22 notime 1
attr raunet_22 valueIcon {state => '%devStateIcon'}

Titel: Antw:Aktuelles StateIcon eines Devices auslesen?
Beitrag von: gestein am 30 März 2022, 13:48:30
Hallo,

Danke. Das hat mich auf die richtige Spur gebracht.
Im Sourcecode zur readingsgroup findet man die Funktion ,,FW_devState(<dev>,<room?>)".

Warum man dafür den Raum benötigt und vor allem welchen (wenn das Gerät z.B. in mehreren Räumen gelistet ist) habe ich noch nicht ganz verstanden.

Damit erscheint mal das richtige Icon. Danke.
Lg, Gerhard
Titel: Antw:Aktuelles StateIcon eines Devices auslesen?
Beitrag von: gestein am 30 März 2022, 21:07:13
Da ich das Icon des Gerätes gerne neben einem anderen haben wollte, musste ich noch eine Änderung vornehmen.
Die Funktion FW_devState liefert nämlich die svg-Graphik eingebettet in ein ,,<div>...</div>" Feld.
Wenn man daher nur den ,,<svg>...</svg>"-Text extrahiert, dann klappt es auch mit Icon neben Icon.

Also z.B.:
$devStateIcon = FW_devState("$WindowDev","&room=Rollos");
$devStateIcon = substr $devStateIcon, index($devStateIcon,"<svg");
$devStateIcon =~ s/<\/div>//g;


Ist vielleicht nicht der schönste Code, aber so klappt es.

Vielleicht kann es jemand gebrauchen.
Lg, Gerhard