Comment enregistrer Heure dans une entrée heure?

Bonjour,

j’ai créé 2 entrées heure :
input_datetime.heure_debut_marche_forcee
input_datetime.heure_fin_marche_forcee

Je souhaiterais que lorsque j’appuie sur un bouton, ou lorsque je déclenche une action, que l’imputerions heure de début prenne la valeur de l’heure actuelle et que l’input heure de fin prenne la valeur de l’heure du déclenchement. + X heures

Comment est ce que je pourrais faire ça ?

Bonjour,

Voici un script à lancer avec un bouton ou une automatisation

script:
  maj_heures_marche_forcee:
    sequence:
      - action: input_datetime.set_datetime
        data:
          entity_id: input_datetime.heure_debut_marche_forcee
          timestamp: "{{ now().timestamp() }}"
      - action: input_datetime.set_datetime
        data:
          entity_id: input_datetime.heure_fin_marche_forcee
          timestamp: "{{ (now() + timedelta(hours=3)).timestamp() }}"

Le 3 pourrait être un input_number

J’ai écrit un code qui ressemble. La difficulté de ces scripts c’est de savoir le format d’heure que tu manipules : H:M:S ou un timestamp

Merci @armavi !
C’est presque parfait !

Je n’ai besoin que des heures et minutes, pas besoin des secondes

J’affiche mes 2 entrées comme ceci, mais ça affiche HH:MM:SS et je ne voudrais que HH:MM :

type: vertical-stack
cards:
  - type: custom:mushroom-template-card
    fill_container: false
    secondary: >
      Heure début marche forcée : {{
      (states('input_datetime.heure_debut_marche_forcee')) }}

      Heure fin marche forcée : {{
      (states('input_datetime.heure_fin_marche_forcee')) }}
    multiline_secondary: true

Slt avec as_timestamp

 Maintenant : {{ ( as_timestamp(now()) |  timestamp_custom('%H:%M' ))}}

---> (states('input_datetime.heure_fin_marche_forcee'))

 Heure fin marche forcée : {{as_timestamp(states('input_datetime.heure_fin_marche_forcee'))|timestamp_custom('%H:%M')}}
1 « J'aime »

La dualité des solutions (timestamp vs texte) !

Pour ma part, je te propose en mode texte

{{ states('input_datetime.heure_fin_marche_forcee')[0:5] }}

Pour info je garde tous mes tests et ce qui m’intéresse dans les outils de DEV, et je sauvegarde en local tout ça :wink:


Merci
Bob

1 « J'aime »

J’ai un fichier de packages et une page de mon tableau de bord pour tester (input et sensor) !
Et un fichier sur l’ordi avec tout mes tests d’automatisation/scripts/templates

image

Incidement, en tuile, l’heure est facilement configurable en HH:MM.

Super, tout fonctionne !
Encore merci pour votre aide !

1 « J'aime »

Petite question subsidiaire, peut on afficher le décompte du minuteur sur une carte ?
mon minuteur portant le nom timer.minuteur_chauffe_eau
Quand je vais sur l’entrée du minuteur et qu’il est activé, je vois le décompte du temps restant.
j’ai essayé ceci mais sans succès (cela me donne l’état et pas le décompte) :

Temps restant : {{ (states.timer.minuteur_chauffe_eau.state) }}

j’ai aussi essayé ça, mais ce n’est pas mieux :

Temps restant : {{state_attr('timer.minuteur_chauffe_eau', 'remaining')}}

Comment le récupérer dans une carte ?

Tu peux sur une carte tuile. Cela ne fonctionne pas avec toutes les cartes.

2 « J'aime »

En effet, cela fonctionne très bien sur une carte tuile.
C’est quand même pas terrible que tout ne soit pas compatible dans toutes les cartes …

Donc sur une carte custom:mushroom-template-card ce n’est pas possible ?

De mémoire je n’avais pas réussi et je n’ai pas réessayer depuis. Après les cartes tuiles et mushrooms sont similaires donc pour le design du dashboard ça ne cause pas de soucis.

Dans tous les cas encore merci pour votre aide.

Tu as essayé en créant une entrée Timer ?
test attente

oui, elle est indiquée au dessus timer.minuteur_chauffe_eau

ça fonctionne dans une tuile mais pas sur une carte custom:mushroom-template-card

1 « J'aime »

Et si je souhaite avoir une heure paramétrable via un slider (au lieu des 3h), comment dois je écrire le code pour récupérer la valeur en heure ?
J’ai déjà fait le slider, ça fonction dans le décompte, mais je souhaiterais afficher l’heure de fin sur une carte

  - action: input_datetime.set_datetime
    data:
      entity_id: input_datetime.heure_debut_marche_forcee
      timestamp: "{{ now().timestamp() }}"
  - action: input_datetime.set_datetime
    data:
      entity_id: input_datetime.heure_fin_marche_forcee
      timestamp: "{{ (now() + timedelta(hours=3)).timestamp() }}"

la variable contenant le nombre d’heures à ajouter est la suivante :

input_number.minuteur_heures_chauffe_eau

Comment dois je réécrire cette ligne afin de remplacer le 3 par la valeur de la variable juste au dessus ?

timestamp: "{{ (now() + timedelta(hours=3)).timestamp() }}"

et accessoirement faire pareil en ajoutant les minutes désormais.

J’ai trouvé, en faisant comme ceci :

  - action: input_datetime.set_datetime
    data:
      entity_id: input_datetime.heure_debut_marche_forcee
      timestamp: "{{ now().timestamp() }}"
  - action: input_datetime.set_datetime
    data:
      entity_id: >-
        input_datetime.heure_fin_marche_forcee
      timestamp: >-
        {{ (now() + timedelta(hours=states('input_number.minuteur_heures_chauffe_eau')|int(0),minutes=states('input_number.minuteur_minutes_chauffe_eau')|int(0))).timestamp() }}
mode: single
1 « J'aime »