Domotique

[Jeedom] Gérer ses volets Legrand dans Jeedom grâce à Home Assistant

Dernière mise à jour : 09/08/2023 à 10h52
Table des matières

interrupteur_volets_legrand



Introduction



Catégorie Jeedom mais on va aussi utiliser Home Assistant aujourd'hui. Je me suis mis il y a quelques temps sur Home Assistant, je ne fais des choses basiques mais cela me permet de palier à quelques fonctionnalités non prises en charge par Jeedom.

C'est le cas aujourd'hui avec la gestion des volets Legrand. J'ai installé chez moi des interrupteurs de volets roulants connectés Legrand, comme celui ci-dessus. On peut donc piloter ses volets avec son smartphone ou une enceinte connectée (Google Nest, Alexa...). Mais pour les contrôler depuis Jeedom, il n'y a pas de plugin... J'ai fonctionné jusque là avec IFTTT mais depuis plusieurs semaines, cela ne fonctionne plus, et voulant m'éloigner d'IFTTT c'était l'occasion.

Côté Home Assistant



Côté Home Assistant, c'est assez simple, je ne fais pas encore de tuto sur le sujet mais normalement dans la partie Appareils et Services (menu paramètres), vous devez voir apparaître une intégration Netatmo directement détectée, c'est ensuite très simple à configurer. Il suffit de donner les noms qui vont bien aux appareils et les associer aux bonnes pièces.

Deux choses importantes à faire :
  • Noter le nom de l'appareil que l'on souhaite utiliser dans Jeedom. Pour cela, cliquer sur l'appareil puis sur la roue crantée en haut à droite et noter la valeur dans le champs ID d'entité
  • Créer un jeton d'accès longue durée. Pour cela, cliquer sur votre nom d'utilisateur en bas à gauche puis aller tout en bas sur créer un jeton. Donnez-lui un nom et notez bien le code fourni, vous ne pourrez plus le faire afficher par la suite


Côté Jeedom



Ici, je vais directement vous donner tout ce qu'il faut pour piloter vos volets roulants. Sachez que vous pouvez sur le même principe faire plein de choses mais pour trouver les commandes de Home Assistant, cela m'a donné un peu de temps pour comprendre comment fonctionne les API de Home Assistant qui sont beaucoup moins "friendly" que celles de jeedom. Je vous conseille d'utiliser un logiciel comme Postman pour faire des tests sur les API.

Dans jeedom, on va utiliser le plugin script et faire du script en ruby et en bash. J'ai testé de tout faire en bash et en php mais je n'ai pas réussi à faire ce que je voulais. Probablement que c'est possible mais j'ai réussi en ruby et bash donc je vous livre cela.

Dans le plugin script, créez un équipement pour votre volet puis 3 commandes :

commandes_script

Dans la commande état, cliquer sur la petite icone verte pour créer un nouveau script que vous nommez comme vous le souhaitez (ici API_HomeAssistant_GET.rb). Collez ensuite dedans le code suivant :

Code RUBY :
 
#!/usr/bin/env ruby
  input = ARGV
  commande = input[0]
  require 'net/http'
  require 'json'
  @host = '[IP HomeAssistant]'
  @port = '[Port HomeAssistant]'
  @path = "/api/states/#{commande}"
 
  request = Net::HTTP::Get.new(@path, initheader = {'Content-Type' => 'application/json', 'Authorization' => 'Bearer [Jeton]'})
  response = Net::HTTP.new(@host, @port).start {|http| http.request(request)}
  parsed = JSON.parse(response.body)
  state = parsed["state"]
  if state == "open"
    puts 1
  else
    puts 0
  end
 


Remplacez [IP HomeAssistant] par l'IP de votre serveur Home Assistant (sans les crochets), [Port HomeAssistant] par le port (sans les crochets) et [Jeton] par votre jeton créé précédemment (sans les crochets)

Une fois le script enregistré, il faut ajouter un paramètre à la suite du nom du script qui est l'ID d'entité que je vous ai demandé de noter (voir impression écran ci-dessus. Cette méthode vous permet pour d'autres équipement de conserver le même script et de juste changer l'option. Vous pourrez alors dupliquer tout l'équipement pour un autre volet et juste changer les paramètres passés au scipt Ruby.

Pour ce qui est des commandes ouverture et fermeture, on créé un second script de la même façon et on y met le code suivant (ce script servira aux deux commandes) :

Code BASH :
 
#!/bin/bash
commande="$1"
equipement="$2"
curl --location "http://[IP HomeAssistant]:[Port HomeAssistant]/api/services/cover/$commande" \
--header 'Content-Type: text/plain' \
--header 'Authorization: Bearer [Jeton]' \
--data '{
    "entity_id":"'"$equipement"'"
}'
 


Comme précédemment, il faut ajouter deux paramètres à la suite du nom du script une fois celui-ci enregistré :
  • open_cover ou close_cover en fonction de la commande
  • l'ID d'entité


Et voilà ! Normalement, à vous de tester, cela doit fonctionner. Je vous conseille au cas où cela ne fonctionne pas de copier ces scripts sur votre PC puis de les exécuter dans un terminal afin de voir les retours (bien que jeedom donne des retours aussi).
Cette page a été vue 138 fois