Je viens de publier un nouvel article sur notre portail.
Venez le découvrir dès maintenant !
Il s’agit de mon dernier de cette série dédiée aux automatisations… N’hésitez pas à réagir dans ce fil et merci d’avance pour vos commentaires et retours.
Bonne lecture !
Si par hasard vous aviez raté les deux premiers, ils sont ici:
Je ne pensait pas découvrir autant de chose en rédigeant cette série d’articles…
Ce troisième article est aussi là pour ouvrir le dialogue et partager nos bonnes pratiques.
Personnellement cette astuce sur la trace m’a permis de debugger certaines automatisations où les 5 traces par défaut n’étaient pas suffisantes pour attraper le cas qui pose problème…
Cette limite m’a p**** les c******* plus d’une fois, et c’est pour ça entre autre que j’ai changé ma gestion des lave linge/vaisselles, pour ne plus avoir le déclencheur sur la conso de la prise. C’est un input.bolean, qui, grâce a un template, surveille la conso. Du coup plus Xmille « trace » pour 1 execution
Un script de notification par téléphone (c’est le seul endroit où je fais directement appel à l’integration de notification du telephone…) :
exemple vers mon telephone, nous en avons 5 sur le même modèle...
sequence:
- action: notify.mobile_app_smartphone_doudou
metadata: {}
data:
title: "{{ titre }}"
message: "{{ message }}"
data:
clickAction: "{{ clickaction}}"
sticky: "{{ sticky }}"
continue_on_error: true
fields:
titre:
selector:
text: null
name: Titre
description: >-
Titre de la notification (peut contenir un template type {{
states('entity.name') }} )
required: true
message:
selector:
template: {}
name: message
description: >-
Message de la notification, (peut contenir un template type {{
states('entity.name') }} )
required: true
clickaction:
selector:
template: {}
name: clickAction
description: Raccourci lors du clic sous la forme /lovelace-smartphone/view
required: false
sticky:
selector:
text: {}
default: "true"
description: true reste apres visionage, false disparait dès visionnage
alias: Notification smartphone doudou
description: Notification vers le smartphone de Bernard
icon: mdi:bell
J’appelle ensuite ces 5 scripts soit directement, soit dans un autre script, par exemple pour notifier les téléphones des parents, ou de toute la famille (nous sommes 5):
exemple scripts parents, celui pour juste les enfants ou pour toute la famille est fait sur le même modèle en utilisant les scripts définis précédemment:
sequence:
- action: script.notification_smartphone_doudou
metadata: {}
data:
sticky: "{{ sticky }}"
titre: "{{ titre }}"
message: "{{ message }}"
clickaction: "{{ clickaction }}"
- action: script.notification_smartphone_jeanne
metadata: {}
data:
sticky: "{{ sticky }}"
titre: "{{ titre }}"
message: "{{ message }}"
clickaction: "{{ clickaction }}"
fields:
titre:
selector:
text: null
name: Titre
description: >-
Titre de la notification (peut contenir un template type {{
states('entity.name') }} )
required: true
message:
selector:
template: {}
name: message
description: >-
Message de la notification, (peut contenir un template type {{
states('entity.name') }} )
required: true
clickaction:
selector:
template: {}
name: clickAction
description: Raccourci lors du clic sous la forme /lovelace-smartphone/view
required: false
sticky:
selector:
text: {}
default: "true"
description: true reste apres visionage, false disparait dès visionnage
alias: Notification smartphone parents
description: Notification vers le smartphone des parents
icon: mdi:bell
de le même façon je peux me faire un script intelligent pour Alexa:
notif alexa:
sequence:
- choose:
- conditions:
- alias: si c'est le jour (WE avec grasse mat')
condition: or
conditions:
- condition: time
after: "08:00:00"
before: "20:30:00"
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: time
after: "09:30:00"
before: "20:30:00"
weekday:
- sat
- sun
sequence:
- action: notify.alexa_media
metadata: {}
data:
target:
- media_player.echo_dot_jeanne
- media_player.echo_jeanne
- media_player.jeanne_echo_dot
- media_player.echo_dot_sdb_enfant
- media_player.echo_dot_thibault
- media_player.echo_dot_louise
- media_player.echo_dot_justine
data:
type: tts
message: "{{ message }}"
title: "{{ titre }}"
alias: diffuser "message" partout
continue_on_error: true
default:
- alias: Chuchotage du message (de nuit si message facultatif)
if:
- condition: template
value_template: "{{ message_nuit == idem }}"
alias: Si message de nuit par défaut
then:
- action: notify.alexa_media
metadata: {}
data:
target:
- media_player.echo_dot_jeanne
- media_player.echo_jeanne
- media_player.jeanne_echo_dot
data:
type: tts
message: <amazon:effect name="whispered">{{ message }}</amazon:effect>
title: "{{ titre }}"
alias: Chuchotage de "message" sur les echo des pieces à vivre
else:
- action: notify.alexa_media
metadata: {}
data:
target:
- media_player.echo_dot_jeanne
- media_player.echo_jeanne
- media_player.jeanne_echo_dot
data:
type: tts
message: >-
<amazon:effect name="whispered">{{ message_nuit
}}</amazon:effect>
title: "{{ titre }}"
alias: Chuchotage de "message_nuit" sur les echo des pieces à vivre
continue_on_error: true
fields:
titre:
selector:
text: null
name: Titre
description: Titre de la notification (facultatif)
example: notification
default: Titre
message:
selector:
text: null
name: Message
required: true
description: Message inclus dans la notification de jour
example: Ceci est une notification de jour
default: Notification jour
message_nuit:
selector:
text: null
name: Message de nuit
description: Message à chuchoter (si différent du message principal)
example: ceci est un message chuchoté de nuit
default: idem
description: >-
Notification d'un message dans toute la maison.
- Message diffusé partout le jour
Message chuchoté dans les pieces a vivre seulement la nuit (possibilité d'un
message différent la nuit)
icon: mdi:speaker-message
alias: Alexa-notification-maison
Ensuite dans chaque automatisation ou script dans lequel j’ai besoin d’une notification téléphone ou Alexa, ce sont ces scripts que j’appelle (notif parents, notifs enfants, notif famille et/ou notif Alexa) plutôt que de devoir refaire une logique à chaque fois.
Le gain est double :
je n’ai qu’un script à appeller pour notifier 5 telephones et pas à refaire 5x la notification
la maintenance est facilitée.
exemple : automatisation de surveillance de fuite dans le cellier
alias: Surveillance - Fuite - cellier
description: Envoi d'une notification en cas de détection d'eau dans le cellier
triggers:
- entity_id:
- binary_sensor.fuite_eau_cellier_water_leak
for:
hours: 0
minutes: 1
seconds: 0
trigger: state
to: "on"
conditions: []
actions:
- action: script.notification_smartphone_famille
metadata: {}
data:
titre: Maison - surveillance fuite
message: >-
Le capteur de fuite détecte de l'eau sous la machine à laver. Il
faudrait vérifier dans le cellier!
- action: script.ecam_publish
data:
message: "SURV: Alerte Fuite cellier "
mode: single
pour la maintenance, s’il y a une modification à faire:
nouveau telephone
changement d’horaire
ajouter une enceinte
etc…
on ne le fait que dans un seul script et ça se propage à tous les scripts / automatisations qui utilisent ce script, comme des dominos…
Sinon il faut le refaire à tous les endroits où la logique ou l’action est appelée…
L’image des poupées russes c’est:
Automatisation de surveillance X => appelle le script notification parents => appelle les scripts du portable de mon epouse et le mien.
Automatisation de surveillance Y => appelle le script notification parents => appelle les scripts du portable de mon epouse et le mien.
Automatisation de surveillance Z => appelle le script notification famille => appelle les scripts du portable de mon epouse, de chaque enfant et le mien.
si je change de telephone, je n’ai qu’un script à modifier.
Si le fils est parti de la maison, je n’ai qu’à supprimer l’appel à son script dans les script famille et enfant.
etc…
Si en plus on ajoute des etiquettes / labels, on peut se rappeller facilement où sont utilisés ces scripts…
Un grand merci pour ces articles, clairs et progressifs. J’ai découvert Home Assistant et ses automatisations en 2025, et vos articles m’auraient fait gagné du temps et de la confiance. Même lus un peu plus tardivement, je découvre quelques fonctions et je sens que je peux aller plus loin, plus sûrement, et parfois plus simplement. Beau travail ! (ll me reste à potasser la fin de #3 puis les liens )
Je ne connaissais pas spook… et bien, il a été adopté immédiatement. Bien plus intéressant que Watchman. Bref, j’en ai encore une petite, tellement ca m’a plu et ca m’a trouvé qq erreurs !
Bon, sinon, s’il y avait une méthode “simple” pour partir d’une automatisation et en faire un blueprint, ce serait cool. Genre, prendre son automatisation et utiliser l’interface graphique pour définir “ce paramètre, ce sera un input”… et ca une fois qu’on a définit tous les inputs, on sauve en blueprint.
Ainsi :
1- on crée une automatisation qui marche (on la teste aisément)
2- on la transforme en “machin générique” (blueprint)
C’est pas très compliqué, c’est d’ailleurs la marche à suivre, mais ce n’est pas si simple non plus, car tout se fait dans des fichiers en Yaml, il n’y a pas d’interface… En tout cas pour l’instant.