Wie kann die Iconfarbe in einem widget geändert werden?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Norick
Beiträge: 252
Registriert: 31. Jan 2022 06:35
Answers: 0

Wie kann die Iconfarbe in einem widget geändert werden?

Beitrag von Norick »

Ich habe einen Temperatursensor welcher soweit richtig die Temperatur im Widget anzeigt. Nun möchte ich das Icon entsprechend der Temperatur ändern was aber nicht klappt. Hier mein Code aus dem Widget:

Code: Alles auswählen

- component: oh-label-item
            config:
              action: analyzer
              actionAnalyzerCoordSystem: time
              icon: ="f7:thermometer"
              iconColor: '=(items.tempItem.state.split(" ")[0] >= 20) ? "blue" : "green"'
              item: Wetterstation_Dach_Aussentemperatur
              title: ="Aussentemperatur Dach"
"tempItem" ist die Temperatur. Weiss jemanad was hier falsch ist? Ich gehe davon aus das die Temperatur ein numerischer Wert ist, kann es aber nicht 100% sagen.

Danke

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Wie kann die Iconfarbe in einem widget geändert werden?

Beitrag von udo1toni »

Die Frage ist, welcher exakte Itemtyp Wetterstation_Dach_Aussentemperatur ist. exakt: Number ist allgemein, es könnte sich aber auch um Number:Temperature handeln.

.state kennt keine Funktion .split() Du müsstest zuvor nach String wandeln: .state.toString.split() ginge. Allerdings hast Du dann Strings vorliegen. Ein String kann nur gleich oder ungleich sein, aber nicht größer oder kleiner (im numerischen Sinn). Also müsstest Du vom String erst den numerischen Wert erzeugen :)

Ich bin mir auch relativ sicher, dass die Angabe des Items in dieser Form überhaupt nicht stimmt. Stattdessen müsste es etwas wie Items[props.item].state sein, und wenn es sich um ein Number:Temperature Item handelt, wirst Du es irgendwie nach Number casten müssen und anschließend davon den floatValue bilden. Ich bin mir nicht sicher, ob es so korrekt wäre:

Code: Alles auswählen

iconColor: '=((items[props.item].state as Number).floatValue >= 20) ? "blue" : "green"'
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Norick
Beiträge: 252
Registriert: 31. Jan 2022 06:35
Answers: 0

Re: Wie kann die Iconfarbe in einem widget geändert werden?

Beitrag von Norick »

Ja du hast Recht, es ist ein Number:Temperature Item - habe es gefunden.
Ich habe dein Code probiert aber dieser geht leider (noch) nicht.

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Wie kann die Iconfarbe in einem widget geändert werden?

Beitrag von udo1toni »

Hattest Du die Variante von rlkoshak schon ausprobiert?

Also das hier:

Code: Alles auswählen

iconColor: '=(Number.parseFloat(items[props.item].state) >= 20) ? "blue" : "green"'
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten