Exemple utilisant API Rest de Jeedom vers HA

Bonjour,

Je passe par de nombreux automatisme pour piloter des actions sur HA depuis jeedom.

J’ai beau lire et relire la doc de l’Api rest

je n’arrive pas à comprendre comment l’utiliser depuis jeedom.

Je cherche donc des exemples d’utilisations qui me permettrais de me mettre sur la piste pour réussir de mon coté.

merci :grinning:

j’utilise souvent chatgpt en lui posant une question il explique clairement la procédure, je me permet de te faire le copier / coller mais tu peux le faire de ton coté c’est gratuit,

je n’est aucun mérite mais il me semble que c’est bien la bonne explication

1. Préparer l’URL API Jeedom

Dans Jeedom, chaque commande a une URL spécifique que vous pouvez appeler via l’API REST. Vous pouvez la trouver ou la générer en accédant aux paramètres de votre commande dans Jeedom.

Exemple d’URL :

http

Copier le code

http://<IP_JEEDOM>/core/api/jeeApi.php?apikey=<API_KEY>&type=cmd&id=<ID_COMMANDE>
  • <IP_JEEDOM> : Adresse IP ou nom de domaine de Jeedom.
  • <API_KEY> : Votre clé API Jeedom (disponible dans la configuration de Jeedom).
  • <ID_COMMANDE> : L’ID de la commande que vous voulez exécuter.

2. Créer un script ou une automation dans Home Assistant

Dans Home Assistant, utilisez la fonction rest_command pour envoyer une requête REST.

Configuration dans configuration.yaml :

Ajoutez une section rest_command dans votre fichier configuration.yaml :

yaml

Copier le code

rest_command:
  jeedom_execute_command:
    url: "http://<IP_JEEDOM>/core/api/jeeApi.php?apikey=<API_KEY>&type=cmd&id={{ id }}"
    method: GET

Dans cet exemple :

  • Vous remplacez <IP_JEEDOM> et <API_KEY> par vos informations.
  • Le paramètre id est passé dynamiquement via le template {{ id }}.

Exemple d’utilisation dans un script :

Ajoutez un script pour appeler la commande REST :

yaml

Copier le code

script:
  trigger_jeedom_command:
    alias: "Exécuter une commande Jeedom"
    sequence:
      - service: rest_command.jeedom_execute_command
        data:
          id: "1234"  # Remplacez 1234 par l'ID de votre commande

3. Créer une automation (facultatif)

Si vous voulez déclencher cette action automatiquement, configurez une automation :

yaml

Copier le code

automation:
  - alias: "Allumer lumière via Jeedom"
    trigger:
      platform: state
      entity_id: switch.lampe_salon
      to: "on"
    action:
      - service: rest_command.jeedom_execute_command
        data:
          id: "5678"  # ID de la commande Jeedom pour allumer la lumière

4. Redémarrer Home Assistant

Après avoir ajouté les configurations, redémarrez Home Assistant pour que les changements soient pris en compte.

je l’avais fait et avais eu une réponse similaire… et je comprends que c’est pour piloter de HA vers jeedom mais ce que je souhaite c’est piloter HA depuis jeedom et non l’inverse.

L’intégration rest API c’est pour que HA envois des infos ou des requêtes. Donc avec un GET tu peux très bien lui demander de récupérer tes infos de ton ha vers ton jeedom.
C’est l’api de jeedom que tu dois appeler depuis HA. Regarde l’intégration Restfull que tu dois utiliser.

Mais ne serait-il pas plus simple de voir si tu ne peux pas tout gérer sous HA ? Tu as une intégration Haier Hon de disponible sur hacs.

autant pour moi j’ai lu trop vite, tu aura presque rien a faire coté Ha, la programmation sera coté jeedom.

je suis pas sur que tu aura beaucoup d’aide ici pour faire des action jeedom vers HA,

Par contre coté jeedom tu as un addon qui fait le taf : Plugin Home Assistant Connect - - Présentation Plugin - Communauté Jeedom
Jeedom Market

Sinon d’apres mon ami chatgpt :

1. Préparer l’API REST de Home Assistant

Home Assistant expose une API REST que vous pouvez utiliser pour envoyer des commandes, changer l’état d’un appareil, ou exécuter des services.

Exemple d’URL API pour appeler un service :

http

Copier le code

http://<IP_HOME_ASSISTANT>:8123/api/services/<service>/<service_name>
  • <IP_HOME_ASSISTANT> : Adresse IP ou domaine de votre instance Home Assistant.
  • <service> : Le domaine du service (par exemple, light, switch, script, etc.).
  • <service_name> : Le nom du service à exécuter (par exemple, turn_on, turn_off, etc.).

Clé d’authentification (Token)

Dans Home Assistant, vous avez besoin d’un Long-Lived Access Token pour l’authentification.

  • Allez dans Profil utilisateur (en bas à gauche).
  • Cliquez sur Créer un jeton d’accès permanent.
  • Copiez ce token, car vous en aurez besoin dans les requêtes depuis Jeedom.

2. Créer un scénario dans Jeedom

Dans Jeedom, utilisez un scénario ou une commande HTTP pour envoyer des requêtes vers Home Assistant.

Exemple d’action dans un scénario :

  1. Créer un scénario dans Jeedom.
  2. Ajouter un bloc action avec une requête HTTP.
Exemple de requête HTTP dans Jeedom :

URL :

http

Copier le code

http://<IP_HOME_ASSISTANT>:8123/api/services/light/turn_on

Méthode : POST
Header :

  • Authorization : Bearer <TOKEN>
  • Content-Type : application/json

Données (Body JSON) :

json

Copier le code

{
  "entity_id": "light.lampe_salon"
}

Comment ajouter cette action :

  1. Allez dans Outils → Scénarios.
  2. Créez un nouveau scénario et ajoutez un bloc Action.
  3. Choisissez le type d’action « Action sur un serveur HTTP ».
  4. Configurez l’URL, la méthode POST et le corps de la requête comme indiqué.

Merci pour les infos

je vais potasser ca.

Non Ha est un complément de quelques addons. je ne veux pas migrer.

malheureusement le dev ne donne plus signe de vie depuis nov 2023. je préférerais essayer de ne pas etre lié à un plugindev tiers.

pour ce que t’a donné chatgpt, je l’avais fais et ca ne fonctionne pas

Donc ta seule solution c’est restfull.

en convertissant la cde curl en php ca fonctionne

pour une commande on/off

curl :

curl -X POST "http://192.168.1.155:8123/api/services/switch/turn_on" \
-H "Authorization: Bearer eyJhbGciOiJIUzxxxxxxHVp4pUKk" \
-H "Content-Type: application/json" \
-d '{"entity_id": "switch.lave_linge_dose_automatique_lessive"}'

php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://192.168.1.155:8123/api/services/switch/turn_off');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"entity_id\": \"switch.lave_linge_dose_automatique_lessive\"}");

$headers = array();
$headers[] = 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInxxxxx4pUKk';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

Maintenant je voudrais agir sur un « select », une commande ayant plusieurs choix.

je n’arrive pas à trouver comment faire

a force de question chatgpt ca fonctionne

// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://192.168.1.155:8123/api/services/select/select_option');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"entity_id\": \"select.lave_linge_temperature\", \"option\": \"20\"}");

$headers = array();
$headers[] = 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsxxxxHVp4pUKk';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
1 « J'aime »