Hey,
aso ok. Ich dachte, dass man mit python global es installiert. Habe ich mich wohl geirrt.
@narpfel:
Ich kenne mich mit Python kaum aus. Brauche dies momentan nur für einen kleinen Zweck und wusste nicht, dass man dies importieren muss.
Das importieren verschiedener Module finde ich nicht so toll. Da sucht man z.b. ein Modul für was und findet es nicht. Bzw. ist Anfänger/Einsteiger und kapiert dabei nix. Das war ganz am Anfang für mich ein sehr großes Problem.
Nun läuft es so wie erhofft. Musste nurnoch eine while-schleife hinzufügen welche während es true ist überprüft ob beim Channel eine steigende Flanke ansteht und dann den Mailversand auslöst.
Mal ne generelle Frage zu wait_for_edge():
Wie funktioniert diese Funktion eigentlich?
Meine Sicht: Die Funktion erwartet je nach mitgegebenem Parameter eine fallende oder/und steigende Flanke. Und wenn diese nicht zutreffen wird None zurückgegeben. Und dann bei der Abfrage überprüfen wir ob die Funktion None zurückgibt, wenn ja liegt keines der Fälle vor wenn ja springt es in den else-block und führt die Aktion aus.
Ist dies so richtig?
Eine weitere Frage:
Wenn ich im ersten if statement nichts ausführen möchte kann ich ja auch break reinschreiben gel?
Mein Script:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf8 -*-
import RPi.GPIO as GPIO
import time
import logging
from marrow.mailer import Message, Mailer
logging.basicConfig(level=logging.INFO)
# Benötigte Werte:
# GPIO.LOW (alles ok)
# GPIO.HIGH (fehler)
# Pin-Nummern aus dem Layout benutzen (siehe gpio.jpg)
GPIO.setmode(GPIO.BOARD)
# input setzen auf Pin-Nummer: 7 = GPIO 4
GPIO.setup(7, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
channel = 7
while True:
channel = GPIO.wait_for_edge(channel, GPIO.RISING)
if channel is None :
print "Alles gut"
else:
# Mailversand
mail = Mailer({
'manager.use': 'futures',
'transport.use': 'smtp',
'transport.host': 'smtp.gmail.com', # smtp server deines emailanbieters
'transport.tls': 'ssl', # protokoll
'transport.username': '', # deine email adresse
'transport.password': '', # dein password
'transport.max_messages_per_connection': 5
})
mail.start()
#message = Message([('test', '')], [('Ich', '')], "Warnung!", plain="test")
message = Message([('Heizungsfehlerinformation ( = Titel der E-Mail)', '')], [('Ich', '')], "Warnung! (= Betreff der E-Mail)", plain="Die Heizung im EG gibt ein Highsignal zurück. Das heißt irgendwas stimmt nicht! ( = E-Mail Text)")
mail.send(message)
mail.stop()
print "Fertig"
time.sleep(1)