Emailabfrage mit Python, Ansteuerung LED

Hallo zusammen,

ich hab da mal ein Problem, dass mich seit einigen Tagen beschäftigt.

Wunsch:

Ich möchte ein Googlemail Postfach per Python Code auf ungelesene Nachrichten abfragen. Ist eine Ungelesene im Posteingang soll bis zur Lesung/Löschung eine LED am Arduino angesteuert werden.
Wenn keine Ungelesene Nachricht im Posteingang ist soll auch nichts passieren.

Im Idealfall soll noch der Mail Absender ausgewertet werden. Bsp.: Absender XY: LED 6, Absender AB: LED 7 usw.

Problem:

Beim messen an den Pins, wird jeweils nur kurz 1,5 V geschaltet. Egal was Python sendet (0 oder 1) und wie oft ich den Loop laufen lassen oder welche Zeit ich im Sketch auch eingegeben habe.

Getestet habe ich bislang an der eingebauten LED (diese flackert bei einer ungelesen Mail) und an Pin 6 oder 7. Da passiert allerdings nichts.

Anbei zwei von vier Codes, die ich bislang ausprobiert habe:

Arduino:

int outPin = 6; // Output connected to digital pin 6
int mail = LOW; // Is there new mail?
int val; // 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') mail = HIGH;**
** else if (val == '0') mail = LOW;**
** }**

** // Set the status of the output pin**
** digitalWrite(outPin, mail);**
}

Python:

import serial, sys, feedparser

#Settings - Change these to match your account details
USERNAME="username@gmail.com"
PASSWORD="Password"
PROTO="https://"
SERVER="mail.google.com"
PATH="/gmail/feed/atom"

SERIALPORT = "COM4" # Change this to your serial port!

# Set up serial port
try:

  • ser = serial.Serial(SERIALPORT, 9600)*
    except serial.SerialException:
  • sys.exit()*

newmails = int(feedparser.parse(

  • PROTO + USERNAME + ":" + PASSWORD + "@" + SERVER + PATH*
    )["feed"]["fullcount"])

# Output data to serial port
if newmails > 0: ser.write('1')
else: ser.write('0')

# Close serial port
ser.close()

PS: Ich bin auf einem Anfängerlevel und habe bislang nur diese gängigen Schaltungen (Led, Button, Neopixel) programmiert. Mit Python mach ich durch dieses Projekt meine ersten Gehversuche.

Ich hoffe, dass das verständlich war.

Vorab vielen Dank an Alle die mir eine Hilfestellung geben können.

Schöne Grüße

Patrick

Ich nehme mal an daß Pyton nicht nur die Werte "1" und "0" sendet, sondern auch CR und NL

Dadurch wird die LED sofort wieder ausgeschaltet.

void loop()
{
   // Read from serial port
   if (Serial.available())
     {
     val = Serial.read();
     Serial.println(val);
     if (val == '1') 
        { 
        mail = HIGH;
        }
     else 
        {       
        if (val == '0')
           {
           mail = LOW;
           }
        }
    }
// Set the status of the output pin
digitalWrite(outPin, mail);
}

Grüße Uwe