Help us understand the problem. What is going on with this article?

Raspberry Piで作ったメール通知される玄関の呼び出しブザー

More than 1 year has passed since last update.

概要

呼び出しブザーと書いているがメールを飛ばすのみ

環境

python3.7.0
raspbian9.4
Raspberry Pi B+

回路

GPIO25及びGNDにそれぞれジャンパーを接続。(ピン名がGPIOxx(で抵抗なしなら)25番以外でもOK)
ジャンパーをリード線に繋げ玄関まで引っ張る。
玄関に引っ張ったリード線にプッシュ式のスイッチをつける。(ものがなかったので選択バサミで代用)

と、プッシュ式のスイッチon/offのみとシンプル構成。
リード線を10m程度曳き回しているので、ノイズ(静電気?)を拾ってそのままだと誤検知をしてしまう。
回路側で処理するのは知識が不足しているのでプログラムで対処している。

プログラム

スイッチのonを検知してメールを飛ばすのみ

スイッチon部分

GPIO.wait_for_edge(pin,GPIO.FALLING)で押された時を検知。
ただし、ノイズを拾ってしまう時があるの。静電気だと一瞬なので0.1秒待ってまだ押されているかを確認している。
確認後visitmail()という関数でメールを飛ばしている。
その後の60秒スリープはブザー連打されると面倒なための処理。

#!/usr/bin/env python3
# coding: utf-8
import time

import RPi.GPIO as GPIO

from mail import visitmail

print("start doorphone moniter")

GPIO.setmode(GPIO.BCM)
pin = 25

GPIO.setup(pin, GPIO.IN,pull_up_down=GPIO.PUD_UP)

try:
    while True:
        GPIO.wait_for_edge(pin,GPIO.FALLING)
        time.sleep(0.1)
        if GPIO.input(pin) == GPIO.LOW:
            visitmail()
        time.sleep(60)

except KeyboardInterrupt:
    print("break")
    GPIO.cleanup()

メール送信部分

単純にメールを飛ばすのみ。メール送信用パスワードだけ環境変数から読み込み
(mail.py)

#!/usr/bin/env python3
# coding: utf-8
import configparser
from datetime import datetime
from email.mime.text import MIMEText
from smtplib import SMTP
import os

def visitmail():
    inifile = configparser.ConfigParser()
    inifile.read('./config.ini', 'UTF-8')

    ini_host = inifile.get('server', 'host')
    ini_port = inifile.get('server', 'port')
    ini_from = inifile.get('mail', 'from')
    ini_to = inifile.get('mail', 'to')
    ini_title = inifile.get('mail', 'title')

    with SMTP(host=ini_host, port=ini_port) as smtp:
        smtp.starttls()
        smtp.login(
                user = ini_from,
                password = os.environ['MAIL_PASSWORD'],
                )
        msg = MIMEText(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
        msg['Subject'] = ini_title
        msg['To'] = ini_to
        msg['From'] = ini_from

        smtp.send_message(
                from_addr = ini_from,
                to_addrs = ini_to.split(','),
                msg = msg,
                )  

(config.ini)

[server]
host = mail.hoge.co.jp
port = 587

[mail]
from = kitamura@hoge.co.jp
to = kitamura@hoge.co.jp,keitaiaddr@ezweb.ne.jp
title = 呼出ブザーが押されました

追記

停止処理でバグを踏んだのでこちらに修正した箇所も入っているソースをのせました。

YoshitakeKitamura
ボルダリングジムと副業の社内SEやっています https://bouldering-climbing.kyoto/ 伏見桃山の店 https://www.rocher.kyoto.jp/ 宇治槙島の店 https://www.rocher.kyoto.jp/arbr/ 個人ブログ
https://www.rocher.kyoto.jp/arbr/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした