HA Entity ohne entsprechende Einheit in Homey

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 %}

Dann gib uns doch bitte noch ein paar mehr Infos…z.B. wie du die Entity nach Homey bekommst.

Die Entity bekomme ich per Home Assistant Community Plugin nach Homey und importiere Sie dann als Sensor.

Habe es hinbekommen. Der Sensorwert in HA liefert Sekunden, welche in einem Flow mit Homey Script formatiert in eine Variable geschrieben werden.

Bspw. Sensorwert liefert: 3420
Ergebnis nach Script: Verbleibende Zeit: 57 Minuten

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.

1 Like

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.

1 Like

kurze Frage noch, wie kann ich den wert bspw. 85000,77 in 85.000,77 ausgeben lassen, also mit Tausenderpunkt?

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.

measure_numeric.sensor.exchange_rate_1_btc

in HA wird es mit Tausenderpunkt dargestellt. Nutze dort die Bitcoin Integration.

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.

1 Like