FHEM Forum

FHEM => Frontends => Thema gestartet von: Burny4600 am 20 Januar 2016, 08:42:15

Titel: [gelöst] Icon einfärben
Beitrag von: Burny4600 am 20 Januar 2016, 08:42:15
Wie kann ich Icons einfärben wenn die Statusmeldung in dieser Form ankommen?
smoke_detect: off

Wenn ich einen Status mit on, off oder ähnliches bekomme ist das kein Thema.
Titel: Antw:Icon einfärben
Beitrag von: marvin78 am 20 Januar 2016, 08:50:24
Die commandref zu devStateIcon lesen wäre eine gute Idee.

attr DEVICE devStateIcon on:ICON1@green:off off:ICON2@red:on

(nur ein Beispiel)
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 20 Januar 2016, 14:40:25
Das Problem ist nur das genau das nicht beschrieben ist.

Wie schon erwähnt nennt sich der Status smoke_detect: off.

Die Beschreibungen beziehen sich unter anderem auf Status Definitionen die ein Leerzeichen enthalten.
Dieser Status enthält einen Doppelpunkt und ein Leerzeichen.
Und da funktionieren bei mir die Anpassungen nicht.
Titel: Antw:Icon einfärben
Beitrag von: marvin78 am 20 Januar 2016, 14:44:12
Genauer geht es kaum. Es steht dort, dass du Regex und Perl Code verwenden kannst. Damit bekommt man dann schon was vernünftiges hin. Auch mit Leerzeichen und Doppelpunkten.
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 20 Januar 2016, 17:01:16
Wo genau findest du das.

Hier steht nichts genauers: http://www.fhemwiki.de/wiki/DevStateIcon
Titel: Antw:Icon einfärben
Beitrag von: marvin78 am 20 Januar 2016, 17:03:54
Ich habe nicht auf das Wiki verwiesen, sondern auf die commandref. Das sollte immer die erste Anlaufstelle sein, denn das ist die FHEM-Doku.

Zitat aus der commandref:

Zitat[...]First form:

       
  • Space separated list of regexp:icon-name:cmd triples, icon-name and cmd may be empty.
    If the state of the device matches regexp, then icon-name will be displayed as the status icon in the room, and (if specified) clicking on the icon executes cmd.  If fhem cannot find icon-name, then the status text will be displayed. Example:
[...]

Second form:

       
  • Perl regexp enclosed in {}. If the code returns undef, then the default icon is used, if it retuns a string enclosed in <>, then it is interpreted as an html string. Else the string is interpreted as a devStateIcon of the first fom, see above. Example:
    {'<div style="width:32px;height:32px;background-color:green"></div>'}[...]
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 20 Januar 2016, 17:19:25
Und unter welcher Rubrik in den Commandref hast du das gefunden.

devStateIcon habe ich darin nicht gefunden.
Titel: Antw:Icon einfärben
Beitrag von: marvin78 am 20 Januar 2016, 17:23:45
Bist du sicher, dass du mich nicht veräppeln möchtest? Also gut:

commandref aufrufen, STRG-F drücken und nach devStateIcon suchen. Ist nicht schwer.

Alternativweg: Es ist ein allgemeines Attribut für FHEMWEB (http://fhem.de/commandref_DE.html#FHEMWEB) und ist deshalb auch dort unter den Attributen aufgeführt.

Ich würde empfehlen, dich mit den Grundlagen von FHEM zu befassen. Die commandref ist nicht nur dafür da, dass sie den Speicher füllt. Sie darf auch gelesen werden.
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 20 Januar 2016, 17:43:24
Danke.
Veräppeln wollte ich dich wirklich nicht.
Aber manchmal sieht man vor lauter Bäume den Wald nicht.
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 21 Januar 2016, 18:27:48
Das klappt einfach nicht.

Habe devStateIcon in der Form definiert on:secur_smoke_detector@green:{smoke_detect: off} {smoke_detect: off}:secur_smoke_detector@red:on

Irgendwo hab ich noch etwas nicht verstanden.
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 23 Januar 2016, 10:55:26
Habe leider immer noch keine funktionierende Lösung für das Einfärben der Icons der Rauchmelder gefunden.
Mit diesen Klammern Ergänzungen stürzt mir FHEM ab.

Habe die Definition des Attributes für devStateIcon in der Form dargestellt wo FHEM noch funktioniert.
attr RM1002_1e7c devStateIcon on:secur_smoke_detector@green:off off:secur_smoke_detector@red:on

Der Status lautet state => smoke_detect: off und vermutlich für Rauchmeldung state => smoke_detect: on

Wenn ich mit Klammern den Status in devStateIcon deklariere ändert sich der Status nicht oder FHEM schmiert ab.
attr RM1002_1e7c devStateIcon on:secur_smoke_detector@green:{smoke_detect: off} {smoke_detect: off}:secur_smoke_detector@red:on

Wer kann mir hier wirklich weiter helfen?
Titel: Antw:Icon einfärben
Beitrag von: marvin78 am 23 Januar 2016, 11:03:29
1. Bitte verwende Code Tags hier im Forum. So kann man das kaum lesen.

2. Beschäftige dich mit Perl. Darum kommst du sowieso nicht, wenn du FHEM verwendest. Geschweifte Klammern machen noch keinen Perl Code.

3. Vor Perl Code, würde ich es mal mit RegEx probieren (Tutorial Reguläre Ausdrücke - Daniel Fetts Homepage). (http://www.danielfett.de/internet-und-opensource,artikel,regulaere-ausdruecke)

Sowas könnte funktionieren (ungetestet):

/smoke_detect:.off/@green /smoke_detect:.on/@red

oder

.*off@green .*on@red

Da du ja nicht schalten möchtest, brauchst du den dritten Teil nicht (siehe commandref zu devStateIcon).

Andernfalls würde ich es mit Perl und ReadingsVal mit Bedingung probieren.
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 23 Januar 2016, 15:58:52
Damit beschäftige ich mich ohnehin.
Aber alles geht nun mal nicht so schnell, darum meine Anfrage hier im Forum um das ganze abzukürzen.
So wie es aussieht wirds aber mit dem abkürzen nichts und werde noch ein Jahr zuwarten müssen um eine vernünftige Lösung zu definieren.
Titel: Antw:Icon einfärben
Beitrag von: marvin78 am 23 Januar 2016, 15:59:42
Und meine Lösungsvorschläge hast du getestet?
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 23 Januar 2016, 17:16:55
Ja habe ich.
Aber die funktionieren leider nicht.

Es bleibt dieser Wert anstatt des Icons stehen (smoke_detect: off) und das mit beiden Lösungen .*off@green .*on@red oder /smoke_detect:.off/@green /smoke_detect:.on/@red
Titel: Antw:Icon einfärben
Beitrag von: marvin78 am 23 Januar 2016, 18:02:28
Es fehlt ja auch noch die Angabe des Icons. Das war nue Pseudocode

.*off:ICON@green .*on:ICON@red
Ein bisschen Mitdenken war erlaubt
Titel: Antw:Icon einfärben
Beitrag von: rudolfkoenig am 23 Januar 2016, 18:06:01
So, jetzt reichts :)

1. Einfaerben kann man nur SVG, deswegen muss das ausgesuchte icon ein SVG sein. Im Auslieferungszustand kommt on/off vom "default" Verzeichnis als PNG, deswegen funktionieren die Beispiele mit on/off nicht. Loesung (fuer on/off): "attr WEB iconPath fhemSVG:openautomation". secur_smoke_detector gibts nur als SVG, dafuer ist die iconPath Anpassung nicht noetig.

2. Wie im zitierten commandref steht, erst kommt ein Regexp (EventMonitor beobachten), dann ein Doppelpunkt, dann der Name des Icons, dann optional mit @ getrennt die Farbe. Danach Leerzeichen und dann wieder von vorne. Ja, man kann es auch anders machen, aber fuer unseren Zweck ist das am einfachsten.

Beispiel:
attr RM1002_1e7c devStateIcon .*on:secur_smoke_detector@green .*off:secur_smoke_detector@red
Titel: Antw:Icon einfärben
Beitrag von: Burny4600 am 23 Januar 2016, 18:28:05
Ja man kann manchmal wirklich blöd sein, aber dieses mal habe ich mich wirklich selbst übertroffen.

Check das jetzt ab.
Danke für Eure Geduld.

Und siehe da, es funktioniert.
Blamabel.