123. Appeler un script Python dans Home Assistant¶
123.1 Travailler avec l'intégration Python Scripts¶
PAS TERMINÉ...
L'intégration Python Scripts permet de créer des services dans Home Assistant qui consistent à appeler un script Python.
Le code Python pourra manipuler les objets connectés (ex : allumer une lumière), écrire dans un fichier journal, effectuer des calculs, modifier l'état d'un capteur virtuel, etc.
Mais attention : il n'est pas possible d'importer des bibliothèques Python externes. Donc, pas d'instruction import.
Activer Python Scripts¶
Pour permettre à Home Assistant d'utiliser l'intégration Python Scripts, il suffit d'ajouter ceci dans le fichier configuration.yaml :
Fichier configuration.yaml
Création du script Python¶
Les scripts Python doivent être sur le Rapsbery Pi. Vous pouvez les créer à partir d'une fenêtre SSH ou encore directement dans le module complémentaire File Editor.
Dans le dossier /mnt/data/supervisor/homeassistant/, là où se trouve le fichier configuration.yaml, vous devez créer un sous-dossier nommé python_scripts. C'est dans ce dossier que vous placerez les fichiers qui contiennent le code Python.
Lancer le script Python¶
Le script Python sera appelé comme un service, par exemple comme action dans une automatisation.
Dans le code YAML qui fera appel à ce service, par exemple dans le code YAML d'une automatisation, sur la ligne service, vous devez entrer le nom du fichier Python, sans l'extension .py.
Le service peut travailler avec une entité en particulier et il peut recevoir des paramètres sous forme clé-valeur ou, si vous préférez, variable-donnée.
YAML
- id: ...
alias: ...
trigger:
- ...
action:
- service: python_script.nom_du_fichier_python
target:
entity_id: sensor.cleaning_ladies_time_at_house
data:
variable: donnee
mode: single
Code Python¶
Le code Python récupérera le entity_id comme suit :
Python
Si vous avez passé des variables dans la zone data, elle seront récupérées comme suit :
Python
Le code Python peut appeler différents services dans Home Assistant.
Pour appeler un service :
Python
service_data = {"variable": donnee, "variable2": donnee2}
hass.services.call("domaine", "service", service_data, False)
Le domaine est la partie avant le point dans le nom du service. Par exemple, pour le service input_text.set_value, le domaine est input_text.
Le service est la partie après le point, par exemple set_value.
...
Vous devez redémarrer Home Assistant pour que le tout soit fonctionnel.