Tras varios dias sin recibir respuesta (ojo, no lo digo quejándome! Al contrario, eso me ha impulsado a investigar todavía más árduamente), he descubierto el fallo...
El fallo residía en la llamada a Serial.flush(), el cual dejó de funcionar a partir de 1.0, y eso corrompía las siguientes lecturas de Serial recibidas por el programa en Python...
Dejo los códigos de nuevo, pero actualizados, por si alguien quiere repetir el proyecto!
(yo de momento lo usaré como base para el siguiente proyecto que quiero, un avisador remoto)
Codigo Arduino:
//Avisador GMail
//Original por Zunayed Ali
//Retocado por arduleo
int outPin = 13; //Ponemos el pin 13 como salida
int mail = LOW; //Creamos una variable int llamada "mail" con el valor inicial LOW, ya que no queremos falsos positivos
int val;
void setup()
{
pinMode(outPin, OUTPUT); //Seleccionamos el pin13 (outPin) como salida
Serial.begin(9600); //Iniciamos la comunicacion serial
}
void loop()
{
if (Serial.available()) //En caso de que exista comunicacion Serial
{
val = Serial.read(); //La variable val tomará el valor de la lectura recibida por Serial
Serial.println(val); //Imprimirá en consola (enviará al Arduino) el valor de val
if (val == 'M') mail = HIGH; //Si el valor recibido (val) es 'M', la variable mail sera HIGH
else if (val == 'N') mail = LOW; //Si el valor recibido (val) es 'N', la variable mail sera LOW
}
digitalWrite(outPin, mail); //Escribimos la informacion de mail (HIGH en caso de que haya, LOW en caso de que no) en el pin 13
}
Y aqui el codigo de Python (necesarias las librerias pySerial y feedparser)
#Codigo original creado por Zunayed Ali
#deyanuz.com
#Gmail notifier
#feedparser module download it from http://www.feedparser.org/
# pySerial module also needed
import serial, feedparser, time
#Seleccionamos nuestro puerto Serial (CAMBIAR VALOR DE SERIALPORT AL QUE CORRESPONDA)
SERIALPORT = 0
#Abrimos la comunicacion serial
ser = serial.Serial(SERIALPORT, 9600)
loop = 1
prevCheck = 0
while loop > 0:
#Seleccionamos el xml que tomaremos como base (REEMPLAZAR LAS MAYUSCULAS POR LOS DATOS CORRESPONDIENTES)
d = feedparser.parse('https://TUDIRECCIONDEGMAIL:TUPASSDEGMAIL@mail.google.com/mail/feed/atom')
#Obtenemos el titulo del xml (Nuestra bandeja de entrada de GMail)
print d.feed.title
newMail = len(d['entries']) #Creamos la variable newMail
#Asignamos un delay, para que compruebe cada X segundos la bandeja de entrada
time.sleep(10)
#Si hay nuevos correos
if newMail > 0:
#Enviamos por comunicacion serial el valor 'M' e imprimimos en la consola de Python "Tienes correo nuevo"
ser.write('M')
print "Tienes correo nuevo"
#Si no hay correos nuevos
else:
#Mandamos el valor 'N' por comunicacion serial e imprimimos en la consola de Python "No tienes correo nuevo"
ser.write('N')
print "No tienes correo nuevo"
Adjunto un zip con ambos archivos y las librerias de python necesarias:
http://arduleo90.site50.net/ARCHIVOS%20PARA%20DESCARGA%20PUBLICA/GMail_notifier.zip
Espero que a alguien le pueda resultar útil!