Forum

Einloggen | Registrieren | RSS  

raspberry pi und PIR (Computertechnik)

verfasst von luemar(R), 07.05.2017, 17:30 Uhr

» » » Hallo Experten und bastelix,
» » Das könnte man übrigens auch falsch verstehen :-P ;-)
» »
» » » schätze die eingehende Antwort, lerne auf diesem Forum mehr als in
» » » Lehr-Texten und Tutorials.
» » Das ist doch schon mal was :-) Aber das algorithmische denken musst du
» dir
» » noch aneignen, vielleicht hilft es dir dabei wenn du mal ein einfaches
» » Python-Script als Programmablaufplan/Flussdiagramm aufzeichnest um zu
» » verstehen was der Rechner eigentlich mit deinen Befehlen anstellst. (
» » https://de.wikipedia.org/wiki/Programmablaufplan ).
» »
» » » >>while True:
» » » >>>time.sleep(8)
» » Hier hast du wieder eine Endlosschleife deren einziger Inhalt es ist
» dein
» » Programm für acht Sekunden schlafen zu legen ;-)
» »
» » Was ich bei der Gelegenheit mal loswerden muss: An Python stört mich
» » extremst, dass Programmblöcke nur durch die Einrückung definiert werden.
» » Das ist schei*e lesbar und fördert das einbauen logischer Fehler...
» »
» » So genug gemotzt ;-)
» »
» » » Mein PIR PI-ADA-189 verhält sich in verschiedenen Scripts erratisch
» d.h.
» » es
» » » gibt kein 1:1 Verhältnis
» » Dein PIR wird nicht über dein Python-Programm gesteuert, wann der PIR
» den
» » Data-Pin auf HIGH/LOW zieht ist über die Hardware definiert. Dein Script
» » wertet die Pegeländerungen lediglich aus (um genau zu sein wann immer
» der
» » Pin von LOW auf HIGH geht, aufgrund des Parameters gpio.RISING bei
» » gpio.add_event_detect) und reagiert darauf entsprechend. Du musst also
» für
» » die Wartezeiten die Eigenschaften des PIR berücksichtigen, z.B. dass er
» » Bewegungen nur alle X Sekunden (das müsste sich über einen Poti
» einstellen
» » lassen, aber nur bis zu einer gewissen Untergrenze)
» »
» » Dein Python-Script muss also selber entscheiden wann es auf den IRQ vom
» PIR
» » reagiert und z.B. ne Mail verschickt oder den IRQ ignoriert.
» »
» » » Ich möchte 2 Dinge erreichen:
» » Anders formuliert: Sendet der PIR einen IRQ wird eine Aktion ausgeführt,
» » solange die Aktion das letzte mal vor PIR_DELAY Sekunden ausgeführt
» wurde.
» » Danach werden alle PIR IRQs für PIR_IGNORE_TIME Sekunden ignoriert. Und
» » dann beginnt das ganze wieder von vorn.
» »
» » Ich hab da mal was bei gist eingestellt (ist online besser lesbar als im
» » Forum):
» https://gist.github.com/anonymous/5c25da72e1c24705d626c46a99a59b18
» » Dein Foto-Machen und Mail-Verschicken Code sollte dann in Zeile 53
» » aufgerufen werden, die restlichen prints sind Debug-Ausgaben. Ich hoffe
» in
» » den Code-Kommentaren ist soweit alles erklärt. Könnte man vermutlich
» noch
» » eleganter lösen, aber nicht nach 22 Uhr und halbwegs
» Anfänger-Verständlich
» » ;-)
» »
» » » Wenn das mal funktioniert möchte ich neben dem Bild noch ein SMS
» » erhalten
» » » und mir einen remote access
» » » einrichten.
» » Divide and conquer ;-) beim remote access solltest dich aber schon etwas
» » tiefer mit der Materie Netzwerksicherheit auskennen, sonst ist dein Pi
» » möglicherweise bald aktives Mitglied in einem IoT-Botnetz...
»
» Hallo bastelix,
» habe mich mit Deinen Hinweisen und insbesondere mit dem auf
» https://gist.github.com/anonymous/5c25da72e1c24705d626c46a99a59b18
» veröffentlichen
» Script auseinander gesetzt .. toller Service !!
»
» Vom remote Access sehe ich ab, habe weitere und gleichlautende Kommentare
» gelesen.
»
» Glaubte mich am Ziel, werde jetzt aber einen Syntaxfehler einfach nicht
» los:
»
» 1. Ein einfaches Script, das bei jedem Ansprechen des PIR ein Foto macht
» und mir per E-Mail schickt
» funktioniert problemlos:
»
» #!/usr/bin/python3
» import RPi.GPIO as gpio
» import smtplib, sys, picamera, time
» from email.mime.image import MIMEImage
» from email.mime.multipart import MIMEMultipart
» from email.mime.text import MIMEText
» from email.header import Header
»
» gpio.setmode(gpio.BOARD)
» gpio.setup(23, gpio.IN)
» def mein_callback(pin):
» frm='meine E-Mail Adresse'
» to='meine E-Mail Adresse'
» smtpHost='smtpauth.bluewin.ch'
» smtpPort=587
» smtpUser='mein Name'
» smtpPassword='mein Passwort'
» subj='von Raspberry2'
» msg='Meldung von PIR 2'
» fn='foto1.jpg'
» camera = picamera.PiCamera()
» camera.capture(fn, resize=(640,480))
» camera.close()
»
» mime=MIMEMultipart()
» mime['From']=frm
» mime['To']=to
» mime['Subject']=Header(subj, 'utf-8')
» mime.attach(MIMEText(msg, 'plain', 'utf-8'))
»
» f = open(fn, 'rb')
» img = MIMEImage(f.read())
» f.close()
» mime.attach(img)
» smtp=smtplib.SMTP(smtpHost, smtpPort)
» smtp.login(smtpUser, smtpPassword)
» smtp.sendmail(frm, to, mime.as_string())
» smtp.quit()
» try:
» gpio.add_event_detect(23, gpio.RISING, callback = mein_callback)
» while True:
» time.sleep(10)
» except KeyboardInterrupt:
» print('ENDE')
»
» 2. Dein auf
» https://gist.github.com/anonymous/5c25da72e1c24705d626c46a99a59b18
» veröffentlichtes
» Script funktioniert ebenfalls bestens.
»
» 3. Hingegen wenn ich beide Scripts zusammenfüge:
»
» #!/usr/bin/python3
» #-*- coding: utf-8 -*-
»
» import sys, time, smtplib, picamera
» import RPi.GPIO as gpio
» from email.mime.image import MIMEImage
» from email.mime.multipart import MIMEMultipart
» from email.mime.text import MIMEText
» from email.header import Header
»
» gpio.setmode(gpio.BOARD)
» gpio.setup(23, gpio.IN)
»
» MAX_COUNT = 3
» PIR_DELAY = 10
» PIR_IGNORE_TIME = 60
»
» current_count = 0
» last_count= 0
» last_time = 0
» DEBUG = True
»
» def mein_callback(pin):
» global current_count
» current_count += 1
» if DEBUG:
» print('DEBUG: PIR2 IRQ um %s zum %sten mal' %
» (time.strftime('%d.%m.%Y %H:%M:%S')
»
» gpio.add_event_detect(23, gpio.RISING, callmack = mein_callback)
» if DEBUG:
» print('DEBUG: PIR2 wartet auf IQR')
»
» try:
» while True:
» if current_count > last_count and last_count < MAX_COUNT and
» time.time(last_time + PIR_DELAY)
» print ('PIR2 wurde %s mal ausgeloest' % current_count)
»
» frm = 'meine E-Mail Adresse'
» to = 'meine E-Mail Adresse'
» smtpHost = 'smtpauth.bluewin.ch'
» smtpPort = 587
» smtpUser = 'mein Name'
» smtpPassword = 'mein Passwort'
» subj = 'von Raspberry2'
» msg = 'Meldung von PIR2'
» fn = 'foto1.jpg'
» camera = picamera.PiCamera()
» camera.capture(fn, resize(640, 480))
» camera.close()
» mime = MIMEMultipart()
» mime['From'] = frm
» mime['To'] = to
» mime['Subject'] = Header(subj, 'utf-8')
» mime.attach(MIMEText(msg, 'plain', 'utf-8')
»
» f = open(fn, 'rb')
» img = MIMEImage(f.read())
» f.close()
» mime.attach(img)
» smtp = smtplib.SMTP(smtpHost, smtpPort)
» smtp.login(smtpUser, smtpPassword)
» smtp.sendmail(frm, to, mime.as_string())
» smtp.quit()
»
» last_count = current_count
» if last_count >= MAX_COUNT:
» if DEBUG:
» print('DEBUG: Beginne Ruhezustand fuer %s Sekunden' %
» PIR_IGNOR$
» time.sleep(PIR_IGNORE_TIME)
» if DEBUG:
» print('Ende Ruhezustand, %s PIR2 IRQs registriert' %
» (current_c$
» last_count = 0
» current_count = 0
» time.sleep(2)
» except KeyboardInterrupt:
» gpio.cleanup()
» print('ENDE PIR_V1.py)
»
» bekomme ich ewig einen Syntaxfehler:
» File "./PIR_V1.py", line 56
» f = open(fn, 'rb')
» ^
» SyntaxError: invalid Syntax
»
» Habe alles x-mal überprüft, neu geschrieben etc. und finde den Fehler
» einfach nicht obwohl die beiden
» Code Blocks für E-Mail und Foto identisch sind.
»
» Vielen Dank im voraus, luemar.

sorry ich kriegs nicht hin mit dem Einrücken... probiers nochmal neu



Gesamter Thread:

raspberry pi und PIR - luemar(R), 17.04.2017, 20:30 (Computertechnik)
raspberry pi und PIR - Gast, 17.04.2017, 20:48
raspberry pi und PIR - luemar(R), 17.04.2017, 20:56
raspberry pi und PIR - Gast, 17.04.2017, 21:34
raspberry pi und PIR - luemar(R), 18.04.2017, 11:39
raspberry pi und PIR - finni(R), 18.04.2017, 14:12
raspberry pi und PIR - luemar(R), 18.04.2017, 17:17
raspberry pi und PIR - bastelix(R), 18.04.2017, 12:06
raspberry pi und PIR - bastelix(R), 18.04.2017, 11:56
raspberry pi und PIR - luemar(R), 20.04.2017, 12:04
raspberry pi und PIR - bastelix(R), 22.04.2017, 22:46
raspberry pi und PIR - luemar(R), 27.04.2017, 18:56
raspberry pi und PIR - bastelix(R), 27.04.2017, 23:47
raspberry pi und PIR - luemar(R), 07.05.2017, 17:29
raspberry pi und PIR - luemar(R), 07.05.2017, 17:30
raspberry pi und PIR - bastelix(R), 07.05.2017, 19:47
raspberry pi und PIR - luemar(R), 08.05.2017, 22:03
raspberry pi und PIR - ELEKTRONIK- MODELLBAU- FREUNDE, 19.04.2017, 18:10