Inteligente de garaje por pcDuino (3 / 4 paso)

Paso 3: Código de Python

El código de python es como a continuación:

#! / usr/bin/python
#-*-codificación: utf-8-*-
Import smtplib
tiempo de importación
de adc import analog_read
importación de gpio
tiempo de importación
importación imaplib
importar uuid
de correo electrónico de importación de correo electrónico
importación imaplib
tiempo de importación
importar uuid
de correo electrónico de importación de correo electrónico
relay_pin = "gpio2"
sensor_pin = "gpio4"
#the siguiente es para el envío de correo electrónico
servidor = 'smtp.gmail.com'
Puerto = 587
remitente = ' xxxxxx
destinatario = "xxxxx
contraseña = 'xxxxx'
tema = 'Garaje puerta abierta'
cuerpo = "la puerta está abierta. Compruebe por favor '
#the siguiente es para la recepción de correo electrónico
IMAP_SERVER = 'imap.gmail.com'
IMAP_PORT = '993'
IMAP_USE_SSL = True
imap_username = ' xxxxx
imap_password = 'xxxxx'
Num = 0
message_content = '1';
DEF delay(ms):
Time.Sleep(1.0*ms/1000)
setup() Def:
gpio.pinMode (relay_pin, gpio. SALIDA)
gpio.pinMode (sensor_pin, gpio. ENTRADA)
gpio.digitalWrite (relay_pin, gpio. BAJO)
cuerpo = "" + cuerpo + ""
cabeceras = ["desde:" + emisor,
"Tema:" + tema,
"Para:" + receptor,
"MIME-Version: 1.0",
"Tipo de contenido: texto/html"]
headers = "\r\n".join(headers)
replysubject = 'Cerré la puerta de garaje'
replybody = 'Cerré la puerta de garaje'.
replybody = "" + replybody + ""
replyheaders = ["desde:" + emisor,
"Tema:" + replysubject,
"Para:" + receptor,
"MIME-Version: 1.0",
"Tipo de contenido: texto/html"]
replyheaders = "\r\n".join(replyheaders)
clase MailBox(object):
DEF __init__ (self, usuario, contraseña):
Self.User = usuario
Self.password = contraseña
Si IMAP_USE_SSL:
Self.IMAP = el imaplib. IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
otra cosa:
Self.IMAP = el imaplib. IMAP4(IMAP_SERVER, IMAP_PORT)
DEF __enter__(self):
Self.IMAP.login (self.user, self.password)
volver a uno mismo
DEF __exit__ (auto, tipo, valor, rastreo):
Self.IMAP.Close()
Self.IMAP.logout()
DEF get_count(self):
Self.IMAP.Select('Inbox')
Estado, datos = self.imap.search (ninguna, 'Oculto')
devolver la suma (1 para el num de data[0].split())
DEF fetch_message (self, num):
Self.IMAP.Select('Inbox')
Estado, datos = self.imap.fetch(str(num), "(RFC822)")
email_msg = email.message_from_string(data[0][1])
volver email_msg
DEF delete_message (self, num):
Self.IMAP.Select('Inbox')
Self.IMAP.Store (num, '+ banderas', r '\Deleted')
Self.IMAP.Expunge()
DEF print_msgs(self):
Self.IMAP.Select('Inbox')
Estado, datos = self.imap.search (ninguna, 'Oculto')
número de #for en reversed(data[0].split()):
Estado, datos = self.imap.fetch (num, "(RFC822)")
Self.IMAP.Store (num, '+ banderas', '\\Deleted')
MSG=email.message_from_string(Data[0][1])
message_content=msg.get_all("Subject")
Si 'estrecha puerta' en message_content:
retorno 1
DEF get_latest_email_sent_to (self, email_address, tiempo de espera = 300, encuesta = 1):
start_time = time.time()
mientras que ((time.time()-start_time) < timeout):
# Es inutil continuar hasta que con éxito hemos seleccionado
# la bandeja de entrada. Y si no lo seleccionamos en cada iteración
# antes de buscar, tenemos fallas intermitentes.
Estado, datos = self.imap.select('Inbox')
Si status! = 'Aceptar':
Time.Sleep(poll)
continuar
Estado, datos = self.imap.search (ninguna, 'A', email_address)
datos = [d d datos si d no es ninguna]
Si estado == 'OK' y datos:
para num en reversed(data[0].split()):
Estado, datos = self.imap.fetch (num, "(RFC822)")
email_msg = email.message_from_string(data[0][1])
volver email_msg
Time.Sleep(poll)
elevar AssertionError ("sin correo electrónico enviado a ' %s' encuentra en bandeja de entrada"
"después de la interrogación para %s segundos." % (email_address, tiempo de espera))
DEF delete_msgs_sent_to (self, email_address):
Self.IMAP.Select('Inbox')
Estado, datos = self.imap.search (ninguna, 'A', email_address)
Si estado == 'OK':
para num en reversed(data[0].split()):
Estado, datos = self.imap.fetch (num, "(RFC822)")
Self.IMAP.Store (num, '+ banderas', r '\Deleted')
Self.IMAP.Expunge()
DEF closedoor():
gpio.digitalWrite (relay_pin, gpio. ALTA)
Delay(200)
gpio.digitalWrite (relay_pin, gpio. BAJO)
Si __name__ == '__main__':
Setup()
while(1):
Si gpio.digitalRead(sensor_pin) == gpio. BAJO:
Imprimir ("pin Sensor bajo")
sesión = smtplib. SMTP (servidor, puerto)
Session.EHLO()
Session.STARTTLS()
Session.EHLO
Session.login (sender, contraseña)
Session.sendmail (remitente, destinatario, cabeceras + cuerpo + "\r\n\r\n")
Session.Quit()
Delay(10)
con buzón de correo (imap_username, imap_password) como mbox:
Num=mbox.get_Count()
Si num! = 0:
Si mbox.print_msgs():
imprimir 'encender'
closedoor()
sesión = smtplib. SMTP (servidor, puerto)
Session.EHLO()
Session.STARTTLS()
Session.EHLO
Session.login (sender, contraseña)
Session.sendmail (remitente, destinatario, replyheaders + "\r\n\r\n" + replybody)
Session.Quit()

Podemos utilizar el truco de post para obtener python library para pcDuino y deje el anterior python script para cargar automáticamente durante el inicio de pcDuino.

Artículos Relacionados

Gigantesca unidad de la estantería del sótano o garaje por 36 $,

Gigantesca unidad de la estantería del sótano o garaje por 36 $,

Necesitaba la estantería de mi sótano, pero quería divertirse un poco con ella y ver cuánto almacenamiento de información de estantería podría construir al precio más bajo posible, sin dejar de ser un fuerte. Esta estantería utiliza un solo pie de OS
Un Piano con plátano como teclado accionado por pcDuino

Un Piano con plátano como teclado accionado por pcDuino

se detallará cómo utilizar tecla USB protector y pcDuino para implementar un piano con plátano como teclado.¿Paso 1: Cómo simular teclado entrada?(1) a fin de inyectar las pulsaciones de teclado, debemos asignar los eventos de toque de plátano al eve
Hacer todos los aparatos inteligentes y controlado por la aplicación y control remoto RF

Hacer todos los aparatos inteligentes y controlado por la aplicación y control remoto RF

Productos inteligentes para el hogar son muchas, pero casi ninguno de ellos tiene RF remoto. Un control remoto de RF puede controlar sus aparatos dentro de una distancia (en interiores), la aplicación no será necesaria. Estoy hablando smart home nove
Inicio sistema de automatización por pcDuino

Inicio sistema de automatización por pcDuino

Un casa controlador inteligente que reemplaza a una línea de interruptores con una tableta como dispositivo con una interfaz gráfica de la interfaz de usuario. Usé un Allwinner A10, junto con tiza electrónica marco abierto 7 lcd. En lo que conectado
Abrepuertas de garaje inteligente DIY

Abrepuertas de garaje inteligente DIY

Sé que has conseguido 5 minutos por la calle y había preguntado, "¿cerrar la puerta?".Ahora, en lugar de vuelta o salir de su garaje y casa vulnerables a los ladrones, puede comprobar y cerrar con su teléfono con la opción de protocolo de automa
Garaje de WEMO Belkin

Garaje de WEMO Belkin

El objetivo del proyecto es su puerta de garaje en un dispositivo de Internet de las cosas (IoT) controlado, es decir, ser capaz de abrir/cerrar la puerta y verificar el estado de su teléfono (iPhone, Android, etc.). Si bien hay muchos proyectos para
Abra el controlador de puerta de garaje fuente monitor

Abra el controlador de puerta de garaje fuente monitor

Supervisar y controlar las puertas de garaje de la web (incluyendo dispositivos móviles) a través de un Raspberry Pi.Este proyecto contiene instrucciones de instalación de hardware y software para monitoreo y control de las puertas de garaje remotame
Abridor de puerta de garaje WiFi Arduino

Abridor de puerta de garaje WiFi Arduino

¿Nunca en la lluvia para encontrar la puerta cerrada y las llaves en otro lugar? ¿No? Suerte que luego! Para aquellos que han tenido esta experiencia o no desea nunca, este proyecto le permitirá abrir su puerta de garaje con nay pero un smartphone/ta
Abridor de puerta de garaje "jugador 2"

Abridor de puerta de garaje "jugador 2"

No soy sólo un jugador, soy un entusiasta de los juegos de azar. Yo nací en el mismo año que Pong, jugar juegos de Juego Vortex y PlayStation ilustrado e incluso creó y enseñó una introducción al curso de desarrollo de videojuegos de L.S.U. mientras
Abridor de puerta de garaje IOT (Edison Intel y Android)

Abridor de puerta de garaje IOT (Edison Intel y Android)

Este instructivo describe un método que utiliza un Edison de Intel y una aplicación del teléfono/tablet Android como control remoto puerta garage. Esto no es realmente una nueva idea y soy consciente de proyectos similares ya que hay en la web, pero
Garaje buhardilla alzamiento eléctrico

Garaje buhardilla alzamiento eléctrico

Si eres como yo, tienes un montón de artículos de temporada para vacaciones diferentes ocupando espacio en su casa y sólo conseguir tiraron hacia fuera por un breve tiempo cada año. También puede, como yo, utilizar el espacio del ático sobre el garaj
$3 venta de garaje mesa marco vuelta Banco

$3 venta de garaje mesa marco vuelta Banco

hoy, hola vivo aquí se va a compartir cómo nuestro bastidor de mesa $3 venta de garaje convertido en un banco.Paso 1: El marco de la tabla de la arena Lo creo que nuestro no, encontramos esta mesa de metal en una venta de garaje por $3.  Faltaba la t
Instalar un abridor de puerta de garaje en tu moto

Instalar un abridor de puerta de garaje en tu moto

cuando me mudé a mi casa primero me alegré de finalmente poner mi moto en un garaje. He comprado puertas de garaje extra para hacer las cosas uno más conveniente para el carro y uno para cada moto (esposa monta demasiado). El problema que tuve con es
Guías de prevención de accidente entrada de garaje

Guías de prevención de accidente entrada de garaje

Esta es la historia de un driver de nuevo con su primera licencia, un coche nuevo, una entrada de garaje amplia de un coche y un papá. Estoy seguro que muchos de ustedes están familiarizados con lo que sucede a continuación. Después obtuve mi licenci