OH3 Widget/YAML Pseudo IF ELSE

GUI Relevanten, PaperUI, BasicUI, HabPanel ...

Moderatoren: seppy, udo1toni

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04

OH3 Widget/YAML Pseudo IF ELSE

Beitrag von Mr. BJ »

Hallo,

ich möchte gerne im Widget die die Farbe vom Drop-Icon je nach Status von der Luftfeuchtigkeit (Optimal ist MIN 50, MAX 70) ändern.
Ich bin der Meinung das der Code richtig ist aber bei Werten unter 50 ist wird das Icon trotzdem in Rot angezeigt.

Code: Alles auswählen

icon-color: '=(items[props.item_humidity].state <== probs.optimalHumidityMin ? "orange" : (items[props.item_humidity].state >== probs.optimalHumidityMax ? "red" : "gray"))'
Übersehe ich etwas? Habe dafür bis jetzt auch noch keine richtige/vernünftige Anleitung gefunden.
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von peter-pan »

Hast du die Operatoren mal so probiert:
>=
<=
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von Mr. BJ »

Operatoren...das Wort habe ich gestern gesucht :roll:
Hast du die Operatoren mal so probiert:
>=
<=
Hatte ich leider auch bereits ausprobiert.
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von peter-pan »

Ich kenne mich leider in JS nicht so aus, aber ich hab mal in ein anderes Custom-Widget "hineingespickelt" und dann ist mir ein alt bekanntes Problem wieder bewusst geworden, nämlich die Masseinheit (UoM). Wahrscheinlich hast du da noch die Einheit im Item-Status ! könnte das evtl. der Fall sein? die müsste dann wahrscheinlich raus, da es wohl sonst nichts mit dem Kleiner/Grösser-Vergleich wird.

Hier mal ein Code-Snippet, dass ich gefunden habe, das du als Vorlage benutzen kannst:

Code: Alles auswählen

transform: "=(items[props.setPointItem].state.split(' ')[0] >= (((Number(props.maxTemp) - Number(props.minTemp)) / 2) + Number(props.minTemp)) && items[props.setPointItem].state.split(' ')[0] <= Number(props.maxTemp) ? 'rotate('+(320/(Number(props.maxTemp)-Number(props.minTemp))*(items[props.setPointItem].state.split(' ')[0]-Number(props.minTemp))-160)+'deg)' : (items[props.setPointItem].state.split(' ')[0] > Number(props.maxTemp)) ? 'rotate(180deg)' : '')"
Wie du siehst, wird hier mit "split" und "Index" gearbeitet. D.h. du müsstest noch ".split(' ')[0]" ergänzen und deine "Operatoren" ;) anpassen.

Vielleicht klappt's ja dann.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von Mr. BJ »

Okay, in der Konsole wird der Wert aber als Ganzahl angezeigt.
Aber du hast Recht, ich sollte es trotzdem mal ausprobieren.
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von peter-pan »

Das hat mir jetzt keine Ruhe gelassen. Ich hab dann mal zwei Test-Widgets angelegt und da klappt das:
hum.jpg
Der Yaml-Code dazu:

Code: Alles auswählen

component: oh-list-card
config: {}
slots:
  default:
    - component: oh-label-item
      config:
        item: esp_mini_02_hum
        title: Luftfeuchtigkeit ohne UoM
        icon: f7:greaterthan_circle
        iconColor: "=items.esp_mini_02_hum.state >= '37' ? 'red' : items.esp_mini_02_hum.state <= '36.9' ? 'blue' : 'green'"
      slots: null
    - component: oh-label-item
      config:
        item: HMIPAussensensorNord1HUMIDITY
        title: Luftfeuchtigkeit mit UoM
        icon: f7:greaterthan_circle
        iconColor: "=items.HMIPAussensensorNord1HUMIDITY.state >= '91' ? 'red' : 'green'"
Das klappt sogar mit Dezimalstellen. Beim UoM-Item hab ich das auch mit dem ".split..." probiert und es scheint aber beides zu funktionieren.


...und hier noch einen obendrauf:

Code: Alles auswählen

  icon: "=items.esp_mini_02_hum.state >= '37' ? 'f7:greaterthan_circle' : items.esp_mini_02_hum.state <= '36.9' ? 'f7:lessthan_circle' : 'f7:infinite'"
mit wechselndem Icon :) . Geht auch ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von Mr. BJ »

Jetzt ist es Offiziel, ich steh mit Yaml/Javascript auf Kriegsfuss :D
Nur mit <= und >= hatte ich es auch probiert...jetzt funktioniert es.
Danke dir vielmals für deine Tatkräftige Unterstützung.
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

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

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von udo1toni »

Wo kam denn das >== und <== her?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von peter-pan »

udo1toni hat geschrieben: 19. Mär 2021 19:44 Wo kam denn das >== und <== her?
Da musst du Björn fragen.

Aber ich hab' auch schon in einigen Custom Widgets diese Operatoren (=== / !==) gesehen und die funktionieren auch (glaub ich wenigstens :) ).

Ich hab' aber für Björn noch einen Tipp:

In dem Code-Snippet von mir (bzw. von dem, dem ich's "geklaut" hab ;) ) wird der Input-Props explizit als Number deklariert "Number(props.minTemp)". Vielleicht wäre das auch noch eine Möglichkeit deinen "probs.optimalHumidityMin" aufzupeppen/abzusichern.

Wie sieht denn dein fertiges Widget aus ?


'
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Mr. BJ
Beiträge: 83
Registriert: 27. Sep 2017 08:04

Re: OH3 Widget/YAML Pseudo IF ELSE

Beitrag von Mr. BJ »

Puh, bei so vielen Googeln habe ich die Übersicht verloren. Ich bin der Meinung es war im openHAB Forum (Ein Widget Beispiel) aber finden tue ich gerade nur das:

Code: Alles auswählen

visible: =items[props.item].state === 'ON'
Wie sieht denn dein fertiges Widget aus ?
Das Widget basiert auf dem Beispiel von harteknut (Dafür vielen Dank).
Noch nicht ganz fertig, aktueller Status:
Bild
Gruß Björn


Pi4 mit debMatic, Docker [openHAB 3.3, Mosquitto];
Philips Hue Bridge; amazon echo; HomeMaticIP

Antworten