Homebridge Contrôle de porte de garage avec Home de Apple

Dans cet article nous allons mettre en place un module d’ouverture/fermeture de porte de garage avec un système de vérification d’état.

Imaginez, vous prenez votre iDevice (iPhone, iPad ou même votre Apple Watch) et vous prononcez : “Siri, ouvre le garage” … … … et votre garage s’ouvre tel le sésame d’Ali Baba 😎 . Vous êtes au bureau et vous voulez être sûr que votre garage est bien fermé, votre iDevice vous le dira. Votre voisin vous téléphone car il veut enfin vous remettre la tondeuse à gazon qu’il vous a emprunté il y a 6 mois, et vous 😯 , vous n’êtes pas à la maison ! No Problem, vous prenez votre iDevice, et vous lui ouvrez le garage. C’est-il pas beau ça ?!

Prérequis pour ce tutoriel : Installation du Homebridge

Lorsque ce système sera monté sur ma porte de garage je ferais une vidéo, en attendant en voici une petite de l’installation sur ma planche de test :

1: Matériel nécessaire

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

  • Un Raspberry Pi avec Homebridge préinstallé;
  • Un module Optocoupleur Trigger High (disponible ici) avec 1, 2, 4, 8 ou 16 relais, selon l’ampleur de votre projet :). Prenez bien des Trigger High ou Low ET High, mais pas un simple Trigger Low (voir pourquoi plus loin dans l’article);
  • Deux capteurs magnétiques (disponible ici);
  • Du câble en longueur suffisante;
  • Une alimentation 5v, (en vente ici)  personnellement j’ai pris une de 5A 25W, mais une de 2A suffit amplement pour ce petit projet;
  • Une résistance de 150 Ω;
  • Une résistance de 270 Ω;
  • Deux résistances de 1 kΩ;
  • Deux résistances de 10 kΩ (les résistances sont disponibles ici);
  • Un photocoupleur SFH620A donc le schéma est le suivant (disponible ici) ;
  • Et une porte de garage motorisée évidemment;
2: Installation du plug-in Garage Door

On ne va pas réinventer la roue, on va utiliser le code déjà créé par un généreux programmeur (Pojo) qui le met à notre disposition sur le site NPMJS et GitHub.

2.1: Petites remarques

2.1.1 : Sur la page de son plug-in (source), Pojo indique que lors du démarrage du Raspberry Pi (modèle 1 je suppose), certains GPIO (General Purpose Input/Output) passent à l’état 1, ce qui peut bien poser des problèmes lors des coupures de courant, imaginez : Une coupure de courant survient dans votre habitation, lorsque le courant revient, le Raspberry Pi redémarre, et sans rien demander à personne, votre porte de garage s’ouvre… ça risque d’être très ennuyant.

Les GPIO à éviter sont les suivant :

  • GPIO0/2
  • GPIO1/3
  • GPIO4
  • GPIO7
  • GPIO8

J’avoue ne pas avoir pris le temps de tester ce qu’il en est exactement, c’est pourquoi dans un premier temps je ne vais pas les utiliser, et si plus tard je dois utiliser un de ceux-là, je documenterais plus cette partie.

2.1.2 : On va devoir créer et éditer des fichiers, voici une petite liste des commendes que nous utiliserions :

  • Ouverture ou création du fichier avec un éditeur, avec les droits “Super User” : sudo nano monfichier
  • Sauvegarde des modifications : ctrl + o
  • Sortir de l’éditeur : ctrl + x

J’utilise l’éditeur “nano” mais il y en a d’autre comme : VI, VIM, etc… alors utilisez celui que vous préférez.

OK, fini les remarques, les choses sérieuses commencent à partir d’ici.

2.2: Initialisation des connecteurs (Pin)

Pour ce T.P. nous allons donc utiliser les connecteurs suivants :

  • GPIO23 (pin 16) : pour le “DoorSwitchPin”
  • GPIO24 (pin 18) : pour le “OpenDoorSensorPin”
  • GPIO25 (pin 22) : pour le “ClosedDoorSensorPin”

“DoorSwitchPin”, “ClosedDoorSensorPin” et “OpenDoorSensorPin” 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.3.

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 vos GPIO (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 garage-door-gpio

Coller dans ce fichier le code se trouvant ici : Code de Pojo adapté.

Tapez ensuite ctrl+o pour sauvegarder puis ctrl+x pour quitter l’éditeur.

J’ai adapté le code de Pojo car il lui manquait l’export du GPIO25 pour le détecteur de la porte “ouverte”.

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 garage-door-gpio

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

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

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

2.3: Installation du plug-in

On installe le plug-in de Pojo, avec la commande suivante : sudo npm install -g homebridge-rasppi-gpio-garagedoor

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

Maintenant que nous disposons d’un premier plug-in installé, il faut créer un fichier d’extension “.json” qui définit nos accessoires, ici, notre accessoire c’est notre porte de garage. 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;

Adaptez la valeur de la variable doorOpensInSeconds qui doit correspondre au temps (en secondes) qu’il faut pour la porte pour s’ouvrir.

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 (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 ceci :

Le code encadré que vous voyez sur l’écran servira à installer notre accessoire 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.

Appuyer sur ctrl+c pour quitter le programme “home bridge” 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émas représentant la concentrique à réaliser, avec un Raspberry Pi 1 (mod. B rev. 2) à gauche, et un Raspberry Pi 3 à droite :

     

OK, OK, c’est n’est pas très claire 😀 , c’est pourquoi, ci-dessous voici deux schémas bien plus claire, les composants ne sont pas exactement à la même place que sur les images ci-dessus, mais le câblage est identique :

Version sans planche d’essai :

Maintenant c’est à vous de jouer 🙂

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

N’hésitez pas à partager cet article.

9 Replies to “Homebridge Contrôle de porte de garage avec Home de Apple”

  1. Bonjour, que ce passe t’il si on utilise pas les capteurs? Est ce que sa a une incidence sur l’icone present dans l’app maison?

    1. Bonjour, effectivement, sans les capteurs le système ne sera pas capable de déterminer son état (ouvert / fermé) et l’icône dans Home ne correspondra pas forcément à l’état réel de votre porte de garage. Le but de ce projet est d’ouvrir/fermer la porte avec Home de Apple mais également de recevoir une notification lorsque la porte change d’état, d’où la nécessité des capteurs magnétiques.

  2. Bonsoir,
    En premier lieu, je tiens à vous remercier pour ce tutoriel très bien fait et les explications données pour l’électronique.
    J’ai installer deux capteurs magnétique sur la porte de garage mais lorsque j’actionne la porte de garage par le bouton poussoir d’origine le plugin ne détecte pas l’ouverture de la porte et le changement de statut ne remonte pas dans homekit.

    1. Bonjour,
      Merci pour votre message, ça fait extrêmement plaisir.

      Je suis navré pour le temps de réponse, étant en travaux j’ai dû démonter mon système d’ouverture, je ne serais donc pas testé et j’avoue ne jamais ouvrir ma porte de garage avec le bouton poussoir d’origine (que je n’ai jamais monté d’ailleurs 🙂 )

      Le code n’est plus très frais dans ma tête, mais la détection de l’ouverture du garage par tout autre système que Home devrait être notifiée dans Home, c’était l’un des buts principaux de ce projet, je l’avais testé sur ma planche de test, et de mémoire, cela le notifiait avec une certaine latence.

      Pour que cela fonctionne, il y a plusieurs paramètres qui entrent en compte :

      1. Il faut que les notifications soient activées pour l’application Home;

      2. Si votre iPhone ou iPad est connecté au réseau mobile (3 ou 4G) ou un autre LAN que votre Raspberry Pi, il faut impérativement avoir un AppleTV ou un iPad qui joue le rôle de Bridge.

      J’ai eu une mauvaise expérience dans le passé, lorsque mon iPhone était connecté à un accès point Wifi (au 2e étage) qui lui-même était connecté en Ethernet à mon roteur principal (au RDC), je n’étais pas en mesure d’avoir les statuts, ni le contrôle de mes accessoires, il fallait impérativement que je me connecte au Wifi de mon routeur principal pour que tout fonctionne bien.

      J’étais arrivé à la conclusion que le HomeKit + HomeBridge c’est bien, mais pas parfait 🙂 Par contre, je n’avais aucun problème lorsque mon iPhone était en 3 ou 4G.

      Petite question avant de creuser plus loin, est-ce que cela change bien de statuts si vous actionnez l’ouverture ou la fermeture via HOME ?

  3. Please help I am getting the error :WARN! WARN! WARN! may not be able to control GPIO pins because not running as root!
    How can I fix this problem??

  4. Just to add to my recent comment I can not get the relays to operate is that because of the error :WARN! WARN! WARN! may not be able to control GPIO pins because not running as root!

    1. Hi, if I good understand you did all the steps of the tutorial, and when you want to trigger the relay via your Apple device you receive this warrning message?

  5. Hi, Thank you for your quick response, Yes I installed it about 15 times under Pi user but I get that error and there is no voltage signal coming from pin 23, But if I install it under Root user I can get it to work but I do not like being logged in under Root user, Any suggestions ? please can you help.
    Thank you
    Mark

    1. This is an old project and there may have been changes in Raspbian or Homebridge in the meantime.
      I admit that rights management in Linux is quite complicated for me too.
      I should redo this project once to see if my instructions are still valid.
      As soon as I have redone it, I will put here my result.

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.