Seite 1 von 1

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

Verfasst: 23. Mai 2023 06:49
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

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

Verfasst: 23. Mai 2023 08:50
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"'

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

Verfasst: 24. Mai 2023 06:53
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.

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

Verfasst: 24. Mai 2023 07:05
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"'