Minuten in Stunden:Minuten umwandeln

greenbear

New member
Ich stehe im Moment auf dem Schlauch, bin allerdings noch ein Anfänger :)

Möchte meine EcoFlow Delta 2 auslesen. Das klappt auch ganz gut bis auf die Formatierung.

YAML sieht wie folgt aus:

Code:
platform: rest
   unique_id: ecoflow_time_left
   unit_of_measurement: "min"
   device_class: duration
   name: Ecoflow Time Left
   resource: https://api.ecoflow.com/iot-service/open/api/device/queryDeviceQuota?sn=xxxxxxxxxxxx
   value_template: '{{ "%.1f" | format(value_json.data.remainTime)}}'
   method: GET
   headers:
     content_type:  'application/json'
     appKey: 'xxxxxxxxxxxxxxxxxxxx'
     secretKey: 'xxxxxxxxxxxxxxxxxx'

Als Ergebnis kommt : -4163,0

Mein Wunsch wäre aber: zB. 69H21M oder 69:21 oder 69 Stunden 21 Minuten

Kann mir da jemand helfen? Ich denke bei value_template müsste einiges passieren.

Liebe Grüße

Wolfgang
 

alexamend

Active member
Mann kann die Sekunden auch komplett umrechnen, da 69 Stunden bereits Tage beinhaltet

YAML:
        value_template: >-
          {% set time = states.binary_sensor.<dein-sensor> %}
          {% set minutes = ((time % 3600) / 60) | int %}
          {% set hours = ((time % 86400) / 3600) | int %}
          {% set days = (time / 86400) | int %}
          {%- if time < 60 -%}
            Less than a minute
          {%- else -%}
            {%- if days > 0 -%}
              {%- if days == 1 -%}
                1 day
              {%- else -%}
                {{ days }} days
              {%- endif -%}
            {%- endif -%}
            {%- if hours > 0 -%}
              {%- if days > 0 -%}
                {{ ', ' }}
              {%- endif -%}
              {%- if hours == 1 -%}
                1 hour
              {%- else -%}
                {{ hours }} hours
              {%- endif -%}
            {%- endif -%}
            {%- if minutes > 0 -%}
 

greenbear

New member
Danke @alexamend,

ich hab es vermutlich falsch umgesetzt. Ich bekomme folgenden Fehler:

Konfiguration fehlerhaft!
Invalid config for [sensor.rest]: invalid template (TemplateSyntaxError: Unexpected end of template. Jinja was looking for the following tags: 'elif' or 'else' or 'endif'. The innermost block that needs to be closed is 'if'.) for dictionary value @ data['value_template']. Got "{% set time = value_json.data.remainTime %} {% set minutes = ((time % 3600) / 60) | int %} {% set hours = ((time % 86400) / 3600) | int %} {% set days = (time / 86400) | int %} {%- if time < 60 -%}\n Less than a minute\n{%- else -%}\n {%- if days > 0 -%}\n {%- if days == 1 -%}\n 1 day\n {%- else -%}\n {{ days }} days\n {%- endif -%}\n {%- endif -%}\n {%- if hours > 0 -%}\n {%- if days > 0 -%}\n {{ ', ' }}\n {%- endif -%}\n {%- if hours == 1 -%}\n 1 h.... (See ?, line ?).

Code:
  value_template:  >-
          {% set time = value_json.data.remainTime %}
          {% set minutes = ((time % 3600) / 60) | int %}
          {% set hours = ((time % 86400) / 3600) | int %}
          {% set days = (time / 86400) | int %}
          {%- if time < 60 -%}
            Less than a minute
          {%- else -%}
            {%- if days > 0 -%}
              {%- if days == 1 -%}
                1 day
              {%- else -%}
                {{ days }} days
              {%- endif -%}
            {%- endif -%}
            {%- if hours > 0 -%}
              {%- if days > 0 -%}
                {{ ', ' }}
              {%- endif -%}
              {%- if hours == 1 -%}
                1 hour
              {%- else -%}
                {{ hours }} hours
              {%- endif -%}
            {%- endif -%}
            {%- if minutes > 0 -%}
   method: GET
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
1.725
Beiträge
21.438
Mitglieder
1.234
Neuestes Mitglied
Doneinei
Oben