Piloter HA via les API
Révision datée du 15 décembre 2023 à 20:59 par 192.168.2.1 (discussion)
On ne sait jamais, cela pourrait servir.
Home Assistant rend possible une utilisation via API.
Nous allons avoir besoin de plusieurs choses pour cela,
- POSTMAN, un outil qui permet d'envoyer des requêtes à HA, en http
- une clé d'authentification eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9......................, créée dans la section intitulée avec le nom de l'administrateur, en bas à gauche de l'interface
Cela méritera explications.
à titre d'exemple, j'ai pu allumer une lampe dans POSTMAN avec ce code, envoyé avec
- une méthode POST
- l'URL "http://81.64.xx.yy:8123/api/services/switch/turn_on
- un header Content-Type contenant la valeur application/json
- un header Authorization contenant Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9......................
Ce Body JSON,
{ "entity_id": "switch.tz3000_hdopuwv6_ts011f_switch_3" }
Lorqu'on lance la requête, le résultat est celui-ci, et surtout la lampe s'allume !!
[ { "entity_id": "switch.tz3000_hdopuwv6_ts011f_switch_3", "state": "on", "attributes": { "friendly_name": "prise 3 Switch" }, "last_changed": "2023-12-15T19:29:59.983238+00:00", "last_updated": "2023-12-15T19:29:59.983238+00:00", "context": { "id": "01HHQFA0K9QCAA2KQWYQGDMKCY", "parent_id": null, "user_id": "8fc3e5b1b231421cbcf15e0e432c696a" } } ]
EXEMPLE 2
Cette même requête peut être envoyée dans un script Python,
import requests # Remplacez ces valeurs par les vôtres url = 'http://81.64.200.86:8123/api/services/switch/turn_on' headers = { 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiO.........................sImlhdCI6MTcwMjY2NjgxMCwiZXhwIjoyMDE4MDI2ODEwfQ.P-CtWYKLduFBBuilovk5ZD2yl8nHbuLKS4MXbi0h67I', 'Content-Type': 'application/json' } data = '{"entity_id": "switch.tz3000_hdopuwv6_ts011f_switch_3"}' # Remplacez par votre entité switch # Envoyer la requête POST pour allumer le switch response = requests.post(url, headers=headers, data=data) if response.status_code == 200: print("Requête envoyée avec succès : Allumage du switch") else: print(f"Erreur lors de l'envoi de la requête : {response.status_code}")
Je me suis aidé de ce tuto,