View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Programmer le pcDuino : Réseau : L'appui sur un BP envoie un mail !

Par X. HINAULT - Juillet 2013

Ce que l'on va faire ici

  • Dans ce code, l'appui sur un bouton poussoir va envoyer un mail ! Non, vous ne rêvez pas : c'est assez facile à faire avec Pyduino grâce aux fonctions intégrées dans la librairie.
  • On utilise ici un bouton poussoir, mais il pourra s'agir de n'importe quel autre capteur... qui pourra envoyer un mail d'alerte à la demande !
  • Pour plus de détails, se reporter aux instructions pyduino Réseau

Pré-requis

  • un mini-PC (pcDuino conseillé) avec système Lubuntu opérationnel. Voir si besoin la page d'accueil du pcDuino
  • Langage Python (2.7) et l'IDE Pyduino ou l'éditeur Geany installés. Voir si besoin : Logiciel pour développer avec Pyduino
  • ma librairie pyDuino installée : voir si besoin : Télécharger et installer Pyduino sur le pcDuino
  • D'autre part, vous devez disposer d'un compte mail personnel avec un serveur SMTP actif, ce qui est le cas la plupart du temps. Si vous n'en n'avez pas, créez en un pour l'occasion. Sinon, il est aussi possible d'installer un serveur SMTP sur le pcDuino, mais la procédure est plus complexe pour un simple test.
  • Vous devez disposez des informations suivantes :
    • nom du serveur smtp : par exemple mail.mondomaine.fr. Info fournie par votre hébergeur de mail
    • port utilisé sur le serveur smtp : par défaut 25, mais parfois 26 ou 587... Info fournie par votre hébergeur de mail.
    • votre adresse mail et le mot de passe associé.
    • l'adresse mail du destinataire.

Schéma fonctionnel

  • L'entrée numérique déclenche l'envoi du mail : le code Pyduino se connecte au serveur SMTP utilisé, transmet le mail qui est ensuite distribué au destinataire par le serveur SMTP.

Matériel nécessaire

Système

  • Le pcDuino connecté à internet via le réseau local

E/S

  • une plaque d'essai pour montage sans soudures,
  • des straps,
  • un bouton poussoir pour CI,

Instructions de montage

  • Connecter un bouton poussoir entre la broche 2 (configurée en entrée avec rappel au plus) et le 0V

Le montage à réaliser

Le fichier *.py

Copier/coller ce code dans l'éditeur Geany :


#!/usr/bin/python
# -*- coding: utf-8 -*-

# exemple pyDuino - par X. HINAULT - www.mon-club-elec.fr
# Aout 2013 - Tous droits réservés - GPLv3
# voir : https://github.com/sensor56/pyDuino

# l'appui sur un bouton poussoir envoie un mail !

from pyduino import * # importe les fonctions Arduino pour Python

# entete declarative
BP=2  # declare la broche a utiliser
APPUI=LOW # valeur broche lors appui

mailServer=None

#--- setup ---
def setup():

        # config BP
        pinMode(BP,PULLUP) # met la broche en entree avec rappel au plus actif
        Serial.println("La broche 2 est en entree avec rappel au plus actif !")

        # config serveur mail
        global mailServer
        mailServer=MailServer()

        #-- parametres du serveur smtp
        mailServer.setName("serveurmail.expediteur.fr")
        mailServer.setPort(25)

        #-- expediteur
        mailServer.setFromMail("adresse@expediteur.fr")
        mailServer.setFromPassword("motdepasseexpediteur")

        #-- destinataire
        mailServer.setToMail("adresse@destinataire.fr")

        # affiche parametres
        print "serveur smtp : "
        print "nom : " + mailServer.name
        print "port : " + str(mailServer.port)
        print "expediteur :"
        print "adresse mail : " + mailServer.fromMail
        print "mot de passe : " + mailServer.fromPassword
        print "destinataire : "
        print "adresse mail : " + mailServer.toMail

        print "-----------------"

# -- fin setup --

# -- loop --
def loop():

        global mailServer

        if(digitalRead(BP)==APPUI): # si appui
                Serial.println("Appui BP!")
                Serial.println("Mail en cours d'envoi...")

                # contenu du mail
                mailServer.setSubject("Envoi mail par Pyduino")
                mailServer.setMsg("Appui sur bouton poussoir le " + nowdatetime()+".")

                # envoi message
                mailServer.sendMail()

                Serial.println("Fin d'envoi du mail.")
                Serial.println("")

                delay(250)  # anti-rebond

        delay(100) # pause entre 2 lecture du BP


# -- fin loop --

#--- obligatoire pour lancement du code --
if __name__=="__main__": # pour rendre le code executable
        setup() # appelle la fonction main
        while not noLoop: loop() # appelle fonction loop sans fin
 

Ce code est également disponible ici : https://raw.github.com/sensor56/pyduino-exemples/master/Ethernet/digitalReadSendMail.py

Utilisation

  • Appuyer sur le bouton exécuter dans Geany
  • Une fenêtre de Terminal vide doit apparaître :
    • lors d'un appui sur le bouton poussoir, un message indique qu'un mail est en cours d'envoi
    • puis suit l'affichage du contenu du mail envoyé.
  • Il suffit ensuite d'ouvrir sa messagerie mail pour visualiser le mail envoyé. Attention, un petit délai est parfois nécessaire, c'est normal.

Discussion technique

  • Il est potentiellement possible d'implémenter le serveur mail directement sur le miniPC si on le souhaite, mais la procédure est un peu plus compliquée.