Die Waschmaschine läuft gerade, die Zustände sehen so aus:
sensor.waschmaschine_gesamtdauer
56
sensor.laufzeit_waschmaschine
55 Minuten
sensor.fortschritt_waschmaschine
0%
Ich vermute dass sensor.fortschritt_waschmaschine 0% anzeigt weil bei sensor.laufzeit_waschmaschine noch das “Minuten” hinter steht? Wie bekomme ich das denn rausgefitert vor der Berechnung?
Mein Template Sensor sieht aktuell so aus:
{% set laufzeit = states(‘sensor.waschmaschine_verbleibende_zeit’)|int(default=0) %} {% set dauer = states(‘sensor.waschmaschine_gesamtdauer’)|int(default=0) %} {{ (laufzeit/dauer * 100 ) | int }}%
vielen Dank für Deine Geduld mit mir. Als Umsteiger vom ioBroker gibts noch so einiges zu lernen
Aber es funktioniert jetzt, ich musste allerdings das Wort “Minuten” in meinem Template heraus filtern und für einen korrekten Wert den errechneten Wert von 100 abziehen. Sonst hat er die Prozente verringert.
Muss halt irgendwann nochmal schauen, was passiert wenn Gesamtdauer und/oder Laufzeit mal mehr als Minuten sind, also im Stundenbereich.
So sieht mein Template Sensor jetzt dank Dir aus:
{% set laufzeit = states(‘sensor.laufzeit_waschmaschine’)|replace(‘Minuten’, ‘’)|int(default=0) %} {% set dauer = states(‘sensor.waschmaschine_gesamtdauer’)|int(default=0) %} {{ 100-(laufzeit/dauer * 100 ) | int }}
Und so meine Dashboard Card inkl. Fortschrittsbalken:
Der Sensor mit dem Wort Minuten kommt aus der ThinQ Integration.
Nach meiner Logik kann das ja überschrieben werden bei einem Update, wenn ich das ändere oder?
Ja das ist blöd. Schick mal von dem Gerät alle Entitäten auch die nicht aktivierten vielleicht ist da was anderes noch dabei.
Falls nicht kannst du glaub mit dem oben genannten macro dir auch ein sensor daraus bauen der kann dann auch stunden usw. dann bist auf jeden fall auf der sicheren seite. Muss ich aber selber testen
jetzt brauche ich doch nochmal Unterstützung.
Mein Template Sensor sieht ja aktuell wie folgt aus:
{% set laufzeit = states(‘sensor.laufzeit_waschmaschine’)|replace(‘Minuten’, ‘’)|int(default=0) %} {% set dauer = states(‘sensor.waschmaschine_gesamtdauer’)|int(default=0) %} {{ 100-(laufzeit/dauer * 100 ) | int }}
Das funktioniert auch soweit super, so lange die Laufzeit eines Waschprogramms unter einer Stunde ist.
Heute hatten wir mal ein Waschprogramm mit 1:07h Laufzeit. Da wird mir im Zustand “sensor.laufzeit.waschmaschine” dann “1 Stunde und 7 Minuten” angezeigt.
Kann ich das irgendwie abfangen und verarbeiten? So zeigt er mir dann - wegen Falschberechnung - dann immer 100% an.
Kann man das “1 Stunde un 7 Minuten” irgendwie in eine berechenbare Zeitangabe umwandeln?
Wenn es für den Sensor sensor.laufzeit_waschmaschine keine alternative gibt.
Und der Wert immer in dem Format X Stunde(n) und X Minute(n)
oder X Minute(n)
Ausgegeben wird
Lässt sich die Laufzeit in Minuten folgendermassen ermitteln
{% set laufzeit = states('sensor.laufzeit_waschmaschine') %}
{% if laufzeit.split(' ')[1] == "Stunde" or "Stunden" %}
{% set laufzeit = (laufzeit.split(' ')[0] | int ) * 60 + (laufzeit.split(' ')[3] | int ) %}
{% else %}
{% set laufzeit = (laufzeit.split(' ')[0] | int(0) ) %}
{% endif %}