Wanfr
Février 1, 2021, 11:31
1
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
Pour ajouter 10minutes par exemple :
{{ (strptime(states('input_datetime.test'),'%H:%M:%S' ) + timedelta(seconds=0, minutes=10)).strftime('%H:%M:%S') }}
où
Conversion en objet datetime
(strptime(states('input_datetime.test'),'%H:%M:%S') #Conversion en objet datetime pour pouvoir utiliser la fonction timedelta
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)
Extraction de l’heure uniquement
.strftime('%H:%M:%S') #https://docs.python.org/3.8/library/datetime.html#strftime-and-strptime-behavior
Wanfr
Février 1, 2021, 11:41
3
merci je vais étudier cela
Je viens de mettre à jour mon post
Wanfr
Février 2, 2021, 12:03
5
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 "
Wanfr
Février 2, 2021, 8:54
8
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 ?
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
Pour ajouter 10minutes par exemple :
{{ (strptime(states('input_datetime.test'),'%H:%M:%S' ) + timedelta(seconds=0, minutes=10)).strftime('%H:%M:%S') }}
où
Conversion en objet datetime
(strptime(states('input_datetime.test'),'%H:%M:%S') #Conversion en objet datetime pour p…
Wanfr
Février 2, 2021, 4:42
10
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 »
Wanfr
Février 12, 2021, 7:56
11
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
Uowis
Octobre 24, 2022, 12:34
12
{{ strptime(states('input_datetime.energy_viewer'),'%Y-%m-%d') + timedelta(days=3) }}
Bonjour ! Est ce que quelqu’un peu me dire pourquoi j’ai les heures avec ce code ? :
2022-10-24 00:00:00
parce que j’essai d’utiliser le service suivant mais il ne veut le format qu’en « 2020-02-02 » :
service: input_datetime.set_datetime
target:
entity_id: input_datetime.energy_viewer
data:
date: {{ strptime(states('input_datetime.energy_viewer'),'%Y-%m-%d').date + timedelta(days=3) }}
Uowis
Octobre 24, 2022, 1:12
13
C’est bon j’ai trouvé :
service: input_datetime.set_datetime
target:
entity_id: input_datetime.energy_viewer
data:
date: >
{{ (strptime(states('input_datetime.energy_viewer'),'%Y-%m-%d') + timedelta(days=3)).strftime('%Y-%m-%d') }}
Uowis
Octobre 24, 2022, 4:31
14
j’ai encore un petit soucie, le service fonctionne tres bien dans l’outils developeur mais impossible de le faire tourner dans un button card :
type: horizontal-stack
cards:
- show_name: false
show_icon: true
type: button
tap_action:
action: call-service
service: input_datetime.set_datetime
target:
entity_id: input_datetime.energy_viewer
data:
date: >
{{ (strptime(states('input_datetime.energy_viewer')) +
timedelta(days=1)).strftime('%Y-%m-%d') }}
entity: input_datetime.energy_viewer
icon: mdi:chevron-right-circle
icon_height: 20px
erreur :
Échec d'appel du service input_datetime/set_datetime. Could not parse date for dictionary value @ data['date']
Herbs
Octobre 24, 2022, 5:37
15
Salut @Uowis
Pas certain que tu puisses le faire depuis une button card standard.
A mon avis le plus simple c’est de mettre la « mécanique » dans un script et de l’appeler avec le bouton.
Uowis
Octobre 25, 2022, 7:07
16
Allé okay ca marche ! Ca sera plus propre en plus ! merci