Introduction
Cet article résume la procèdure de compilation et d'installation de Domoticz sur une carte BeagleBone Black (rev B) configurée avec une distribution Linux Debian 8 (Jessie).
Prérequis
- Un serveur Linux/Debian
- Les outils de compilation C++
- La librairie open-zwave pour utiliser ce protocole
- Un client Subversion
Client git
Le client git s'installe depuis le repository de paquets Debian avec la commande suivante:sudo apt-get install git
Outils de compilation C++
Les librairies nécessaires à la compilation s'installent avec les deux commandes suivantes:sudo apt-get install build-essential -y
sudo apt-get install cmake libboost-dev libboost-thread-dev libboost-system-dev libsqlite3-dev curl libcurl4-openssl-dev libusb-dev zlib1g-dev libssl-dev
Compilation d'openZWave
Installer la dépendance libudev:
sudo apt-get install libudev-dev
Depuis le répertoire racine des compilations qui est par défaut /home/debian:
Récupérer les sources depuis github avec l'aide de la commande suivante:
git clone https://github.com/OpenZWave/open-zwave.git
Lancer la compilation:
/home/debian$ make
La sortie standard de la commande make devrait ressembler aux lignes suivantes (noter la version 1.3.437):
make -C /home/debian/open-zwave/cpp/build/ -
make[1]: Entering directory '/home/debian/open-zwave/cpp/build'
Building OpenZWave Version 1.3-437-g09a092
...
Linking Static Library
Linking Shared Library
make[1]: Leaving directory '/home/debian/open-zwave/cpp/build'
make -C /home/debian/open-zwave/cpp/examples/MinOZW/ -
make[1]: Entering directory '/home/debian/open-zwave/cpp/examples/MinOZW'
Building Main.o
Linking /home/debian/open-zwave/.lib/MinOZW
g++ -o /home/debian/open-zwave/.lib/MinOZW /home/debian/open-zwave/.lib/Main.o /home/debian/open-zwave/libopenzwave.so -pthread
Creating Temporary Shell Launch Script
make[1]: Leaving directory '/home/debian/open-zwave/cpp/examples/MinOZW'
Création d'un lien vers libOpenZWave
La librairie OpenZwave compilée précedemment correspond à la version 1.3-437. Je recommande la création d'un lien symbolique vers cette librairie depuis le répertoire racine utilisé pour les compilations (/home/debian):
ls -al
drwxr-xr-x 23 debian debiann 4096 Aug 9 15:23 domoticz
drwxr-xr-x 11 debian debian 4096 Aug 9 16:07 open-zwave
mv open-zwave ozw-1.3.434
ln -s ozw-1.3.434 ozw
ls -al
drwxr-xr-x 23 debiandebian 4096 Aug 9 15:23 domoticz
lrwxrwxrwx 1 debiandebian 11 Aug 9 16:13 ozw -> ozw-1.3.434
drwxr-xr-x 11 debiandebian 4096 Aug 9 16:07 ozw-1.3.434
Compilation de domoticz
Etat des lieux
La commande free -mh affiche la quantité de RAM utilisée:total used free shared buffers cached
Mem: 490M 102M 387M 8,3M 15M 51M
-/+ buffers/cache: 35M 455M
Swap: 0B 0B 0B
La commande df -h affiche la liste des systémes de fichiers montés ainsi que leurs points de montage et taux d'occupation.
Sys. de fichiers Taille Utilisé Dispo Utilisé Monté sur
udev 10M 0 10M 0% /dev
tmpfs 99M 4,3M 94M 5% /run
/dev/mmcblk0p1 1,8G 1,1G 573M 66% /
tmpfs 246M 0 246M 0% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 246M 0 246M 0% /sys/fs/cgroup
Création d'un espace de swap
La commande free montre que ce système ne possède pas d'espace de swap.L'utilisation de librairies templates comme boost requiert beaucoup de mémoire pendant l'étape de compilation de domoticz, en particulier lors de la fabrication du serveur Web. Afin de garantir le succès de cette étape, je recommande d'ajouter un RAM disk pour permettre au système de swapper s'il ne dispose pas de la quantité de memoire physique nécessaire.
Le file système dispose de 573Mo libre, on peut donc créer un espace de swap temporaire de 256Mo.
La commande suivante permet de créer un fichier d'une capacité de 256Mo pour le futur espace de swap (1024*256 = 262144 blocks).
sudo dd if=/dev/zero of=/swapfile bs=1024 count=262144
262144+0 enregistrements lus
262144+0 enregistrements écrits
268435456 octets (268 MB) copiés, 34,4415 s, 7,8 MB/s
Ensuite, il convient de sécuriser les accès à cet espace mémoire:
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile
Enfin, on définit puis on active cet espace de swap avec l'aide des commandes suivantes:
sudo mkswap /swapfile
Setting up swapspace version 1, size = 262140 KiB
no label, UUID=d1868600-d866-4982-a4f5-e7ee0abd580f
sudo swapon /swapfile
total used free shared buffers cached
Mem: 490M 330M 160M 4,3M 7,7M 287M
-/+ buffers/cache: 34M 455M
Swap: 255M 0B 255M
Compilation
Depuis le répertoire racine des compilations (/home/debian).Récupérer les sources depuis le repository git hub avec l'aide de la commande suivante:
git clone https://github.com/domoticz/domoticz.git domoticz
Aller dans le réperoire domoticz et modifier le chemin de recherche de la librarie openZWave dans le fichier CMakeLists.txt:
cd domoticz; vi CMakeLists.txt:
# try to find open-zwave, if found, include supportfind_library(OpenZWave NAMES libopenzwave.a HINTS "../ozw" "../ozw/cpp/build")
Lancer la fabrication du makefile avec la commande suivante:
cmake -DCMAKE_BUILD_TYPE=Release .
La sortie standard de la commande cmake devrait ressembler aux lignes suivantes (noter la révision 2737 ainsi que la détection de libopenzwave):
-- Compiling Revision #2737
-- Boost version: 1.49.0
-- Found the following Boost libraries:
-- thread
-- date_time
-- system
-- Linking against boost static libraries
-- Found ZLIB: /usr/lib/arm-linux-gnueabihf/libz.so (found version "1.2.7")
-- ZLIB libraries found at: /usr/lib/arm-linux-gnueabihf/libz.so
-- ZLIB includes found at: /usr/include
-- Found CURL: /usr/lib/arm-linux-gnueabihf/libcurl.so (found version "7.26.0")
-- Curl libraries found at: /usr/lib/arm-linux-gnueabihf/libcurl.so
-- Curl includes found at: /usr/include
-- Found LIBUSB: /usr/lib/arm-linux-gnueabihf/libusb.so
-- LIBUSB found at: /usr/lib/arm-linux-gnueabihf/libusb.so
-- Crypto library found at: /usr/lib/arm-linux-gnueabihf/libcrypto.so
-- /home/debian/ozw/libopenzwave.a
Lancer la compilation de domoticz avec l'aide de la commande:
make
...
Linking C static library liblua.a
[ 19%] Built target lua
Scanning dependencies of target mqtt
[ 19%] Building C object MQTT/CMakeFiles/mqtt.dir/mosquitto.c.o
[ 20%] Building C object MQTT/CMakeFiles/mqtt.dir/logging_mosq.c.o
[ 20%] Building C object MQTT/CMakeFiles/mqtt.dir/memory_mosq.c.o
[ 21%] Building C object MQTT/CMakeFiles/mqtt.dir/messages_mosq.c.o
[ 21%] Building C object MQTT/CMakeFiles/mqtt.dir/net_mosq.c.o
[ 22%] Building C object MQTT/CMakeFiles/mqtt.dir/read_handle.c.o
[ 22%] Building C object MQTT/CMakeFiles/mqtt.dir/read_handle_client.c.o
[ 23%] Building C object MQTT/CMakeFiles/mqtt.dir/read_handle_shared.c.o
[ 24%] Building C object MQTT/CMakeFiles/mqtt.dir/send_client_mosq.c.o
[ 24%] Building C object MQTT/CMakeFiles/mqtt.dir/send_mosq.c.o
[ 25%] Building C object MQTT/CMakeFiles/mqtt.dir/socks_mosq.c.o
[ 25%] Building C object MQTT/CMakeFiles/mqtt.dir/srv_mosq.c.o
[ 26%] Building C object MQTT/CMakeFiles/mqtt.dir/thread_mosq.c.o
[ 26%] Building C object MQTT/CMakeFiles/mqtt.dir/time_mosq.c.o
[ 27%] Building C object MQTT/CMakeFiles/mqtt.dir/tls_mosq.c.o
[ 27%] Building C object MQTT/CMakeFiles/mqtt.dir/util_mosq.c.o
[ 28%] Building C object MQTT/CMakeFiles/mqtt.dir/will_mosq.c.o
Linking C static library libmqtt.a
[ 28%] Built target mqtt
Scanning dependencies of target sqlite
...
Remarque
L'espace de swap est recommandé puisque lors de la phase de compilation du serveur web:[ 36%] Building CXX object CMakeFiles/domoticz.dir/main/WebServer.cpp.o
Le système réalise quelques opérations de swap (14Mo):
total used free shared buffers cached
Mem: 490M 456M 33M 280K 636K
-/+ buffers/cache: 431M 59M
Swap: 255M 14M 241M
Suppression du swap
La commande suivante desactive l'espace de swap:sudo swapoff /swapfile
La commande suivante supprime le fichier de swap correspond:
sudo rm /swapfile
Création d'un lien vers domoticz
La version de domoticz compilée précedemment correspond à la révision 2737. Je recommande la création d'un lien symbolique vers cette librairie depuis le répertoire racine utilisé pour les compilations ((/home/debian):
ls -alh
drwxr-xr-x 25 pi debian 4.0K Aug 9 19:35 domoticz
lrwxrwxrwx 1 debian debian 11 Aug 9 16:13 ozw -> ozw-1.3.434
drwxr-xr-x 11 debian debian 4.0K Aug 9 16:07 ozw-1.3.434
mv domoticz domoticz-2737
ln -s domoticz-2737 domoticz
ls -al
lrwxrwxrwx 1 debian debian 13 Aug 9 19:39 domoticz -> domoticz-2737
drwxr-xr-x 25 debian debian 4096 Aug 9 19:35 domoticz-2737
lrwxrwxrwx 1 debian debian 11 Aug 9 16:13 ozw -> ozw-1.3.434
drwxr-xr-x 11 debian debian 4096 Aug 9 16:07 ozw-1.3.434
Démarrage
Pour démarrer domoticz sous la forme d'un service recopier le script domoticz.sh sous le répertoire /etc/init.d:
sudo cp domoticz.sh /etc/init.d
sudo chmod +x /etc/init.d/domoticz.sh
sudo update-rc.d domoticz.sh defaults
Editer le script afin de mettre à jour le chemin d'accès au programme domoticz:
sudo vi /etc/init.d/domoticz.sh
DAEMON=/home/debian/domoticz/domoticz
Le script permet aussi de changer le port utilisé par l'interface Web:
OPTIONS=-www 8080
domoticz peut maintenant être supervisé avec les commandes suivantes:
sudo service domoticz.sh start
sudo service domoticz.sh stop
sudo service domoticz.sh status
Gestion des services
La commande update-rc.d permet d'ajouter, modifier ou supprimer un service.
Aucun commentaire:
Enregistrer un commentaire