Sélectionner une page

Domoticz : utilisation de FHEM comme passerelle EnOcean

par | Mai 23, 2014 | Domotique | 10 commentaires

Au cours des deux articles précédents, nous avons pu découvrir la solution opensource Domoticz qui permet de mettre en place et de contrôler facilement une installation domotique. En choisissant d’héberger cette solution sur un Raspberry Pi, et grâce au support de différents protocoles (RF433, Z-Wave, …), nous avons vu qu’il est possible de mettre en place progressivement une telle installation avec un budget  relativement faible en sélectionnant judicieusement ses différents périphériques dans telle ou telle gamme.

Autre technologie radio majeure dans le domaine de la domotique, la technologie EnOcean se différencie par ses composants sans-fils, mais surtout sans piles, car capables de s’auto-alimenter en puisant l’énergie nécessaire à leur fonctionnement directement dans l’environnement qui les entoure (énergie  mécanique,  solaire, thermique…).

Ceci présente un avantage certain : pas besoin de se préoccuper de l’état de charge de piles ou batteries, il n’y a pas de maintenance ! L’absence de piles rend également les périphériques EnOcean particulièrement compacts, et donc discrets. Une fois mis en place, un périphérique EnOcean peut s’oublier… Voici des avantages qu’il serait bon de pouvoir exploiter au sein de notre installation ! Nous allons donc voir dans cet article comment exploiter à travers Domoticz la gamme de périphériques EnOcean qui s’étend de jour en jour.

1. Matériel requis

Les périphériques EnOcean que l’on a choisi pour cette présentation sont les suivants :

Un interrupteur double Vimar (4 contacts)
Un capteur de température et d’humidité Trio2Sys
Un capteur de contact de fenêtre Trio2Sys

periphenocean

On remarque sur les capteurs la petite cellule photovoltaïque qui fourni l’énergie nécessaire à leur fonctionnement. Equipés d’un petit accumulateur interne, ils peuvent tenir jusqu’à 4 jours en pleine obscurité.

L’interrupteur quand à lui est alimenté directement par l’énergie libérée lors de l’appui sur les touches, par effet piézo-électrique.

Pour que le Raspberry Pi puisse communiquer avec des périphériques EnOcean, nous allons utiliser le dongle EnOcean USB300. Ce dongle USB bidirectionnel intègre un chipset TCM310 et  supporte le protocole ESP3 EnOcean.

USB300_enocean

On connectera donc  ce dongle sur un des ports disponibles du HUB USB.

Attention, ne connectez pas pour l’instant votre éventuel RFXCom et votre éventuel ZStick v2, nous en verrons la raison un peu plus loin…

Si l’on a bien suivi la procédure décrite dans le précédent article permettant de définir un alias persistant à nos périphériques USB, on va retrouver à coup sûr notre dongle USB300 associé au device /dev/ttyUSB12 :

lsmlusb

Notre Raspberry Pi est prêt, voyons maintenant comment intégrer nos périphériques EnOcean au sein de Domoticz.

2. Présentation de FHEM

Cette fois ci hélas, l’équipe de Domoticz ne nous fourni (pas encore …) une solution clé en main. En effet, la version de Domoticz testée ici (1.1396) ne supporte actuellement que le protocole EnOcean ESP2 via un dongle TCM-120. Il n’est donc pas possible pour l’instant  de déclarer directement notre dongle USB300 via l’onglet Configuration/Matériel.

Qu’à cela ne tienne, nous allons nous baser sur un autre logiciel opensource sous licence GPL, nommé FHEM.

LIRE
Comment installer Jeedom sur un Raspberry Pi

FHEM est une autre solution de contrôle Domotique, initialement développée par une équipe Allemande, et présentant de nombreuses extensions. La solution FHEM, malgré le fait qu’elle soit très puissante, n’est cependant pas à la portée du néophyte, car elle n’offre pas une interface de configuration graphique aussi simple à utiliser que celle de Domoticz, tout se faisant essentiellement de façon déclarative et textuelle…. Or ici, nous cherchons à rassurer et encourager l’utilisateur à se lancer !

Ce qui nous intéresse ici tout particulièrement, est que FHEM supporte notre fameux dongle USB300 et le protocole EnOcean ESP3. Nous allons donc ici nous appuyer sur FHEM uniquement pour transférer  les informations reçues de nos différents capteurs EnOcean vers Domoticz par l’intermédiaire de requêtes http.

FHEM-Gateway

FHEM est donc utilisé ici en tant que passerelle EnOcean <-> Domoticz. Une fois cette passerelle mise en place, toute la configuration et l’intelligence de l’installation (groupes, scénarios, planning, notification, ….) restera effectuée de façon « confortable » au sein de Domoticz, comme au préalable. Ainsi, l’utilisateur n’a besoin de se concentrer que sur l’apprentissage d’une seule interface de configuration. Comme indiqué précédemment, le contrôleur Domoticz a alors pour rôle complémentaire :

– de faire abstraction des différences existant entre les différents protocoles utilisés  (ici, RF433, Z-Wave et EnOcean) en présentant les fonctionnalités des différents périphériques de la façon la plus unifiée possible au niveau de son interface graphique de contrôle.
– Et de permettre l’interopérabilité entre les différents protocoles, autrement dit, permettre que tous les composants puissent interagir ensemble.

NB : On trouvera tous les détails nécessaires concernant le projet FHEM sur sa homepage.

Encore une fois, il va falloir passer par quelques lignes de commandes. Après s’être connecté en SSH sur notre Raspberry Pi, il suffi de lancer les commandes suivantes pour installer FHEM, qui à la fin de l’installation sera démarré automatiquement.

sudo apt-get install perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl

sudo apt-get install –f

wget http://fhem.de/fhem-5.5.deb

sudo dpkg –i fhem-5.5.deb

Pour tester si l’installation de FHEM s’est bien déroulée, lancer un Browser Web sur l’URL suivante : http://<ip du raspberry> :8083

Si tout s’est bien passé, vous arrivez sur la page principale de FHEM :

FHEM-home

3. Configuration de FHEM :

FHEM est installé par défaut avec une configuration initiale qui permet lors de son démarrage  la détection automatique des différents contrôleurs USB et autres périphériques de notre installation.

C’est pour cela que nous vous avons conseillé au début de l’article de ne connecter au Raspberry Pi que le dongle USB300, afin que FHEM ne puisse détecter que les périphériques EnOcean.

Il suffit donc d’appuyer sur une des touches de notre interrupteur VIMAR, ainsi que sur les boutons d’apprentissage de nos modules Trio2Sys (petit poussoir nommé LRN situé au dos des capteurs) pour que FHEM les détecte et les déclare automatiquement dans son fichier général de configuration.

Pour accéder au fichier général de configuration, cliquer sur Edit files puis sélectionner fhem.cfg

LIRE
Comment créer des résumés sur Jeedom pour un aperçu rapide de votre logement connecté ?

fhemeditcfg

On pourra vérifier que les différents périphériques EnOcean on bien été automatiquement déclarés. On en profitera pour mettre quelques commentaires, désactiver la détection automatique des périphériques USB, et mettre à jour la configuration du device USB300 avec son alias persistant. Au final, on arrive avec un fichier de configuration ressemblant à ceci :

fhemcfg1

N’oubliez pas de sauvegarder votre configuration en cliquant sur le bouton «Save fhem.cfg «. Il faudra alors relancer FHEM en saisissant la commande suivante dans le champ de saisie de  l’interface Web  :

shutdown restart

4. Vérification de la configuration :

Le menu EventMonitor de FHEM vous permet de vérifier que votre configuration EnOcean est correcte, et que les messages de vos périphériques sont bien reçus et interprétés :

FHEM-eventmon

La détection automatique étant désormais désactivée, on pourra alors rebrancher nos éventuels dongle RFXCom et autre ZStickV2 à notre Raspberry, ceux-ci étant nativement supportés par Domoticz. Notre configuration FHEM ne sera ainsi pas « polluée » par les détections de nos éventuels composants RF433 ou ZWave.

5. Utiliser FHEM en tant que passerelle

FHEM est maintenant capable de recevoir différents événements en provenance de nos périphériques EnOcean. Il s’agit maintenant de les transférer au niveau de Domoticz. Pour cela, nous allons nous appuyer sur  l’interface JSON de Domoticz, point d’entrée qui permet son contrôle et l’accès à différentes informations par le biais de requêtes http. La documentation de cette interface JSON est disponible sur le site Web de Domoticz à l’adresse suivante :

http://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

Pour nous simplifier la tâche, nous utiliserons des petits shells utilitaires qui effectuent les différentes requêtes http grâce à l’utilisation de la commande curl.

Exemple 1 : commande des interrupteurs Domoticz :

Pour commander nos interrupteurs Domoticz, on va créer un fichier nommé switchlight.sh  dans le répertoire /home/pi par exemple, et qui contiendra  :

curl -s « http://localhost:8080/json.htm?type=command&param=switchlight&idx=$1&switchcmd=$2 »

Ne pas oublier de rendre ce fichier exécutable :

chmod +x switchlight.sh

On voit que ce shell doit être appelé avec deux arguments : le premier correspond à l’IDX de l’interrupteur Domoticz que l’on veut contrôler. Le deuxième argument est la commande à passer : soit On Soit Off (attention aux majuscules !)

On pourra tester ce shell manuellement :

./switchlight.sh 8 On

pour activer l’interrupteur Domoticz d’IDX 8.

En résumé :

switchlights

Note : Pour retrouver les IDX des interrupteurs Domoticz, utilisez le menu  Configuration/Périphériques.

Revenons maintenant sur l’interface Web de configuration de FHEM. Nous allons ajouter dans le fichier de configuration principal les lignes suivantes, qui permettent d’indiquer à FHEM quelles commandes effectuer lors de l’appui de tel ou tel bouton de notre interrupteur VIMAR.

### Sur appui bouton A0 du VIMAR, lancer switchlight.sh 8 On

define BtnA0 notify EnO_switch_008AC1AA:A0 « /home/pi/switchlight.sh 8 On »

### Sur appui bouton AI du VIMAR, lancer switchlight.sh 8 Off

define BtnAI notify EnO_switch_008AC1AA:AI  « /home/pi/switchlight.sh 8 Off »

Sauvegardez, et … c’est prêt !  Vous pouvez désormais piloter vos périphériques Domoticz grâce à votre interrupteur EnOcean, qu’ils soient de type RF433 ou Z-Wave  !

Exemple 2 : commande des scènes et groupes Domoticz :

Sur le même principe, vous pouvez piloter vos différentes scènes ou groupes définis dans Domoticz :

LIRE
Comment installer Jeedom sur un Raspberry Pi

Créer un fichier /pi/domoticz/switchscene.sh, qui contiendra

curl -s http://localhost:8080/json.htm?type=command&param=switchscene&idx=$1&switchcmd=$2

Note : Pour retrouver les ID des différentes scènes et groups que vous avez créé, utiliser la commande :

curl -s « http://localhost:8080/json.htm?type=scenes »

En résumé:

switchscene

Configuration  dans fhem.cfg :

### Sur appui bouton B0 du VIMAR, activer la scène 1

define BtnB0 notify EnO_switch_008AC1AA:B0 « /home/pi/switchscene.sh 1 On »

### Sur appui bouton BI du VIMAR, activer la scène 2

define BtnBI notify EnO_switch_008AC1AA:BI  « /home/pi/switchscene.sh 2 On »

Exemple 3 : remontée de valeurs de capteurs EnOcean  :

Si l’on désire remonter les informations de nos capteurs EnOcean, on s’appuiera sur le même principe :

Créer le shell /home/pi/udevice.sh  qui  contiendra

curl -s « http://localhost:8080/json.htm?type=command&param=udevice&idx=$1&nvalue=0&svalue=$2;$3;5 »

Dans fhem.cfg :

### On utilise les infos du capteur temp/hum pour maj le capteur d’IDX 33

define TempHum notify EnO_sensor_0088F241.* {  my $temp = ReadingsVal(« EnO_sensor_0088F241 », « temperature », «  »);;  my $hum= ReadingsVal(« EnO_sensor_0088F241 », « humidity », «  »);; system(« /home/pi/udevice.sh 33 $temp $hum ») }

Mises cote à cote, voici les courbes de températures de nos capteur RF433 Oregon Scientific THGR122 (RFTempHum) et du Trio2Sys (EnoTempHum) :

cmptemp

Rien à dire, c’est précis ! On remarquera juste une fréquence de mise à jour moins importante pour le capteur EnOcean (effet ce crénelage sur la courbe), conséquence inhérente de cette technologie à très faible consommation.

Note : Les différents shells et le fichier de configuration principal de FHEM utilisés dans cette présentation sont disponibles ici pour vous aider dans la configuration de votre propre installation.

6. Conclusion

FHEM, bien qu’un peu austère, s’avère être une solution très efficace pour pallier au manque actuel du support natif du dongle USB300 au sein de Domoticz. L’équipe de développement travaille actuellement sur ce point afin de pouvoir définir directement et piloter ses différents périphériques EnOcean ESP3 dans une future release, mais on pourra s’appuyer sur cette utilisation de FHEM en tant que passerelle pour d’autres protocoles, tels que KNX par exemple….

Cela aura été une excellente opportunité pour découvrir et exploiter l’interface JSON de Domoticz qui permet d’envisager  d’autres formes de contrôle. La technologie EnOcean présente quand à  elle des atouts indéniables que l’on a vus au début de cet article.

Mais le plus intéressant, est qu’arrivés à ce point, quel que soient les périphériques utilisés, le trio Raspberry/Domoticz/FHEM rempli à merveille son rôle de plateforme domotique simple et accessible en offrant à l’utilisateur une grande souplesse et une vaste gamme pour le choix de ses composants, et simplifie grandement la programmation de son installation. Une fois cette plateforme mise en place, l’utilisateur n’a plus qu’à se concentrer  sur l’interface simple et efficace de Domoticz pour définir ses scènes, commandes planifiées et autres scénarios afin de contrôler son installation ou il aura pu mixer à tout loisir différents types de périphériques. Une fois qu’on y a gouté, l’interopérabilité et le support multi protocole est un luxe auquel on ne peut plus se passer !

A vous d’essayer !

PS : Bravo et encore merci à Jean-Bruno, pour cet article.

Restez connecté sur l'actualité domotique!