Domoticz est une application de gestion domotique open Source disposant d’une communauté active autour du projet. La solution est modulaire et permet piloter des capteurs par le biais de “hardware” que ce soit directement avec des transceiver radio (RF433, EnOcean, Zwave), ou indirectement avec des gateway IP (autre Raspberry Domoticz, bus MQTT, etc).
Domoticz permet donc la collecte d’informations de capteurs (température, présence, etc), le traitement de ces informations (event) par des scripts (LUA, Blockly) et d’agir par l’envoi de commandes à des capteurs, l’envoi de notification nativement (SMS,email, push smartphone) ou encore déclencher des actions externes (appel API, déclenchement de script bash, envoi email, etc).
Domoticz est fourni sous forme d’image Raspberry OS (Debian) + Domoticz à installer sur une SD Card.
Le Système
Le raspberry est configuré (bootloader) pour aller chercher la partition de boot et par la suite la partition primaire sur la SD Card.
Domoticz (+ OS Raspbian) est fourni sous forme d’image ISO à charger sur la SD Card. Pour charger l’image tout se passer avec l’outil “dd” qui permet de copier des fichiers au niveau bloc:
df -h diskutil unmountDisk /dev/disk<disk# from diskutil> sudo dd bs=1m if= of=/dev/rdisk<disk# from diskutil>
Une fois l’image chargée, il est possible d’étendre le file system avec l’outil raspi-config qui permet de resizer les partitions rootFS et ainsi d’utiliser la pleine capacité de la carte SD.
Le logiciel SD formatter fonctionnant sur MAC OS permet de faire la même chose de manière graphique
RAM Drives
L’’image domoticz SD card est configurée avec 3 RAM Drives montés en /run. Ces disques permettent de stocker des informations sans utiliser la SD card qui peut être endommagée après de nombreux cycles de lectures.
Filesystem Size Used Avail Use% Mounted on rootfs 30G 942M 28G 4% / /dev/root 30G 942M 28G 4% / devtmpfs 183M 0 183M 0% /dev tmpfs 38M 220K 38M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 75M 0 75M 0% /run/shm /dev/mmcblk0p1 56M 9.7M 47M 18% /boot
Domoticz
Domoticz est installé par défaut dans le répertoire home de l’utilisateur “pi” (mot de passe par défaut: “pi”). Un script dans /etc/init.d permet de le lancer au démarrage du raspberry. Tout peut donc se faire depuis l’interface web.
La configuration consistera essentiellement à ajouter un transceiver (transmetteur/recepteur) RF et détecter des capteurs. Quelques points sont à vérifier néamoins:
- L’authentification doit être mise en “basic-auth » pour permettre accès aux API par les scripts et applications (home automation Pilot pour iPhone par ex.)
- Configuration des mot de passe web, security panel
- RF433: Ne configurer que les protocoles radio utiles.
Logiciels tiers
DDClient
La gestion du ddns depuis le serveur permet de s’affranchir du routeur utilisé. Cela necessite un testde l’ip publique auprès d’un serveur externe. Ici j’utilise le service Dyndns.com pour gérer mes IP dynamiques, mon hébergeur 1and1 n’étant pas en mesure d’offrir ce service.
Pour l’URL <sous_domaine_domoticz>.xaviermeunier.com, soit je mets l’IP (qui n’est pas si dynamique que ca chez Bouygues) soit je mets un CNAME vers le FQDN DynDNS
Fichier de configuration pour no-ip:
# Configuration file for ddclient generated by debconf # # /etc/ddclient.conf protocol=noip use=web, web=checkip.dyndns.com/, web-skip='IP Address' server=dynupdate.no-ip.com login=bobylaopointe@gmail.com password='fdfdfdf' xmeunier.ddns.net
Fichier de configuration du daemon. La valeur de refresh est augmentée à 1800 pour éviter d’être banni.
# Configuration for ddclient scripts # generated from debconf on Wed Dec 24 12:04:32 CET 2014 # # /etc/default/ddclient # Set to "true" if ddclient should be run every time a new ppp connection is # established. This might be useful, if you are using dial-on-demand. run_ipup="false" # Set to "true" if ddclient should run in daemon mode # If this is changed to true, run_ipup must be set to false. run_daemon="true" # Set the time interval between the updates of the dynamic DNS name in seconds. # This option only takes effect if the ddclient runs in daemon mode. daemon_interval="1800"
Sécurisation
Il est important de sécuriser un minimum sa solution de domotique.
- Changer le mot de passe de l’utilisateur “pi”
- Changer les ports par défaut (80 et 443)
- logguer et remonter les tentatives d’attaques
- Par le biais d’une bannière par exemple