Pour améliorer mon installation domotique à moindre coût, j'ai écrit une interface graphique pour Domoticz taillée sur mesure pour l'écran tactile officiel de la fondation Raspberry. La réalisation se compose d'un serveur web et d'une base de données qui exploite l'API de domoticz. Vu les prix constatés pour ce type de matériel un peu de travail n'est pas décourageant.
Inventaire du matériel utilisé
- Un serveur Domoticz (le logiciel avec ou sans matériel)
- Un raspberry Pi 3 (Accueil le site web et/ou Domoticz)
- Un écran tactile officiel
- Un boîtier officiel
- Une carte SD
Écran Tactile | Boîtier | Raspberry Pi 3 | Boîtier moins cher |
Choix de la typologie
Trois solutions en fonction du matériel disponible, de mon budget et de l'existant :- Dans la première configuration le serveur Domoticz est sur une machine dédiée et le serveur JimPiTouch sur une autre.
- La deuxième est la plus économique, tout est sur la même machine, le serveur Domoticz et JimPiTouch
- Pour la dernière les deux serveurs sont sur une machine est le Rasp tactile ne sert qu'à accéder au serveur JimPiTouch
Installation
A - Configurer Apache
Le serveur domoticz a pour adresse ip 192.168.0.132 le serveur JimPiTouch l'adresse 162.168.0.13.Sur le serveur qui va accueillir JimPiTouch il faut les incontournables apache, php et mysql. Le serveur domoticz doit être paramétré pour accepter les requêtes du réseau local.
Configuration du serveur pour JimPiTouch :
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerName pitouch
ServerAdmin moi@maison.com
DocumentRoot /home/pi/www
<Directory /home/pi/www>
AddDefaultCharset ISO-8859-1
Require all granted
</Directory>
ErrorLog /var/log/error.log
CustomLog /var/log/access.log combined
</VirtualHost>
ServerName pitouch
ServerAdmin moi@maison.com
DocumentRoot /home/pi/www
<Directory /home/pi/www>
AddDefaultCharset ISO-8859-1
Require all granted
</Directory>
ErrorLog /var/log/error.log
CustomLog /var/log/access.log combined
</VirtualHost>
Attention ! C'est la configuration la plus simple et basique, aucune authentification, aucune sécurité, tout ceux qui ont accès au réseau local ont accès à JimPiTouch. Les seules directives que j'ajoute c'est l'encodage de caractères car toute les sources sont en iso-8859-1 et la directive 'Require' car dans cet exemple le site n'est pas dans un répertoire appartenant à l'utilisateur du serveur apache. Attention php fonctionne par défaut en UTF-8 pour changer ce comportement il faut modifier la ligne "default_charset" dans le fichier /etc/php5/apache2/php.ini (attention il peut être ailleurs) comme ceci : default_charset = "ISO-8859-1"
Ensuite on relance apache :
[moi@bg.com]sudo service apache2 restart
B - Installer les sources
L'archive de JimPiTouch se trouve ici : http://www.ghanassia.com/jpt/jimpitouch-2.2.tar.bz2 (md5 : 28f6b9add5399d18ed5a47e855b1fa33)Télécharger et décompresser l'archive de JimPiTouch dans le répertoire du site web (dans l'exemple /home/pi/www)
C - Configuration de la base de données
Il faut créer la base de données et les tables à l'aide du fichier structure-pitouch.sql.
[moi@bg.com]mysql --user=nom_user_sql -pmontmotdepasse < structure-pitouch.sql
Il y a donc dans la base de données 'pitouch' une table 'devices' et une vue 'familles'Ensuite il faut configurer l'appli avec une des deux méthodes suivantes :
- Pointer votre navigateur vers http://ip_du_serveur_jimpitouch/config/ et remplissez le formulaire.
Dans mon cas ça ne marche pas car mon serveur Apache n'a pas le droit d'écrire dans /home/pi/www/config - J'utilise donc la deuxième méthode en créant le fichier pitouch.ini dans /home/pi/www/config
/home/pi/www/config/pitouch.ini
;Fichier de configuration de l'application
;Peut-être modifié depuis http://ip_du_serveur/config/
[Serveur Mysql]
serveurbdd = ip_du_serveur (localhost le plus souvent)
port = (laisser vide si localhost)
user = (nom d'utilisateur de la BDD)
mdp = (mot de passe de l'utilisateur)
bdd = pitouch
[Serveur Domoticz]
ipdmtcz = 192.168.0.47 (adresse ip du serveur domoticz)
portdmtcz = 8080 (port du serveur)
[Securite]
codepin = 1234 (le code pin pour accéder à certaine fonction)
;Peut-être modifié depuis http://ip_du_serveur/config/
[Serveur Mysql]
serveurbdd = ip_du_serveur (localhost le plus souvent)
port = (laisser vide si localhost)
user = (nom d'utilisateur de la BDD)
mdp = (mot de passe de l'utilisateur)
bdd = pitouch
[Serveur Domoticz]
ipdmtcz = 192.168.0.47 (adresse ip du serveur domoticz)
portdmtcz = 8080 (port du serveur)
[Securite]
codepin = 1234 (le code pin pour accéder à certaine fonction)
D - Configuration du mode kiosque sur le pitouch
Pour que le raspberry muni de l'écran tactile s'ouvre directement sur l'application en plein écran il faut activer le mode kiosque de la session X (Et bien sur le raspberry doit démarrer sous X;-)) Le fichier doit être modifié et/ou créé de la façon suivante. (Les lignes qui commencent par # sont des commentaires)/home/pi/.config/lxsession/LXDE-pi/autostart
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
#@xscreensaver -no-splash
@midori -e Fullscreen -a http://127.0.0.1
#@xset -dpms
#@xset s off
@pcmanfm --desktop --profile LXDE-pi
#@xscreensaver -no-splash
@midori -e Fullscreen -a http://127.0.0.1
#@xset -dpms
#@xset s off
xserver-command=X -s 0 -dpms
Ici le navigateur midori démarrera en plein écran et affichera l'url http://127.0.0.1 c'est à dire le site web local avec JimPiTouch. Après un reboot de la machine, on doit avoir midori en plein écran qui s'affiche, mais il reste encore quelques étapes pour que tout fonctionne.
E - Peuplement de la base de données avec les infos du domoticz
Cette opération consiste à récupérer les devices du domoticz et les enregistrer dans la table pitouch.devices. Pour le faire il faut accéder à la partie configuration du serveur JimPiTouch (http://ip_du_serveur_jimpitouch/config/). On sélectionne l'onglet devices avec l'icône puis on lance le remplissage de la base en cliquant sur l'icône Update si tout est en ordre la liste de vos devices s'affiche.F - Assignation des devices au section
Il ne reste plus qu'a cliquer sur chaque device que l'on veut rendre disponible dans l'interface et lui attribuer une section. On peut aussi modifier le nom et ajouter un descriptif. Les autres options ne sont pas encore utilisées.Améliorations à venir
Il reste encore beaucoup de chose à faire comme par exemple finir la fonction de sécurité, la personnalisation des icônes... Si vous avez du matériel non supporté c'est certainement parce que je ne le possède pas (Dimmer, caméra...) Vous pouvez me communiquer vos problèmes et succès, vos questions et commentaires grâce à l'adresse mail de contact que vous trouverez à la fin du fichier README.mdAmusez-vous bien !