mein Raspi B+ soll am GPIO4 (das müsste Pin17 sein) auf Spannung horchen und bei einer 1 eine Email senden. Das ganze teste ich, indem ich das Programm starte und dann GPIO4 mit dem 3,3V per Jumperkabel kurzschließe. Das klappt soweit wie gewünscht.
Allerdings tritt ein unerwünschte Effekt auf beim Neustart des Pi auf: Das Python Programm startet automatisch nach dem Boot und sendet sofort genau 1x eine Mail, obwohl kein Jumperkabel angeschlossen ist, und horcht weiter. Brücke ich jetzt wieder GPIO4 und 3,3V sendet er wie gewohnt eine Mail.
Es ist ja genau das, was ich haben wollte, wäre da nicht die 1 Mail, die nach dem Boot versendet wird.
Als Autostart-Skript für die Anwendung habe ich übrigens .bashrc genommen.
Code: Alles auswählen
import smtplib
from email.mime.text import MIMEText
import RPi.GPIO as GPIO
import time
import socket
import datetime
import sys
# Aktuelles Datum holen
Datum = datetime.date.today()
#setup gpio pins
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN)
#Print message on screen
print "Warte auf Signal am Pin 4"
#start loop
loop = "1"
while loop == "1":
#test GPIO for input
if GPIO.input(4):
#create email
message = """Diese E-Mail wurde vom Raspberry Pi versendet."""
msg = MIMEText(message)
msg['subject'] = 'Ereignis auf Raspberry Pi - %s' % time.strftime('%a %d %b %Y, $
msg['from'] = 'stevenkrieg@hotmail.de>'
msg['to'] = 'stevenkrieg@hotmail.de'
msg['Date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z')
# send mail
s = smtplib.SMTP('smtp-mail.outlook.com')
s.starttls()
s.login('stevenkrieg@hotmail.de' , '********')
s.sendmail(msg['From'], msg['To'], msg.as_string())
s.quit
print "Email sent"
time.sleep(2)
while GPIO.input(4):
pass