Sonnette connectée

De fablab
Aller à : navigation, rechercher

Introduction

Cette page met à disposition le travail effectué pour le projet Infrastructure Logicielle pour le Bâtiment Intelligent. Vous y trouverez les sources et la description pour créer une sonnette connectée.

Membres de l'équipe

Mathilde DUBOILLE

Anir EL KABIRI

Hamza LEBBAR

Marius MICHAUD

Paul WALGER

Scénario

Configuration Le propriétaire accède à l’interface Web locale depuis son ordinateur ou son mobile personnel depuis chez lui. Il rentre les identifiants d’administrateur qui lui ont été fournis en même temps que le produit. Une fois sur l’interface il rentre ses coordonnées : identifiants pour l’accès à l’API Free et adresse email. Il peut également choisir d’activer ou désactiver le système et modifier les valeurs bloquant la sonnette en cas d’utilisation abusive.

Utilisation Monsieur X se rend chez monsieur Y et sonne. Monsieur Y n’étant pas là, sa porte est fermée. La sonnette détecte donc l’absence du propriétaire et propose à monsieur X d’enregistrer un message vocal de durée maximale limitée pour notifier sa venue. Un mail contenant ce message vocal est alors envoyé à monsieur Y, qui reçoit en plus un sms lui indiquant que quelqu’un est passé chez lui et qu’il peut consulter ses mails pour plus de détails. Si Monsieur X essaie d’utiliser trop de fois le système dans un interval de temps, celui-ci est désactivé pour une certaine durée.

Technologies utilisées

- Raspberry Pi 3

- Détecteur de distance

- Micro + Haut parleur

- 1 Bouton

- Python3 + Flask

- Un compte Free

Boîtier de la serrure

Serrure.jpg

Ce boîtier accueille l'intégralité des composants de la sonnette connectée. Il est composé d'une boîte en bois faite à la découpeuse laser et d'un loquet qui a lui été imprimé. La partie droite de la boîte est réservée au Raspberry Pi avec plusieurs trous sur les côtés pour les différents équipements à y connecter (micro, haut-parleur...). La partie gauche avec la cale accueille le détecteur de distance qui permet de savoir si le loquet est poussé ou non.

Note: Il nous est apparu que la couleur noire est "invisible" au détecteur de distance ce qui nous a forcé à repeindre le loquet en rouge

Architecture de l'interface Web

Notre projet comporte également une interface web permettant la configuration de la sonnette. Les paramètres à configurer sont entre autres:

- informations nécessaires à la connexion au serveur SMTP pour envoyer les mails

- identifiants Free pour l'envoi de SMS

- Temps d'enregistrement du message vocal

- Temps entre deux enregistrements (limitation du spam)

Les technos utilisées pour cette interface sont Flask et son module Flask-login et enfin SQLite.

Note: La base de donnée SQLite est très simple et ne contient qu'une seule table avec les identifiants de connexion à l'interface

Le serveur web peut être lancé à la main mais on l'automatise ici au démarrage via un service Unix. Cela permet également qu'en cas de coupure il rédémarre et soit de nouveau accessible:

[Unit]
Description=pilbiflask
After=network.target network-online.target

[Service]
Type=simple
User=pi
Restart=always
RestartSec=1
ExecStart=/usr/bin/python3 /home/pi/pilbi-sonnette-connectee/website/main.py

[Install]
WantedBy=multi-user.target

Toutes les informations nécessaires à l'installation et au lancement des différentes parties de cette interface sont disponibles dans le README fourni avec les sources.

Envoi de SMS via Free

Free est un des rares opérateurs ayant mis en place pour ses utilisateurs, une API pour envoyer des SMS. Cette fonctionnalité est limitée dans la mesure où il est uniquement possible d'envoyer ces SMS à soi-même. Voici comment procéder:

- Activer la fonctionnalité en se connectant sur https://mobile.free.fr/moncompte/ (les identifiants sont disponibles sur vos factures)

Notif.png

- Récupérer maintenant la clef d'API

- L'envoi de SMS se fait de la manière suivante

https://smsapi.free-mobile.fr/sendmsg?user=10606753&pass=cle_identification&msg=Votre%20message

Le paramètre user correspond à votre identifiant de connexion sur l'espace client et pass à la clef que vous avez récupérée à l'étape précédente. Il est également important d'encoder en URL le message pour pouvoir envoyer certains caractères spéciaux comme les espaces.

Branchements

Détecteur de distance VCC --> 5V ; GND --> GND ; AOUT --> GPIO07

Micro Micro de casque gaming branché en USB (le branchement en USB est obligatoire car la Raspberry PI ne possède pas de jack micro)

Haut-parleurs Enceinte JBL branchée sur le port jack (le branchement Bluetooth est également possible mais déconseillé car la configuration au démarrage est difficilement automatisable)

Bouton fil rouge --> GPIO03 ; fil noir --> GND

Sources

Les sources et les instruction d'installation et d'utilisation sont disponibles ici.