Piloter HA via les API

De Wiki de Mémoire Vive
Révision datée du 15 décembre 2023 à 20:59 par 192.168.2.1 (discussion)
Aller à la navigation Aller à la recherche

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

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,

https://devotics.fr/utiliser-lapi-rest-home-assistant/