Intégrer des objets connectés Arduino / ESP8266 + Blynk à iOS grâce à Homebridge (HomeKit) • Domotique et objets connectés à faire soi-même

Blynk se compose d’un serveur et d’une application pour iOS.  Si vous disposez de votre serveur Blynk local privé (lisez cet article pour apprendre comment faire), vous pouvez rendre accessible vos objets connectés développés à l’aide de Blynk depuis internet sans avoir à exposer votre matériel à internet  grâce au projet Homebridge. Pour cela vous devrez posséder une Apple TV (4ème génération au minimum) ou un iPad (iOS 8 minimum) pour pouvoir communiquer avec vos objets en dehors de chez vous. L’autre avantage d’exposer les objets Blynk à HomeKit est d’avoir une bien meilleure intégration à iOS. Vous pourrez commander à la voix ou consulter vos données depuis une Apple Watch.

Installer Node.js sur Raspberry Pi

Ce tutoriel est adapté à Raspbian Pixel. Commencez par vérifier que Node.js n’est pas déjà installé sur votre distribution. Si c’est le cas, vous pouvez passer à l’étape suivante.

pi@raspberrypi:~ $ node -v
v6.3.1

Attention. Vérifiez l’impact sur d’autres projets qui utilisent Node.js avant de vous lancer.

Si Node.js n’est pas au minimum de la version 6.3.1, il est nécessaire de l’installer. Commencez par mettre à jour votre système

sudo apt-get update
sudo apt-get upgrade

Installez ensuite Node.js et ses dépendances

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install libavahi-compat-libdnssd-dev

Enfin installez Homebridge et le plugin homebridge-blynk (page du dépôt sur GitHub)

sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp homebridge-blynk

On va créer un répertoire qui contiendra le fichier de configuration

mkdir ~/.homebridge

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 renseigner 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).

Ouvrez le fichier de configuration avec un éditeur de texte

sudo nano ~/.homebridge/config.json

Collez cette base (source) en l’adaptant à votre configuration : IP du serveur, port HTTPS, accessories.

{
    "bridge": {
        "name": "Homebridge",
        "username": "C8:28:EB:14:31:27",
        "port": 51826,
        "pin": "031-45-154"
    },

    "description": "This is an example configuration file. You can use this as a template for creating your own configuration file.",

    "platforms": [
            {
            "platform": "Blynk",
            "name": "Blynk",
            "server": "BLYNK_SERVER_IP",
            "httpsPort": "9443",
            "token" : "yourTOKEN",
            "dashboardName": "Blynk Sensors",
            "accessories": [
                {
                    "name":             "Temperature",
                    "widget":           "TemperatureSensor",
                    "caption":          "Temperature",
                    "pin":              "V0"
                },
                {
                    "name":             "Humidity",
                    "widget":           "HumiditySensor",
                    "caption":          "Humidity",
                    "pin":              "V1"
                }
            ]
        }
    ],
    "accessories": [
    ]
}

Ici, j’ai repris l’exemple présenté dans cet article qui permettait de récupérer la mesure de température et d’humidité d’une sonde DHT22. Le plugin est documenté très sommairement. Pour récupérer des mesures, voici les paramètres

  • name : ce nom ne semble pas important. Il semble être juste utilisé pour le journal Homebridge
  • widget : définit le type de service HomeKit. 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
  • caption : l’étiquette qui sera affichée dans l’application Maison (modifiable directement dans Maison)
  • pin : le pin sur lequel on récupère l’information ou sur laquelle Homekit pourra envoyer une commande (par exemple allumer une lampe…).

Enregistrez la configuration avec CTRLM+X puis O. Lancez Homebridge

pi@raspberrypi:~ $ homebridge
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see 
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see 
[2017-03-09 15:02:29] Loaded plugin: homebridge-blynk
[2017-03-09 15:02:29] Registering platform 'homebridge-blynk.Blynk'
[2017-03-09 15:02:29] ---
[2017-03-09 15:02:29] Loaded config.json with 0 accessories and 1 platforms.
[2017-03-09 15:02:29] ---
[2017-03-09 15:02:29] Loading 1 platforms...
[2017-03-09 15:02:29] [Blynk] Initializing Blynk platform...
[2017-03-09 15:02:29] [Blynk] Loading accessories...
[2017-03-09 15:02:29] [Blynk] Found: Temperature
[2017-03-09 15:02:29] [Blynk] Found: Humidity
[2017-03-09 15:02:29] [Blynk] Initializing platform accessory 'Temperature'...
[2017-03-09 15:02:29] [Blynk] Initializing platform accessory 'Humidity'...
[2017-03-09 15:02:29] Loading 0 accessories...
Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
                       
    ┌────────────┐     
    │ 031-45-154 │     
    └────────────┘     
                       
[2017-03-09 15:02:29] Homebridge is running on port 51826.

Lancez Maison sur votre iPhone ou votre iPad, cliquez sur démarrer

Puis ajouter un accessoire

Pour que Maison puisse trouver la passerelle, vous devez être connecté sur le même réseau WiFi.

Saisissez le code PIN qui apparaît dans le Terminal

Le jumelage est en cours

C’est terminé !

Maison vous propose ensuite d’ajouter les appareils connectés à Homebridge. Ici, on commence par la sonde d’humidité.

Puis la température

Vous pouvez maintenant profiter de vos objets Blynk au sein de l’application Maison

Les objets Blynk sont également disponibles depuis l’écran verrouillé

Suivez ce tutoriel pour terminer la configuration de Homebridge et son lancement automatique au démarrage du système

Avez-vous aimé cet article ?