Adrien's log

Yet Another Note Pad

Porte de garage et domotique à base de raspberry

by adrien on 1 octobre 2016

Un jour, en rentrant chez moi, j’actionne la télécommande de la porte de garage. Rien. La loose. Me voilà enfermé dehors.

Après avoir enfin réussi à entrer, avec la seconde télécommande. J’ai procéder à quelques tests : la pile est bonne, l’automate n’est pas planté et le reprogrammation de la télécommande ne fonctionne pas mieux.

Une nouvelle télécommande ?

Après recherche sur Internet, il s’avère que la télécommande est au même prix (un poil plus cher) qu’un … Raspberry !

Alors on sort le fer à souder et on apprend sur le tas à faire une carte relais pour le Raspberry. J’ai avant vérifié que ma porte me permettait de la commander de manière simple : ce genre d’automates possèdent des contacteurs qu’il suffit de court-circuiter pour déclencher une action sur la porte de garage.

Un début de domotique ?

Voilà donc l’idée : Un téléphone servant de télécommande via Wifi (la couche sécurité étant assurée par le WPA), un Raspberry hébergeant une application Web et qui commande des relais qui vont déclencher des actions au niveau de la porte de garage.

Le circuit

Via un port GPIO, on actionne un transistor qui va lui même actionner le relai. Le GPIO n’étant pas assez péchu pour actionner la bobine du relai. Le relai permet d’isoler le Raspberry des 24V délivrés par le moteur de la porte de garage. L’alimentation des transistor ce fait via la pin 5V du Raspberry.

On ajoute une diode pour protéger le transistor (on dit une diode de roue libre, je vous laisse voir par ) ainsi qu’une résistance de 1 kOhms pour éviter de pomper tout le courant du Raspberry à travers le transistor, c’est inutile.

Des headers et des borniers et nous voilà prêt.

A noté pour le choix des pins GPIO : on ne peut pas tous les choisir. Certaines ont un état haut lors du boot du Raspberry : une coupure de courant (ou un simple reboot du Pi) entrainerait l’ouverture (ou la fermeture) de la porte. Par exemple le pin 14 est aussi le pin TX du Pi. Et se pin se mettre verbeux au boot … J’ai choisi arbitrairement le port 15 et 18.

Voilà ce qu’il va falloir faire :

Schéma carte relaisEt voilà ce que cela donne :

Carte relais

Le code

Vraiment tout simple. Je m’appuie sur Flask pour la partie Web et sur RPi.GPIO pour la commande des ports.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import sys
import time
 
from flask import Flask
from flask import render_template
 
try:
    import RPi.GPIO as GPIO
except ImportError:
    from unittest.mock import MagicMock
    GPIO = MagicMock()
 
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(15, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
app = Flask(__name__)
 
@app.route("/")
def index():
    return render_template('index.html')
 
@app.route("/open", methods=['POST'])
def open():
    GPIO.output(15, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(15, GPIO.LOW)
    return '200'
 
@app.route("/close", methods=['POST'])
def close():
    GPIO.output(18, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(18, GPIO.LOW)
    return '200'
 
if __name__ == "__main__":
    try:
        app.run(host="0.0.0.0", port=80)
    except (KeyboardInterrupt, Exception) as e:
        print(e)
    finally:
        print("exiting")
        GPIO.cleanup()
        sys.exit()

Ce qui nous donne une UI de folie :

Screenshot UIAu cas où cela intéresse du monde : le projet github.

Et une porte de garage intelligente

Une IP fixe et voilà un début de domotisation :). J’oublie assez souvent de fermer cette porte, un Cron devrait résoudre le problème.

Motorisation et relais

Ça claque moyen quand on regarde comme ça, mais ouvrir sa porte avec son smartphone, ça permet de se la péter un peu.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *