Bonjour à tous, c'est akenad ,
Aujourd'hui je vais vous présenter un retour d’expérience sur la mise en œuvre du pont Zigbee “Phoscon Gateway” dans Jeedom avec le plugin RaspBee, Homebridge et piloté par Homepod.
Les équipements et versions utilisés sont les suivants :
-Odroid-C2 Armbian Stretch Kernel 3.x, Jeedom 3.2.16
-Phoscon Gateway = RPi3B et carte RasbBee (Firmware 262F0500) avec image Phoscon_Gateway_Headless_2019-02-20 (v2.05.59 / 14/02/2019 et Linux 4.14.98-v7+ Rasbian Stretch 12/02/2019)
(a priori cela devrait fonctionner de la même manière avec une clé ConBee)
-plugin Homebridge 2019-01-28 (Homebridge 0.4.46)
-iPhone IOS 12.1.4, Homepod 12.1.3
-Ampoule : LTW001 Philips Hue A19 White Ambiance E27
-Spot : LCT003 Spot Philips Hue White and Color ambiance bulb GU10
-Philips Hue Tap switch model PTM 215Z (4 boutons, sans pile)
-RWL021 Philips Hue Dimmer switch
-Xiaomi Aqara Door and Window Sensor (capteur d’ouverture de porte), modèle MCCGQ11LM. lumi.sensor_magnet.aq2. forme rectangulaire avec "Aqara" inscrit sur la tranche.
-Xiaomi Mi Temperature and Humidity Sensor (capteur de température et d’hygrométrie), modèle WSDCGQ01LM, lumi.sensor_ht, forme ronde.
J'ai procédé en 3 étapes :
-Mise en oeuvre de la Phoscon Gateway
-Mise en oeuvre du plugin Jeedom Raspbee sur odroid-C2
-Intégration HomeBridge et HomePod
1) Mise en oeuvre de la Phoscon Gateway
La Phoscon Gateway (pont ZigBee de Dresden Electronik) est constituée d’un RPi (RPi3B dans le cas présent) et d’un shield GPIO RaspBee ou d’une clé USB ConBee de Dresden Electronik (RaspBee dans le cas présent).
Une image fournie par Dresden Electronik nommée « Phoscon Gateway Headless » est à graver sur une carte microSD. Cet image contient une Raspbian Stretch pré-configurée, et embarque une application serveur web "Phoscon App" ainsi que l'application "deCONZ". (Phoscon App est l’IHM de deCONZ).
deCONZ assure d’un côté l'interface avec ZigBee (RaspBee ou Conbee) et de l’autre l’interface, via son plugin API REST, avec une application cliente (le plugin Jeedom RaspBEE dans le cas présent).
Les images sont ici :
https://www.dresden-elektronik.de/rpi/s ... mage-beta/
Au jour ou j'écris ces lignes la dernière version disponible (v2.05.59) est ici :
https://www.dresden-elektronik.de/rpi/s ... 9-02-20.7z
Télécharger et décompresser avec 7zip.
Graver la carte microSD avec Etcher l’image obtenu Phoscon_Gateway_Headless_2019-02-20.img
Insérer la microSD dans le RPi3B et booter.
Retrouver l’IP sur le réseau.
Fixer l’IP dans le serveur DHCP (par défaut la box Internet).
(Nota: accès SSH, login / mdp par défaut : pi / raspbeegw)
Accéder à Phoscon App, avec un navigateur en entrant : http: //adr-IP-Phoscon-GW (remplacer adr-IP-Phoscon-GW par l’adresse IP de la Phoscon GW)
Cliquer icône « Phoscon-GW »
Gateway name : Phoscon-GW
Login password : xxxxxxxx
Appairer des équipements ZigBee avec la Phoscon GW en utilisant Phoscon App :
Ajout d’un nouvel éclairage :
- ampoule Philips
Positionner l’ampoule à moins de 50 cm de la Phoscon GW et l’allumer
Phoscon App → Devices → Lights →Add new lights
l’ampoule est appairée.
- Spot Philips
positionner le spot à moins de 50 cm de la Phoscon GW et l’allumer
Phoscon App → Devices → Lights →Add new lights
le spot est appairée.
Ajout d’un nouveau switch :
- Tap switch Philipps
positionner le switch à moins de 50 cm de la Phoscon GW
Phoscon App → Devices → Switches → Add new switch
Select vendor : Philips
selectionner « Tap »
Appuyer et maintenir le bouton 3 pendant 10s
« Switch ready ». Le switch est appairé.
- Dimmer switch Philips
positionner le switch à moins de 50 cm de la Phoscon GW
Phoscon App → Devices → Switches → Add new switch
Select vendor : Philips
selectionner « Dimmer Switch »
Appuyer sur le bouton SETUP, situé à l’arrière du switch, (avec par exemple un trombone) pendant une seconde. La LED en face avant du switch passe à l’orange, puis au vert puis s‘éteint. Si ce n’est pas le cas appuyez sur le bouton SETUP pendant environ 10s.
« Switch ready ». Le switch est appairé.
Ajout d’une nouveau capteur :
-capteur d’ouverture
positionner le capteur à moins de 50 cm de la Phoscon GW
Phoscon App → Devices → Sensors → Add new sensor
Select vendor : other
puis appuyer sur le bouton du device quelques secondes jusqu’à ce que la led bleue clignote au moins 3 fois.
« Sensor ready ». Le capteur est appairé.
-capteur température et humidité
positionner le capteur à moins de 50 cm de la Phoscon GW
Phoscon App → Devices → Sensors → Add new sensor
Select vendor : other
puis appuyer sur le bouton du device quelques secondes jusqu’à ce que la led bleue clignote au moins 3 fois.
« Sensor ready ». Le capteur est appairé.
2) Mise en oeuvre du plugin Jeedom Raspbee sur odroid-C2
Une mise à jour a été réalisée le 20/11/2018 pour la compatibilité NodeJS v8.
Télécharger jeedom_plugin_RaspBee-master.zip depuis https://github.com/androme13/jeedom_plugin_RaspBee
Décompresser avec 7zip.
Descendre dans les niveaux de dossier.
Recompresser dans le fichier RaspBEE.zip en ayant à la racine les dossiers 3party, core, deamon, desktop, doc, plugin_info, resources.
Pour ajouter le plugin à Jeedom à partir du fichier zip :
(le nom du zip doit être le même que l’ID du plugin et dès l’ouverture du zip un dossier plugin_info doit être présent.)
roue crantée → Configuration → Mises à jour
→ onglet Fichier → cocher Activer Fichier
cliquer bouton « Sauvegarder »
Plugins → Gestion des plugins → Sources
→ Type de source : Fichier
ID logique du plugin: RaspBEE
chemin, Envoyer un plugin : RaspBEE.zip
cliquer bouton « Enregistrer »
(le plugin est copié dans /var/www/html/plugins/RaspBEE)
Plugins → Gestion des plugins → Mes plugins
Une icône « RASPBEE » grisée apparaît.
Cliquer sur l’icône et Activer le plugin. L’icône« RASPBEE » apparaît dans Plugins → Protocole domotique
Attendre l’installation des Dépendances ou la lancer. (Installe le module node websocket)
(précision : ce que le plugin RaspBEE appelle le pont ou la passerelle RaspBEE c’est en fait la Phoscon Gateway (constitué d’un RPI3B et d’un shield GPIO RaspBEE ou d’une clé USB ConBEE)
Pour renseigner l’Adresse IP:P0RT, Cliquer le bouton « Cherche automatiquement la première passerelle RaspBee sur le réseau »
Cliquer bouton "sauvegarder".
Aller dans Phoscon App (http: //adr-IP-Phoscon-GW/pwa et mot de passe)
Settings → Gateway → icône « Advanced »
Cliquer bouton « Authenticate app ».
Revenir dans la configuration du plugin RaspBEE.
Cliquer bouton « Demande automatiquement une nouvelle clé API » (10 caractères Hexadécimal).
Cliquer bouton "sauvegarder".
(astuce dans Phoscon App pour usage ultérieure : pour accéder à la page de configuration avancée ZigBee
Settings → Gateway → Alt + Clic sur icône « Advanced »)
Le Démon démarre.
Log RaspBEE en debug :
Code : Tout sélectionner
[2019-04-24 18:56:41][INFO] : Lancement du démon RAspBEE :
nice -n 19 nodejs /var/www/html/plugins/RaspBEE/daemon/daemon.js apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
jurl=http:///plugins/RaspBEE/core/php/jeeRaspBEE.php rurl=10.10.10.67 wsp=443
[2019-04-24 18:56:42][INFO] : Démon RaspBEE lancé
Remarque : dans l’icône « Réseaux RaspBEE » du plugin, les informations de configuration de la Phoscon GWpeuvent être aussi obtenues via une requête API :
http: //adr-IP-Phoscon-GW/api/api-key/config
en remplaçant adr-IP-Phoscon-GW et api-key par leur valeur.
Dans le plugin, cliquer bouton Synchroniser (synchronise capteurs ,éclairages et groupes).
(les switchs sont considérés comme des capteurs pour le Plugin RaspBee lors de la synchronisation)
Le switch Tap est inconnu par le plugin RaspBee. (il n’est a priori pas géré par le plugin RaspBee).
Le capteur "Daylight" est interne à la Phoscon GW.
Les éclairages et les capteurs apparaissent dans « Mes équipements RaspBEE »
Les commandes Jeedom sont crées automatiquement.
Cliquer l’équipement éclairage ampoule.
Le message suivant apparaît :
Forbidden - You don't have permission to access /plugins/RaspBEE/core/php/jeeRaspBEEProxy.php on this server.
Pour faire disparaître ce message,
roue crantée → Configuration → onglet OS/DB → Système → Administration Lancer
Taper la commande personnalisée :
Code : Tout sélectionner
sudo mv /var/www/html/plugins/RaspBEE/core/php/.htaccess /var/www/html/plugins/RaspBEE/core/php/htaccess
-Revenir et cliquer l’équipement éclairage ampoule et sélectionner objet parent « Bureau ».
Nom de l’équipement : Lampe neuf
-cliquer l’équipement éclairage spot et sélectionner objet parent « Bureau »
Nom de l’équipement : Lampe dix
-cliquer l’équipement capteur commande (dimmer Switch) et sélectionner objet parent « Bureau »
Nom de l’équipement : Dimeur trois
-cliquer l’équipement capteur ouvert/fermé et sélectionner objet parent « Bureau »
Nom de l’équipement : Ouverture deux
-cliquer l’équipement capteur de température et sélectionner objet parent « Bureau »
Nom de l’équipement : température un
-cliquer l’équipement capteur d’humidité et sélectionner objet parent « Bureau »
Nom de l’équipement : humidité un
Quelques extraits de la log RaspBEE_node au niveau debug :
Capteur d'ouverture (il possède aussi une information de température) :
Code : Tout sélectionner
--------------------------------
websocketclientparser sensorsprocess:
raw sensor object: { config: { battery: 100, on: true, reachable: true, temperature: 2100 },
e: 'changed',
id: '2',
r: 'sensors',
t: 'event',
uniqueid: '00:15:8d:00:02:43:55:a7-01-0006' }
sendposthttp://jeedom3/plugins/RaspBEE/core/php/jeeRaspBEE.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--------------------------------
websocketclientparser sensorsprocess:
raw sensor object: { e: 'changed',
id: '2',
r: 'sensors',
state: { lastupdated: '2019-03-13T21:12:39', open: false },
t: 'event',
uniqueid: '00:15:8d:00:02:43:55:a7-01-0006' }
sendposthttp://jeedom3/plugins/RaspBEE/core/php/jeeRaspBEE.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Code : Tout sélectionner
--------------------------------
websocketclientparser sensorsprocess:
raw sensor object: { config: { battery: 91, offset: 0, on: true, reachable: true },
e: 'changed',
id: '8',
r: 'sensors',
t: 'event',
uniqueid: '00:15:8d:00:02:3a:cc:b1-01-0402' }
sendposthttp://jeedom3/plugins/RaspBEE/core/php/jeeRaspBEE.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--------------------------------
websocketclientparser sensorsprocess:
raw sensor object: { e: 'changed',
id: '8',
r: 'sensors',
state: { lastupdated: '2019-03-13T19:45:01', temperature: 1853 },
t: 'event',
uniqueid: '00:15:8d:00:02:3a:cc:b1-01-0402' }
sendposthttp://jeedom3/plugins/RaspBEE/core/php/jeeRaspBEE.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Code : Tout sélectionner
--------------------------------
websocketclientparser sensorsprocess:
raw sensor object: { config: { battery: 91, offset: 0, on: true, reachable: true },
e: 'changed',
id: '9',
r: 'sensors',
t: 'event',
uniqueid: '00:15:8d:00:02:3a:cc:b1-01-0405' }
sendposthttp://jeedom3/plugins/RaspBEE/core/php/jeeRaspBEE.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--------------------------------
websocketclientparser sensorsprocess:
raw sensor object: { e: 'changed',
id: '9',
r: 'sensors',
state: { humidity: 4242, lastupdated: '2019-03-13T19:45:01' },
t: 'event',
uniqueid: '00:15:8d:00:02:3a:cc:b1-01-0405' }
sendposthttp://jeedom3/plugins/RaspBEE/core/php/jeeRaspBEE.php?apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Dans l'onglet Plugins Homebridge sélectionner la pièce « bureau » pour définir les types génériques de l'objet :
(on constate que les valeurs par défaut conviennent) :
«Lampe neuf »
Nom de la commande---------Type générique
Etat-------------------Info / Lumière Etat
Luminosité----------------Action / Lumière Slider
Off----------------Action / Lumière bouton Off
On---------------Action / Lumière bouton On
Les autres :
All / Ne pas tenir compte de cette commande
«Lampe dix »
Nom de la commande---------Type générique
Couleur--------------------Action / Lumière Couleur
Etat-------------------Info / Lumière Etat
Etat couleur-------------------Info / Lumière Couleur
Etat Temperature Blanc-------------------Info / Lumière Temperature Couleur
Luminosité----------------Action / Lumière Slider
Off----------------Action / Lumière bouton Off
On---------------Action / Lumière bouton On
Température Blanc-------------------Action / Lumière Température Couleur
Les autres :
All / Ne pas tenir compte de cette commande
«Ouverture deux »
Etat-------------------Info / Porte
«température un »
Etat température------------------Info / Température
«humidité un »
Etat humidité------------------Info / humidité
Cocher « Activer la pièce » et cocher « Envoyer à Homebridge ».
ATTENTION ! : Si on ne met pas de type générique état sur une commande état, l'équipement en tant qu'accessoire n'est pas envoyé à Homekit.
Arrêter et redémarrer le démon HomeBridge pour faire remonter les modifications dans l'App Maison.
L'objectif c'est de dire au Homepod :
-Dis SIRI, allume la lampe neuf
-Dis SIRI, éteint la lampe neuf
-Dis SIRI, allume la lampe neuf à 50 %
-Dis SIRI, allume la lampe dix
-Dis SIRI, éteint la lampe dix
-Dis SIRI, allume la lampe dix à 50 %
-Dis SIRI, mets la lampe dix de couleur bleue
-Dis SIRI, quel est l’état de ouverture deux ? ( → ouvert, fermé)
-Dis SIRI, quelle est la température du bureau
-Dis SIRI, quel est le taux d’humidité du bureau
Pour plus de détails, quelques documentations :
Produits :
RaspBee (Shield ZigBee Pi) : https://www.dresden-elektronik.de/raspbee/?L=1&ref=gh
ConBee : (USB ZigBee) : https://www.dresden-elektronik.de/conbee/?L=1&ref=gh
Phoscon App : https://www.dresden-elektronik.de/funkt ... L=1&ref=gh
deCONZ : https://www.dresden-elektronik.de/funkt ... econz/?L=1
Manuels :
Phoscon App doc : https://doc.phoscon.de/app/doc.html
Manuel RaspBee : https://www.dresden-elektronik.de/filea ... BHB-en.pdf
Manuel ConBee : https://www.dresden-elektronik.de/filea ... Manual.pdf
deCONZ REST-API doc : http://dresden-elektronik.github.io/deconz-rest-doc
GitHub :
deCONZ REST API plugin (serveur HTTP dans l’App deCONZ sur RPi) : https://github.com/dresden-elektronik/d ... est-plugin
Voila j'espère que ce retour d’expérience sera utile aux membres Jeedom.
akenad