• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/12/2019

Déployez Domoticz sur un Linux embarqué

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Préparez votre image

Maintenant que vous savez comment manipuler Buildroot, il est temps de passer à un cas concret. Nous allons concevoir un GNU/Linux hébergeant le logiciel Domoticz afin de transformer une Raspberry Pi en serveur domotique low-cost.

Commençons par un premier test sous QEMU avant de passer à une vraie Raspberry PI 3. Comme à l'accoutumé, copiez le répertoire Buildroot en buildroot-qemu-rpi-domoticz afin de préparer un environnement de test :

cd ~/Development-tools/
cp -R buildroot buildroot-qemu-rpi-domoticz

Étant donné que nous avons créé une configuration pour Buildroot utilisant notre chaîne de cross-compilation préinstallée dans la partie précédente, nous réutilisons cette configuration comme base pour la nouvelle. Copiez le fichier .config, qui contient la configuration précédente suite au make menuconfig, dans notre nouvel environnement :

cp buildroot-qemu-rpi/.config buildroot-qemu-rpi-domoticz/

Puis lancez l'interface de configuration :

cd buildroot-qemu-rpi-domoticz
make menuconfig

Ajoutez l'application Domoticz

Passons à l'ajout du logiciel Domoticz. Vous retrouverez le paquet correspondant dans le menu Target Package, puis Miscellaneous. Comme l'indique la capture suivante, un logiciel Domoticz est présent, mais il ne peut pas être sélectionné. En effet, le message *** domoticz needs lua >= 5.2 and a toolchain w/ C++, NPTL, wchar, dynamic library *** indique que vous devez tout d'abord activer le paquet Lua (en version >=5.2) et que vous devez utiliser une chaîne de cross-compilation avec un GCC (en version >=4.8) avec diverses options (C++, NPTL...).  

Information pour activer domoticz
Information pour activer Domoticz

Notre version de GCC étant déjà valide, nous devons activer le support de Lua pour avoir ensuite la possibilité d'activer Domoticz

Pour activer Lua, rendez-vous dans le menu Target packages, puis Interpreter languages and scripting. Vous pouvez maintenant activer l'installation de Lua, en vérifiant que vous installez une version >= 5.2. Dans mon cas, j'ai activé la version 5.3.

Activation de lua
Activation de Lua 

Revenez maintenant dans le menu Target Package, puis Miscellaneous, et vous vous rendrez compte que vous pouvez désormais activer le paquet Domoticz. Activez-le !

Activation de domoticz
Activation de Domoticz

Générez et testez votre image

Sauvegardez votre configuration et lancez la génération de l'image :

make

Vérifiez que tout s'est bien déroulé, et que l'image de la carte SD a été générée :

Génération d'une image avec Domoticz
Génération d'une image avec Domoticz

Après avoir vérifié que vous avez obtenu une image, i.e. le fichier output/images/sdcard.img est présent, démarrez l'image générée avec QEMU. En plus de rediriger le port 22 (SSH) de l'image vers le port local 5022, nous redirigeons le port 8080 (Domoticz) de l'image vers le port local 8080. Ce qui nous permettra ensuite de vérifier que l'interface web de Domoticz fonctionne.

cd ~/Development-tools/
qemu-system-arm \
       -kernel qemu-rpi-kernel/kernel-qemu-4.9.59-stretch \
       -cpu arm1176 \
       -m 256 \
       -M versatilepb \
       -dtb qemu-rpi-kernel/versatile-pb.dtb \
       -no-reboot -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
       -net nic -net user,hostfwd=tcp::5022-:22,hostfwd=tcp::8080-:8080 \
       -drive file=buildroot-qemu-rpi-domoticz/output/images/sdcard.img,format=raw \
       -nographic

À la fin du démarrage de l'image, deux services doivent être démarrés :

  • Mosquitto : un système de messages utilisé par Domoticz ;

  • Domoticz : votre instance de Domoticz pour la domotique. 

Ces deux services doivent être dans l'état OK :

Démarrage de domoticz
Démarrage de Domoticz

Connectez-vous à Domoticz

Vérifions désormais que le service Domoticz fonctionne correctement. Ce service fournit un accès à une interface web sur le port 8080. La commande netstat -altn | grep 8080 doit vous indiquer qu'un processus est en écoute sur ce port pour le protocole TCP. La commande ps aux | grep domoticz indique que le binaire /opt/domoticz/domoticz est en cours d'exécution. 

Étudions ensuite la taille de notre image avec un df -h : vous avez obtenu une image de 80,5 Mo, soit 25,5 Mo de plus que la précédente image qui n'intégrait pas Domoticz. Avec la commande free -m, nous obtenons une consommation mémoire de 20 Mo, soit 13 Mo de plus que l'ancienne image.

Vérification du fonctionnement de Domoticz.
Vérification du fonctionnement de Domoticz.

Finalement, vérifions que le serveur HTTP qui héberge l'interface de Domoticz répond correctement. Pour cela, ouvrez un navigateur web (Firefox) sur votre Debian, et connectez-vous à l'adresse http://localhost:8080. Comme nous avons demandé la redirection du port local 8080 vers notre image lors du lancement de QEMU, cela revient à se connecter au service Domoticz qui est hébergé par notre image.

Vous devez obtenir cette interface qui correspond à la page d'accueil de Domoticz :

Connexion à l'interface de Domoticz.
Connexion à l'interface de Domoticz.

Nous avons  généré une image légère de GNU/LInux hébergeant le service Domoticz. Maintenant que nous avons vérifié que cette image est fonctionnelle sous QEMU, passons à la génération d'une image pour une véritable Raspberry PI 3. Vous pouvez donc éteindre cette machine virtuelle avant de continuer.

halt

Exemple de certificat de réussite
Exemple de certificat de réussite