Hello World Script o/
Automatisation != Script
L'automatisation est l'élément qui apporte l'intelligence et la réaction au système.
Le script est l'élément qui définit une séquence de tâches réutilisables. Il n'a pas de conscience propre.
L'usage le plus avancé est de faire en sorte que l'Automatisation appelle un ou plusieurs Scripts. Cela permet de garder les Automatisations courtes et de réutiliser les séquences de scripts (par exemple, un script "Allumer le salon" peut être appelé par 5 automatisations différentes).
Ici, nous allons implémenter notre premier script.
Fonctionnement des scripts dans d'HomeAssistant
Définition YAML Séquentielle : La structure d'un script est une liste ordonnée d'actions. Chaque action est généralement un appel de Service (service call) vers un domaine et une entité spécifique. HA exécute ces actions dans l'ordre défini.
mon_script_de_nuit:
alias: Éteindre les lumières du salon et baisser le thermostat
sequence: # La liste des actions à exécuter
- service: light.turn_off # Première action : Appeler le service light.turn_off
target:
entity_id: light.salon
- service: climate.set_temperature # Deuxième action : Appeler le service climate.set_temperature
data:
temperature: 18
target:
entity_id: climate.thermostat_principal
Appel de Service (Service Call) : Un script est essentiellement exposé dans Home Assistant comme un Service dans le domaine script. Par exemple, le script ci-dessus est accessible en appelant le service script.mon_script_de_nuit. C'est ainsi qu'une automatisation ou une carte d'interface utilisateur peut l'exécuter.
Mode d'Exécution (Mode) : Un aspect crucial est le paramètre mode. Il contrôle la façon dont HA gère les appels multiples au même script :
single(défaut): Empêche une nouvelle exécution si le script est déjà en cours.restart: Annule l'exécution en cours et la redémarre immédiatement.queued: Met les appels en file d'attente (jusqu'à 10) et les exécute séquentiellement.parallel: Permet à plusieurs instances du script de s'exécuter simultanément (utile pour les scripts longs et indépendants).
Héritage d'Actions Avancées : Les scripts peuvent utiliser des actions sophistiquées comme des Conditions (condition:), des Délais (delay:), des Boucles (repeat:), des Choix (choose:), et même accepter des Variables d'Entrée (fields ou variables), les rendant extrêmement flexibles pour la logique complexe.
Notre premier script Hello World o/
Remarque:, j'utilise visual studio code directement intégré via un module afin de faciliter l'édition et la création des scripts dans HomeAssistant.
La structure des fichiers:
On s'organise de la manière suivante, un fichier par script, on place les fichiers "script" dans le repertoire "./scripts".
Maintenant il faut indiquer à HomeAssistant de "charger" au démarrage, tous les scripts qui se trouve dans ce dossier. Il faut éditer le fichier de configuration.
Remplacer !include scripts.yaml par script: !include_dir_merge_named scripts/.
Vérifier la syntaxe du fichier configuration.yaml
Penser à vérifier que le fichier est syntaxiquement correcte (Outils de développement, onglet YAML, cliquer sur Vérifier la configuration).
Si le fichier n'est pas correcte et que le système est redémarré, vous allez vous retrouver en mode Recovery, potentiellement obligé d’éditer le fichier avec vi avec votre clavier azerty sur un système qui est en qwerty .
Un peu d'aide: FAQ - Éditer le fichier de configuration en mode shell
Ensuite on créer le script ./config/scripts/hello_world.yaml
hello_world:
alias: "Script de Notification Hello World"
sequence:
- service: persistent_notification.create
data:
# Le titre et le message sont les paramètres de ce service
title: "Succès ! Le Script est Valide (UI)"
message: "Hello World O/ - Le script a bien été exécuté et apparaît dans l'interface !"
# L'option 'notification_id' est optionnelle mais utile pour remplacer d'anciennes notifs
notification_id: "script_test_success"
mode: single
La première instruction indique à HomeAssistant le nom du script (on ne se base pas sur le nom du fichier).
Il faut ensuite "recharger" les scripts au niveau de HomeAssistant, via Outils de développement puis cliquer sur scripts (onglet YAML):
Il ne reste plus qu'à tester l'execution du script. Toujours dans Outils de développement, onglet Action, cliquer sur Passer en mode YAML:
Indiquer: action: script.hello_world, puis cliquer sur le bouton Exécuter l'action:
Si le script s'est bien exécuté, vous devriez voir:
Le script créer une notification:
Nous pouvons constater la bonne exécution de ce dernier en cliquant sur cette dernière:
Et voilà nous venons d'exécuter notre premier script!
En cas d'erreur, n'hésitez pas à jeter un oeil aux fichiers de log. Ici, le debug est parfois compliqué à cause d'erreur "silencieuse".