Projet Domotique avec Raspberry Pi
Contrôler l'ouverture du portail depuis son téléphone


04 aout 2019 • 2 • 4.8

S'il y a bien une chose que l'on a toujours sur nous, c'est notre smartphone. Ce dernier permet de réaliser de plus en plus d'actions diverses. Grâce à cet article, vous allez bientôt pouvoir commander votre portail directement depuis votre smartphone, de n'importe où, et ce à l'aide d'un Raspberry Pi !

Principe de fonctionnement : La plupart des cartes électroniques de portails motorisés disposent de la fonction d'ouverture par clé. Un interrupteur à clé est un composant qui établit le contact entre deux bornes lorsque la clé est tournée. Nous allons profiter de ce principe pour commander l'ouverture du portail grâce à un Raspberry. Il suffit pour se faire de simuler cet interupteur à clé, et celà tombe bien, car c'est le role du "relais électromagnétique". Ce composant est présent dans beaucoup d'appareils électriques du quotidien (plaques de cuisson, four, etc).
Son principe de fonctionnement est le suivant : Lorsque l'on envoie du courant à ses bornes d'entrée, le relais se ferme, et fait contact entre ses deux bornes de sortie. Il agit alors comme un interrupteur fermé. À l'inverse, si l'on n'envoie pas de courant à ses bornes d'entrée, il agit comme un interrupteur ouvert, ses deux bornes de sorties ne sont pas connectées.

Contrôler l'ouverture du portail depuis son téléphone grâce à un Raspberry Pi

Prérequis

Commençons par établir la liste des éléments nécessaires à la réalisation de ce projet :

Une fois tout le matériel réunis, on peut passer aux choses concrètes !

Mise en place matérielle

️⚠️ Avertissement

Raspberry Lab ne peut être tenu responsable de tout dommage ou problème qui pourrait survenir suite à l’utilisation des instructions de branchement fournies dans ce tutoriel. Ces informations sont fournies à des fins éducatives et nous vous recommandons fortement de prendre toutes les précautions nécessaires lors de la manipulation de l’équipement électronique.

Trouver les ports du contacteur à clé

Comme expliqué dans l'introduction, nous allons nous servir de la fonction d'interrupteur à clé de la carte électronique du portail pour commander ce dernier. La première étape du projet est donc naturellement de trouver sur la carte l'emplacement des bornes utilisées pour l'interrupteur à clé. Voici un exemple de schéma de carte électronique d'un portail où est entourée la partie utilisée pour les interrupteurs à clé.

Sorties interrupteur à clé portail raspberry

Une fois que les ports ont été trouvés, il suffit de relier les deux fils du câble bifilaire à chaque port (indiqués par les flèches rouges sur l'exemple de notice).

Mise en place du boitier

Maintenant que le câble est relié aux ports du contacteur à clé, vous pouvez ouvrir votre portail simplement en faisant le contact entre les deux extrémités du câble, cela devrait ouvrir votre portail si tout fonctionne bien (En faisant le contact entre les deux extrémités, on a simulé une ouverture par clé).
Maintenant, deux possibilités s'offrent à vous :


Alimentation du Raspberry

Maintenant que vous avez un boitier prêt à accueillir le Raspberry Pi, il va falloir commencer à réfléchir à son alimentation. Encore une fois, deux méthodes pour alimenter le Raspberry Pi.


Branchement du relais

Le Raspberry étant maintenant alimenté, nous pouvons passer aux choses sérieuses ! La première chose à faire est de brancher correctement le relais au Raspberry Pi. Il suffit pour cela de suivre le schéma ci-dessous.

Schéma branchement relais au Raspberry Pi

Il reste maintenant à relier la sortie du relais à l'extrémité du câble que l'on a branché à l'étape #1. Les relais disposent de trois sorties, il faut utiliser les sorties COM et NO comme le montre le schéma récapitulatif suivant.

Schéma de branchements récapitulatif

Partie logicielle

Maintenant que toute la partie matérielle est prête, on peut passer au développement. Elle va se dérouler en 5 grandes étapes :


Commande du relais en Python

Execution du code - fonctionnement du relais

Pour commander notre relais alimenté en 5V, rien de très compliqué. Le relais dispose d'une entrée. Lorsque l'on connecte cette entrée à 5V, le contact est fait entre les deux sorties (et on entend un clak).
Le code suivant enclenche en boucle le relais et permet de vérifier si le branchage est correct.


Installation du Framework Flask

Nous avons vu comment commander le relais grâce à un script Python. Le but est maintenant de pouvoir le commander depuis une page web, sans passer par le terminal du Raspberry. Pour se faire, nous allons utiliser le Raspberry comme un serveur Web. Bonne nouvelle, la librairie Flask permet de facilement créer un serveur web en Python et de réagir à des requêtes HTTP. Commençons par installer cette librairie et de comprendre un peu comment ça marche.
Entrez simplement la commande suivante dans le terminal :

sudo apt-get install python3-flask

Maintenant que la librairie est installée, voyons les notions de base de Flask. Voici le code le plus simple que l'on peut exécuter :

On devrait voir au lancement du script s'écrire ceci :

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: xxx-xxx-xxx

Cela signifie que le serveur est démaré, et qu’on peut y accéder en entrant l'IP du Raspberry, suivi de :5000, qui est le numéro du port. Si on accède à cette page, on verra s'afficher Hello World.
Pour tester, entrer ceci dans le champ URL d'un navigateur : xxx.xxx.x.xxx:5000, où xxx.xxx.x.xxx est l'adresse IP du Raspberry Pi.
Si vous ne connaissez pas l'adresse IP de votre Raspberry Pi, entrez dans une console ceci :

hostname -I


Capture d'écran premier script Flask

Contrôle du relais avec Flask

En plus d'afficher des éléments sur le navigateur, Flask permet d'exécuter les actions que l'on souhaite à chaque fois que la page est visitée. On peut alors "mélanger" le code Flask avec le code de commande de relais pour obtenir un sytème qui enclenche le relais chaque fois que l'on visite l'URL xxx.xxx.x.xxx:5000.
Le code n'est pas très compliqué à écrire, essayez par vous-même avant de regarder la solution !

Avec ce code, nous avons déjà un début de système fonctionnel et il suffit de relier le relais à la carte électronique comme expliqué dans le I pour ouvrir son portail à partir d'une URL.
Cependant, nous souhaitons un système qui se lance tout seul au démarrage, sans avoir besoin d'entrer sudo python app.py sans arrêts. Nous allons voir dans la prochaine étape comment lancer le serveur automatiquement à chaque démarrage.


Lancement automatique du serveur

L'outil crontab permet l'automatisation de lancements de scripts et de taches sur Linux et donc sur le Raspberry. Nous allons ici l'utiliser pour le lancement automatique du script que nous venons d'écrire.
Commencer par ouvrir crontab en entrant dans le terminal ceci :

sudo crontab -e

Si l'on vous demande de choisir un logiciel d'édition, prendre /bin/nano qui est le plus simple des trois.

Information

Le fichier devrait ressembler à ceci :

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.L71rF1/crontab installed on Tue May 29 20:57:03 2018)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

Ajouter simplement la ligne suivante à la fin du fichier (utiliser la flèche du bas pour descendre le curseur) :

@reboot cd /home/pi; sudo python app.py

Une fois la ligne ajoutée, enregistrer et fermer l'éditeur (Ctrl+X -> O (ou Y en anglais) -> Enter).
Redémarrez votre Raspberry Pi pour que les changements soient appliqués.

Application Android pour contrôler son portail

Contrôler son portail depuis un navigateur internet, c'est bien... mais depuis une application mobile, c'est encore mieux. Cette application est disponible sur Google Play en suivant le lien ci-dessous. Lier l'application et le Raspberry est très simple : il suffit d'entrer l'IP et le port du Raspberry !

A lire

Branchement caméra - présentation

Choisir et utiliser une caméra sur un Raspberry Pi


Branchement caméra - présentation

Obtenir la température avec une sonde DS18B20






Ce tutoriel vous a plu ?

starstarstarstarstar

4.8/5 | 13 votes




Commentaires

1 commentaire publié.

alex, le 15/04/2021 à 11h24
Bonjour,
Merci pour vos différents tutos assez bien expliqués ;-) Je n'ai pas encore téléchargé l'appli android donc peut-être que ma suggestion est implémentée ...

En plus de l'adresse IP et le port du Raps un code d'identification unique par utilisateur serait le bienvenu. Cela permettrait de donner des accès spécifiques :
*/ sur une plage horaire et journalier définie, (nounou : du lundi au vendredi sauf mercredi 8h-17h, jardinier jeudi 10h-12h, ...)
*/ code valide une seule fois (livreur amazone, ...)
*/ ...


Commenter
Votre adresse mail ne sera pas visible sur le site.

Les commentaires sous soumis à vérification avant publication.