Sonnette connectée à base de Raspberry Pi

Bien le bonjour !

Article mis à jour et modifié le 31/07/2019

Ajout du 31/07/2019 : suite à la question de Christophe C (question en face à face) =
–> Oui ; la photo sera prise par le module caméra du Raspberry (PiCamera ou RaspiCam).
Mais,
–> Oui ; ça fonctionne avec une WebCam ; il suffit de passer par fswebcam.
Du coup, je refais des scripts et remets l’article à jour.
Je vous mets en ligne 3 scripts et non juste 1 seul. C’est mieux que Noël 😉

Génèse :
Ayant été pas mal sollicité par diverses personnes par le biais de ce site suite à mes articles sur les photomatons, mais également « titillé » par certaines questions sur un forum (en simplifiant = pour de l’aide au sujet de scripts python), j’ai joué avec ce langage de programmation.
(private jok –> oui, j’ai un problème de savoir-être ; je suis capable d’aider les autres, moi !)

Bien que je n’ai pas encore eu (pris ?) le temps d’apprendre ce langage, les heures de « rétro-ingénierie » sur des scripts divers m’ont apporté une certaine capacité à coder des choses simples.
Non pas une connaissance du langage (je respecte trop le métier des autres et leurs diplômes), mais bien une simple capacité à créer du « qui fonctionne ».
Ce script est donc parfaitement améliorable 🙂 (d’ailleurs, un codeur correcteur dans la salle ???)

L’idée de la sonnette connectée avait déjà germé dans mon esprit tordu il y a des mois. Mais cette volonté a resurgi et est devenue réalité de travail hier. Tout fonctionnait hier soir, mais j’ai eu la force de ne pas rédiger le tuto hier dans la nuit.
Bon, comme j’ai passé la journée à aider des voisins à déménager* + codé pour un internaute afin d’adapter son photomaton, héhé, je ne tape ce tuto que ce soir un peu tard.
(private jok –> * : oui, j’ai un problème de savoir-être ; je sais prendre soin des autres, moi !)

Le principe est très très simple ; le tutoriel sera donc très très simple :

Le but final est d’avoir un bouton poussoir sur lequel les visiteurs vont naturellement appuyer puisqu’il s’agit d’une sonnette !
(A noter que je vous mets aussi un script sans bouton (il se pilote avec le clavier) ; juste pour vous permettre de tester sans bouton)

Cet appui va :

  • Générer un ding-dong (ou le bruit que vous voulez)
  • Réaliser une photo (son nom sera au format 21-06-2019_23-01-57.jpeg pour avoir date et heure aisément identifiables)
  • Stocker la photo dans le dossier « visiteurs » sur le Bureau du Raspberry Pi (ceci est évidemment modifiable)
  • Envoyer la photo par courriel (dont l’objet est de type « Photo sonnette 21/06/19 23:02:03 »)

Il suffit donc de lancer le script (on peut automatiser la chose au démarrage évidemment) qui tourne alors en boucle (reste en attente)… et … c’est tout !

Mon article a été vérifié la veille de sa rédaction en suivant cette procédure en repartant de rien (oui, je réinstalle toujours tout le système (Raspbian puis mes scripts) ; juste pour vérifier mes tuto).
Cependant, comme écrit en préambule, je retravaille tout l’article en ce 31/07/2019 … et … cette version est également testée sur une réinstall’ fraiche.

J’ai initialement commencé par réaliser une installation de Raspbian Stretch Release 2019-04-08 avec activation de la caméra, du SSH et de VNC.
Mais, pour la mise à jour du 31/07/2019, je suis bien sûr parti de mon installation de Raspbian Buster (avec activation de la caméra, du SSH et de VNC).

Ensuite, on installe mutt pour pouvoir envoyer des courriels en ligne de commandes avec des pièces jointes

sudo apt update && sudo apt install mutt -y && mutt

On lance valide et on ferme mutt (avec « q »)

Configuration du service de courriels :
Voici mon exemple de configuration avec Gmail (oui, je sais, c’est mal):
[mode aparté]Gmail, c’est mal, mais je suis tout de même un résistant = je n’ai ni FaceBook, ni Twitter, ni Instingram, ni rien, juste 1 adresse Gmail historique ; créée du temps où on devait être invité pour avoir le privilège d’obtenir une adresse Gmail ; la mienne date du 01/01/2005 à 18h10).[/mode aparté]

On édite le fichier de configuration avec

sudo nano /home/pi/.muttrc

On y colle ceci puis on l’adapte à son cas (exemple pour Gmail avec le mode sécurisé)

set from = "expediteur@gmail.com"
set realname = "Sonnette connectée à base de Raspberry Pi"
set imap_user = "expediteur@gmail.com"
set imap_pass = "mot-de-passe-en-clair"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed ="+[Gmail]/Drafts"
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set smtp_url = "smtp://expediteur@smtp.gmail.com:587/"
set smtp_pass = "mot-de-passe-en-clair"
set ssl_starttls="yes"
set move = no set imap_keepalive = 900

Pour enregistrer, il faut faire « crtl »+ »x » puis « o » puis « Entrée ».

On vérifie que la configuration est fonctionnelle avec (changez « destinataire@domaine.truc » par l’adresse sur laquelle vous voulez envoyer le message)

echo Ceci est le corps du texte | mutt -s "Ceci est l'objet" destinataire@domaine.truc

Maintenant, on essaye avec une pièce jointe ?

Allez, création de la photo de test.

Avec le module RaspiCam ou PiCamera =

raspistill -h 600 -w 800 -o /home/pi/image-de-test-pour-courriel.jpg

Avec une camera USB = Dans ce cas, commencez par installer fswebcam avec sudo apt install fswebcam

fswebcam -S 10 -r 640x480 /home/pi/image-de-test-pour-courriel.jpg

On vérifie que la configuration est fonctionnelle avec (comme ci-dessus, changez « destinataire@domaine.truc » par l’adresse de réception)

echo "Ceci est le corps du texte" | mutt -s "Ceci est l'objet" -a /home/pi/image-de-test-pour-courriel.jpg -- destinataire@domaine.truc

Chez moi, le courriel arrive bien. Et de manière extrêmement rapide (bon, OK, j’ai la fibre)

Maintenant, on doit intégrer le script « sonnette ».

Comme je suis vraiment très (très) sympa, plutôt que de vous écrire le script ici pour vous le faire recopier par [copier/coller] = je l’ai mis dans un zip et … j’ai ajouté le fichier son.
Ce fichier son est évidemment remplaçable par « ce que vous voulez » (soit vous utilisez le même nom pour votre fichier, soit vous adaptez le script)

Pour récupérer le script qui vous intéresse … il suffit de cliquer dessus (voir liste plus bas).

Ensuite, vous le dézippez dans /home/pi (faites un clic droit puis « extraire vers » et notez /home/pi puis cliquez sur « valider »)

A noter que si vous voulez utiliser la fonction d’envoi de courriel, il faudra éditer mon script (avec Geany ou votre éditeur Python préféré) et faire « Rechercher » puis « Remplacer ». Et là, vous notez destinataire@domaine.truc dans le champ Rechercher et l’adresse complète où vous voulez envoyer les photos dans Remplacer par. VOus sauvegardez le changement et refermez Geany.

J’ai fait 3 scripts

  1. Script normal pour vraiment réaliser une sonnette connectée à base de Raspberry (l’original)
  2. Script avec le module Pi-Cam (ou RaspiCam) et expédition de courriel, mais sans nécessité de bouton
  3. Script sans bouton ni la Pi-Camera (simple caméra USB) sans la fonction courriel (juste pour s’amuser à tester)
  4. Script sans bouton ni la Pi-Camera (simple caméra USB) avec la fonction courriel

1 – Pour le script original complet, évidemment, il faut connecter un bouton poussoir sur le port GPIO idoine (le 24 ici soit le [BCM24] qui est le [GPIO18] ; référez-vous au site https://fr.pinout.xyz)

Pour récupérer le script sonnette.py … il suffit de cliquer dessus.

Ensuite, vous le dézippez dans /home/pi et vous pourrez le tester en tapant

python3 /home/pi/sonnette/sonnette.py

Il vous restera alors à rendre l’action automatique au démarrage … en lisant mon autre article, très justement intitulé : Lancement automatique d’un script au démarrage

(purée, parfois, je me sidère moi-même 😉 )

2 – Script sans nécessité de bouton, mais avec module Pi-Cam (ou RaspiCam) et expédition de courriel

Le script sonnette-test-clavier.py se récupère aussi par téléchargement direct.

Ensuite, vous le dézippez dans /home/pi et tapez

python3 /home/pi/sonnette-test-clavier/sonnette-test-clavier.py

3 – Pour débuter aisément en s’amusant, voici également un script simple de sonnette avec une WebCam et sans bouton poussoir (on passe par le clavier).

4 – Script au clavier avec camera USB et courriel appelé sonnette-usb-complet.
Dans ce cas également, installez fswebcam avec sudo apt install fswebcam

Après, vous pouvez mixer les scripts entre eux pour avoir, par exemple, un script avec caméra USB, mais bouton et expédition de courriel.

Sinon, je peux vous le faire à la demande.

Bien sûr, vous pouvez réagir via les commentaires ci-dessous.

La bise (comme dirait Maël J 😉 ; autre Private Jok)

P.S. : avant de mettre cette sonnette en production, renseignez-vous sur la législation relative à la détention d’image d’autrui + la présence d’un appareil d’enregistrement sur la voie publique + la présence d’un appareil d’enregistrement dans la sphère privée.

 

A propos de Alban

Papa de 4 enfants étant lui-même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide. Lassé de l'évolution du Monde de la Santé dans lequel les patients sont de plus en plus à traiter comme des clients (je suis un soignant !!!), j'ai opté pour une reconversion en repartant en Alternance... à... 44 ans D'abord dans le cadre d'un BTS SIO option SISR (Solutions d’Infrastructure, Systèmes et Réseaux) en Septembre 2019. Après l’obtention du BTS (16,57/20 ;-) ), j'ai décidé de poursuivre (toujours en alternance) en Bac+3 avec un Bachelor Concepteur de Systèmes d'Information. Depuis septembre 2022, je suis donc encore plus vieux, mais un jeune diplômé "Administrateur Systèmes et Réseaux". (Bac+3 obtenu avec 16,40/20) Citation personnelle : « Si la réussite facile flatte l’égo, C’est de la persévérance que nait le plaisir de la réussite. »

7 commentaires à propos de “Sonnette connectée à base de Raspberry Pi”

    • Super ; je suis ravi pour toi de constater que cela fonctionne.
      Et je te remercie pour ce retour qui ne peut être qu’un signe d’encouragement pour tous ceux qui aimeraient se lancer dans l’aventure !
      Au plaisir,

  1. Bonsoir Alban
    Tout d’abord merci pour ce super tuto, que je suis à la lettre et qui fonctionne super bien!
    Petite question concernant le branchement du poussoir (j’ai quelques lacunes en électricité…) j’ai trouvé sur le net diverses connections….entre 3.3 V la masse et en passant par une résistance de 10k et biensur le GPIO, j’en perds mon latin
    Peux tu éclairer ma lanterne ? (en pressant le poussoir, peut etre :)…..)
    En te remerciant
    Cordialement
    Fil

    • Hello Fil,

      Merci pour ton retour.
      Un bouton poussoir simple est comme un interrupteur mais il ne garde pas la position.
      Il a 2 câbles.
      Pour le script original complet, je mets un fil sur le port [BCM24] qui est le [GPIO18] (voir le site https://fr.pinout.xyz) et l’autre fil à la masse juste à côté soit le [GPIO20].
      C’est aussi simple que ça.
      Bon, en effet, avec une résistance, il parait que c’est « plus mieux » pour stabiliser, mais mon photomaton ou photobooth tourne sans résistance et je n’ai pas de souci.

      @+

  2. Rétroliens : Surveiller un service et le relancer automatiquement – TREVILLY.COM

Laisser un commentaire

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

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.