Raspberry Pi : alarme !!

Détecter une ou plusieurs ouvertures de porte, détecter des codes 433 MHz, capturer l’image d’une ou plusieurs caméras IP (via leurs flux RTSP), alerter par SMS ou email, voici autant de fonctionnalités que nous pourrions demander à un Raspberry Pi utilisé en alarme.

C’est avec toutes ces fonctionnalités que j’ai débuté la programmation en Python 3, cherché comment articuler tout ce petit monde sans bugs.

J’ai réutilisé mon précédent travail sur la réception 433 MHz, en la faisant fonctionner en tâche de fond, cf ce billet pour les détails. Ainsi, il ne me reste plus qu’à aller lire le fichier recu.txt et vérifier le code qu’il contient.

raspberry433
Platines Tx et Rx 433 MHz

La mise en route ou l’arrêt de l’alarme est possible de deux façons :

  • une télécommande 433 MHz
  • le serveur web intégré au Raspberry

Si j’arrive chez moi, je coupe l’alarme avec un appui sur la télécommande : la LED d’activation s’éteint, je peux rentrer ! Si j’ai oublié d’activer l’alarme, je peux le faire à distance, via l’interface web du Raspberry, le RASPI ALARME passant de vert à rouge dans ce cas :

raspberry alarme off
Interface de gestion de l’alarme

Voici à quoi ressemble le prototype actuellement en fonctionnement :

raspberry alarme proto
Raspi Alarme : protoype

J’utilise un Raspberry 2, plus puissant. On voit en haut la platine du récepteur 433 MHz, suivie par celle de l’émetteur 433 MHz. Le fil jaune isolé est celui destiné à brancher une LED (mise en route ou arrêt de l’alarme). Les deux fils du bas sont destinés à un contacteur porte, ouvert ou fermé.

Pour la mise en route et l’arrêt par radio, j’utilise une simple télécommande 433 MHz, $2 environ chez ebay, pas la peine de se ruiner :

raspberry 433 remote
Télécommande 433 MHz

Toujours en 433 MHz, j’ai expérimenté avec un détecteur d’ouverture radio plus performant que les m… qu’on trouve chez amazon (cf ce billet pour mes essais avec ces modèles). En fait, j’ai utilisé une petite platine d’émission 433 MHz (merci ebay, environ $5), une pile 12 V miniature pour ne pas avoir à dépendre d’une alimentation 220 V, et un contacteur magnétique inversé acheté à prix d’or chez Conrad :

raspberry alarme ouverture
Prototype détecteur d’ouverture 433 MHz

Oui, je sais, ça pendouille de partout, mais c’est pour mieux vous expliquer l’idée : à droite en bas, la pile 12 V, puis juste au dessus le petit émetteur 433 MHz et une antenne adaptée. Sur la gauche, au dessus de la porte, un aimant. Au dessus, un contacteur : lorsque l’aimant passe sous le contacteur, il alimente très brièvement la télécommande qui transmet alors un code, code que notre Raspberry va recevoir et traiter, ouf 😉

Pour finir, voici le script python3 principal utilisé sur le proto actuel. Chacun l’adaptera, sans oublier qu’il faut aussi un php pour venir gérer l’interface web, installer le serveur Apache 2, etc. Ce billet n’est pas un tuto, il vous donne juste quelques pistes de réflexion si vous vous lancez dans le même bricolage.

START.PY : le script principal, détection des codes radio, de l’ouverture, etc. zero.txt contiendra un simple 0 (zero), sans retour de ligne. alarme_on.txt contient 1, toujours sans retour de ligne, et son pendant alarme_off.txt contient lui 0 (zero).

#!/usr/bin/python3
#
# Lecture du code de telecommande recu par RFSniffer (version modifiee, en tache de fond)
# le code reçu se trouve dans /home/pi/recu.txt
#
import os
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
#
# Broche 7 GPIO4 out sur la LED
#
GPIO.setup(4, GPIO.OUT)
#
# Broche 15 GPIO22 in interrupteur porte
#
GPIO.setup(22, GPIO.IN)
#
# Boucle de detection sans fin
#
while True:
#
# Ouverture et lecture de temp.txt
#
  f = open('/home/pi/recu.txt', encoding='utf-8')
  alarme = open('/home/pi/alarme.txt', encoding='utf-8')
  a = int(alarme.read())
#
# Detectons si le fichier est vide (0) ou pas
# et inscrivons le code recu dans la variable g
#
  statinfo = os.stat('/home/pi/recu.txt').st_size
  if statinfo > 0 :
    g = int(f.read())
#
# Lecture contacteur porte
#
  entree = GPIO.input(22)
#
# ALARME DETECTEE
#
  if entree == 1 and a == 1 :
    print ("alarme contacteur entree !!!!!")
    os.system('sudo cp /home/pi/zero.txt /home/pi/recu.txt')
#
# Capture image depuis le flux rtsp d une camera ip en lancant un script sh
#
    os.system("sudo sh /home/pi/snapshot.sh")
#
# Detection du code radio
# puis remise a zero de recu.txt en copiant le contenu de zero.txt a sa place
# (zero.txt contient un simple 12345)
#
#
# Telecommande cle voiture
#
#
# Bouton A
#
  if g == 5592512:
    print ("alarme on")
#
# On active la LED d'alarme
#
    GPIO.output(4, GPIO.HIGH)
#
# Remise a zero du code recu
#
    os.system('sudo cp /home/pi/zero.txt /home/pi/recu.txt')
#
# on copie 1 dans alarme.txt car l alarme est activee
#
    os.system('sudo cp /home/pi/alarme_on.txt /home/pi/alarme.txt')
#
# Bouton B
#
  if g == 5592368:
    print ("alarme off")
#
# On desactive la LED d'alarme
#
    GPIO.output(4, GPIO.LOW)
#
# Remisee a zero du code recu
#
    os.system('sudo cp /home/pi/zero.txt /home/pi/recu.txt')
#
# on copie 0 dans alarme.txt car alarme desactivee
#
    os.system('sudo cp /home/pi/alarme_off.txt /home/pi/alarme.txt')
  else:
    time.sleep(.1)

Publications similaires

  • |

    Sydego : l’électrique écolo en campagne ?

    Eloignons-nous un peu du monde du WiFi, pour évoquer un déploiement en cours dans le département de Loire Atlantique, avec Sydego, une solution mise en place par le département de Loire Atlantique pour recharger les nombreux véhicules électriques un peu partout dans le département. La carte montre les stations déjà en place, avec en moyenne 4 prises disponibles par borne et des implantations loin des grands centres urbains : L’idée est bonne, mais la démarche que je qualifierai de « bobo-écolo »…

  • | |

    Hotspot et caméras ?

    Et si vous profitiez d’avoir un hotspot WiFi, avec un enregistreur de connexions qui fonctionne sous linux, pour venir y installer un serveur Web et mettre à disposition de vos utilisateurs les clichés instantanés d’une ou plusieurs vues des caméras IP de votre établissement ? C’est ce qui motive le projet de Monwifi actuellement en version Beta, avec une interface d’administration pour ajouter et supprimer les caméras : et une interface de visualisation destinée à vos utilisateurs et clients :…

  • Refonte, mise à jour, simplification

    La boutique en ligne, http://online.infracom.fr a subi ce matin un léger lifting destiné à simplifier la recherche de produits et à mieux organiser les rubriques. Les produits WiFi principaux, grands public, sont désormais regroupés dans la rubrique Wifi 2.4 & 5 GHz : modules USB, points d’accès, protection foudre, POE, bridges préconfigurés, etc. Nous avons supprimé les produits trop anciens, démodés ou peu demandés, pour ne laisser que les matériels actuels. Wifi : HOTSPOT va regrouper tout ce qui permet…

  • Freebox V7 : le diable dans les détails !

    C’est avec pas mal de retard que la présentation de la nouvelle boiboite V7 de St Xavier aux Cheveux Gras a enfin été lancée ce matin. Comme attendu, l’agrégation d’un flux xDSL + 4G a été rapidement annoncée : Cela suppose tout de même quelques interrogations techniques : peut-on ajouter une antenne externe sur un serveur Delta ? Si c’est impossible, alors ce sera trop limitatif, sauf à positionner le player dans son grenier pour capter un maximum de signal…

  • ESP8266 : quelle platine ?

    Je joue depuis plusieurs jours avec des platines ESP8266 et j’en découvre toujours plus chaque jour. Le soucis maintenant est de choisir LA platine parfaitement adaptée à mon application : fonctionner comme détecteur d’ouverture, reliée au réseau WiFi d’une box, et transmettant des trames UPD pour signaler les évènements. Je vais donc revenir sur plusieurs modèles qui me semblent intéressants : ESP-01 : La plus accessible des platines avec son gros connecteur et son antenne WiFi intégrée. Elle dispose de…

4 commentaires

  1. bonjour pouvez m’envoyer un schéma de branchement du contact de porte sur l’émetteur 433 mhz svp

  2. pouvez vous me dire ou vous avez brancher les 2 fil du contact de porte sur l’emetteur

Les commentaires sont fermés.