Docker: easily test Home Automation software on Raspberry Pi

We saw in the previous article how to install and Docker Toolbox for test automation simply on Mac and PC software. Now that Docker is officially supported by the Raspberry Foundation, it is very easy to install. We will take the opportunity to test some home automation software. To achieve this article, I followed the tutorial Alex Ellis .

Set up the Raspberry Pi

Hardware and software

To work Docker properly, it is recommended to use a model B 2/3 or a Pi Zero.

Download Raspbian Jessie Lite here. The Lite version is sufficient to run Docker. It includes no graphic interface.

If you do not yet download etcher from here.

Prepare the SD card

You are on Mac or PC, the easiest is to use etch to prepare the SD card.

Set up the Raspberry Pi 3 (WiFi, keyboard, language…)

If you have a Raspberry Pi 3, follow this tutorial to correctly configure your Raspberry Pi.

Now that we have a Raspberry configured correctly, it remains to install Docker. One line will be necessary.

 curl -sSL get.docker.com | sh

Be patient, it takes already download Docker then install it on the Raspberry. Allow about 10 minutes. If all went well, you should have the information report.

Check that Docker works correctly by typing the following command in the Terminal.

 docker version

Now we allow Docker to start automatically at launch of the Raspberry.

 sudo systemctl enable docker

If you want to add other users to the Pi, run this command

 sudo usermod -aG docker pi

We could manually run the deamon Docker but I encountered problems during my testing. I you Council so to do a reboot.

 sudo reboot

That is, Docker is ready.

Find images rpi to install

You can find images for Raspberry Docker on github, but the easiest is to go to the hub official.

The Raspberry being based on an ARM processor, images must include sources adapted for this one. To more easily identify them, the images are pré-fixées rpi (or armhf). Enter simply rpi in the search field. There are slightly more than 2000 at the time of the writing of this article. It’s time to see how it works on a concrete example. We will install and test 2 software automation, Jeedom and Domoticz.

Test Jeedom with Docker

The same on Mac and PC, we’ll install an image of mysql as well as a picture of Jeedom adapted to the Raspberry. I followed the instructions of sbeuzit available here.

We begin by installing image rpi-jeedom-data to store the data in the mysql database permanently.

sudo docker pull sbeuzit/rpi-jeedom-data 
sudo docker run --name jeedom-data sbeuzit/rpi-jeedom-data

And then we install the mysql database. Replace MOT_DE_PASSE_MYSQL with your password (you will need to configure the connection to the database in Jeedom).

sudo docker pull hypriot/rpi-mysql
sudo docker run --name jeedom-mysql -e MYSQL_ROOT_PASSWORD=MYSQL_PWD --volumes-from jeedom-data -d hypriot/rpi-mysql

Finally installed the Jeedom container. Before you run the command, change the Mac address of your Raspberry. You can get it easily with the ifconfig command. It is located on right side of HWaddr .

sudo docker run -d --link jeedom-mysql:mysql --name jeedom --mac-address="xx:xx:xx:xx:xx:xx" -p 80:80 -p 8083:8083 -p 443:443 sbeuzit/rpi-jeedom

If you have a connected device by one example a key Zwave.me or RFXCom , you can specify the path to the device to expose to the container. To do this add – device = / dev/ttyACM0: / dev/ttyACM0.

If you want all these containers that start automatically at startup of the Pi, add the option –restart=always to each run docker.

Before going any further, check that all the containers are well run with the command sudo docker ps -a. The -a option to view in detail the list of container and check the status and ID.

jeedom-docker-ps-a-liste-container-raspberry-pi-3

List of containers using the docker ps (State, id, name)-a

Before you complete the installation of Jeedom, we need to know the ip address of the mysql database. Run the following command replacing ID_CONTAINER by the id found with the ps command or simply by jeedom-mysql.
 docker inspect ID_CONTAINER

In the NetworkSettings section, you will find the ip address of the database to the IPAddress key.

jeedom-docker-adresse-ip-mysql

Retrieve the ip address of mysql

An alternative is to “return” to the container and to ping the mysql container
docker exec-ti jeedom bash 
  then 
ping jeedom-mysql

Ctrl + C to stop the ping. Exit out of the container.

We can now open a browser and enter the following address in the url

 http://IP_PI_JEEDOM:8083

You reach the page to connect to the mysql database. Fill in the fields according to your configuration:

  • Database hostname : replace localhost with the ip address of the previously found mysql machine
  • Database port : change nothing (except modification on your part)
  • Database username : let root
  • Database password : the one you chose for the key MYSQL_ROOT_PASSWORD
  • Database name  : jeedom
jeedom-docker-configuration-mysql-raspberry-pi-3

Configuration to connect to the mysql database

Press Proceed. Jeedom will complete the configuration and probably do a couple small updates to the passage.
jeedom-installation-terminee-docker-raspberry-pi-3

Welcome to Jeedom on Raspberry Pi 3 working with Docker.

And that’s a perfectly functional Jeedom!

Install the image of Domoticz for Raspberry. This image installs and works fine.

Then set up the command docker run that matches your configuration

docker run -v /etc/localtime:/etc/localtime -v /SOMEPATH/domoticz.db:/root/domoticz/domoticz.db:rw -p 8080:8080 --name domoticz --restart=always -d allardvdb/rpi-domoticz

Some explanations (in detail here):

  • docker run -d rpi/allardvdb-domoticz [:thedockerruncommandusual
  • –restart=always : allows you to restart the container after a restart of the Raspberry (optional)
  • -v /etc/localtime:/etc/localtime : use the time of the host (optional)
  • -device=/dev/ttyUSB0 : exposes to the container the device connect on the USB/dev/ttyUSB0 of the raspberry (optional)
  • -v CHEMIN/domoticz.db:/root/domoticz/domoticz.db : to use a backup of an old Domoticz (optional)
  • -p 8080:8080 exposes port 8080 of the container on port 8080 of the Raspberry (be careful not to use a port already used by something else)

for this article gives

 docker run -p 8080:8080 --name domoticz --restart=always -d allardvdb/rpi-domoticz

Now open a browser and enter

 http://IP_RPI_DOMOTICZ:8080

And this is Domoticz is perfectly functional. You can see by the way that Jeedom and Domoticz work (without doing anything!) on the same Raspberry with no problems. The magic of Docker.

domoticz docker rapsberry pi3

Some tips for using Docker

Here’s to loose some very useful commands for easily use Docker with home automation software.

Command Explanation Useful option
docker ps-a allows you to list the containers and know their status
docker run created a container –restart=always: allows you to launch the container automatically on startup. Practice for a home automation server!–device: to expose a device connected to the Raspberry and use it in the container
docker start name starts the container
docker stop name stop the container
docker rm name delete the container (and data)
docker inspect name allows to retrieve information , for example the ip address of a mysql database

Subscribe to the weekly newsletter

No spam and no other use will be made of your email. You can unsubscribe anytime.

Tags:

We will be happy to hear your thoughts

Leave a Reply

DIY Projects
%d bloggers like this: