FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Sebastian84 am 22 November 2023, 22:17:16

Titel: [Gelöst]Icon in Farbe
Beitrag von: Sebastian84 am 22 November 2023, 22:17:16
Guten Abend
Ich möchte gerne das Icon wenn Water:1 ist das Icon (huminidity) in Rot darstellen und wenn rechable:0 ist auch in rot anzeigen. Wenn batterystate:no ist das Icon in gelb darstellen.

ZitatDEF        sensor 20  IODev=deconz
   FUUID      6143b545-f33f-cdd4-3e98-d3b0ed9fbd7ea2b8
   FVERSION   31_HUEDevice.pm:0.262040/2022-07-09
   ID         S20
   INTERVAL   
   IODev      deconz
   NAME       Spuele
   NR         323
   STATE      Wasser:Nein
   TYPE       HUEDevice
   eventCount 3
   has_events 1
   manufacturername LUMI
   modelid    lumi.sensor_wleak.aq1
   name       Wassersensor Spüle
   on         1
   reachable  1
   swversion  0.0.0_0006
   type       ZHAWater
   uniqueid   00:15:8d:00:06:c5:d9:7a-01-0500
   READINGS:
     2023-11-22 20:01:13   IODev           deconz
     2023-11-22 21:55:02   battery         62
     2023-11-22 21:55:02   batteryPercent  62
     2023-07-01 03:20:16   batteryState    ok
     2023-11-22 21:55:02   lastseen        2023-11-22T20:55Z
     2023-11-22 21:55:02   reachable       1
     2023-07-01 03:20:16   tampered        0
     2023-11-22 21:55:02   temperature     27
     2023-11-22 21:55:02   water           0
   helper:
     devtype    S
     state     
     update_timeout 1
     configList:
     json:
       ep         1
       etag       b6288240d7bd6b58d8e90647aa32f682
       lastannounced
       lastseen   2023-11-22T20:55Z
       manufacturername LUMI
       modelid    lumi.sensor_wleak.aq1
       name       Wassersensor Spüle
       swversion  0.0.0_0006
       type       ZHAWater
       uniqueid   00:15:8d:00:06:c5:d9:7a-01-0500
       config:
         battery    62
         temperature 2700
       state:
         lastupdated 2023-11-22T20:55:02.934
     setList:
Attributes:
   event-on-change-reading .*
   eventMap   0:Nein 1:Ja
   group      Wassersensoren
   icon       humidity
   model      lumi.sensor_wleak.aq1
   room       2_EG->Kueche
   stateFormat Wasser:water
 
Titel: Aw: Icon in Farbe
Beitrag von: juemuc am 23 November 2023, 13:18:58
Als Suchanstoß:

https://wiki.fhem.de/wiki/DevStateIcon (https://wiki.fhem.de/wiki/DevStateIcon)
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 23 November 2023, 16:15:34
Hab z.b. ausprobiert DevStateIcon
Water:0:humidity@red

rechable:0:humidity@yellow
batterystate:no:humidity@yellow

Funkioniert aber nicht. Was mach ich da falsch
Titel: Aw: Icon in Farbe
Beitrag von: MadMax-FHEM am 23 November 2023, 16:27:54
Zitat von: Sebastian84 am 23 November 2023, 16:15:34Funkioniert aber nicht. Was mach ich da falsch
Hast du mal die commandref gelesen oder auch den verlinkten Wiki?
Und versucht nachzuvollziehen?

Weil da steht z.B.:
Zitat von: commandrefSpace 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 STATE text will be displayed.

Bei dir steht in STATE:
Zitat von: STATESTATE      Wasser:Nein

Wie soll dann eines deiner Versuche etwas bewirken?

EDIT:
das hier sollte estwas bewirken:
Wasser.Nein:humidity@red

Noch zur Sicherheit: du kannst das icon "VOR" dem Devive nicht (einfach so) anpassen.
Wenn du das willst, wirst du verm. mit CSS oder Javascript arbeiten müssen.
Zumindest fällt mir keine andere Möglichkeit ein.

Mit devStateIcon kannst du "nur" statt dem Text in STATE eben ein oder mehrere Icons anzeigen lassen (bei mehrzeiligem STATE)...

Was du willst (also wenn du zufrieden bist mit dem Icon "hinter" dem Device), dann brauchst du entweder einen mehrzeiligen STATE und dann eben mehrere Icons (für jede Zeile des STATE eben eines) oder du schreibst eine Perl-Funktion (z.B. in myUtils) und gibst eben je nach "Zustand"/"Wunsch" eben das entsprechende Icon (und Farbe) zurück.

STATE anpassen (und auch mehrzeilig) geht mittels stateFormat:
Zitat von: commandrefNote: The above is valid for each line of STATE. If STATE (through stateFormat) is multilined, multiple icons (one per line) will be created.

UND: bitte (endlich) die lists in CODE-Tags NICHT in "quotes"/Zitate, danke.

Gruß, Joachim
Titel: Aw: Icon in Farbe
Beitrag von: juemuc am 23 November 2023, 16:29:50
Ausserdem musst Du Groß-/Klein und Rechtschreibung beachten  8)

Viele Grüße
Jürgen
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 23 November 2023, 18:13:08
Kann man den Wenn Zustand Wasser:Ja
Und Spule in rot anzeigen zu lassen?
Titel: Aw: Icon in Farbe
Beitrag von: MadMax-FHEM am 23 November 2023, 18:21:03
Spule?

Weitere Zustände durch Leerzeichen getrennt anfügen...

Steht alles in den Links bzw. commandref...

Gruß, Joachim
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 23 November 2023, 18:23:40
Sorry meine Spuele. Ok danke werde ich versuchen.
Titel: Aw: Icon in Farbe
Beitrag von: betateilchen am 23 November 2023, 22:54:55
Zitat von: Sebastian84 am 23 November 2023, 16:15:34Hab z.b. ausprobiert DevStateIcon
Water:0:humidity@red

rechable:0:humidity@yellow
batterystate:no:humidity@yellow

Funkioniert aber nicht. Was mach ich da falsch


Drei Werte, dreimal falsch.

Falsch: Water
Richtig: water

Falsch: rechable
Richtig: reachable

Falsch: batterystate
Richtig: batteryState

und das Attribut ist auch falsch.

Falsch: DevStateIcon
Richtig: devStateIcon
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 23 November 2023, 23:06:59
Müste nicht auch devStateStyle gehen?
Jetzt wird der Text
Wasser:Nein aber auch in rot angezeigt.
Ich wollte eigendlich das nur bei Wasser:Ja die Schrift in rot angezeigt wird und sonst nur in Weiß wenn Wasser:Nein ist.



style=color:red;;Wasser:Ja;;style=color:front-weight;;Wasser:Nein
Titel: Aw: Icon in Farbe
Beitrag von: MadMax-FHEM am 23 November 2023, 23:15:32
Willst du nun farbige Icons oder farbigen Text?

Gruß, Joachim
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 24 November 2023, 05:19:33
farbiger Text reicht für mich aus.
Titel: Aw: Icon in Farbe
Beitrag von: MadMax-FHEM am 24 November 2023, 18:32:36
Commandref (oder Wiki o.ä.) lesen ist nicht so deins?

Wo hast du nur immer die phantasievollen Definitionen her?

devStateSytle ist nicht dynamisch, sondern stellt den Style einmal ein und fertig, dann ist das Device so.

Wenn du dynamisch etwas am Style ändern willst (willst du wohl?), dann z.B. mit stateFormat und Perl...

EDIT: vielleicht hier mal schauen https://wiki.fhem.de/wiki/DeviceOverview_anpassen

Geht sicher auch anders/besser, hier (trotzdem mal) ein Vorschlag für stateFormat der evtl. das macht was du mit deinem letzten Versuch erreichen wolltest (zumindest so wie ich es verstehe: Infos sind ja sehr spärlich)...
{
# color code https://html-color-codes.info/
# https://www.computerhope.com/htmcolor.htm
  my $Style = "Wasser: ";
  if(ReadingsNum($name,"water",0) == 1)
  {
    # red
    $Style .= "<span style='color:#FF0000'>Ja</span>";
  }
  else
  {
    $Style .= "<span>Nein</span>";
  }
}

Gruß, Joachim
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 26 November 2023, 21:41:24
Habe deine perl. Code in 99_myUtils.pm eingetragen.
Leider wird das Wasser:Ja nicht in roter Schrift dagestellt,wenn state: Wasser:Ja ist.
Titel: Aw: Icon in Farbe
Beitrag von: MadMax-FHEM am 26 November 2023, 22:53:53
Wer hat was von myUtils geschrieben?
Bzw. kannst du schon dort einfügen aber dann als Sub und du musst es nat. auch aufrufen (lassen)...

Gedacht war es (wie geschrieben) für stateFormat...

Und Aussagen wie "geht nicht" ohne weitere Infos (aktuelles list, Logeinträge, ...) helfen nicht zu helfen...

Bei einem Testdummy bei mir wird Ja rot.
Allerdings nur das Ja.
Wenn du den ganzen Text willst, dann entsprechend umbauen...

EDIT: ich habe sogar dein eventMap übernommen. Wobei ich nicht verstehen kann warum das zum "Übersetzen" genutzt wird. Es macht ja (wie der Name sagt) mehr als nur Anzeige. Wenn man das einsetzt, muss man u.U. auch "Automatisierungen" (notify, FileLog, ...) anpassen...

Gruß, Joachim
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 27 November 2023, 07:25:21
Wenn ich den perl code in stateFormat eingebe kommt der Fehler
Missing right curly or square bracket at (eval 9799315) line 1, at end of line
syntax error at (eval 9799315) line 1, at EOF
Titel: Aw: Icon in Farbe
Beitrag von: MadMax-FHEM am 27 November 2023, 08:51:30
Zitat von: Sebastian84 am 27 November 2023, 07:25:21Wenn ich den perl code in stateFormat eingebe kommt der Fehler
Missing right curly or square bracket at (eval 9799315) line 1, at end of line
syntax error at (eval 9799315) line 1, at EOF

Wie (phantasievoll) hast du es denn eingegeben?

Wenn ich es "ganz normal" eingebe:

DropDown das Attribut stateFormat anwählen
In das Eingabefeld klicken
Aus Forum den Code kopieren und dort einfügen
Auf Ok klicken
Dann vorne auf "attr" zum Übernehmen
Save Config

-> kein Fehler und fertig

Gruß, Joachim
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 27 November 2023, 09:15:12
   DEF        sensor 20  IODev=deconz
   FUUID      6143b545-f33f-cdd4-3e98-d3b0ed9fbd7ea2b8
   FVERSION   31_HUEDevice.pm:0.262040/2022-07-09
   ID         S20
   INTERVAL   
   IODev      deconz
   NAME       Spuele
   NR         323
   STATE      Wasser:Nein
   TYPE       HUEDevice
   eventCount 8
   has_events 1
   manufacturername LUMI
   modelid    lumi.sensor_wleak.aq1
   name       Wassersensor Spüle
   on         1
   reachable  1
   swversion  0.0.0_0006
   type       ZHAWater
   uniqueid   00:15:8d:00:06:c5:d9:7a-01-0500
   READINGS:
     2023-11-27 07:26:23   IODev           deconz
     2023-11-27 09:09:31   battery         52
     2023-11-27 09:09:31   batteryPercent  52
     2023-07-01 03:20:16   batteryState    ok
     2023-11-27 09:09:31   lastseen        2023-11-27T08:09Z
     2023-11-27 09:09:31   reachable       1
     2023-07-01 03:20:16   tampered        0
     2023-11-27 09:09:31   temperature     26
     2023-11-27 09:09:31   water           0
   helper:
     devtype    S
     state     
     update_timeout 1
     configList:
     json:
       ep         1
       etag       f85b362a86e4eedf5fa4689f68625f3a
       lastannounced
       lastseen   2023-11-27T08:09Z
       manufacturername LUMI
       modelid    lumi.sensor_wleak.aq1
       name       Wassersensor Spüle
       swversion  0.0.0_0006
       type       ZHAWater
       uniqueid   00:15:8d:00:06:c5:d9:7a-01-0500
       config:
         battery    52
         temperature 2600
       state:
         lastupdated 2023-11-27T08:09:31.512
     setList:
Attributes:
   event-on-change-reading .*
   eventMap   0:Nein 1:Ja
   group      Wassersensoren
   icon       humidity
   model      lumi.sensor_wleak.aq1
   room       2_EG->Kueche
   stateFormat { # color code https://html-color-codes.info/ # https://www.computerhope.com/htmcolor.htm   my $Style = "Wasser: ";   if(ReadingsNum($name,"water",0) == 1)   {     # red     $Style .= "<span style='color:#FF0000'>Ja</span>";   }   else   {     $Style .= "<span>Nein</span>";   } }
 

Bei mir kommt der Fehler den ich geschrieben habe.
Wenn ich dann beim Fehler Ok drücke und dann auf Save Config. Dann steht das in stateFormat drin. Aber wenn ich den Sensor auslöse. Bekomme ich ne push Naricht, aber das ja wird nicht rot.
Titel: Aw: Icon in Farbe
Beitrag von: MadMax-FHEM am 27 November 2023, 09:34:29
Wie, womit kopierst du denn und fügst ein?
Weil so ist der Fehler klar aber so ist es auch nicht der Code aus dem Forum, weil der eben mehrzeilig ist...

Wenn ich das mache, dann ist es mehrzeilig, was es auch ist.

Gut, dann füge ich das für RawDef noch an (wobei wenn hier dann etwas mit copy/paste nicht passt, passt es auch dann wohl nicht):
attr Spuele stateFormat {\
# color code https://html-color-codes.info/\
# https://www.computerhope.com/htmcolor.htm\
  my $Style = "Wasser: ";;\
  if(ReadingsNum($name,"water",0) == 1)\
  {\
    # red\
    $Style .= "<span style='color:#FF0000'>Ja</span>";;\
  }\
  else\
  {\
    $Style .= "<span>Nein</span>";;\
  }\
}\

Wenn es dann auch nicht geht, weiß ich nicht was du machst...
(und wie du überhaupt etwas bei deinem System konfiguriert bekommen hast)

Gruß, Joachim
Titel: Aw: Icon in Farbe
Beitrag von: Sebastian84 am 27 November 2023, 10:29:11
Danke. Das hat geklappt
Titel: Aw: Icon in Farbe
Beitrag von: MadMax-FHEM am 27 November 2023, 11:23:44
Zitat von: Sebastian84 am 27 November 2023, 10:29:11Danke. Das hat geklappt

Das Einfügen oder ist damit auch das Problem gelöst?
(wenn auch der Titel ja nicht mehr passt)
-> wenn dem so ist, dann doch bitte ein [gelöst] etc. "vorne dran", danke.

Gruß, Joachim