Seite 1 von 1

Benötige Hilfe bei Custom Widget

Verfasst: 26. Dez 2024 20:59
von mj1234
Hallo Zusammen,
ich habe gerade angefangen mich in das Thema Widgets einzuarbeiten und hänge an einem Problem, welches ich hach intensiver suche nicht schaffe zu lösen.

Code: Alles auswählen

uid: Battery_Sensor
tags: []
props:
  parameters:
    - description: Label for Smoke Detector
      name: label
      required: false
      type: TEXT
    - context: item
      description: Smoke Detector Item
      label: Item
      name: Temp
      required: false
      type: TEXT
    - context: item
      description: Smoke Detector Battery Item
      label: Item
      name: battery
      required: false
      type: TEXT
timestamp: Dec 26, 2024, 12:19:28 AM
component: oh-label-item
config:
  icon: "=(props.battery.state => 100) ? 'f7:battery_100' : (props.battery.state <=
    50) ? 'f7:battery_25' : 'green'"
  iconColor: "=(props.battery.state => 100) ? 'green' : (props.battery.state <=
    50) ? 'yellow' : 'red'"
  iconUseState: true
Ich versuche ein Widget für den Batteriestatus eines Smoke Detectors zu bauen.
Der SD hat einen Batteriestand von 100% Wenn ich in der Zeile
"icon: "=(props.battery.state => 100) ? 'f7:battery_100' : (props.battery.state <= 50) ? 'f7:battery_25' : 'green'""
den Vergleich Größer Geich schreibe bekomme ich das Icon angezeigt, dass ich erwarte.
Ich möchte aber auf == vergeleichen. Dies scheint aber nicht zu funktionieren.
Ich habe in diversen Voragen "===" gefunden, geht aber auch nicht.
Kann mir jemand erklären was ich falsch mache? Und wieseo wird manchmal "===" verwendet?

Viele Grüße
Michael

Re: Benötige Hilfe bei Custom Widget

Verfasst: 27. Dez 2024 17:01
von Harka
Moin,
beim => vs. == 100 muss ich raten. Vermutlich ist der Wert intern als 100.00004 o.ä. abgespeichert und damit nicht mehr gleich 100. Ich selbst würde beim Füllstand der vollen Batterie nicht auf 100 prüfen sondern eher auf =>75 bzw. 80 ?
Der Unterschied zwischen == und === wird hier erklärt -> https://wiki.selfhtml.org/wiki/JavaScri ... operatoren

Re: Benötige Hilfe bei Custom Widget

Verfasst: 27. Dez 2024 19:26
von mj1234
Moin Harka,
danke für die Antwort.
Die Erklärung habe ich verstanden.
Allerdings habe ich in der Zwischenzeit etwas weiter getestet.
Ich habe mir ein Test Item als Number definiert und setze den Wert des Test Items auf der Karaff Console auf 100.
Funktioniert leider auch nicht. Auch bei Werten mit Dezimalstellen 100.0 funktioniert nur ein >= nicht aber ein ==.

Kann noch jemand helfen?

Viele Grüße

Michael

Re: Benötige Hilfe bei Custom Widget

Verfasst: 28. Dez 2024 08:01
von Harka
versuch mal

Code: Alles auswählen

(Number.parseFloat(props.battery.state) == 100)
Habe gerade hier gespickt.

Re: Benötige Hilfe bei Custom Widget

Verfasst: 28. Dez 2024 11:48
von peter-pan
Hier noch ein Beispiel aus meinem SetUp, allerdings nur mit zwei Vergleichsparametern. Aber wie es mit weiteren geht weisst du ja.

Code: Alles auswählen

                    icon: '=(Number.parseFloat(items.snzb02p_01_battery.state) >= 40 ) ?
                      "oh:battery-90" : "oh:battery-10"'
Bei mir sind auch die Vergleichsoperatoren etwas anders ">=". Aber wie @Harka das schon beschrieben hat, musst du den Vergleichswert in einen numerischen Wert verwandeln. Das machst du mit der "Number.parseFloat"-Methode oder evtl. auch mit "Number.parseInt"

Re: Benötige Hilfe bei Custom Widget

Verfasst: 28. Dez 2024 17:51
von udo1toni
Um auch noch Senf beizumischen...
Eventuell müsste es auch .numericState als Eigenschaft geben (ich habe mich noch nicht weiter mit den Widgets auseinandergesetzt, numericState steht aber allgemein an vielen stellen zur Verfügung, nicht in der DSL, aber z.B. in JavaScript, und die Main UI Widgets sind da vermutlich dicht dran.
Also evtl. so:

Code: Alles auswählen

config:
  icon: "=(props.battery.numericState == 100) ? 'f7:battery_100' : (props.battery.numericState <=
    50) ? 'f7:battery_0' : 'f7:battery_25'
  iconColor: "=(props.battery.numericState == 100) ? 'green' : (props.battery.numericState <=
    50) ? 'yellow' : 'red'"

Re: Benötige Hilfe bei Custom Widget

Verfasst: 1. Jan 2025 19:35
von mj1234
Hallo Leute,
danke für die Unterstützung.
Manchmal muss man Dinge einfach ruhen lassen.
Nach meinem Urlaub habe ich nochmals getestet und es funktioniert.
Ich kann nicht erklären warum.

Viele Grüße

Michael