Zmiana jednostki czasu z sekund na minuty

Próbuje zmienić encje która określa czas w sekundach na czas w minutach:
W cofiguration dodałem wpis:

   - sensor:
      - name: "Creality K2 czas pracy"
        unit_of_measurement: "min"
        state: >
          {{ (states('sensor.creality_k2_print_job_time') | float(0) / 60) | round(1) | int | timestamp_custom('%M:%S', false) }}
        device_class: duration
      - name: "Creality K2 czas do konca"
        unit_of_measurement: "min"
        state: >
          {{ (states('sensor.creality_k2_print_time_left') | float(0) / 60) | round(1) | int | timestamp_custom('%M:%S', false) }}
        device_class: duration

Wyświetla mi się unknown

Gdy wrzucę kod do szablonu wyświetla czas:

Co robię nie tak??

Najpierw dzielisz sekundy przez 60, żeby dostać minuty (np. $110 / 60 = 1.83$). Potem zaokrąglasz to do liczby całkowitej (int), dostając np. 1.
Funkcja timestamp_custom oczekuje sekund. Jeśli podasz jej “1” (bo tak wyszło z obliczeń), ona myśli, że to 1 sekunda po północy 1970 roku

Zadeklarowałeś: device_class: duration i unit_of_measurement: min. To jest kontrakt z HA Obiecuję, że będę tu wysyłać tylko czyste liczby.
Wysłałeś: 01:50 (dwukropek).

Użyłeś round(1) | int. Jeśli planujesz użyć timestamp_custom, nie powinieneś niczego zaokrąglać ani kastować do int. Każde ucięcie miejsc po przecinku przed formatowaniem czasu zabiera precyzję (sekundy).

Próbujesz wykonać pracę, którą HA potrafi zrobić sam, jednocześnie podając mu dane w formacie, którego te jednostki nie akceptują.

A jak HA potrafi to zrobić sam?

{% set s = states('sensor.sekundy')|int %}
{{ s | timestamp_custom("%M:%S")

Fajnie to działa ale jak miałem czas ponad 13000s
to wyświetla mi czas ponad 50 minut, co nie jest prawdą.

{{ states('sensor.sekundy') | int(0)
  | timestamp_custom('%-Hgodz %-Mmin %-Ss', false)
  | regex_replace('(^0godz| 0min| 0s$)', '')
  | regex_replace('(^ )', '') }}
1 polubienie

Super dziękuję, rewelacja!