# -*- coding: utf-8 -*- """ Created on Fri Dec 02 11:48:30 2016 @author: p0500391 """ import paho.mqtt.client as mqtt import time import cv2 import RPi.GPIO as GPIO import smtplib from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText from email.MIMEBase import MIMEBase from email import encoders # Define event callbacks # Les callbacks sont les fonctions qui sont excécutées sur # pour chaque instruction donnée au serveur MQTT (connect, publier, souscrire (abonné), # et reception d'un message dans un des topics où ôn est abonné ) def on_connect(client, userdata, rc): if rc == 0: print("Connected successfully.") else: print("Connection failed. rc= "+str(rc)) def on_publish(client, userdata, mid): print("Message sent") def on_subscribe(client, userdata, mid, granted_qos): print("Subscribe with mid "+str(mid)+" received.") def on_message(client, userdata, msg): print("Message received on topic "+msg.topic+" with QoS "+str(msg.qos)) if (msg.topic=="projiut/impression") and (msg.payload=='impression'): #permet de mettre le servo moteur en position pour arrêter l'impression GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.OUT) ajoutAngle = 5 angle = 180 duree = 1 pwm=GPIO.PWM(17,100) pwm.start(5) angleChoisi = float(angle)/10 + ajoutAngle pwm.ChangeDutyCycle(angleChoisi) time.sleep(duree) GPIO.cleanup() pwm.stop(5) if (msg.topic=="projiut/snap") and (msg.payload=='snap'): #permet de mettre le servomoteur en position d'allumage de la lumière GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.OUT) ajoutAngle = 5 angle = 0 duree = 1 pwm=GPIO.PWM(17,100) pwm.start(5) angleChoisi = float(angle)/10 + ajoutAngle pwm.ChangeDutyCycle(angleChoisi) time.sleep(duree) GPIO.cleanup() pwm.stop(5) time.sleep(2) #permet de capturer l'image print "image received: SNAP and publish" camera = cv2.VideoCapture(0) return_value,image = camera.read() cv2.imshow('image',image) #ecriture en jpg pour compresser la taille de l'image cv2.imwrite('image_test.jpg',image) cv2.waitKey(500) camera.release() # chargement de l'image avant envoi f=open("image_test.jpg", "rb") #image enregistré dans le même dossier que le code fileContent = f.read() byteArr = bytearray(fileContent) #permet d'envoyer l'image sur une adresse mail fromaddr = "surveillance.imprimante@gmail.com" toaddr = "guillaumemaeder@gmail.com" msg = MIMEMultipart() msg['From'] = fromaddr msg['To'] = toaddr msg['Subject'] = "Image imprimante" body = "En pièce jointe une image de l'imprimante" msg.attach(MIMEText(body, 'plain')) filename = "image_test.jpg" attachment = open("/home/pi/Projet/image_test.jpg", "rb") part = MIMEBase('application', 'octet-stream') part.set_payload((attachment).read()) encoders.encode_base64(part) part.add_header('Content-Disposition', "attachment; filename= %s" % filename) msg.attach(part) server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(fromaddr, "Projet5_-") text = msg.as_string() server.sendmail(fromaddr, toaddr, text) server.quit() f.close() #mqttclient.publish("projiut/images",byteArr,1) # Déclaration d'une variable d'éta globale SNAP_Image=0 mqttclient = mqtt.Client() # Assign event callbacks mqttclient.on_connect = on_connect mqttclient.on_publish = on_publish mqttclient.on_subscribe = on_subscribe mqttclient.on_message = on_message # Connect #mqttclient.username_pw_set("christophe.cudel@gmail.com, "a26e697e") mqttclient.connect("test.mosquitto.org", 1883,60) # Start subscription mqttclient.subscribe("projiut/snap") mqttclient.subscribe("projiut/impression") mqttclient.subscribe("projiut/images") mqttclient.loop_forever() print "Loop done!"