Homebridge Contrôle de porte de garage et/ou de portail avec Home de Apple

[Dernière mise à jour: 12/02/2019]

Dans cet article nous allons mettre en place un module d’ouverture et de fermeture de portes de garage et de portails d’entrée avec un système de vérification d’état avec Homebridge et Home de Apple.

Petite démo du projet :

À la fin de ce tutoriel il vous sera possible grâce à votre iDevice (iPhone, iPad ou même votre Apple Watch) via l’application Home d’ouvrir, de fermer ou de connaître l’état (ouvert, fermé, ouverture, fermeture) de n’importe quel dispositif (que l’on appellera accessoires) fonctionnement de la même manière qu’une porte de garage ou un portail d’entrée.

Il s’agit ici de la version améliorée du plug-in que je vous ai présenté dans mon précédent article. L’avantage par rapport à la version précédente est que ici nous avons qu’un code (un plug-in) pour la gestion des différents accessoires.

Présentation complète du projet :

Prérequis pour ce tutoriel : Installation du Homebridge

1: Matériel nécessaire

La plupart de ces éléments vous pourrez soit les trouver dans votre magasin d’électronique préféré, soit sur internet, sur un grand site de vente aux enchères, suivez mes liens 🙂

Ensuite, par accessoire que vous souhaiterez contrôler, il vous faudra les composants ci-dessous. Donc si vous voulez contrôler une porte de garage et un portail d’entrée, il vous faudra doubler la liste de ces composants, tripler si vous voulez contrôler trois accessoires, quadrupler pour quatre accessoires, etc..

2: Installation du plug-in homebridge-garage-gate-opener
2.1: Initialisation des connecteurs (GPIO)

Pour la porte de garage, nous allons utiliser les connecteurs suivants :

  • GPIO23 (pin 16) : pour le “SwitchPin”
  • GPIO24 (pin 18) : pour le “openSensorPin”
  • GPIO25 (pin 22) : pour le “closedSensorPin”

Pour le portail d’entrée, nous allons utiliser les connecteurs suivants :

  • GPIO16 (pin 36) : pour le “SwitchPin”
  • GPIO20 (pin 38) : pour le “openSensorPin”
  • GPIO21 (pin 40) : pour le “closedSensorPin”

“SwitchPin”, “closedSensorPin” et “openGateSensorPin” sont les noms des connecteurs utilisés dans le code du plug-in, on verra donc ce que c’est plus bas dans le point 2.2.

Ci-dessous, vous pouvez voir les emplacements des GPIO des Raspberry Pi 1 Model A+, Raspberry Pi 1 Model B+, Raspberry Pi 2 Model B et le Raspberry Pi 3 Model B. Notez que le Raspberry Pi de 1er génération a moins de GPIO’s  :

Afin que les GPIO (16, 20, 21, 23, 24 et 25) soient initialisés lors de chaque démarrage de votre Raspberry Pi, il faut les “exporter”, et pour ce faire il faut créer un scripte dans “/etc/init.d”. Exécutez les commandes suivantes :

Entrez le bon répertoire avec : cd /etc/init.d

Créez le fichier pour le code en tapant: sudo nano exporter-gpio

Coller dans ce fichier le code se trouvant ici : CODE. Ce code exporte les six GPIO, trois pour la porte de garage et trois autres pour le portail d’entrée.

Si vous souhaitez contrôler qu’un accessoire, votre porte de garage par exemple, voici le code que vous devrez coller dans ce fichier : CODE. Ici seuls trois GPIO sont exportés.

Tapez ctrl+o puis ENTER pour sauvegarder vos modifications, puis ctrl+x pour quitter l’éditeur.

Pour que ce scripte s’exécute lors du démarrage du Raspberri Pi, on va en faire un “Demon”. Un “Demon” est un processus qui s’exécute en tache de font, tels les “Services” sous Windows.

Pour cela, on va changer les droits sur ce fichier, tapez la commande suivante : sudo chmod 755 exporter-gpio

Ensuite on créé un lien pour le gestionnaire des “Demon”, tapez la commande : sudo update-rc.d exporter-gpio defaults.

On va maintenant exécuter le programme avec la commande :  sudo /etc/init.d/exporter-gpio start, suite à quoi, sur l’écran vous devriez voir s’afficher : [ ok ] Starting exporter_gpio (via systemctl): exporter-gpio.service.

Note: si vous aviez déjà un ficher d’exportation des GPIO et que vous avez simplement ajouté le code pour les nouveaux GPIO, il faut redémarrer le démon avec les commandes : sudo /etc/init.d/exporter-gpio stop puis sudo /etc/init.d/exporter-gpio start remplacez “exporter-gpio” par le nom de votre fichier.

Pour s’assurer que les GPIO sont bien exportés, tapez la commande suivante ls /sys/class/gpio/ directory , et vous devriez voir afficher : gpio16  gpio20 gpio21 gpio23 gpio 24 gpio25

2.2: Installation du plug-in

Tapez la commande suivante : sudo npm install -g --unsafe-perm homebridge-garage-gate-opener

Une fois l’installation terminée, vous devriez avoir un message ressemblant à ça :

Maintenant que nous avons installé le plug-in, il faut créer un fichier d’extension “.json” qui définira nos accessoires, ici nos accessoires sont notre porte de garage et notre portail d’entrée. Ce fichier devra s’appeler ” config.json” et devra se trouver dans le répertoire “~/.homebridge/config.json“.

On va donc se rendre dans ce répertoire avec la commande cd ~/.homebridge.

On s’assure que le fichier config.json n’existe pas déjà en tapant la commande  ls. S’il n’existe pas, on le créé avec : sudo nano config.json, s’il existe on l’édite avec la même commande.

Ajoutez-y le code suivant : CODE. Ce code crée les accessoires “Garage” et “Gate” (portail). Si vous souhaitez contrôler qu’un accessoire, votre porte de garage par exemple, voici l’exemple de CODE que vous devrez avoir.

Adaptez la valeur des variables OpensInSeconds, elle doit correspondre au temps (en secondes) qu’il faut pour que la porte de garage ou le portail soit totalement ouvert.

Tapez ctrl+o puis ENTER pour sauvegarder vos modifications, puis ctrl+x pour quitter l’éditeur.

OK, on a bien travaillé, il est temps de tester ça.

Si votre Homebridge démarre au démarrage du Raspberry Pi (si c’est un Demon), tapez la commande sudo /etc/init.d/homebridge stop pour le stopper, puis tapez la commande homebridge pour le redémarrer.

Si tout a été installé et configuré convenablement, lorsque le Homebridge aura démarré, vous devriez voir plus ou moins ceci :

Le code encadré que vous voyez sur l’écran servira à installer nos accessoires dans l’application Home de notre iDevice (iPhone, iPad, etc.).

À ce point, nous pouvons conclure que le plug-in est correctement installé et configuré sur votre Raspberry PI.

Appuyez sur ctrl+c pour quitter le programme “homebridge” et passez au point suivant.

3: Finalisation et vérification du plug-in

Pour vérifier que tout fonctionne, on redémarre le Raspberry Pi avec sudo reboot now

Une fois redémarré on vérifie si homebridge a bien démarrer avec : sudo /etc/init.d/homebridge status

Si tout va bien, vous devriez voir un « Running » apparaître.

Vous avez bien travaillé, vous avez mérité une pause 🙂

4: Câblage

Dans cette partie nous allons voir comment câbler tout ça. Vu qu’un petit dessin vaut mieux qu’un long discours, ci-dessous vous trouverez un schéma représentant la concentrique à réaliser, avec un Raspberry Pi 3 :

Ce n’est pas très clair, un vrai spaghetti :D. C’est pourquoi, ci-dessous voici deux schémas bien plus clairs, les composants ne sont pas exactement à la même place que sur les images ci-dessus, mais le câblage est identique :

Câblage pour une porte de garage et un portail d’entrée :

Câblage pour qu’un accessoire, par exemple une porte de garage :

Voici le câblage que j’ai réalisé sur la plaquette PCB :

En pratique, voici donc ma réalisation :

   

Maintenant c’est à vous de jouer 🙂

Une fois le câblage réalisé, ajoutez votre nouvelle accessoire dans l’application Home de votre iDevice.

Si vous avez aimé, n’hésitez pas à partager cet article.

Merci et à bientôt pour d’autres projets.

6 Replies to “Homebridge Contrôle de porte de garage et/ou de portail avec Home de Apple”

  1. Bonjour, votre montage m’interresse beaucoup, mais est il possible de le réaliser sur la base d’un arduino ou d’un esp afin de l’integrer à une solution domotique type jeedom? mais peut être est ce aussi possible de le faire avec ce même montage.

  2. Bonjour ! Merci beaucoup pour ce tutoriel. J’ai bien hâte d’arriver à le faire fonctionner ! 🙂 Présentement, voici le message d’erreur que j’obtient quand je démarre Homebridge: (J’ai copié exactement le code pour la porte de garage seulement)

    [2019-1-15 20:58:31] There was a problem reading your config.json file.
    [2019-1-15 20:58:31] Please try pasting your config.json file here to validate it: http://jsonlint.com
    [2019-1-15 20:58:31]
    /usr/local/lib/node_modules/homebridge/lib/server.js:214
    throw err;
    ^

    SyntaxError: Unexpected token ​ in JSON at position 0
    at JSON.parse ()
    at Server._loadConfig (/usr/local/lib/node_modules/homebridge/lib/server.js:208:19)
    at new Server (/usr/local/lib/node_modules/homebridge/lib/server.js:56:38)
    at module.exports (/usr/local/lib/node_modules/homebridge/lib/cli.js:30:16)
    at Object. (/usr/local/lib/node_modules/homebridge/bin/homebridge:17:22)
    at Module._compile (module.js:662:30)
    at Object.Module._extensions..js (module.js:673:10)
    at Module.load (module.js:575:32)
    at tryModuleLoad (module.js:515:12)
    at Function.Module._load (module.js:507:3)

    Aurais-tu une idée de ce que le problème pourrait-être ?

    Merci beaucoup !

    1. Bonjour, a priori je dirais que la structure de votre fichier config.json n’est pas correcte. Les json sont très sensibles, s’il manque un petit truc quelque part, toute la structure est compromise. Vérifiez qu’il ne manque rien, un point virgule, un crochet ou une parenthèse.

    2. J’ai réussi à reproduire la même erreur.

      Je l’ai eu lorsque j’ai copié le code dans git et lorsque je l’ai collé dans mon fichier config.json.

      Afin de minimiser le risque que cela se reproduise, j’ai fait un nettoyage du code dans git.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.