Home Assistant (HA) : installation

Free new modern condominium living

Introduction

La domotique est un phĂ©nomĂšne qui existe depuis trĂšs longtemps : on en parlait dĂ©jĂ  dans les annĂ©es 80 avec l’automatisation de l’Ă©clairage, puis avec l’arrivĂ©e dans les annĂ©es 90/2000 d’Internet, il devenait plus facile de piloter sa domotique et ce qui la composait, mais ce n’est que dans les annĂ©es 2010/2020 qu’un rĂ©el essor est apparu avec plusieurs solutions commerciales, mais Ă©galement OpenSource de qualitĂ©. Pour ne citer que quelques produit, on notera DomoticZ, Domogik, Yana, Jeedom… et Home Assistant.

Home Assistant (aka « HA ») est une des meilleurs solution domotique actuelle… j’ai d’ailleurs migrĂ© ma solution DomoticZ que j’utilisais depuis plus de 10 ans vers cette solution plus performante et ayant surtout la capacitĂ© de pouvoir gĂ©rer beaucoup plus de pĂ©riphĂ©rique « simplement » que d’autres via un large systĂšme de plugin.

Beaucoup de choses ont dĂ©jĂ  Ă©tĂ© dites sur HA, mais beaucoup de choses, notamment sur l’installation et la configuration de HA ne sont dĂ©crites qu’en anglais ou partiellement en français.

Je vous propose donc plusieurs articles qui seront donc en français et dĂ©taillĂ©s de façon Ă  ce que tout novice en informatique (surtout sous Linux) puissent rĂ©ussir son installation… La distribution choisie pour rĂ©aliser notre installation est une DĂ©bian version 12, mais n’importe quelle distribution Linux pourra faire l’affaire : les versions Ubuntu ou Mint font parti de la lignĂ©e Debian alors que des Fedora ou CentOS font parti du monde RedHat, il suffira alors de remplacer la commande « apt » par « yum » (ou « dnf ») si vous ĂȘtes sur l’une de ces distributions.

Cet article commence par Ă©voquer l’installation de ZigBee2MQTT qui est un Ă©lĂ©ment essentiel pour piloter les nouveaux pĂ©riphĂ©riques/dĂ©tecteurs, puis l’installation de HA qui abordera alors les sujets suivant :

  1. Premier lancement et premiĂšres configurations
  2. Installer et dĂ©finir un thĂšme de l’interface
  3. Les modules intégrés et les découvertes
  4. Installer et paramétrer un module

[tds_warning]ATTENTION

Toutes les commandes systĂšme sous Linux seront exĂ©cutĂ©es en Ă©tant root; si vous ĂȘtes connectĂ© sur votre serveur avec un USER normal depuis votre terminal, vous devez commencer par exĂ©cuter la commande « sudo -i » qui devrait vous passer « root » sur votre machine.

Des commandes « chown » viendront régulariser certains droits sur une partie de la configuration.[/tds_warning]

Installation de ZigBee2mqtt

[tds_council]

ZibBee : kesako ?

Zigbee est un protocole de haut niveau permettant la communication d’Ă©quipements personnels ou domestiques Ă©quipĂ©s de petits Ă©metteurs radios Ă  faible consommation ; il est basĂ© sur la norme IEEE 802.15.4 pour les rĂ©seaux Ă  dimension personnelle (Wireless Personal Area Networks : WPAN) (Source: Wikipedia)

Voyez en « Zigbee », le nouveau « wifi » pour les objets connectés, ayant la capacité de pouvoir fonctionner avec une pile pendant plusieurs mois, voir, des années, ce que ne sait pas faire le Wifi (quelque soit sa version).

[/tds_council]

ZigBee2MQTT est un programme OpenSource dĂ©veloppĂ© en JavaScript et exĂ©cutĂ© sur un moteur NodeJS; ses sources peuvent ĂȘtre trouvĂ©es sur https://github.com/zigbee2mqtt/hassio-zigbee2mqtt

[tds_note]Pourquoi utiliser des produits ZigBee ?

ZigBee est une sorte de « wifi » comme vous l’aurez compris… mais l’une de ses grandes forces est de pouvoir proposer une connexion sans fils pendant des mois, voir des annĂ©es. Imaginez vous installer un dĂ©tecteur (d’ouverture de porte ou fenĂȘtre, d’inondation sous votre meuble de SdB encastrĂ©, etc…) dont la pile n’aurait que 5 jours d’autonomie ? moi pas…[/tds_note]

ZigBe2MQTT est en rĂ©alitĂ© une passerelle entre les objets/pĂ©riphĂ©riques ZigBee et le reste du monde…

Pour dialoguer facilement avec le reste du monde, il existe en domotique un protocole qui s’appelle « MQTT » dĂ©veloppĂ© par un employĂ© d’IBM il y a plus de 20 ans (en 1999) pour lui permettre de rĂ©cupĂ©rer facilement des donnĂ©es… d’un olĂ©oduc  !!!

Il est en gĂ©nĂ©ral associĂ© Ă  un serveur MQTT (Ex: mosquitto) qui centralisera les informations envoyĂ©es par les clients MQTT et pour les mettre Ă  disposition des autres clients qui souhaitent traiter ces informations (Ex: Home Assistant, DomoticZ, OpenHAB, etc…).

Nous allons donc réaliser 2 étapes :

  1. Installer Mosquitto sur notre machine fonctionnant sous Linux
  2. Installer ZigBee2MQTT toujours sur la mĂȘme machine Linux

Installation de Mosquitto

L’installation du serveur MQTT « Mosquitto » est ce qu’il y a de plus facile : en Ă©tant connectĂ© « root » avec un terminal sur votre machine Linux, exĂ©cutez la commande suivante :

[crayon-66943dba49fb6706700381/]

VoilĂ  !!!

Votre premier serveur est installĂ© et fonctionnel… Facile 😜

Bien sur on aurait pu compliquer les choses, notamment en rajoutant dans le fichier de configuration un USER et son mot de passe, un certificat, etc… mais nous sommes dans notre rĂ©seau local et il y a peu de chance que quelqu’un vienne « à l’intĂ©rieur », pirater votre installation. De plus cet article est lĂ  pour vous mettre rapidement en selle sur une solution que vous perfectionnerez par la suite…

Installation de ZigBee2MQTT

Sous Unix, l’un des principe est que tout binaire doit ĂȘtre exĂ©cutĂ© avec un USER autre que root; dans le cas de ZigBee2MQTT on va crĂ©er un USER spĂ©cifique pour cela et qui s’appellera « zigbee » :

[crayon-66943dba49fc4327812950/]

La commande va demander plusieurs choses, je vous propose de passer ces Ă©lĂ©ments en tapant plusieurs fois que la touche « Enter » de votre clavier – compris pour la dĂ©finition du mot de passe :

[crayon-66943dba49fc7153321842/]

L’installation de ZigBee2MQTT va se faire ensuite dans le dossier /opt de votre serveur : il convient donc de possĂ©der ce type de rĂ©pertoire… Dans le cas contraire, ajustez les FileSystem de votre Linux pour qu’il prĂ©sente un rĂ©pertoire Ă  la racine du serveur.

[tds_note]En cas d’absence de /opt, plusieurs options s’offrent Ă  vous :

  • crĂ©er un dossier /opt Ă  la racine de votre machine si cette racine possĂšde un grand espace de stockage (mini 5 Go – solution que j’ai adoptĂ© sur ma machine embarquĂ©e)
  • CrĂ©er un vrai FileSystem qui, si il sature, ne viendra pas saturer votre machine. Pour cela, il faut se rĂ©fĂ©rer Ă  la solution proposĂ©e dans cet article.

Vous pouvez facilement voir si /opt est un FileSystem Ă  part en tapant simplement la commande « df -h » dans votre terminal; si une ligne apparaĂźt avec « /opt », c’est que votre systĂšme possĂšde bien un FileSystem Ă  part… Dans le cas contraire, vous n’ĂȘtes pas Ă  l’abri d’un problĂšme de saturation si la rotation de LOG venait Ă  faillir par exemple et pourrait empĂȘcher l’accĂšs Ă  votre serveur.

[/tds_note]

Commencez par vous rendre dans /opt :

[crayon-66943dba49fcb340302017/]

Pour pouvoir installer les sources de ZigBee2MQTT depuis GitHub, il faut que votre serveur possĂšde la commande « git » : pour l’installer, rien de plus facile :

[crayon-66943dba49fcd355329156/]

Une fois arrivĂ© dans /opt et installĂ© la commande « git », nous allons tĂ©lĂ©charger les fichiers d’installation de ZigBee2MQTT depuis GitHub :

[crayon-66943dba49fcf424591447/]

Les sources sont maintenant installĂ©es… mais pas avec les bon droits sur les fichiers : on verra plus bas pour leur mettre les bons droits, une fois tout installĂ© et compilĂ©.

Mais pour l’instant, le logiciel n’est pas encore fonctionnel : pour cela il faut encore 3 choses :

  1. Installer le moteur d’exĂ©cution « NodeJS »
  2. Lancer la compilation & configuration du code
  3. Installer le service de démarrage automatique de ZigBee2MQTT

Installation de NodeJS

Debian 12 intĂšgre nativement dans son REPO une version de « NodeJS » : Ă  cette date, 2 versions 18.x « mineur » sont disponible (Ă  voir via la commande « apt info nodejs -a« ) et si on lance l’installation sans indiquer la version sĂ©lectionnĂ©e, ce sera la version la plus Ă  jour qui sera installĂ©e.

[su_highlight background= »#DDFF99″ color= »#000000″]Actuellement ZigBee2MQTT demande une version 18 minimum de NodeJS : si vous voulez ĂȘtre absolument sur la version la plus Ă  jour sur ce moteur d’exĂ©cution, vous pouvez vous inspirer de ce qui est indiquĂ© sur cette page : https://github.com/nodesource/distributions#deb-supported-versions[/su_highlight]

L’installation de NodeJS va donc se faire en lançant la commande « curl -fsSL https://deb.nodesource.com/setup_20.x | bash -« ; la commande « curl » n’Ă©tant pas installĂ©e par dĂ©faut tout comme « sudo », vous devez lancer la commande « apt install curl sudo -y » avant de lancer la commande prĂ©cĂ©dente dont le rĂ©sultat devrait ressembler Ă  cela :

[crayon-66943dba49fd1139947539/]

A la fin, on nous indique de lancer la commande « apt-get install nodejs -y« , mais nous allons la compléter en installant également GCC et Make :

[crayon-66943dba49fd6800661789/]

On peut vérifier que NodeJS est correctement installé en lançant les commandes suivantes :

[crayon-66943dba49fda651994338/]

Pour plus d’informations, vous pouvez lire la page du projet Ă  ce sujet : https://www.zigbee2mqtt.io/guide/installation/01_linux.html

On peut maintenant compiler le code précédemment téléchargé de GitHub :

[crayon-66943dba49fdd594393277/]

Configuration ZigBee2MQTT

Pour configurer ZigBee2MQTT, vous devez dĂ©jĂ  avoir branchĂ© votre dongle zigbee sur l’un de vos ports USB de la machine (NB: dans le cas d’une machine virtuelle, vous allez devoir associer le port USB de la machine hĂŽte Ă  un port de la machine virtuelle). Une fois fait, vous allez devoir repĂ©rer le port logique que Linux a donnĂ© Ă  votre dongle. Pour cela, il faut se rendre dans le dossier « /dev/serial/by-id » et lister les pĂ©riphĂ©riques connectĂ©s et dĂ©couvert par Linux :

[crayon-66943dba49fdf721849396/]

On trouve ici deux périphériques connecté : celui qui va nous intéresser est celui dont le nom contient « Silicon_Labs » et qui est mappé vers « ttyUSB0 » (disponible dans /dev).
Ici l’emplacement de notre dongle sera donc :
/dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_1809f672e1c3ec118cdf7e480af30733-if00-port0

On garde le chemin de ce fichier (qui représente notre dongle ZigBee) et on va le mettre dans le fichier de configuration un peu plus bas. On commence avant tout par installer un fichier de configuration par défaut :

[crayon-66943dba49fe1353553948/]

Installation de HA

Pour installer un serveur HA il vous faut bien sur serveur Linux : celui-ci peut physique ou virtuel… Mais HA est Ă©galement disponible via une image Docker pratique Ă  installer sur certains NAS (Ex: Synology DS42x ou 92x) : une explication est disponible ici ou lĂ .

Si l’installation de HA peut ĂȘtre rĂ©alisĂ© de diffĂ©rente maniĂšre, chaque mĂ©thode ne permet pas l’accĂšs ) toutes les options dont on peut vous parler dans les articles que l’on trouve sur Internet. Le schĂ©ma suivant permet d’y voir plus clair :

La version « HA OS » est initialement prĂ©vu pour les carte ARM (Raspbery PI, Orange PI, etc…) : c’est un OS Linux que l’on installe sur une carte SD et cet OS contient une installation de HA.

La version « Container » est une version stockĂ©e dans un environnement Docker : c’est ce type d’installation que l’on rĂ©alise en gĂ©nĂ©ral sur un NAS.

LA version « Core » est… ????

La version « Supervised » est une version que l’on installe de A Ă  Z mais qui a pour avantage comme pour la version « HA OS », de proposer tout un tas d’Add-ons qui vous permettrons de rĂ©aliser plein de chose supplĂ©mentaire et accessible directement depuis HA. C’est en gĂ©nĂ©ral ces composants (Addon-ons) dont on parle partout mais qui ne pourra pas ĂȘtre disponible dans uns installation Docker par exemple (c’Ă©tait mon cas… avant !).

Je vais donc dĂ©crire une installation de type « Supervised » qui intĂšgre les Add-ons (NB : autre que les Add-ons « HAC » que l’on verra plus bas).

Votre prĂ©-requis est d’avoir une machine fonctionnant sous Linux DEBIAN : vous trouverez dans cet article, comment faire cela. La version DEBIAN que je vais utiliser ici est la version 12 qui est la derniĂšre Ă  la date ou j’Ă©cris cet article.

PremiĂšre chose : connectez vous sur votre machine LINUX depuis PuTTY ou une fenĂȘtre DOS / PowerShell si vous ĂȘtes sous Windows, un terminal si vous ĂȘtes sous MacOS ou Linux.
Si vous connaissez l’adresse IP de votre machine (sinon, voir cet article), il vous suffira de taper la commande « ssh <USER>@<Adresse IP> » dans votre terminal ou simplement l’IP sur PuTTY.

Une fois connecté sur le SHELL de votre ordinateur sous Linux DEBIAN, il vous suffira de taper les commandes suivantes :

[crayon-66943dba49fe4648591110/]

ATTENTION: il est possible que le systĂšme rĂ©ponde qu’il n’arrive pas Ă  accĂ©der Ă  « get.docker.com » : bizarrement, la rĂ©solution DNS peut ne pas fonctionner… et il faut alors la forcer en rĂ©alisant les opĂ©rations suivantes :

[crayon-66943dba49fe8777555498/]

« nano » est l’Ă©diteur de texte que je prĂ©fĂšre car flexible et surtout facilement accessible Ă  ceux qui ont du mal avec la ligne de commande 😄 : si vous prĂ©fĂ©rez utiliser l’Ă©diteur standard dans le monde UNIX, vous pouvez alors remplacer « nano » par « vi » ou « vim »…
Bref… Dans l’Ă©dition du fichier, ajoutez les 2 lignes suivantes :

[crayon-66943dba49fea485163086/]

Une fois le fichier édité, relancez le service « systemd-resolved » avec la commande suivante :

[crayon-66943dba49fec132407197/]

Si la commande « curl » ne faisait pas apparaĂźtre de problĂšme pour accĂ©der au serveur « get.docker.com » (ou si vous avez corrigĂ© le problĂšme avec les explications ci-dessus), on voit apparaitre que Docker demande l’exĂ©cution de la commande « dockerd-rootless-setuptool.sh install » : sauf que pour l’exĂ©cuter sans problĂšme, il manque un paquet Linux que l’on installe de suite :

[crayon-66943dba49fee992757129/]

On continu donc avec le lancement de la commande pour initialiser Docker… sauf que cela doit se faire avec un USER sans privilĂšge; on va donc crĂ©er un USER « assistant » :

[crayon-66943dba49fef941972789/]

Une fois le nouveau USER « assistant » créé, on passe dessus et on exécute le script que Docker demande de lancer :

[crayon-66943dba49ff2498814346/]

Parfois, le script ne voit pas que SystemD est installĂ© sur votre machine (si ! si ! il est bien installĂ©…😉) et demande alors que l’on rajoute dans le fichier /home/assistant/.profile les lignes qu’il indique; on Ă©dite alors le fichier .profile et on ajoute les lignes suivantes dans ce fichier :

[crayon-66943dba49ff4185129668/]

On peut maintenant se dĂ©connecter (« exit » ou touche Control + D) et dĂ©buter l’installation de Home Assistant. On tĂ©lĂ©charge et installons deux fichiers :

[crayon-66943dba49ff6522514292/]

…puis on redĂ©marre l’ordinateur :

[crayon-66943dba49ff8362674076/]

Une fois le reboot de la machine effectuĂ©, on se rend Ă  l’adresse qui avait Ă©tĂ© indiquĂ© Ă  la fin de l’installation du paquet « homeassistant-supervised.deb » : http://<votre @IP>:8123

[crayon-66943dba49ffa600303719/]

La suite se passe maintenant dans un autre article : initialisation de Home Assistant

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.