Ich habe in HA eine Entity die mir die Restdruckzeit meines 3D-Druckers formatiert und Tage, Stunden, Minuten dranhängt. Leider bekomme ich in Homey nur die Zahlen ausgegeben ohne Zeiteinheit. Ich möchte mir das auf meinem Ulanzi anzeigen lassen aber ohne Zeiteinheit bringt das ja nix. Hat jemand einen Denkanstoß für mich?
Hier der Code in HA:
sensor:
- platform: template
sensors:
x1c_verbleibende_zeit_formatiert:
friendly_name: "Verbleibende Zeit Formatiert"
value_template: >
{% set minutes = states('sensor.x1c_verbleibende_zeit') | int %}
{% set days = (minutes // 1440) %}
{% set hours = (minutes % 1440) // 60 %}
{% set mins = (minutes % 60) %}
{% if days > 0 %}
{{ days }} Tag{% if days > 1 %}e{% endif %}, {{ hours }} Stunde{% if hours != 1 %}n{% endif %}
{% elif hours > 0 %}
{{ hours }} Stunde{% if hours != 1 %}n{% endif %}, {{ mins }} Minute{% if mins != 1 %}n{% endif %}
{% else %}
{{ mins }} Minute{% if mins != 1 %}n{% endif %}
{% endif %}
Bei einem Sensor-Gerät übernimmt die App die Einheit von HA. Die Capability wird anhand der Geräteklasse oder alternativ über die Einheut bestimmt. Ist nichts vorhanden, dann wird in Homey eine generische numerische Capability verwendet (ohne Einheit).
Für deine Entity würde ich folgendes vorschlagen:
Custom device verwenden
Dann im Repair-View die Entity hinzufügen.
Dabei die gewünschte Einheit und Bezeichnung angeben
In der Converter-Routine kannst du den HA-Wert auch per JavaScript in Minuten konvertieren
Damit hast du alles in deinem Gerät und brauchst kein HomeyScript oder Variablen mehr.
Auch cool. Danke für den Tipp. Werde ich mir mal merken. Aktuell funktioniert es sehr gut und ich denke, ich bleibe dabei. Oder gibt es einen massiven Vorteil in deiner Lösung, abseits der Einfachheit?
Die gesamte Logik steckt dann in dem HA-Gerät bzw. den Eigenschaften der Capability. Du brauchst also weder Flow, HScript noch Variablen. Und du hast sogar FlowTrigger verfügbar, also (fast) so wie bei einem Sensor-Gerät.
Gegenfrage… welche Capability verwendest du? Ich frage, weil Homey in der App Zahlen mit Punkt statt komma darstellt. Und Tausenderpunkte sind mir auch nicht bekannt.
Wenn du den Wert in eine numerische Capability übernimmst, dann wird die Anziege von der Homey-App bestimmt.
Wenn du eine Text-Capability verwendest, dann könnte man den Inhalt ggf. mit dem Converter anpassen. Wie genau müsste man mal prüfen, wenn klar ist, wohin du den Wert übernimmst.
Ich vermute, das HA den numerischen Wert im Dashboard im lokalen Format darstellt.
In Homey kenne ich wie gesagt nur die Variante mit Dezimalpunkt ohne Tausendertrennzeichen. Das ist die Anzeige der HomeyApp. Das kann man seitend der Apps nicht beeinflussen.
Eine Alternative wäre nur, die Zahl als String zu formatieren und in einer measure_generic Capability zu speichern.