NEWS
Binding mit berechneten Werten
-
Hallo Gemeinde,
ich möchte folgendes realisieren.
Ich habe von meinem Roborock einige Statusmeldungen:
Batterie-Status
Verbleibende Filterzeit
Verbleibende Lebenszeit der Bürste usw.Ich möchte die Fontfarbe den oberen Werten anpassen.
Das habe ich beim Batteriestatus hinbekommen über folgendes Binding (Font-Color):{bs:roborock.0.Devices.7C7njcMY5Y1rwfnBlkgM49.deviceStatus.battery;parseInt(bs) < 20 ? "#FF0000" : parseInt(bs) < 40 ? "#FFBB33" : "#87EC2E"}
bs soll Batteriestatus heißen. Unter 20% Fontfarbe rot, unter 40% orange, sonst grün.
Wenn ich jetzt die verbleibende Lebenszeit der anderen Parameter auch einer Fontfarbe anpassen möchte muss ich im Binding noch rechnen. Ich bekomme vom Roborock die bisherige Lebensdauer. Diese muss von einer Konstanten (Lebenszeit der jeweiligen Komponente) abziehen.
Siehe:{wert1:0_userdata.0.Constants.150;wert2:roborock.0.Devices.7C7njcMY5Y1rwfnBlkgM49.consumables.filter_element_work_time;parseInt(wert1)-parseInt(+wert2)} h
wert1 = Constante 150, wert2 =verbrauchte Lebensdauer,
mit h bekomme ich die verbleibende Lebenszeit als String angezeigt.Jetzt sollte ich das Ergebnis im Binding in Farben umsetzen.
Da habe ich momentan einen Knoten im KopfKönntet Ihr mir bitte Starthilfe geben?
-
@hunterhb sagte in Binding mit berechneten Werten:
mit h bekomme ich die verbleibende Lebenszeit als String angezeigt.
Das funktioniert genauso wie oben.
Hier mal ein Schuss aus der Hüfte:
{wert1:0_userdata.0.Constants.150;wert2:roborock.0.Devices.7C7njcMY5Y1rwfnBlkgM49.consumables.filter_element_work_time;parseInt(wert1)-parseInt(+wert2) < 20 ? "red" : "green"}
-
@codierknecht vielen Dank, das versuche ich heute abend umzusetzen.
Hat geklappt, vielen Dank.
Allerdings ist mir noch nicht klar warum ich Konstanten (Numbers) erstellen muss.
Normalerweise würde ich den Integerwert 150 direkt ins Binding schreiben wollen.
Ich hätte gedacht, dass es auch wie folgt geht:{wert1:150;wert2:roborock.0.Devices.7C7njcMY5Y1rwfnBlkgM49.consumables.filter_element_work_time;parseInt(wert1)-parseInt(+wert2) < 20 ? "red" : "green"}
Oder muss der Integerwert in runden Klammern geschrieben werden?
-
Versuchs doch mal so:
{wert:roborock.0.Devices.7C7njcMY5Y1rwfnBlkgM49.consumables.filter_element_work_time;parseInt("150")-parseInt(wert) < 20 ? "red" : "green"}
-
@codierknecht Das kann funktionieren, ich wandle aber nur einen String um.
Warum muss ich den Umweg gehen? -
@hunterhb sagte in Binding mit berechneten Werten:
Warum muss ich den Umweg gehen?
Ich meine irgendwo hier mal gelesen zu haben, dass in den Bindings Strings erwartet werden.
Versuch macht klug