Projet Domotique avec Raspberry Pi
Ouverture de portail à partir d'un smartphone


Mis à jour le : 04/08/2019


Ilustration commande de portail à partir d'un smartphone Android

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 des portails motorisés disposent de la fonction d'ouverture par clé. Un interrupteur à clé est un composant à deux fils qui a un rôle très simple : Lorsque l'utilisateur tourne la clé, le contact entre les deux sorties est effectué. Nous allons utiliser ce principe pour commander l'ouverture du portail grâce à un Raspberry. Il suffit d'avoir un composant qui simule cet interrupteur. On nomme ce composant "relais électromagnétique". Lorsque l'on délivre un 0 logique à l'entrée du relais, celui-ci effectue le contact, si l'on ne délivre rien, l'interrupteur est ouvert.

I. Prérequis

Dans un premier temps, faisons la liste des composants dont on aura besoin pour mener ce projet à terme :

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

II. Mise en place matérielle

Etape #1. Trouver les ports du contacteur à clé sur la carte électronique du portail

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 cable bifilaire à chaque port (indiqués par les flèches rouges sur l'exemple de notice).


Etape #2. Mise en place du boitier

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


Etape #3. Alimentation du Raspberry

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


Etape #4. 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 celà 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 cable que l'on a branché à l'étape #1. Les relais disposent de trois sortie, il faut utiliser les sorties COM et NO comme le montre le schéma récapitulatif suivant.

Schéma de branchements récapitulatif

III. Partie logicielle

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


Etape #1. Commander le 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 enclanche en boucle le relais et permet de vérifier si le branchage est correct.


Etape #2. 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 server est démaré, et que on peut y accéder en entrant l'IP du Raspberrry, 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

Etape #3. Commander le relais depuis un navigateur grâce à 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émarage, sans avoir besoin d'entrer sudo pyhton app.py sans arrêts. Nous allons voir dans la prochaine étape comment lancer le serveur automatiquement à chaque démarage.


Etape #4. Lancer le serveur automatiquement à chaque démarage du Raspberry Pi

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émarez votre Raspberry Pi pour que les changements soient appliquésx.

IV. Application Android pour contrôler son portail


Un peu de patience ! Application en cours de finalisation, très bientôt disponible sur le Play Store !

Commentaires



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

Seuls les commentaires jugés corrects seront mis en ligne.



Composants Bien débuter sur le Raspberry PI Configurer le Raspberry Pi
Ecran LCD 16x02 Accessoires indispensables sur Raspberry Pi Connexion sans login ni mot de passe au Raspberry
Capteur de température DS18B20 Première installation et démarage Changer le Hostname du Raspberry Pi
Afficheurs 7 segments Création et execution d'un programme Python Connexion Ethernet Raspberry/ordinateur
Capteur distance HC-SR04 Connexion au bureau depuis Windows
Interaction par bouton poussoir Test & tuto : Ecran LCD 7" tactile
Servo Moteur
Capteur de présence HC-SR501
Module RFID-RC522
Caméra sur Raspberry Pi
Module L298N : Contrôle de moteurs à courant continu

EspaceRaspberryFrançais |
Contact | Facebook



En tant que Partenaire Amazon, je réalise un bénéfice sur les achats remplissant les conditions requises.

Espace-raspberry-francais.fr est hebergé par SARL LWS.