Nous avons fait plusieurs articles sur Home Assistant, mais pour la plupart il s'agissait surtout de remonter des valeurs mesurées à l'aide de nos modules. Cette semaine nous avons expérimenté avec les intégrations Home Assistant et sur comment utiliser la librairie Python dans une intégration.
Comme nous l'avons dit plus tôt, il est déjà possible de contrôler les modules Yoctopuce en passant par MQTT, mais il fallait forger manuellement les commandes à envoyer à l'API REST.
Dans cet article, nous allons réaliser une intégration custom "Yocto-ColorLedCluster" qui permet de piloter les LEDs RGB des Yocto-Color-V2, Yocto-MaxiBuzzer et Yocto-MaxiKnob. Le code source de cette intégration est disponible sur GitHub,mais pour l'installer facilement sur Home Assistant nous allons utiliser HACS.
HACS (Home Assistant Community Store) est une plateforme qui permet aux utilisateurs de Home Assistant d'installer facilement des intégrations, des thèmes, et autres widgets non officiels créés par la communauté. C'est grâce à cette plateforme que nous allons publier notre intégration custom et la rendre accessible à tout un chacun sans avoir à bidouiller son installation home assistant.
Par défaut, HACS n'est pas installé dans Home Assistant, la première étape est donc d'installer HACS sur notre installation Home Assistant. Il existe de nombreux tutoriels et vidéos qui expliquent en détails comment le faire, nous allons donc passer assez rapidement sur cette étape. Dans les grandes lignes, il faut...
- Ajouter le Add-on HACS à l'aide de ce lien
- Démarrer l'Add-on HACS
- Vérifier dans les logs qu'il n'y a pas d'erreur
- Redémarer Home-Assistant
- Optionnel: Supprimer HACS de la liste des Add-On (HACS restera activé)
Une fois ces étapes effectuées, vous devriez avoir un menu "HACS" dans la barre latérale.
HACS est installé
Ajouter le repository de notre intégration
Une fois que HACS fonctionne, on peut installer différentes intégrations ou widgets listés par défaut par les développeurs d'HACS. Pour l'instant, notre extension ne fait pas partie de cette liste, mais il est très facile de la rajouter.
Accédez à la section HACS dans Home Assistant, puis cliquez sur sur les trois points en haut à droite pour ouvrir le menu et choisissez "Custom repositories". Dans la fenêtre qui s'ouvre, collez l'URL du dépôt GitHub de notre intégration (https://github.com/yoctopuce-examples/yocto_colorledcluster) dans le champ dédié. Sélectionnez ensuite "Intégration" comme catégorie, puis cliquez sur "Ajouter" et fermez la fenêtre. Une fois ajoutée, en cherchant "yocto", notre intégration sera listée.
Notre intégration est disponible dans HACS
À cet instant, l'extension est accessible par HACS mais n'est pas encore installée localement. Il faut donc la sélectionner et cliquer sur Download. Une fois le téléchargement terminé, il faut redémarrer Home Assistant, mais normalement vous devriez avoir une notification qui vous propose de le faire automatiquement.
Utiliser l'intégration
Une fois que toutes ces étapes sont effectuées, il est possible d'utiliser notre intégration comme toutes les intégrations officielles de Home Assistant.
Il faut se rendre dans les paramètres de Home Assistant (Settings) dans la section Device & Service et ajouter une intégration Yocto-ColorLedCluster. Le wizard de configuration va s'ouvrir et demander l'URL à utiliser pour se connecter au module Yoctopuce.
Le wizard d’installation de l'intégration
Cette URL sera passée directement à la méthode YAPI.RegisterHub de notre librairie. Il n'y a donc pas forcément besoin de préciser le protocole et le port. Dans 90% des cas, il suffit d'utiliser l'adresse IP de votre VirtualHub ou YoctoHub sur lequel est le Yocto-Color-V2. Si vous avez configuré une authentification, il est possible de la passer en utilisant le format traditionnel :http://nom:mot_de_passe@adresse:port.
Une fois configuré, l'intégration va créer une entité Home Assistant par fonction par module Yoctopuce qui possède une interface YColorLedCluster. Dans notre cas nous avons un Yocto-Color-V2 et un Yocto-MaxiBuzzer.
À partir de là il est possible d'utiliser ces entités comme n'importe quelle autre entité de type Light :
Il est possible d'utiliser nos modules comme n'importe quelle autre entité de type Light
Customisation
Avec cette intégration, notre but a été principalement de tester comment fonctionnent les intégrations et d'avoir une implémentation de référence pour les clients qui aimeraient utiliser des fonctionnalités avancées de nos modules dans Home Asssitant.
Pour ces raisons, nous avons gardé cette intégration le plus simple possible. Mais si vous voulez réaliser votre propre intégration, vous pouvez copier la nôtre et l'adapter à vos besoins. Le code source est disponible sur GitHub:
https://github.com/yoctopuce-examples/yocto_colorledcluster
Comme vous le verrez, il est très facile d'utiliser la librairie Yoctopuce dans une intégration. Il suffit d'ajouter yoctopuce==2.0.XXXX à la liste de requirement dans le fichier "manifest.json". Cela va automatiquement installer notre librairie Python depuis PyPI.
"domain":"yocto_led",
"name":"ColorLedCluster",
"codeowners": [
"@myself"
],
"config_flow": true,
"dependencies": [],
"issue_tracker": "https://github.com/myself/myrepo/issues",
"documentation": "https://github.com/myself/myrepo",
"homekit": {},
"iot_class": "local_polling",
"requirements": ["yoctopuce==2.0.62875"],
"version":"1.0.4",
"ssdp": [],
"zeroconf": []
}
Ensuite pour utiliser notre librairie dans le code, il faut simplement inclure les bons headers en les préfixant de "yoctopuce." car la librairie est installée depuis PyPI.
from yoctopuce.yocto_temperature import *
Pour le reste l'utilisation de la librairie, Yoctopuce fonctionne comme d'habitude.
Conclusion
Il est désormais possible de contrôler les LEDs RGB qui sont attachées à un Yocto-Color-V2, Yocto-MaxiBuzzer ou Yocto-MaxiKnob. Cela vous permet d'intégrer ces modules dans vos installations et automatisations Home Assistant.
Vous avez aussi une implémentation de référence si vous désirez avoir un widget plus évolué.