Bonjour,
Je cherche une solution pour soustraire 1h d’une entrée DATETIME.
Actuellement j’ai cela :
{{ states ('input_datetime.reveil') }} = 07:00:00
Et je souhaite obtenir comme résultat :
06:00:00
Merci d’avance
Bonjour,
Je cherche une solution pour soustraire 1h d’une entrée DATETIME.
Actuellement j’ai cela :
{{ states ('input_datetime.reveil') }} = 07:00:00
Et je souhaite obtenir comme résultat :
06:00:00
Merci d’avance
Hello,
Je me sers de ça de mon côté, si des fois ça peut aider
{{ now() - timedelta(hours=1) }}
Et si ça ne fonctionne pas avec ton format de capteur, tu peux le convertir :
{{ strptime("2024-01-30", '%Y-%m-%d') }}
J’ai essayé cela mais sans succès :
{{ states ('input_datetime.reveil') - timedelta(hours=1) }} = TypeError: unsupported operand type(s) for -: 'str' and 'datetime.timedelta'
Y’a peut-être plus propre, mais ça fonctionne
{{ as_timestamp(strptime("07:00:00", '%H:%M:%S') - timedelta(hours=1)) | timestamp_custom('%H:%M:%S') }}
Tu remplace juste le « 07:00:00 » par la valeur de ton sensor
@titoumimi ce n’est pas ce que je cherche à faire.
Je m’approche de ce que je veux faire mais je dois maintenant stocker le résultat dans un capteur DATETIME…
{{ states ('input_datetime.reveil') | as_timedelta - timedelta(hours=1) }} = 6:00:00
{{ states('input_datetime.sandbox_dt1') }}
=> 07:00:00
puis tu appelles un service :
service: input_datetime.set_datetime
data:
time: "{{ as_timestamp(strptime(states('input_datetime.sandbox_dt1'), '%H:%M:%S') - timedelta(hours=1)) | timestamp_custom('%H:%M:%S') }}"
target:
entity_id: input_datetime.sandbox_dt2
Et ça donne ça :
{{ states('input_datetime.sandbox_dt2') }}
=> 06:00:00
C’est utilisable comme déclencheur d’une automatisation ?
Je dois t’avouer que ça sors de ma zone de confort, je ne m’en suis jamais servi comme déclencheur. (en fait jamais servi des date time avant ce soir pour ton exemple )
Mais j’aurais tendance à penser que oui, c’est un sensor, on doit pouvoir se baser sur son état…
Je vais abandonner pour ce soir car j’ai du mal à comprendre le processus, je voyais cela beaucoup plus simple : prendre la valeur d’un entrée, lui soustraire 1 heure puis stocker le résultat dans une nouvelle entrée
Merci en tout cas @titoumimi
En déclencheur d auto c’est possible si le formatage est parfait.
Je préfère travailler en false / true, comme cet exemple.
D’ailleurs en 3e ligne, je soustrais 500 minutes.
Donc, notif + annonce 8h20 précisément avant le réveil programmé de mon ado, afin qu’il dépose ses écrans dans mon bureau et file se coucher pour qu’il dorme environ 8 heures.
Zou ! Au lit !
J’ai un peu de mal à saisir ce que tu veux précisément…
Tu veux faire quoi dans ton automatisation ? On aura peut-être une vision plus claire
J’ai une entrée DATETIME dans mon HA (que je change selon mon heure de réveil) et je souhaite en créer une autre qui est basée sur la première -1h (pour lancer l’allumage d’un sèche serviette avant le réveil), exemple :
Ok, donc tu as tout ce qu’il faut au dessus, il te suffit de les compiler
Dans mon exemple, deux inputs existent :
Et je créé simplement une automatisation :
That’s it
alias: aaa_sandbox_datetime
description: ""
trigger:
- platform: state
entity_id:
- input_datetime.sandbox_dt1
condition: []
action:
- service: input_datetime.set_datetime
data:
time: >-
{{ as_timestamp(strptime(states('input_datetime.sandbox_dt1'),
'%H:%M:%S') - timedelta(hours=1)) | timestamp_custom('%H:%M:%S') }}
target:
entity_id: input_datetime.sandbox_dt2
mode: single
Merci beaucoup cela fonctionne