Accueil / Domotique / Domoticz / Tester les logiciels domotique à l’aide de Docker

Tester les logiciels domotique à l’aide de Docker

Vous ne savez pas quel logiciel domotique choisir pour créer votre installation, Docker est un bon moyen de les tester facilement et rapidement sans avoir à configurer une machine à chaque fois. Nous allons voir comment faire pour tester Jeedom, Domoticz, openHAB et Home Assistant. Dans cet article, nous allons utiliser Kitematic (inclus dans le Docker Toolbox) qui ajoute une interface graphique à Docker pour Windows ou MAC OS X macOS.

Pour ceux qui ne connaissent pas encore Docker

Nous n’allons pas faire une présentation détaillée de Docker dans cet article, il y a déjà énormément d’articles qui traitent très bien du sujet sur internet. En voici quelques uns :

Vous pouvez également commencer par regarder cette vidéo de Grafikart qui présente comment utiliser Docker sur Windows.

Docker offre de nombreux avantages par rapport à la virtualisation classique :

  • Moins de ressources nécessaires. Docker utilise les ressources de la machine hôte (sous linux) ou démarre un Linux léger (sur PC et Mac).
  • Gestion très souple des containers. On peut démarrer, arrêter très rapidement un container (quelques secondes)
  • Conception très simple des machines. Un simple fichier texte suffit à décrire la machine à construire.
  • On peut lier des containers entre eux.

Et c’est juste un début. Voyons comment Docker peut maintenant nous aider à tester simplement plusieurs logiciels domestique sans avoir à monopoliser une machine.

Configuration nécessaire

Matériel :

Docker fonctionne sur de nombreuses plateformes (pour ne pas dire toutes). Linux tout naturellement mais maintenant Windows et macOS. Dans ce cas Docker démarre dans une petite machine virtuelle qui fait fonctionner un système Linux très léger. Docker fonctionne aussi sur NAS et Raspberry PI.

Pour tester Docker à l’aide de la Toolbox (qui contient Kitematic), vous devrez disposer d’un PC de moins de 8 ans équipé de Windows 10 64bit. La Toolbox fonctionne sur les versions Pro, Enterprise ou Education.

Si vous possédez un Mac, celui-ci devra répondre au critères suivants pour que Docker puissent fonctionner :

  • Modèle datant de 2010 au minimum pour pouvoir disposer du jeu d’instruction MMU (Memory Management Unit) des processeurs Intel.
  • macOS 10.10.3 Yosemite ou plus récent
  • Au moins 4GB de RAM.

Pour cet article, j’ai utilisé un Mac Mini 2012 équipé d’un processeur  intel i7 et 8Go de RAM.

Logiciel : Kitematic, une interface graphique pour Docker

Comme nous ne sommes pas tous des barbus, je vous propose donc d’utiliser Kitematic qui ajoute une interface graphique à Docker. Téléchargez et installez la Docker Toolbox qui contient Kitematic depuis cette page en fonction de votre environnement (Mac ou Windows). Kitematic n’est disponible qu’en Anglais mais son utilisation est très simple.

docker kitematic

Tester le Docker Jeedom

Pour tester Jeedom, nous allons devoir installer deux containers. Je n’en connais pas la raison (probablement par manque de temps), mais il faut au préalable disposer d’une base de données mysql fonctionnelle. Commençons par l’installer.

Installation de la base de données mysql

Cliquez sur + NEW puis saisissez mysql dans le champ de recherche ou cliquez sur Recommended. Terminez la création en choisissant l’image officielle.

docker-kinematic-recherche-mysql

Si vous démarrez la machine mysql, vous aurez le message d’erreur suivant. C’est normal, il faut définir au moins un mot de passe à mysql.docker-kinematic mysql erreur demarrage mysql_root_password

Avant de démarrer l’image, allez dans l’onglet Settings -> General. Allez à la fin de la liste de variables d’environnement (Environment Variables) puis ajouter une clé MYSQL_ROOT_PASSWORD. Dans le champ Value, indiquez le mot de passe de la base de données. Nous en aurons besoin pour configurer Jeedom et pourquoi pas aller voir ce qui se passe dans la base de données ultérieurement. N’oubliez pas de sauvegarder la configuration en appuyant sur Save.

docker kinematic mysql root password

Vous pouvez maintenant démarrer mysql. Au premier lancement, mysql va terminer l’installation et la configuration de l’environnement. Sur la première page de la machine (Home), vous trouvez son adresse ip qui sera nécessaire pour Jeedom. Dans mon cas, elle est 192.168.99.100. Le port 3306 de mysql est déplacé sur le port 32795. Le port est attribué de manière aléatoire au premier lancement, mais vous pouvez le définir vous même.

docker kinematic mysql ip machine

C’est terminé pour mysql, allons-y pour Jeedom.

Installation d’une machine Jeedom

En faisant une recherche sur le mot Jeedom, on trouve de plusieurs images. L’image officielle est publiée par l’équipe Jeedom. Comme vous pouvez le voir, il existe des images avec un préfixe rpi. Elles sont destinées pour fonctionner avec la version Raspberry de Docker.

docker jeedom image officielle

Créez un container à partir de l’image maintenue pas l’équipe de développement. Au premier démarrage, Jeedom termine l’installation et récupère les derniers paquets. Soyez patient, c’est un peu long la première fois. Lorsque vous voyez apparaitre l’interface de Jeedom dans l’onglet Web Preview, cliquez sur l’icône d’ouverture du navigateur par accéder à Jeedom.

docker kinematic accéder jeedom

Ca commence mal ! Il nous reste un peu de travail à faire avec la version 2.3 de cette image.

docker jeedom erreur premier lancement

Retournez sur Kitematic et ouvrez le Terminal en cliquant sur le bouton Exec.

docker kinematic terminal

Exécutez cette première commande

sudo su -
echo "root ALL=(ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)

Puis celle ci

sudo su -
croncmd="su --shell=/bin/bash - root -c '/usr/bin/php /var/www/html/core/php/jeeCron.php' >> /dev/null 2>&1"
cronjob="* * * * * $croncmd"
( crontab -l | grep -v "$croncmd" ; echo "$cronjob" ) | crontab -

Actualisez la page. Si tout s’est bien passé, il n’y a plus d’erreur et vous devriez arriver sur la page de configuration de la connexion à la base de données mysql. Si les erreurs sont toujours présentent, essayez de redémarrer la machine depuis Kitematic.

Remplissez les champs en fonction de votre configuration :

  • Database hostname : remplacez localhost par l’adresse ip de la machine mysql précédemment créée
  • Database port : le port attribué par Docker ou celui choisi. Dans mon cas, ce sera 32795.
  • Database username : laisser root
  • Database password : celui que vous avez choisi pour la clé MYSQL_ROOT_PASSWORD
  • Database name : jeedom

Cliquez sur Proceed pour terminer.

docker jeedom configuration mysql

Jeedom termine son installation.

docker jeedom fin configuration

Suivez le lien Click here pour accéder à la page de connexion de Jeedom. Par défaut, un utilisateur admin avec le mot de passe admin a été créé.

docker kinematic jeedom login

Et voilà, vous êtes prêt à tester Jeedom très facilement. Petit bémol toutefois, le script d’installation exécuté à chaque démarrage est assez long.

Tester le Docker Domoticz

Cliquez sur + NEW puis saisissez domoticz dans le champ de recherche. Au moment de la rédaction de cet article, l’image sdesbure (la plus installée) présente une erreur d’installation (sur macOS du moins). J’ai donc opté pour celle de cyrilix. L’installation peut être assez longue (tout dépend de votre connexion internet), puisque l’image pèse 540Mo.

docker kinematic image domoticz

Une fois l’image récupérée, démarrez la en appuyant sur Start puis ouvrez le navigateur comme pour Jeedom.

docker kinematic domoticz start

C’est déjà terminé !

Attention. Domoticz ne supporte pas le déplacement des fichiers de données sur la machine hôte.

Tester le Docker OpenHAB

Installez l’image officielle d’OpenHAB. docker openhab image officielle

Ouvrez le navigateur depuis Kitematic et ajouter ?sitemap=demo à la fin de l’url puis actualisez la page. La démo OpenHAB est installée dans l’image Docker.

openhab demo docker kinematic

openHAB2

Il est tellement simple d’installer une application avec Docker u’il serait dommage de ne pas en profiter pour tester la  version 2 d’OpenHAB qui est en cours de développement.

Les images sont assez nombreuses. Par ma part, j’ai testé celle de wetware (434 MB). Une fois démarré, accédez à l’interface d’OpenHAB2 comme d’habitude depuis Kitematic. Vous pouvez tester l’interface de la démo dans le mode classique (Classic UI) ou dans le nouveau mode (Paper UI).

openhab2 docker Cette nouvelle version apporte une interface plus actuelle et la possibilité de configurer directement OpenHAB depuis le navigateur. Pour le moment, n’espérez pas utiliser la version 2 au quotidien, il a encore trop peu de matériels et services supportés :

openhab2 docker paper ui

Tester le Docker Home Assistant

Enfin, le dernier logiciel domotique que je vous propose d’installer et Home Assistant.

home assistant docker

Une fois installé et démarré, le mieux est de déplacer le répertoire des données sur la machine hôte. Pour cela, cliquez sur le le chemin du volume (/config) et validez. La machine redémarre et HA recréé une nouvelle configuration.

home assistant chemin repertoire local docker

Avant de pouvoir tester Home Assistant, il nous faut encore configurer une redirection de port (qui n’est pas faite dans le dockerfile). Allez dans les Settings du container à l’onglet Ports. Dans le champ Docker Port, saisissez 8123 et 8123 (ou un autre) dans le champ MAC IP:PORT. Cliquez sur le + puis Save.

home-assistant-configuration-port-docker

Maintenant dans un navigateur saisissez l’adresse suivante

http://IP_DE_VOTRE_PI:8123/states

home-assistant-interface-docker

Vous pouvez tester Home Assistant !

Il ne vous reste plus qu’à jouer avec le fichier configuration.yaml à l’aide d’un simple éditeur de texte sur votre Mac ou PC. Les mises à jour ne sont pas prises en compte en temps réel, redémarrez simplement le container pour les prendre en compte.

  • Warlh

    Personnellement, testé pour Home Assistant.
    Dès l’instant ou je change le repertoire /config par un repertoire en local (accessible a mon user), HA redemarre et s’arrete directement …

    • Bonjour Warlh. C’est une fonction ‘expérimentale’ qui ne fonctionne pas avec tout. J’ai testé sur macOS sans problème. C’est peut être différent sur une autre plateforme. Vous êtes sur Windows ?

      • Warlh

        Tout a fait, j »ai testé sous Windows (10 en l’occurrence).
        En tout cas, j’ai testé sous plusieurs images de HA, et sur aucune je ne parviens a modifier le paramètre concernant la localisation de /config.

        • Ah, c’est bien dommage. J’essai de tout tester au avant de publier mais dans ce cas ça faisait vraiment beaucoup (mac+windows+pi x logiciels domotiques). Kitematic est encore un logiciel très jeune, les fonctions devraient s’améliorer dans le futur. A très bientôt.

          • Warlh

            Pour nuancer mes propos. En fait, il faut obligatoirement exécuter Kitematic sur une session avec droits administrateurs. Le chemin vers le /config doit se trouver dans le « documents » de la session admin. Kitematic peut être exécuté en tant qu’administrateur sur une session classique et du coup cela fonctionne.

            Malgré tout, j’ai de nombreuses erreurs de « sensor »/plugins sous docker, que je n’avais pas en utilisant directement HomeAssistant directement sous windows 10.
            (Je me suis tourné vers docker car OpenZwave n’est pas facile a intaller sous windows pour être utilisé par HA, contrairement a une distribution sous linux)
            Je constate que toutes les images docker n’ont pas l’air de donner les même erreur dans logs, c’est un peu bizarre.

            Je pense tester OpenHAB d’ici quelques jours pour savoir vraiment si je reste sous HA ou non.

            En tout cas, merci pour cet article qui me facilite la découverte de docker dans l’installation de ma solution domotique, c’est pile au bon moment ^^.