Im dem Theard soll später mal eine Variable zurückgesetzt bzw. verändert werden, da ich dieses Email Programm nutze um einen bestimmten Inhalt auf einem einfachen LCD Display (4x20) anzuzeigen. So soll bei Betätigen des Tasters ein anderer Inhalt angezeigt werden oder das Display soll gelöscht werden.
Hier mein Versuch:
Python
#! /usr/bin/python
import imaplib, time
import RPi.GPIO as GPIO
GREEN_PIN = 25
RED_PIN = 24
class MailChecker:
def __init__(self, server, port):
GPIO.setmode(GPIO.BCM)
GPIO.setup(GREEN_PIN, GPIO.OUT)
GPIO.setup(RED_PIN, GPIO.OUT)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setwarnings(False)
try:
self.m = imaplib.IMAP4_SSL(server, port)
except:
self.do_error("Server nicht erreichbar")
def do_error(self, error):
print(error)
exit()
def log_in(self, user, password):
try:
self.m.login(user, password)
except:
self.do_error("Fehler: Login")
def check_mail(self):
type, data = 0, 0
# Inbox nach ungelesenen Mails durchsuchen. Kann weiter eingesckt werden z.B. '(FROM "Horst")'
try:
self.m.select()
type, data = self.m.search(None, "UNSEEN")
except:
self.do_error("Ausnahme: Mailsabrufen")
if type == "NO":
self.do_error("Fehler: Mailsabrufen")
self.report(data)
def start_checking(self, interval):
while True:
self.check_mail()
time.sleep(interval)
def report(self, data):
message_count = len(data[0].split())
if message_count > 0:
print("Sie haben %i neue Mails" %
message_count)
GPIO.output(RED_PIN, GPIO.LOW)
for i in range(1, 100):
# Ge LED Blinkt
GPIO.output(GREEN_PIN, GPIO.LOW)
time.sleep(.2)
GPIO.output(GREEN_PIN, GPIO.HIGH)
time.sleep(.2)
else:
print("Keine neuen Mails")
GPIO.output(GREEN_PIN, GPIO.LOW)
GPIO.output(RED_PIN, GPIO.HIGH)
def mycallback(callback):
print("test")
GPIO.add_event_detect(17, GPIO.RISING, callback=mycallback)
if __name__ == "__main__":
user = "tobias.koch.9681@gmail.com"
password = "fcb158400"
server = "imap.gmail.com"
port = 993
# oder welcher port auch immer relevant ist
checker = MailChecker(server, port)
checker.log_in(user, password)
checker.start_checking(10)
Display More
Ich erhalte aber folgende Fehlermeldung:
Code
sudo python mail.py
Traceback (most recent call last):
File "mail.py", line 11, in <module>
class MailChecker:
File "mail.py", line 78, in MailChecker
GPIO.add_event_detect(17, GPIO.RISING, callback=mycallback)
RuntimeError: No access to /dev/mem. Try running as root!
Was mache ich falsch :D?