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.