Aller au contenu

Passerelle Enocean + Fhem


BenjyNet

Messages recommandés

Ce thread est une "copie" de l'article de Sébastien Joly du blog domotique-info. Il y a quelques ajouts sur lesquels je me suis coincé les dents.

 

1. Première chose - le matériel

  • un Raspberry Pi model B
  • une carte SD de 8Go
  • un module GPIO EnOcean Pi
  • une alimentation micro USB
  • un boitier pour le protéger

Sur la photo on peut voir un connecteur SMA et une antenne 868MHz qui viennent en substitution de l'antenne présente sur le module GPIO pour augmenter la portée. J'ai également à  ma disposition un capteur de température et d'humidité de chez Vitec.

 

gallery_11_7_40951.jpg

2 - Préparer la carte SD avec l'OS (Raspbian Wheezy)

 

Rien d'extraordinaire, il faut récupérer la dernière image officielle Raspbian Wheezy qui est stockée au format .zip, il faudra donc la décompresser pour obtenir un fichier .img qui est le format image de la distribution.

Récupérer ensuite l'utilitaire Win32 Disk Imager pour pouvoir installer la distribution sur votre carte SD.

 

Au lancement on obtient cette fenêtre :

 

gallery_11_7_35904.jpg

 

Il suffit alors de sélectionner l'image de la distribution (Image File), le lecteur où il y a la carte SD (Device) puis de cliquer sur Write.

On attend et lorsque c'est fini, il n'y a plus qu'à  insérer la carte SD dans le raspberry.

 

3 - Premier démarrage

 

Tout d'abord, monter le tout. On emboîte le module EnOcean Pi sur la broche GPIO. On connecte un clavier USB, un écran HDMI, on vérifie que la carte SD est bien insérée, on met le tout dans une boite et on branche l'alimentation USB. Voilà  ce que ça donne la boite ouverte.

 

gallery_11_7_50907.jpg

Etape suivante : on observe gentiment ce qui défile sur l'écran... tout un tas de ligne blanche sur fond noir incompréhensible pour le commun des mortels :) (c'est du linux, pour ceux qui connaissent ça leur parlera).

On arrive maintenant à  la partie configuration de base de l'OS. La fenêtre raspi-config apparaît et il faut maintenant faire dans l'ordre...

 

1 - Étendre le système de fichier à  toute la carte SD en sélectionnant : 1 Expand Filesystem

 

gallery_11_7_125997.jpg

 

2 - Changer les paramètres de langues pour adapter le système à  notre langue, le français : 4 Internationalisation Options

 

gallery_11_7_45339.jpg

 

2.1 - On change d'abord les Locales du système pour du français : I1 Change Locale

 

gallery_11_7_55671.jpg

 

Dans la liste on se met sur le en_GB qui est coché et on appuie sur espace pour le décocher. En utilisant la même méthode, on coche comme sur la capture.

 

gallery_11_7_40204.jpg

 

Pour se déplacer sur OK il suffit d'appuyer sur la touche Tabulation puis entrée pour valider Ok.

On continue pour configurer les langues du système en sélectionnant fr_FR.UTF-8 puis Ok.

 

gallery_11_7_46876.jpg

 

2.2 - On change ensuite le fuseau horaire pour le mettre sur Paris : I2 Change Timezone

 

gallery_11_7_71878.jpg

 

gallery_11_7_37188.jpg

 

gallery_11_7_26293.jpg

 

2.3 - On passe ensuite le clavier en AZERTY (car au départ il est en QWERTY) : I3 Change Keybord Layout

 

gallery_11_7_74575.jpg

 

Je n'ai pas de capture d'écran alors dans l'ordre vous faites : Generic 1052-key (Int1) Pc puis Other, French, French, The default for the keybpard layout, No compose key et enfin No.

 

3 - Activer la possibilité de connexion par SSH :8 Advanced Options

 

gallery_11_7_47191.jpg

 

gallery_11_7_81145.jpg

 

gallery_11_7_15842.jpg

 

4 - On termine la configuration en se plaçant sur Finish grâce à  la touche Tabulation. A ce stade l'OS est configuré, il doit redémarrer (si ce n'est pas le cas taper : sudo reboot).

 

gallery_11_7_22659.jpg

 

Après le reboot, il faudra se loguer avec le login pi et le mot de passe raspberry s'il n'a pas été changé (dans le 2 Change User Password).

Si vous voulez de nouveau avoir accès à  raspi-config il suffit de taper, une fois loggé : sudo raspi-config

 

4 - Configuration du réseau

 

Suite au reboot et à  la connexion avec les identifiants ci-dessus, nous devons obtenir l'écran suivant

 

gallery_11_7_22502.jpg

 

La configuration du réseau sous Raspbian se passe dans le fichier /etc/network/interfaces. Il faudra le modifier pour avoir une ip fixe qui permettra par la suite d'accéder à  distance en SSH à  notre raspberry. On évite ainsi d'avoir un écran et un clavier de branché dessus

 

4.1 - Cas n°1 : connexion filaire

Pour modifier le fichier il faut taper en ligne de commande : sudo nano /etc/network/interfaces

Dans le fichier vous devez avoir :

auto lo

iface lo inet loopback

iface eth0 inet dhcp

allow-hotplug wlan0

iface wlan0 inet manual

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

 

Quelques explications sur ces lignes :

  • auto lo : va démarrer l'interface automatiquement lors de la séquence de boot
  • iface lo inet loopback : définition de l'interface loopback 127.0.0.1
  • iface eth0 inet dhcp : l'interface eth0 (port réseau RJ45 du raspberry) sera configuré par DHCP, il obtiendra donc directement son adresse par le réseau (IP dynamique).
  • Le reste est pour la configuration du wifi, nous verrons cela plus tard.

Il s'agit maintenant de mettre une adresse ip fixe, rien de plus simple, il faut modifier le fichier comme suit :

auto lo

iface lo inet loopback

iface eth0 inet static

adress 192.168.1.10

netmask 255.255.255.0

gateway 192.168.1.254

allow-hotplug wlan0

iface wlan0 inet manual

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

 

Les 2 seuls lignes qui sont intéressantes :

  • adress : c'est l'ip que vous donnez à  votre raspberry
  • gateway : c'est l'ip de votre passerelle vers internet (ici l'adresse de ma freebox).

Pour enregistrer et quitter le fichier il faut appuyer sur Ctrl+X et répondre oui à  l'écrasement.

Il ne reste plus qu'à  redémarrer l'interface réseau avec les commandes ifdown eth0 puis ifup eth0.

Votre raspberry est accessible à  l'adresse que vous avez spécifiée.

 

4.2 - Cas n°2 : connexion wifi

Il faut tout d'abord mettre un dongle wifi sur le port USB du raspberry. Le plus simple est de prendre du matériel que l'on sait déjà  compatible comme par exemple cette clé TP-Link et pour être sur qu'elle sera reconnue par raspbian il suffit de rebooter son raspberry si on l'a installée Rpi allumé.

 

gallery_11_7_49200.jpg

 

Il ne reste plus qu'à  modifier le fichier qui va bien en tapant : sudo nano /etc/network/interfaces

Comme vu précédemment il nous appartient de changer quelques lignes et cette fois-ci nous allons le faire sur la partie wifi et non RJ comme suit :

auto lo

iface lo inet loopback

iface eth0 inet dhcp

allow-hotplug wlan0

iface wlan0 inet static

adress 192.168.1.10

netmask 255.255.255.0

gateway 192.168.1.254

wpa-ssid "mon SSID"

wpa-psk "mon mot de passe"

iface default inet dhcp

 

Les 4 seuls lignes qui sont intéressantes :

  • adress : c'est l'ip que vous donnez à  votre raspberry
  • gateway : c'est l'ip de votre passerelle vers internet (ici l'adresse de ma freebox).
  • wpa-ssid : c'est le SSID de votre réseau wifi donné par votre box (ou routeur)
  • wpa-psk : c'est le mot de passe pour pouvoir se connecter à  votre réseau wifi

Pour enregistrer et quitter le fichier il faut appuyer sur Ctrl+X et répondre oui à  l'écrasement.

Il ne reste plus qu'à  redémarrer l'interface réseau avec les commandes ifdown eth0 puis ifup eth0.

Votre raspberry est accessible en wifi à  l'adresse que vous avez spécifiée.

 

A partir de maintenant il n'est plus nécessaire d'avoir un clavier + écran branché à  notre raspberry. Vous pouvez les débrancher et utiliser votre ordinateur pour accéder à  distance à  notre passerelle.

 

5 - Accès à  distance par SSH

 

Le protocole SSH va nous permettre de nous connecter à  notre raspberry à  partir d'une autre machine. Ici je vais vous prendre le cas d'une machine sous windows qui va utiliser le logiciel d'accès à  distance Putty.

L'avantage de Putty c'est qu'il n'a pas besoin d'installation. C'est un simple exécutable que vous pouvez emmener partout, sur une clé USB par exemple. Pour le télécharger c'est par ici.

 

Après avoir lancé l'exécutable il s'agira de le paramétrer en suivant les copies d'écran ci-dessous :

 

gallery_11_7_94115.jpg

 

Attention dans Host Name (or IP adress) il conviendra de rentrer l'IP que vous avec paramétrée juste avant dans le 4. de ce tuto. On ne touche pas au reste et on clique sur Open. 

 

gallery_11_7_8442.jpg

 

On rentre en login pi et on appuie sur entrée puis en mot de passe raspberry et on appuie sur entrée. Si tout c'est bien passé vous devriez avoir la copie d'écran ci-dessous et être connecté sur votre raspberry.

 

gallery_11_7_10177.jpg

 

 

6 - Mise à  jour de la distribution et installation de FHEM

 

Nous allons tout d'abord vérifier que notre distribution est à  jour en tapant : sudo apt-get update

Puis : sudo apt-get upgrade

 

Si vous avez la version la plus récente de tous les paquets vous aurez :

Lecture des listes de paquets... Fait

Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
0 mis à  jour, 0 nouvellement installés, 0 à  enlever et 0 non mis à  jour.
 
Sinon il vous posera une question :
Do you want to continue [Y/n] ?
Le Y étant en majuscule cela signifie que c'est l'option validée par défaut et qu'il nous suffira donc d'appuyer sur entrée. L'ensemble des paquets se met à  jour il suffit d'attendre.
 
Une fois que vous avez de nouveau la main, nous allons installer FHEM. Rien de plus simple, nous allons utiliser le script fournit par Sebastien de domotique-info :
 
Taper :
Rendre le fichier exécutable : sudo chmod +x fhem-setup.sh
Exécuter le script : sudo sh fhem-setup.sh
Puis redémarrer la machine : sudo reboot
 
A ce stade, FHEM est installé, vous serez déconnecté de Putty. Il faut attendre que le raspberry redémarre.
 
7 - Accéder à  FHEM
 
Pour accéder à  FHEM, ouvrez un navigateur et taper dans la barre d'adresse http://<PI-de-la-passerelle>:8083 et vous tomberez sur la page de FHEM.
Alors avant d'aller plus loin, j'ai en ma possession des capteurs de température et d'humidité O2line blanc de chez Trio2Sys, relativement petit (80x25x17 mm) et qui ressemble à  ça :
 
gallery_11_7_1303.jpg
Nous allons tout d'abord cliquer sur Event monitor à  gauche pour tomber sur une page où il y a rien à  par écrit Events :
 
gallery_11_7_38073.jpg
 
Nous sortons ensuite le capteur de son emballage et nous le posons à  la lumière pour qu'il reprenne des force et se charge un peu.
Après quelques minutes avant même d'avoir touché quoi que ce soit vous devriez voir déjà  remonter des informations qui ne sont pas forcément très explicite et pourtant notre capteur n'est toujours pas déclaré dans l'interface. Magique non ?
 
gallery_11_7_115698.jpg
 
Si vous ne voyer rien, taper dans la barre au dessus set TCM310_0 teach 300 (vous avez 5min pour réaliser ce qui suit ci-dessous).
Pour que le capteur soit correctement reconnu il faut le passer en mode "apprentissage". Pour cela il faut déclipser la plaque arrière et appuyer sur LRN (abréviation de LEARN).
 
gallery_11_7_2072.jpg
 
On voit cette fois-ci que le capteur est correctement reconnu, qu'il utilise le protocole EEP A5-04-01 et qu'il est fabriqué par Trio 2 Sys. Après quelques instants, les informations devraient cette fois être correctement remontées.
 
gallery_11_7_151521.jpg
 
Dans mon cas ici, il fait 26 degrés sous ma lampe halogène de bureau et l'humidité de la pièce est de 50%. Pour être sur que tout s'enregistre correctement, cliquez sur Save config à  gauche.
 
8 - Mise à  jour de FHEM
 
Régulièrement des mises à  jour de FHEM sont effectuées pour que le logiciel puisse communiquer avec un maximum de capteurs/actionneurs sur différents protocoles. Il faudra donc le mettre à  jour pour être sà»r d'avoir la dernière version.
Il se peut que lors de l'achat d'un module Enocean, celui-ci ne soit pas reconnu mais une mise à  jour de FHEM peut éventuellement régler ça. Je dis bien éventuellement car dans certain cas, tant que le module n'est pas inclus dans la base de FHEM, la configuration automatique ne pourra se faire et il faudra jouer alors avec les sub Type (mais c'est une autre histoire, je développerai en cas de besoin).
Pour mettre à  jour FHEM nous utiliserons encore Putty mais cette fois pour se connecter en Telnet, port d'écoute de FHEM sur notre Raspberry pi.
 
Dans un premier temps il faut configurer Putty pour avoir les retours à  la ligne automatique. Il suffit de se rendre dans Terminal puis cocher Implicit CR in every LF
 
gallery_11_7_88729.jpg
 
Après avoir cliqué sur Session, pour se connecter il faut rentrer l'IP de notre passerelle, cocher Telnet et fixer le port à  7072. On peut alors cliquer sur Open.
 
gallery_11_7_25494.jpg
 
La fenêtre noir de terminal apparaît, si vous n'avez pas le prompt fhem>, appuyez plusieurs fois sur entrée pour l'obtenir.
Pour mettre à  jour, tapez update et patientez. Une fois terminé, fermez la fenêtre Putty, FHEM est à  jour.
 
9 - Push des valeurs des capteurs vers la HC2
 
Rien de bien compliqué, nous allons demander à  FHEM d'envoyer les valeurs de nos variables par une requête cURL dans notre HC2.
Tout d'abord, il faut créer 2 variables dans le HC2 pour notre capteur de température et d’hygrométrie. J'ai créé TempSalledeBain et HumSalledeBain pour que cela reste explicite (attention à  ne pas mettre d'espace ou de caractères spéciaux, faites au plus simple, que des lettres, sinon ça peut poser des problèmes pour la suite).
 
gallery_11_7_33090.jpg
 
Pour faire remonter les valeurs il va falloir maintenant mettre les mains dans le cambouis et modifier le fichier de configuration de FHEM.
Avant cela, il faut rendre le fichier de configuration modifiable en tapant dans la barre du haut : attr WEB editConfig 1
Ensuite, il faut cliquer sur Edit Files
 
gallery_11_7_69019.jpg
 
Puis sur fhem.cfg
 
gallery_11_7_67330.jpg
 
 
Comme nous avons déjà  notre capteur de déclaré vous devriez trouver en bas dans le fichier ces quelques lignes (j'ai rajouter et organiser avec des commentaires pour bien séparer mes capteurs) :
 
# Capteur Salle de bain T°/H
# Définition du capteur
define EnO_sensor_0180840F EnOcean 0180840F
attr EnO_sensor_0180840F IODev TCM310_0
attr EnO_sensor_0180840F manufID 02C
attr EnO_sensor_0180840F room EnOcean
attr EnO_sensor_0180840F subType roomSensorControl.01
define FileLog_EnO_sensor_0180840F FileLog ./log/EnO_sensor_0180840F-%Y.log EnO_sensor_0180840F
attr FileLog_EnO_sensor_0180840F logtype text
attr FileLog_EnO_sensor_0180840F room EnOcean
 
Et nous allons lui rajouter ces 3 lignes (dont une ligne commençant par # qui est un commentaire pour savoir ce que la suite fait) pour l'envoi des données :
 
# Push des relevés vers la HC2
define TempSalledeBain notify EnO_sensor_0180840F.* { my $temp = ReadingsVal("EnO_sensor_0180840F","temperature", "");; system("curl --silent --output \'/dev/null\' --request PUT --data \'{\"value\": \"$temp\"}\' --user admin:MOT_DE_PASSE_ADMIN_HC2 http://IP_HC2/api/globalVariables/TempSalledeBain")}
define HumSalledeBain notify EnO_sensor_0180840F.* { my $hum = ReadingsVal("EnO_sensor_0180840F","humidity", "");; system("curl --silent --output \'/dev/null\' --request PUT --data \'{\"value\": \"$hum\"}\' --user admin:MOT_DE_PASSE_ADMIN_HC2 http://IP_HC2/api/globalVariables/HumSalledeBain")}
 
Pour finir, il suffit de créer un VirtualDevice pour visualiser nos données, je l'ai appelé Sonde Temp/Hum
Ici j'ai 2 affichages, un avec un label (pour être visible sur mon smartphone par exemple) et un en log pour avoir un module simple et ne pas surcharger l'affichage du Home.
 
gallery_11_7_4637.jpg                gallery_11_7_7225.jpg
 
Le petit code dans le VD qui va bien (dans le main loop) et en cadeau l'icone en pièce jointe.
 
local vId = fibaro:getSelfId();
local temp = fibaro:getGlobalValue("TempSalledeBain");
local hum = fibaro:getGlobalValue("HumSalledeBain");
fibaro:call(vId, "setProperty", "ui.Label1.value", temp .. "° / " .. hum .. "%");
fibaro:log(temp .. "° / " .. hum .. "%");

 

Cerise sur la gâteau, dans FHEM il est possible de créer des courbes pour visualiser l'évolution de ses variables, rien de bien compliqué, ça s'appelle Create SVG plot dans les fileLog. On obtient ceci :

 

gallery_11_7_50515.jpg

 

Edit :

Voir également le post de Lazer sur l'utilisation de l'API pour mettre à  jour des devices typés température ou motion (cas d'un module Qubino par exemple, dont on n'utiliserait pas les entrées inters et la sonde de température)

http://www.domotique-fibaro.fr/index.php/topic/678-passerelle-enocean-fhem/page-8#entry124196

Le gros avantage est que cette fois la température apparaît dans l'interface comme un vrai device et non comme une VG (visualisation du graphe dans le panneau de température).

post-11-0-31863900-1399020477_thumb.png

Modifié par BenjyNet
  • Upvote 4
Lien vers le commentaire
Partager sur d’autres sites

Yep ! Bon FHEM est installé en suivant le tuto de Sebastien sur domotique-info. D'ailleurs pour ceux qui souhaite le suivre, il y a quelques trucs qu'il faudrait connaitre et qui ne sont pas expliqués.

Bon, j'ai la sonde qui a été reconnue tout de suite mais maintenant je suis bloqué, je ne sais plus quoi faire :) Va falloir que je cherche sur le net...

Je vous tiens au jus...

Lien vers le commentaire
Partager sur d’autres sites

Ha bien, FHEM sur un PI c'est effectivement une très bonne solution :), mais perso je ne lui confierais rien de stratégique dans ma maison ! Mais pour le fun oui...

Lien vers le commentaire
Partager sur d’autres sites

Effectivement Krikroff, il n'y aura rien de stratégique, il sera làuniquement pour permettre des relevés de températures/humidités et consommation. Toute la partie scénario/action est réservée au HC2/Zwave.

Le but est de virer toutes ces p****n de piles qui coûtent un bras !

Lien vers le commentaire
Partager sur d’autres sites

A mon avis, une meilleure solution qui évite de ruiner la garantie : faire des fausses piles à  base de tourillons en bois.

 

J'ai déjà  acheté les tourillons, j'essaierai de faire un tuto quand j'aurai le temps de mettre en Å“uvre.

Lien vers le commentaire
Partager sur d’autres sites

Quitte à  faire des saignées pour passer les fils, pourquoi ne pas utiliser le récepteur universel Fibaro, à  la place ? http://www.domadoo.fr/produit,2779,1,FIBARO--D%C3%A9tecteur-Universel-Z-Wave-FGBS-001.htm

 

2 capteurs d'ouvertures pas chers branchés sur les entrées du FGBS-001: on gère deux ouvrants par FGBS

Comme il peut accueillir 4 sondes de température, on pourrait même gérer la température de 4 pièces.

On met les capteurs et sondes de température où il faut, on tire les cables juqu'au garage, où se trouvent les FGBS-001, branchés sur le secteur.

 

Pas de problème de pile, et côté cout ca reste nettement plus économique que les capteurs sur pile. On peut même imaginer gérer les détecteurs de présence de la même facon, après tout les deux contacts en entrée du FGBS peuvent accueillir n'importe quoi.

 

Bon, ca c'est la solution pour ceux qui sont en rénovation et qui n'ont pas peur de faire des saignées ;-)

Lien vers le commentaire
Partager sur d’autres sites

Oui et moi j'ai aussi un soucis là  dessus parce que j'ai un FGBS avec 4 sondes sauf que les sondes, je ne sais pas où les mettre  :) L'avantage du capteur Enocean c'est que je peux le déplacer dans la pièce, le mettre à  hauteur d'homme, etc.. Et si je change l'emplacement de mes meubles, je n'aurais pas un capteur qui risque de se retrouver derrière une armoire.

En fait c'est bien les capteurs filaires mais je trouve ça difficile à  poser pour un fonctionnement optimum.

Lien vers le commentaire
Partager sur d’autres sites

@ Jerry : oui, pour éviter de souder les contacts dans les modules. L'idée c'est de prendre des tourillons du bon diamètre, les couper à  la bonne longueur, de faire un petit trou au bout et d'y visser une vis, sur laquelle on a soudé un fil qui part dans la gaine jusqu'à  l'alimentation située au grenier/garage/cave.

C'est la vis qui fera contact avec les contacts métalliques du module à  alimenter. D'où la "fausse pile".

 

@ Cédric : pas bête du tout ! Par contre, les capteurs d'ouverture d'une alarme digne de ce nom ne se contentent pas d'un seul contact, car il faut aussi gérer le pin anti-arrachement. Voire même le bi-câblage, en normalement ouvert et normalement fermé.

Lien vers le commentaire
Partager sur d’autres sites

Quelle que soit la solution, tu peux passer un maximum de gaines, ça sera toujours utile un jour (capteurs d'ouverture, volets roulants ou battants, détecteur de mouvement, caméras, capteurs de température, thermostat, réseau Ethernet, etc....)

Tu laisses les gaines derrière le placo, et si tu ne les utilises pas c'est pas grave, et si un jour tu veux récupérer la gaine, il suffit de faire un trou àla scie cloche aux endroits préalablement repérés (un plan détaillé s'impose).

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...