Sonnette connectée

Bien le bonjour !

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 !

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 de lancer le script (on peut automatiser la chose au démarrage évidemment) qui tourne alors en boucle (reste en attente).

Mon article a été vérifié hier soir en suivant cette procédure en repartant de rien (oui, je réinstalle toujours tout juste pour vérifier mes tuto) :

J’ai commencé par réaliser une installation de Raspbian Stretch Release 2019-04-08 avec activation de la caméra, du SSH et de VNC.
É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)

Ensuite, on tape :

sudo apt-get update && sudo apt-get install ssmtp -y

On va véfifier que SSMTP fonctionne

ls -la /usr/sbin/sendmail

on doit avoir cette réponse (ou un truc du genre)

lrwxrwxrwx 1 root root 5 juil. 20 2014 /usr/sbin/sendmail -> ssmtp

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é]

Le plus simple est de partir d’un fichier vide, donc :

  • on doit sauvegarder la configuration d’origine dans un autre nom,
  • puis supprimer l’originale
  • puis recréer un fichier vide pour y coller notre configuration

On sauvegarde la configuration d’origine avec

sudo cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.ORIGINE

on supprime l’originale avec

sudo rm /etc/ssmtp/ssmtp.conf

Puis création du fichier ssmtp.conf vide

sudo nano /etc/ssmtp/ssmtp.conf

Et on y colle “notre” configuration

# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
#root=truc@bidulle.chose

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
rewriteDomain=gmail.com

# The full hostname
hostname=localhost

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=votre-adresse-utilisée-comme-expéditeur@gmail.com
AuthPass=le-mot-de-passe-écrit-en-clair

# Email 'From header's can override the default domain?
FromLineOverride=yes

Pour enregistrer, il faut faire “crtl”+”x” puis “o” puis “Entrée”.

On indique ensuite au programme les utilisateurs et leur adresse respective avec

sudo nano /etc/ssmtp/revaliases

Et on y colle ceci (juste les 2 dernières lignes ; vous avez déjà le reste)

# sSMTP aliases
#
# Format: local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:votre-adresse-utilisée-comme-expéditeur@gmail.com:smtp.gmail.com:587
pi:votre-adresse-utilisée-comme-expéditeur@gmail.com:smtp.gmail.com:587

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

sudo apt-get install mutt -y

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

raspistill -o /home/pi/image-de-test-pour-courriel.jpg
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. Cependant, j’ai ce message d’erreur :
GPGME : protocole CMS non disponible

On supprime ce souci avec

sudo apt-get install gpgsm -y

Maintenant, on doit intégrer le script sonnette.py

Comme je suis vraiment 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 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 😉 )

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. 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.

Laisser un commentaire

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

*