Secutiry Alert Notifier
Bijour bijour!
Aujourd’hui je vous présenterai mon nouveau joujou Arduino: un notificateur d’alerte de securité notifiant aussi la réception d’un nouveau mail. En effet je suis tombé sur ce tuto que j’ai ensuite adapté à ma sauce:
http://www.semageek.com/tuto-comment-fabriquer-un-notificateur-de-mails-avec-un-arduino/
Le principe est d’avoir une petite box avec un drapeau + led + alarme pour pouvoir notifier la réception d’un nouveau mail. Sachant qu’il y a pas mal d’attaques en ce moment sur le site (qui jusqu’à aujourd’hui ont tous été des échecs heureusement), je me suis dis que je pouvais l’utiliser de telle sorte que:
– Lorsque je reçois un nouveau mail quelconque, le drapeau de la box se lève
– Lorsque je reçois une alerte / rapport de sécurité (mail envoyé par un plugin de mon site), le drapeau se lève et une led plus un buzzer s’allume!
Pour vous donner une idée du résultat, voici une petite vidéo (de qualité bien dégueu) en fonctionnement:
Je suis d’accord que la tête de ce bricolage est une honte, mais bon j’avais pas forcément envie de passer beaucoup de temps à faire du découpage / collage…
Je vous donne aussi les contraintes de ce type de montage, histoire que vous ne vous en aperceviez pas à la fin:
– Il faut un ordi connecté au montage Arduino
– Une connexion internet (ben oui…)
– L’IDE Arduino lancé pour que l’échange pc / board fonctionne
Pour le matériel:
– Une carte Aruino Uno (sans blague!)
– Un servo-moteur
– Une led + résistance
– Un piezzo buzzer
Fonctionnement
Nous allons coder un script python qui ira récupérer les flux RSS de nos mails, puis enverra au raspberry pi “m” pour un nouveau message, “w” pour une alerte sécurité, “n” sinon. La carte Arduino effectuera les actions en conséquences.
Le montage
Pour connecter le moteur:
fil noir –> GND
fil rouge –> 5V
fil blanc –> pin 9
Il se peut que votre moteur soit un peu différent, voici un tableau qui pourrait vous aider:
(Source: http://www.pobot.org)
Rôle | Masse | Tension | Signal |
---|---|---|---|
Arduino | GND | 5V | DIGITAL 9 |
type 1 | noir | rouge | blanc |
type 2 | marron | rouge | orange |
Led connectée sur le pin 11
Buzzer sur le pin 10
Le code Arduino
#include <Servo.h> #define outPin 11 #define HIGHFLAG 95 #define LOWFLAG 5 #define SON 175 #define BUZZER 10 Servo drapeau; void setup() { pinMode(BUZZER, OUTPUT); pinMode(outPin, OUTPUT); // sets the digital pin as output Serial.begin(9600); Serial.flush(); drapeau.attach(9); // servo sur la pin 9 drapeau.write(0); // Tests drapeau.write(HIGHFLAG); digitalWrite(outPin, HIGH); tone(BUZZER, SON); delay(500); noTone(10); delay(1500); drapeau.write(LOWFLAG); digitalWrite(outPin, LOW); } int buzz = 0; void loop() { char val; // Read from serial port if (Serial.available()) { val = Serial.read(); delay(1); if (val == 'w') { digitalWrite(outPin, HIGH); // On allume la led drapeau.write(HIGHFLAG); // On leve le drapeau if (buzz == 0) { buzz = 1; for(int i = 0; i < 3; i++) { tone(BUZZER, SON); delay(500); noTone(BUZZER); delay(500); } } } else if (val == 'm') { digitalWrite(outPin, LOW); //On eteint la lampe si allumee drapeau.write(HIGHFLAG); // On leve le drapeau } else if (val == 'n') { buzz = 0; digitalWrite(outPin, LOW); // On eteint la led drapeau.write(LOWFLAG); // On baisse le drapeau } } }
Bricolage en cours:
Le Script Python
Pour le script, il va falloir télécharger les paquets python-feedparser et python-pyserial avec apt-get ou zypper ou autre selon votre distrib (pour opensuse, les paquets étaient déjà installés!). Pensez à modifier votre nom d’utilisateur / mot de passe Gmail.
import serial, sys, feedparser, time, re
print "Checking..." #Changez les informations suivantes en fonction de votre compte USERNAME="username" PASSWORD="password" PROTO="https://" SERVER="mail.google.com" PATH="/mail/feed/atom" SERIALPORT = "/dev/ttyACM0" # Changez le port en fonction du votre SERIALPORT2 = "/dev/ttyACM1" # Set up serial port try: ser = serial.Serial(SERIALPORT, 9600) # Definit la connexion avec arduino except serial.SerialException: print "no device on /dev/ttyACM0 - trying /dev/ttyACM1" try: ser = serial.Serial(SERIALPORT1, 9600) # Definit la connexion avec arduino except: print "no device on /dev/ttyACM1 - exiting" sys.exit() newmails = int(feedparser.parse(PROTO + USERNAME + ":" + PASSWORD + "@" + SERVER + PATH)["feed"]["fullcount"]) #se connecte a votre compte gmail et retourne 0 si il n y a pas de nouveaux mails, 1 s il y en a. print "Mails non lues: " + str(newmails) # Output data to serial port if newmails > 0: #On doit checker si il y a des alertes de securite feed = str(feedparser.parse(PROTO + USERNAME + ":" + PASSWORD + "@" + SERVER + PATH)) #Recupere les donnees du flux rss if re.compile('valou-tweak.com').search(feed): #Remplacez l expression 'valou-tweak.com' par ce que vous voulez (ca doit apparaître dans le mail, objet ou contenu) print "Alerte securite!" ser.write('w') #envoie warning a arduino = messages else: print "Aucune alerte!" ser.write('m') else: ser.write('n') #envoie n a arduino = no messages # Ferme le port ser.close()
Automatisation
Pour lancer le script, il suffit de taper python pi_script.pi mais il ne vérifiera qu’une seule fois votre boîte mail. J’ai donc crée un petit script bash pour automatiser le tout. Avant de le lancer, n’oubliez pas de lancer la fenêtre de communication sérial Arduino dans l’IDE.
#!/bin/bash # Check les alert de security par un script python while [ 1 == 1 ] do python2.7 pi_script.py wait done
Et voilà le travail est finie! Il ne vous reste plus qu’à faire une petite boîte pour en faire quelque chose de jolie (pas le mien quoi…). Si vous rencontrez des problèmes, n’hésitez pas à laisser un commentaire!
Laisser un commentaire