Jeedom + Homebridge : piloter vos équipements avec un iPhone et Siri • Domotique et objets connectés à faire soi-même

Dans ce tutoriel, nous allons voir comment installer et configurer la passerelle Homebridge vers Homekit (le framework domotique d’Apple) avec Jeedom. L’installation et la configuration de l’application iOS (iPhone ou iPad) est identique ce que nous avons déjà pour Domoticz. J’ai un peu moins détaillé cette partie que dans le précédent tutoriel car c’est identique, pour plus de détail lisez l’article précédent.

Configuration utilisée

Pour ce tutoriel, j’ai utilisé une box domotique Jeedom basée sur un Raspberry Pi 3. Dans ce tutoriel, nous allons simplement utiliser une sonde de température développée en quelques clics à l’aide du framework ESP Easy et un ESP8266 (pour rester dans l’esprit DIY). La méthode restera la même quelque soit votre installation et vos accessoires domotiques.

Soit un budget d’environ 65€.

Est-il possible d’installer Homebridge sur un autre poste ?

Oui, il est tout à fait possible d’installer Homebridge sur un NAS par exemple. Vous pouvez suivre ce tutoriel de Maison et Domotique. En gait vous pouvez installer la passerelle sur n’importe quelle système pouvant faire fonctionner Nodejs (c’est à dire presque tous !). La communication avec la box domotique se faisant via des requêtes HTTP il suffira de pointer sur l’adresse IP de la box Jeedom. Ce n’est pas forcément la meilleure solution toutefois car vous aller multiplier les machines, la maintenance et les risques de coupure de service. En installant Homebridge sur le Raspberry Pi de Jeedom et en clonant régulièrement la carte SD, vous aurez un système plus robuste.

Versions des logiciels installés

Raspbian Jessie Lite

# uname -a
Linux jeedom 4.4.38-v7+ #938 SMP Thu Dec 15 15:22:21 GMT 2016 armv7l GNU/Linux

Jeedom version 2.4.6 installée à partir de l’image Netinstall (guide d’installation sur Raspberry Pi 3).

iPhone 6S sous iOS 10.2

Plugin Homebridge pour Jeedom

Il existe un plugin payant pour Jeedom qui permet d’installer la passerelle. Ce dernier est payant (4€). Il est nécessaire pour faire fonctionner l’application Jeedom mobile pour iOS (qui elle est gratuite). Contrairement au plugin eDomoticz qui s’occupe de découvrir et publier tous les appareils domotiques, c’est à l’utilisateur de choisir ce qu’il veut partager avec son iPhone ou son iPad. C’est à la fois un avantage, on ne pollue pas sa Maison avec des appareils inutiles, et un inconvénient, il faut tout configurer à la main. La configuration peut s’avérer fastidieuse et il faudra penser à ajouter chaque nouveau dispositif pour le rendre visible depuis Maison.

Pour ce tutoriel, j’ai préféré opter pour l’installation du plugin manuellement pour rester dans l’esprit d’une box domotique 100% DIY (et à budget maitrisé).

Installer Homebridge sur Raspbian

Homebridge est un projet Nodejs (écrit en javascript). Si vous avez installé Jeedom depuis l’image Netinstall, vous n’avez pas besoin d’installer Nodesjs et npm (le gestionnaire de paquets de Nodejs). Pour le vérifier, exécutez la commande suivante qui vous donnera en retour la version installée.

# node -v
v5.12.0

Si Nodejs n’est pas présent, ne l’installez pas manuellement. En effet, Nodejs est utilisé par de nombreux plugins Jeedom. Installez le plugin ESP Easy ou Mysensors (par exemple) ainsi que leurs dépendances. La version correcte sera ainsi installée automatiquement.

Nous allons donc pouvoir directement passer à l’installation des paquets nécessaires. L’option –unsafe-perm  permet de passer outre les éventuelles erreurs et avertissements de compilation. La page du plugin se trouve ici.

sudo npm install -g homebridge --unsafe-perm
sudo npm install -g homebridge-http-jeedom --unsafe-perm
sudo apt-get install libavahi-compat-libdnssd-dev

C’est la configuration minimale pour faire créer un pont Homebridge avec Jeedom. On peut ajouter d’autres plugins mais on sort de l’objectif de l’article.

Créons maintenant un répertoire dédié à Homebridge

mkdir ~/.homebridge

Puis ouvrez le fichier de configuration dans un éditeur de texte (pico ou nano).

sudo nano ~/.homebridge/config.json

Dans un premier temps nous allons configurer le pont pour la rendre détectable par iOS. Même si cela ne semble pas obligatoire, je préfère renseigné l’adresse MAC du Raspberry Pi. En procédant ainsi, iOS découvre immédiatement le pont Homebridge. Exécutez ifconfig  et notez l’adresse MAC qui correspondant au mode de connexion (eth0 en Ethernet, et wlan0 en Wi-Fi).

Collez cette configuration type et l’adaptant à votre cas.

{
    "bridge": {
        "name": "Jeedom Bridge",
        "username": "31:AB:CD:B6:16:42",
        "port": 51826,
        "pin": "031-45-156"
    },

    "description": "Homebridge platform",
    "platforms": [ ],
    "accessories": []
}

Quelques explications :

  • name : C’est le nom qui sera affiché sur iOS
  • username : l’adresse Mac du Raspberry Pi. Attention, bien mettre en majuscule sinon Homebridge plante !
  • port : ne changez rien
  • pin : vous pouvez mettre ce que vous voulez à condition de respecter le format XXX-XX-XXX

La configuration du pont est terminée.

Ajouter un accessoire (accessory) à la configuration

Pour Jeedom, on va donc devoir ajouter un accessoire dans le tableau accessories pour chaque commandes des équipements avec lesquels on souhait interagir ou visualiser la valeur sur iPhone ou iPad. C’est assez fastidieux à faire pour un grand nombre de commande, mais au moins on peut vraiment choisir ce qui est important. Maison n’a pas pour vocation de remplacer la box domotique Jeedom (enfin espérons le…).

Récupérer la clé API

Avant toute chose allez dans la configuration

Notez la clé API de votre box Jeedom.


Récupérer l’identifiant d’un objet Jeedom

Ouvrez l’équipement désiré et allez sur l’onglet commandes. Sur la ligne de la commande que l’on souhaite intégrer à Maison, appuyez sur l’engrenage (mode expert requis).

Repérez l’identifiant interne (ID).

Ainsi que le Logical ID

Pour chaque accessoire, nous allons ajouter un bloc de paramètres (au format JSON) constitué ainsi :

{
     "accessory": "HttpJeedom",
     "jeedom_url": "https://jeedom.domain.com/jeedom",
     "jeedom_api": "xxxxxx",
     "service": "TemperatureService",
     "name": "Living Room Temperature",
     "temperatureCommandID": "ID"
}

Explications :

  • accessory : laisser HttpJeedom. C’est la référence au plugin
  • jeedom_url : si le pont est installé sur le même Raspberry que Jeedom, vous pouvez saisir http://127.0.0.1, sinon indiquez le nom de domaine ou l’adresse IP de la box Jeedom
  • jeedom_api : la clé API récupérée précédemment
  • service : il n’y a pas de spécification particulière. Le mieux est de donner le nom de la commande suivi de Service
  • name : donnez un nom explicite, assez court. Les caractères accentués sont supportés et affichés correctement sur l’écran de l’iPhone. Localisez pas la commande (salon, cuisine) pour vous y retrouver plus facilement sur iOS. Une fois ajouté, le mieux est de renommer la commande et attribuer une pièce dans Maison. La reconnaissance vocale depuis Siri sera plus efficace.
  • xxxCommandID : attention c’est important pour que la commande soit publiée. Elle doit être obligatoirement de la forme logicalIDjeedomCommandID  (c’est le logical ID)
  • ID : l’identifiant de la commande récupéré précédemment

Ce qui donne par exemple pour la température et l’humidité renvoyée par la sonde DHT22

   {
        "accessory": "HttpJeedom",
        "jeedom_url": "http://127.0.0.1",
        "jeedom_api": "mVuQikcXm69l2mDMYZiCsLxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "service": "TemperatureService",
        "name": "Température Salon",
        "temperatureCommandID": "47"
      },
    {
        "accessory": "HttpJeedom",
        "jeedom_url": "http://127.0.0.1",
        "jeedom_api": "mVuQikcXm69l2mDMYZiCsLxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "service": "HumidityService",
        "name": "Humiditée Salon",
        "humidityCommandID": "48"
    }

Comme vous pouvez le remarquer, chaque bloc d’accessoire {} doit être séparé par une virgule, sauf le dernier bloc.

Si vous avez des doutes sur votre fichier de configuration (ce qui risque d’arriver avec un grand nombre d’accessoires), vous pouvez le tester en ligne ici.

Ce qui donne le fichier de configuration assemblé suivant

{
    "bridge": {
        "name": "Jeedom Bridge",
        "username": "31:AB:CD:B6:16:42",
        "port": 51826,
        "pin": "031-45-156"
    },

    "description": "Homebridge platform",
    "platforms": [],
    "accessories": [{
        "accessory": "HttpJeedom",
        "jeedom_url": "http://127.0.0.1",
        "jeedom_api": "mVuQikcXm69l2mDMYZiCsLXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "service": "TemperatureService",
        "name": "Température Salon",
        "temperatureCommandID": "47"
    }, {
        "accessory": "HttpJeedom",
        "jeedom_url": "http://127.0.0.1",
        "jeedom_api": "mVuQikcXm69l2mDMYZiCsLXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "service": "HumidityService",
        "name": "Humiditée Salon",
        "humidityCommandID": "48"
    }]
}

La clé service permet de définir le type de service HomeKit que l’on appel. Par exemple TemperatureSensor pour la publication de la température, HumiditySensor pour l’humidité. Tous les types de services supportés par HomeKit sont définis dans le projet HAP-Node ici. Voici une liste non exhaustive des services gérés par HomeKit. En attribuant le service adéquat, Maison sera en mesure d’afficher le pictogramme et l’unité correspondante :

  • AirPurifier
  • AirQualitySensor
  • BatteryService
  • CameraControl
  • CameraRTPStreamManagement
  • CarbonDioxideSensor
  • CarbonMonoxideSensor
  • ContactSensor
  • Door
  • Doorbell
  • Fan
  • FanV2
  • GarageDoorOpener
  • HeaterCooler
  • HumidifierDehumidifier
  • HumiditySensor
  • LeakSensor
  • LightSensor
  • Lightbulb
  • LockManagement
  • Microphone
  • MotionSensor
  • OccupancySensor
  • SecuritySystem
  • Slat
  • SmokeSensor
  • StatefulProgrammableSwitch
  • StatelessProgrammableSwitch
  • TemperatureSensor
  • Thermostat
  • Window
  • WindowCovering

Il ne reste plus qu’à l’enregistrer CTRL+X puis Y et enfin démarrer le pont avec la commande

homebridge

Les 2 accessoires ont correctement été trouvés. Le code PIN d’identification dans Maison est affiché à l’écran. On verra également défiler dans le Terminal tous les appels entre iOS et Jeedom, pratique pour tester si tout fonctionne.

Configuration de Homekit, application Maison sur iOS

C’est le moment de voir ce que ça donne sur iPhone ou iPad. Lancez l’application Maison

Votre iPhone (ou iPad) doit être connecté au réseau local en Wi-Fi pour pouvoir ajouter un pont et des accessoires. Cliquez sur Ajouter un accessoire.

Si tout est bien configuré, vous devez avoir un accessoire nommé Jeedom Bridge qui apparaît. Sélectionnez le.

Le pont a été trouvé !

Saisissez manuellement (ou tentez votre chance avec la reconnaissance optique) le code Pin affiché sur le Terminal.

Le pont a correctement été ajouté.

On va maintenant procédé à l’ajout des accessoires (commandes des équipements Jeedom). Les accessoires apparaissent les uns après les autres, ça risque d’être long la première fois. Profitez en pour le renommer (supprimer la localisation dans l’intitulé) et attribuer un lieu. De cette façon, la commande vocale avec Siri sera plus efficace.

Idem pour la température

Voilà, c’est terminé, vous pouvez profitez des vos équipements Jeedom depuis votre iPhone. Si vous possédez un iPad ou une Apple TV (assez récente), vous pouvez même continuer à communiquer avec Jeedom hors de chez vous (si vous avez une connexion 3G ou 4G évidemment). Pour démarrer Homebridge automatiquement au démarrage du système, suivez ce tutoriel.

Les équipements Jeedom dans l’appli Maison (Homekit) sur iOS10

Avez-vous aimé cet article ?