Raspberry homekit

De BigD's wiki
Aller à : navigation, rechercher

Préambule

Cette page explique comment transformer son Raspberry PI en accessoire compatible avec Apple Homekit, l'application officielle d'Apple sur iPhone et iPad pour faire de la domotique.

Pour ce faire, nous avons besoin des éléments suivants:

  • Un Raspberry PI connecté en WIFI
  • Un iPhone ou iPad connecté également en WIFI (sur le même point d'accès)

Fonctionnement

Grâce aux GPIO d'un Raspberry PI, il est possible de piloter des composants électroniques tels que des LED, capteurs de température ou d'humidité, ou des relais pour des circuits de puissance.

Tout l'enjeu de cet article est de mettre en place une interface entre l'application "Maison" d'Apple et les GPIO ou capteurs reliés au Raspberry PI.

Configurer le Raspberry PI

Pour que le Raspberry PI soit détecté par l'application Apple "Maison", il faut installer un certain nombre de paquets :

  • libavahi-compat-libdnssd-dev
  • NodeJS
  • Homebridge

libavahi-compat-libdnssd-dev

Il faut installer le paquet libavahi-compat-libdnssd-dev pour la découverte de service via Bonjour depuis l'iPhone

<console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## apt-get install libavahi-compat-libdnssd-dev

</console>

NodeJS

NodeJS est un programme qui permet d'exécuter du javascript en mode serveur. Il est donc indispensable pour Homebridge qui est codé en javascript.

Pour l'installer, il suffit de suivre les recommandations disponible sur le site de l'éditeur : https://nodejs.org/en/

<console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    2. g## pi@raspberry ##!g####bl##~ $##!bl## sudo apt-get install nodejs

</console>

NB: Je vous conseille toute de même de lire le script avant d'exécuter naïvement la première commande.

Homebridge

Une fois NodeJS installé, on peut installer Homebridge. Homebridge fournit des plugins pour piloter des GPIO, de lire des fichiers ou encore de proxy pour des API. Il offre un service réseau qui, s'il écoute sur le bon port et une interface accessible à un iPhone ou iPad, permettra de jumeler le Raspberry PI et l'application Apple "Maison".

<console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## sudo npm install -g homebridge
    2. g## pi@raspberry ##!g####bl##~ $##!bl## sudo npm install -g homebridge-plugins

</console>

Une fois installé, on peut éditer le fichier de configuration pour pouvoir lancer l'application :

Fichier: /root/.homebridge/config.json
{
	"bridge": {
		"name": "Homebridge",
		"username": "CC:22:3D:E3:CE:32",
		"port": 51826,
		"pin": "031-45-155"
	}

	"description": "Accessoires tests"

	"accessories": []

	"platforms": []
}


On note les éléments suivants :

  • port : port sur lequel écoute le service qui sera scanné par l'iPhone ou l'iPad
  • pin : c'est le code qu'il faudra renseigner pour jumeler le Raspberry PI et l'iPhone ou l'iPad.


Une fois la configuration terminée, lancer homebridge : <console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## sudo homebridge

</console>

Jumelage avec un iPhone ou un iPad

Lors du lancement d'Homebridge, le message suivant apparait : <console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## sudo homebridge

... Scan this code with your HomeKit App on your iOS device to pair with Homebridge:

   ┌─────────────────┐     
   │   031-45-155    │     
   └─────────────────┘     
                      

[2016-08-28 21:42:09] Homebridge is running on port 51826. ... </console>

Il s'agit du code PIN renseigné dans le fichier /root/.homebridge/config.json

Sur un iPhone ou un iPad :

  1. Se rendre sur l'application "Maison".
  2. Taper sur "Ajouter un accessoire"
  3. Sélectionner le pont qui aura été détecté par l'appareil. Son nom est celui qui aura été renseigné dans le champ "name".
  4. Un message d'avertissement apparaît. Il indique que l'accessoire n'est pas certifié. Ignorer ce message.
  5. Photographier le terminal sur lequel apparaît le code PIN ou saisissez le manuellement.
  6. Personnaliser les accessoires associé à ce pont.

Les quelques captures d'écran suivantes illustrent les différentes étapes données ci-dessus.

Capture domotique home start.PNG Capture domotique home home.PNG Capture domotique home scan.PNG Capture domotique home warn.PNG Capture domotique home PIN.PNG Capture domotique home manual PIN.PNG Capture domotique home pairing.PNG Capture domotique home paired.PNG Capture domotique home homebridge.PNG

Exemples d'accessoires

Allumer une LED avec son iPhone

Pour cet accesoire, nous avons besoin des éléments suivants :

  • Une LED verte 5V
  • Une résistance 200 Ω pour protéger la LED.

Schéma de montage

Test led.png

On branche l'alimentation de la LED sur le port GPIO 17.

Installation et configuration

On installe le plugin Homebridge qui permet de piloter les GPIO : <console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## npm install -g wiring-pi
    2. g## pi@raspberry ##!g####bl##~ $##!bl## npm install -g homebridge-gpio-wpi

</console>

Une fois installé, on peut ajouter l'accessoire dans la configuration d'Homebridge :

Fichier: /root/.homebridge/config.json
{
	"accessories": [
        ...
        {
		"accessory": "GPIO",
		"name": "Lumière",
		"pin": 17
	},
       ...
       ]
}


NB: Le PIN est le GPIO sur lequel on a branché la LED.

Avant de redémarrer Homebridge, il faut effectuer quelques opérations pour paramétrer le PIN et le rendre disponible aux autres programmes : <console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## gpio -g mode 17 out
    2. g## pi@raspberry ##!g####bl##~ $##!bl## gpio -g mode 17 down
    3. g## pi@raspberry ##!g####bl##~ $##!bl## gpio export 17 out
    4. g## pi@raspberry ##!g####bl##~ $##!bl## export NODE_PATH=$HOME/node_modules/homebridge

</console>

Le redémarrage d'Homebridge va rendre disponible le nouvel accessoire sous le nom de "Lumière".

Capture domotique home lumiere.PNG

Dis Siri

Si le Raspberry PI a été installé jumelé avec un iPhone dans une pièce "Chambre", pour allumer la LED, il suffit de demander à Siri : "Allume la Lumière de la Chambre !". Pour l'éteindre demander à Siri d'"Eteindre la lumière dans la Chambre".

Capture domotique home lumiere siri on.PNG Capture domotique home lumiere siri off.PNG

On passe sur les fautes d'orthographe de la réponse :)

Afficher la température sur son iPhone

Pour réaliser cet accésoire, nous avons besoin des composants suivants :

  • Une capture Dallas DS18S20
  • Une résistance 4,7 kΩ

Le principe de de fonctionnement du capteur est expliqué dans cet article.

Ici, le composant utilisé porte la référence 28-0314686ad2ff. On pourra donc lire la température en exécutant la commande suivante : <console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## cat /sys/bus/w1/devices/28-0314686ad2ff/w1_slave

7b 01 55 00 7f ff 0c 10 92 : crc=92 YES 7b 01 55 00 7f ff 0c 10 92 t=23687 </console>

La température est donnée par <math>T = \frac{t}{1000}</math>°C soit ici 23,687 °C.

Schéma de montage

Test sonde temperature.png

Installation et configuration

On installe le plugin Homebridge pour lire la température : <console>

    1. g## pi@raspberry ##!g####bl##~ $##!bl## sudo npm install -g homebridge-temperature-file

</console>

On ajoute l'accessoire dans la configuration d'Homebridge:

Fichier: /root/.homebridge/config.json
...
{
  "accessory": "TemperatureFile",
  "name": "Température",
  "description": "Température du capteur du Raspberry PI",
  "file_path": "/tmp/temp"
}
...


L'option file_path indique le fichier que Homebridge va lire pour récupérer la température. Il faut donc s'assurer que le Rapsberry PI le renseigne régulièrement. Pour cela, on rajoute une tâche dans la cron.

Fichier: /etc/crontab/
...
* *   * * *    pi    echo "scale=2;$(grep -oE [0-9]{5} /tmp/temp) / 1000" | bc > /tmp/temp


Maintenant que tout est prêt, on peut redémarrer Homebridge pour que l'accessoire soit disponible. Si le Raspberry est déjà jumelé avec l'iPhone ou l'iPad, l'accessoire apparaît automatiquement.

Capture domotique home temp.PNG

Dis Siri

Si le Raspberry PI a été installé jumelé avec un iPhone dans une pièce "Chambre", pour connaître la température, il suffit de demander à Siri : "Quelle est la température dans la Chambre ?"

Capture domotique home temp siri.PNG

References et sources