Ajout offset à input_datetime

Bonsoir,

ce doit être simple, mais…

comment ajouter x minutes à une heure1 pour donc avoir heure2 = heure1 + x minutes ?

  - service: input_datetime.set_datetime
    entity_id: input_datetime.heure2
    data_template:
      time: '{{states("input_datetime.heure1")}} + xminutes'

merci

Le plus simple reste d’utiliser la fonction timedelta qui permet de faire des calculs sur des objets datetime…

Commence par une recherche du terme timedelta et lis les fils de discussion, tu y apprendras beaucoup :+1:


Pour ajouter 10minutes par exemple :

{{ (strptime(states('input_datetime.test'),'%H:%M:%S' ) + timedelta(seconds=0, minutes=10)).strftime('%H:%M:%S') }}

  1. Conversion en objet datetime
(strptime(states('input_datetime.test'),'%H:%M:%S')  #Conversion en objet datetime pour pouvoir utiliser la fonction timedelta 
  1. Ajout/soustraction d’un temps
timedelta(seconds=0, minutes=10)  #timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
  1. Extraction de l’heure uniquement
.strftime('%H:%M:%S')  #https://docs.python.org/3.8/library/datetime.html#strftime-and-strptime-behavior

merci je vais étudier cela

Je viens de mettre à jour mon post :+1:

Re,

j’avais déjà essayé mais toujours erreur

et validation config :

Error loading /config/configuration.yaml: while parsing a flow mapping
  in "/config/automations.yaml", line 137, column 14
expected ',' or '}', but got '<scalar>'
  in "/config/automations.yaml", line 137, column 66

C’est ma faute, j’avais mis des guillemets et des quotes…

J’ai mis à jour…

Englobe la formule dans des guillemets "

Re,

Super !
Ça fonctionne

Merci :pray:

1 J'aime

Bonjour ,

pour plus de clarté pour les débutant comme moi, voici le code qui fonctionne :

  - service: input_datetime.set_datetime
    entity_id: input_datetime.heure2
    data_template:
      time: "{{ (strptime(states('input_datetime.heure1'),'%H:%M:%S' ) + timedelta(minutes=5)).strftime('%H:%M:%S') }}"

Y a t’il un point à expliquer plus profondément dans mon explication ?

salut,

Non, rien tout était clair !
Ma pensée n’était pas là, je vois beaucoup de sujet ou la solution ce trouve dans un message comme le tient avec les apostrophes qui ne saute pas au yeux.
j’ai mis le code final car lui je pense est plus lisible.

En fait je croit que beaucoup lisent les sujet en diagonale, et c’est d’ailleurs pour ça que l’on y arrive pas, et effet c’est comme cela que l’on saute le post le plus important…

merci encore

1 J'aime

Bonsoir,

j’ai la solution et j’ai une suite qui me bloque, mais n’étant pas expert en python rien ne m’étonne :

  - service: input_datetime.set_datetime
    entity_id: input_datetime.heure2
    data_template:
      time: '{{ (strptime(states("input_datetime.heure1"), "%H:%M:%S" )) + timedelta(minutes=20)).strftime("%H:%M:%S") }}'
  - service: input_select.select_option
    data:
      entity_id: input_select.heure
      option: '{{ (strptime(states("input_datetime.heure2"), "%H" ) | int ) }}'
  - service: input_select.select_option
    data:
      entity_id: input_select.minutes
      option: '{{ (states("input_datetime.heure_reveil")).minute }}'

je veux sortir de mon datetime l’heure et les minutes chacun dans son input_select
j’affiche deux solution mais je doit être à 20 essais sans succès.

alors je pense que votre aide est la bien venu

merci