Raspberry PI hurðaskynjari - Senda email

Hurðaskynjari með Reed Switch.

Reed Switch er nemi sem segull segir til um hvort hann sé off eða on.

Þegar segull fer frá rofa opnast snertur og samband slitnar, svo þegar segull kemur aftur að rofa lokast snertan.

Þetta er einfaldasta leiðinn til að setja skynjara við hurð eða glugga.

Þessir skynjarar eru til í mörgum útgáfum, eftir hvaða hlutverk þeir eiga fara í.

Hér er ég með skynjara sem er ætlaður fyrir hurðir.

Þegar segull fer frá rofa fæ ég email um að hurða sé opin, fæ síðan aftur email þegar hurð er lokuð.

hurdsk2 hurdsk3 hurdsk1 hurdsk4

Hægt er fá email sem sms, en þá þarftu að stilla símanr að það taki við email sem sms, þetta þarf að gera á þjónustu síðum símafyrirtækis og það kostar.

Hér er kóðin sem settur var saman til að framkvæma þessa aðgerð. 

#!/usr/bin/python

# notandi hja gmail
notandi = 'jon'
lykilord = 'jonjon'

# stilla fra hverjum postur kemur og hvert hann a ad fara
From = "hindberid(a)gmail.com"
To =  "einhver(at)gmail.com"

Titill_opin = "Hurd er opin"
Skilabod_opin = "Hurdin inn i herbergi er opin "

Titill_lokud = "hurd er lokud"
Skilabod_lokud = "buid er ad loka hurd"


import time
import RPi.GPIO as io
io.setmode(io.BCM)
import string
import smtplib

#Hurd er "opin" eda "lokud".
def email(condition):
    print "Reyni ad senda post"
    if condition == 'opin':
        Body = string.join((
        "From: %s" % From,
        "To: %s" % To,
        "Subject: %s" % Titill_opin,
        "",
        Skilabod_opin,
        ), "\r\n")
    if condition == 'lokud':
        Body = string.join((
            "From: %s" % From,
            "To: %s" % To,
            "Subject: %s" % Titill_lokud,
            "",
            Skilabod_lokud,
            ), "\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"


#stilla raspberry ad nota GPIO 18
hurdar_skynjun = 18
skynjun = True

# nota innbyggt vidnam i raspberry sem pull_up
io.setup(hurdar_skynjun, io.IN, pull_up_down=io.PUD_UP)

# Hurd opin adgerdir
def hurd_opin():
    print("Hurd opin")
    email('opin')

# Hurd lokud adgerdir
def hurd_lokud():
    print("Hurd lokud")
    email('lokud')

while True:
    time.sleep(5) # Bid i 5 sek
    if io.input(hurdar_skynjun): # ef hurd opin
        if (skynjun):
            hurd_opin() # fara i def hurd_opin og framkvaema
            skynjun  = False # stilla skynjun i = astand til ad fa ekki annad email
    if not io.input(hurdar_skynjun): # ef hurd er lokud
        if not (skynjun):
            hurd_lokud() # fara i def hurd_lokud og framkvaema
            skynjun = True # stilla skynjun i = astand til ad fa ekki annad email