Accueil / Domotique / Domoticz / Tester des logiciels domotique sur Raspberry Pi 3 grâce à Docker

Tester des logiciels domotique sur Raspberry Pi 3 grâce à Docker

Nous avons vu dans l’article précédent comment installer et le Docker Toolbox pour tester des logiciels domotique simplement sur Mac et PC. Maintenant que Docker est supporté officiellement par la fondation Raspberry, il est très facile de l’installer. Nous allons en profiter pour tester quelques logiciels domotique. Pour réaliser cet article, j’ai suivi le tutoriel d’Alex Ellis.

Préparer le Raspberry

Matériel et logiciels nécessaires

Pour faire fonctionne Docker correctement, il est recommandé d’utiliser un modèle B 2/3 ou un Pi Zero (si vous avez la chance d’en posséder un !).

Allez récupérer Raspbian Jessie Lite ici. La version Lite est suffisante pour faire fonctionner Docker. Elle n’inclut aucune interface graphique.

Si vous ne l’avez pas encore, récupérez etcher ici.

Préparer la carte SD

Que vous soyez sur Mac ou PC, le plus facile est d’utiliser etcher (tutoriel si besoin) pour préparer la carte SD.

Configurer le Raspberry Pi 3 (WiFi, clavier, langue…)

Si vous avez un Raspberry Pi 3, suivez ce tutoriel pour configurer correctement votre Raspberry Pi.

Installer Docker

Maintenant que nous avons un Raspberry correctement configuré, il ne reste plus qu’à installer Docker. Une seule ligne sera nécessaire.

Soyez patient, il faut déjà télécharger Docker puis l’installer sur le Raspberry. Comptez environ 10 minutes. Si tout s’est bien passé, vous devriez avoir le rapport d’informations.

Vérifions que Docker fonctionne correctement en saisissant la commande suivante dans le Terminal.

Maintenant on va permettre à Docker de démarrer automatiquement à lancement du Raspberry.

Si vous souhaitez ajouter d’autres utilisateurs au Pi, exécutez cette commande

On pourrait lancer manuellement le deamon Docker mais j’ai rencontré des problèmes lors de mon test. Je vous conseil donc de faire un reboot.

Voilà, Docker est prêt.

Trouver des images rpi à installer

Vous pouvez trouver des images Docker pour Raspberry sur github, mais le plus facile est encore d’aller sur le hub officiel.

Le Raspberry étant basé sur un processeur ARM, les images doivent inclure des sources adaptées pour celui-ci. Pour les identifier plus facilement, les images sont pré-fixées rpi (ou armhf). Saisissez simplement rpi dans le champ de recherche. Il y en a un peu plus de 2000 au moment de l’écriture de cet article. C’est le moment de voir comment ça fonctionne sur un exemple concret. Nous allons installer et tester 2 logiciels domotique Jeedom et Domoticz.

Test de l’image Docker Jeedom

De même que sur Mac et PC, nous allons devoir installer une image de mysql ainsi qu’une image de Jeedom adaptée au Raspberry. J’ai suivi les instructions de sbeuzit disponibles ici (en Anglais).

On commence par installer l’image rpi-jeedom-data pour permettre de stocker de manière permanente les données de la base mysql.

Puis on installe la base mysql. Remplacez MOT_DE_PASSE_MYSQL par votre mot de passe (il vous sera nécessaire pour configurer la connexion à la base de données dans Jeedom).

Enfin on installe le container Jeedom. Avant d’executer la commande, changez l’adresse Mac par celle de votre Raspberry. Vous pouvez l’obtenir facilement avec la commande ifconfig. Elle se trouve à droite de HWaddr.

Si vous avez un appareil connecté, par un exemple une clé Zwave.me ou RFXCom, vous pouvez spécifier le chemin du device à exposer au container. Pour cela ajoutez –device=/dev/ttyACM0:/dev/ttyACM0.

Si vous voulez que tous ces containers démarrent automatiquement au démarrage du Pi, ajouter l’option –restart=always à chaque docker run.

Avant d’aller plus loin, vérifions que tous les containers sont bien lancés avec la commande sudo docker ps -a. L’option -a permet d’afficher en détail la liste de container et connaitre l’état et l’identifiant.

jeedom-docker-ps-a-liste-container-raspberry-pi-3
Liste de containers à l’aide de la commande docker ps -a (état, id, nom)

Avant de terminer l’installation de Jeedom, il nous faut connaitre l’adresse ip de la base de données mysql. Exécutez la commande suivante en remplaçant ID_CONTAINER par l’id trouvé avec la commande ps ou simplement par jeedom-mysql.

Dans la section NetworkSettings, vous trouverez l’adresse ip de la base de données à la clé IPAddress.

jeedom-docker-adresse-ip-mysql
Récupérer l’adresse ip de mysql

Une autre solution consiste à « rentrer » dans le container et faire un ping sur le container mysql

Ctrl + C pour arrêter le ping. Exit pour sortir du container.

Nous pouvons maintenant ouvrir un navigateur et saisir l’adresse suivante dans l’url

On arrive à la page de connexion à la base de données mysql. Remplissez les champs en fonction de votre configuration :

  • Database hostname : remplacez localhost par l’adresse ip de la machine mysql précédemment trouvée
  • Database port : ne rien changer (sauf modification de votre part)
  • Database username : laisser root
  • Database password : celui que vous avez choisi pour la clé MYSQL_ROOT_PASSWORD
  • Database name : jeedom
jeedom-docker-configuration-mysql-raspberry-pi-3
Configuration de la connexion à la base de données mysql

Appuyez sur Proceed. Jeedom va terminer la configuration et probablement faire une ou deux petites mises à jour au passage.

jeedom-installation-terminee-docker-raspberry-pi-3
Bienvenue sur Jeedom sur Raspberry Pi 3 fonctionnant avec Docker

Et voilà un Jeedom parfaitement fonctionnel !

Tester l’image Docker de Domoticz pour rpi

Installez l’image de Domoticz pour Raspberry. Cette image s’installe et fonctionne très bien.

Ensuite, configurez la commande docker run qui correspond à votre configuration

Quelques explications (en détail ici) :

  • docker run -d allardvdb/rpi-domoticz : la commande docker run habituelle
  • –restart=always : permet de relancer le container après un redémarrage du Raspberry (optionnel)
  • -v /etc/localtime:/etc/localtime : Utilise le temps de la machine hôte (optionnel)
  • --device=/dev/ttyUSB0 : expose au container l’appareil relier sur le port USB /dev/ttyUSB0 du raspberry (optionnel)
  • -v /CHEMIN/domoticz.db:/root/domoticz/domoticz.db : pour utiliser une sauvegarde d’un ancien Domoticz (optionnel)
  • -p 8080:8080 expose le port 8080 du container sur le port 8080 du Raspberry (attention à ne pas utiliser un port déjà utilisé par autre chose)

Pour cet article, cela donne

Ouvrez maintenant un navigateur et saisissez

Et voilà, Domoticz est parfaitement fonctionnel. Vous pouvez voir au passage que Jeedom et Domoticz fonctionnent (sans rien faire !) sur le même Raspberry sans aucun problème. La magie de Docker !

domoticz docker rapsberry pi3

Quelques astuces pour utiliser Docker

Voici en vrac quelques commandes très utiles pour utiliser Docker facilement dans le cadre d’une box domotique.

CommandeExplicationoption utile
docker ps -aPermet de lister les containers et connaitre leur statut
docker runCréé un container–restart=always : permet de lancer le container automatiquement au démarrage. Pratique pour un serveur domotique !

–device : pour exposer un appareil relié au Raspberry et pouvoir l’utiliser dans le container

docker start NOMDémarre le container
docker stop NOMArrête le container
docker rm NOMEfface le container (et toutes les données)
docker inspect NOMPermet de récupérer des infos, par exemple l’adresse ip d’une base de données mysql
  • Purmoka

    Bonjour,
    Est ce que cela veut dire que l’on peut faire tourner grace à Docker ces deux systemes sur le meme raspberry ?
    merci

    • Bonjour Purmoka. Oui c’est ça. Docker va faire fonctionner le logiciel domotique dans un container (une boite) en utilisant les resources du système mais de manière beaucoup plus légère que sur une machine virtuelle. Avec une machine virtuelle, les ressources (mémoire, CPU…) sont partagées entre les 2 (ou plus) systèmes. Pas avec Docker. Par contre sur un Raspberry Pi 3, il faut rester raisonnable, la puissance est beaucoup plus faible que sur un ordinateur de bureau. A très bientôt.