Skynjun með Raspberry og senda mail

Skynjun með Raspberry Pi

Vatn,hiti,reykur,hurð senda mail og kveikja á viðvörun.

Skemmtileg verkefni.

Hér er mynd af vatnskynjara, sem fyrsta prufun, næst er fá sér reykskynara og tengja inn á flautuna í honum.

 vatnskynjari 1

vatnskynjari 2

Hér er svo rásin komin með vörn á innganga með Zener díóðu 3.3v. GPIO eru viðkvæmir fyrir mistökum. ( lærði það af reynslunni )

Hægt er að setja t.d flautu í stað Led, eða relay o.s.fr. einnig rofa í staðinn fyrir kopar.

Python scripta sem gerir þetta kleyft, bútað saman héðan og þaðan.

Notað er gmail til að senda póstinn, einfalt að búa til reikninga þar.

Skrá sig inn á Raspberry PI

búa til skrá.

pi@raspberrypi ~ $ nano -w skynjun

Afrita textann hér að neðan inn í skránna. og svo crtl+x og yes til að vista.

gera síðan skrá keyrslu hæfa

pi@raspberrypi ~ $ chomd +x skynjun

virkja skránna.

pi@raspberrypi ~ $ ./skynjun

Svo er bara prufa setja víra saman eða vatn á þá, passa bara hafa þá mjög nálægt ef vatn er notað.

gmail

mail 

Ef þú vilt síðan að þessi litla scripta fari í gang við endurræsingu þá er þetta einföld leið.

pi@raspberrypi ~ $ sudo su - ( gera þessar breytingar sem root því hann þarf að keyra skránna )

pi@raspberrypi ~ $ export EDITOR=nano ( ég nota nano svo.. )

pi@raspberrypi ~ $ crontab -e

pi@raspberrypi ~ $ bæta þessum streng inn í crontab
@reboot /home/pi/skynjun
ctrl+x svo yes til að vista

pi@raspberrypi ~ $ update-rc.d cron defaults

pi@raspberrypi ~ $ reboot

Síðan til að athuga hvort scriptan hafi farið í gang við reboot þá gefuru skipuna top

pi@raspberrypi ~ $ top 

Þá sést að scriptan keyrir.

skynjun

 {fcomment}

#!/usr/bin/python
 
notandi = 'jonjon' 
lykilord = 'jonjon'
 
From = "jonjon(hja)gmail.com"
To =  "jonjon2(hja)gmail.com"
 
Titill_blautt = "Skynja vatn"
Skilabod_blautt = "Einn skynjari er blautur"
 
Titill_thurrt = "skynja ekki vatn"
Skilabod_thurrt = " Engin skynjari er blautur"
 
import smtplib
from email.mime.text import MIMEText
import RPi.GPIO as GPIO
import string
import time
 
#Umhverfid annad hvort "blautt" eda "thurrt".
def email(condition):
    print "Reyni ad senda post"
    if condition == 'blautt':
        Body = string.join((
        "From: %s" % From,
        "To: %s" % To,
        "Subject: %s" % Titill_blautt,
        "",
        Skilabod_blautt,
        ), "\r\n")
    if condition == 'thurrt':        
        Body = string.join((
            "From: %s" % From,
            "To: %s" % To,
            "Subject: %s" % Titill_thurrt,
            "",
            Skilabod_thurrt,
            ), "\r\n")
    
    server = smtplib.SMTP('smtp.gmail.com:587')
    server.starttls()
    print "Skra mig inn sem..."
    server.login(notandi,lykilord)
    print "Skra mig inn sem "+notandi+"."
    server.sendmail(From, [To], Body)
    server.quit()
    print "Postur sendur"
 
def RCtime (RCpin):
    reading = 0
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(RCpin, GPIO.OUT)
    GPIO.output(RCpin, GPIO.LOW)
    time.sleep(0.1) 
    GPIO.setup(RCpin, GPIO.IN)
    while True:
        if (GPIO.input(RCpin) == GPIO.LOW):
            reading += 1
        if reading >= 1000:
            return 0
        if (GPIO.input(RCpin) != GPIO.LOW):
            return 1
 
def led_a (pin):
 
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(pin, GPIO.OUT)
    GPIO.output(pin, GPIO.HIGH)
 
def led_af(pin):
 
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(pin, GPIO.OUT)
    GPIO.output(pin, GPIO.LOW)
 
# Gengur i hringi
 
print 'Bid eftir breytingum'
while True:
    time.sleep(5) # Bid i 5 sek
    if RCtime(18) == 1:
        led_a(17)
        print "Skynjari er blautur"
        email('blautt')
        print "Thad er blautt"
        while True:
            time.sleep(5) # Bid i 5 sek
            if RCtime(18) == 0:
                led_af(17)
                print "Thad er thurt"
                email('thurrt')
                print "Bid eftir breytingum"
                break