Arduino code python Gmail

Bonjour,
Je suis actuellement en train de travailler sur l'arduino couplé à Gmail. Je voudrais que lorsque je reçois un mail, une led s'allume! Cependant cela ne marche pas! je sais que mon branchement est bon, cela est donc du au code. Le code python, lorsque je l'éxécute marche, il doit donc y avoir un problème sur le code arduino. Si quelqu'un a une idée?
Code Python
import serial, sys, feedparser
#Settings - Change these to match your account details
USERNAME="@gmail.com"
PASSWORD=""
PROTO="https://"
SERVER="mail.google.com"
PATH="/gmail/feed/atom"
SERIALPORT = "/dev/tty.usbmodem621" # Change this to your serial port!

Set up serial port

try:
ser = serial.Serial(SERIALPORT, 9600)
except serial.SerialException:
print "Veuillez relier votre Arduino a lordinateur ou verifier la librairie"
sys.exit()
newmails = int(feedparser.parse(PROTO + USERNAME + ":" + PASSWORD + "@" + SERVER + PATH)["feed"]["fullcount"])

Output data to serial port

if newmails > 0:
ser.write("1")
print "some mail"
else:
ser.write("0")
print "no mail"
#print data to terminal

Close serial port

ser.close()

Code Arduino
int outPin = 9; // Output connected to digital pin 9
int mail = LOW; // Is there new mail?
int val = '1'; // Value read from the serial port
void setup()
{
pinMode(outPin, OUTPUT); // sets the digital pin as output
Serial.begin(9600);
Serial.flush();
}
void loop()
{
// Read from serial port
if (Serial.available())
{
val = Serial.read();
Serial.println(val);
if (val == '1') {
digitalWrite(outPin, HIGH);
}
else if (val == '0') {
mail = LOW;
}
}
// Set the status of the output pin
digitalWrite(outPin, mail);
}

D'un côté tu envoies de chaines de caractères et de l'autre tu lis des caractères.
Vaudrait mieux envoyer et lire des caractères.

T'as aussi un problème là, soit tu pilotes la led directement dans le bloc if, soit tu le fais via une variable, mais dans ton cas ça va éteindre la LED immédiatement après l'avoir allumée:

Serial.println(val);
if (val == '1') {
digitalWrite(outPin, HIGH);
}
else if (val == '0') { 
mail = LOW;
}
}
// Set the status of the output pin
digitalWrite(outPin, mail);
}

A remplacer par un truc:

Serial.println(val);
if (val == '1') {
mail = HIGH;
}
else if (val == '0') { 
mail = LOW;
}
}
// Set the status of the output pin
digitalWrite(outPin, mail);
}

Enfin si tu veux t'épargner de devoir coder côté Arduino, si tu veux simplement commander des entrées/sorties depuis Python, tu peux aussi utiliser un truc comme Python Firmata:

J'ai découvert le protocole Firmata récemment et ça me simplifie bien les tests de mes entrées/sorties.

Yep!

Un vieux souvenir de déjà vu : http://arduino.cc/forum/index.php/topic,89041.15.html

@+

Zoroastre.