2020-12-07に更新

【Raspberry Pi】インターホンが押されたらSlackへ通知する仕組みを作る

本記事は2020/05/09に作成したものです。
最新の環境ではうまく動作しない可能性がありますのでご注意ください

ステイホーム中の運動といえば、我が家はNetflix見ながらのローラー台です。
今とても安全に運動できるのでホント助かっています。

8ba6c0f698b5cb26b9930e9aee59013e.jpg

ただ、これやっているとイヤホンしていることもあってインターホンのチャイム音に全く気がつけないんですよね。。。このままでは、宅配業者を返してしまうこともあり大変申し訳ない。
そこで、「インターフォンが押されたらSlackへ通知する仕組みを作ればいいじゃないか」 となり、ラズパイとセンサーを組み合わせて作ってみました。
これならチャリもがいていても、スマートウォッチの通知でバッチリ気がつきます。

どのように検知させるか?

我が家はインターホンが押されると、親機のディスプレイが点灯します。

01f835e39314ac81894316137738f118.jpg

明るさの変化を検知できるフォトレジスタを使ったセンサーなら、簡単に検知できそうです。
ネットで、明るさの変化をデジタル出力するセンサーを見つけたのでこれを使うことにしました。
3.3Vで駆動させると、暗くなると3.3V、明るくなると0Vになります。
つまみは検知する明るさの調整もできます。安いのに素敵なセンサーです。

用意したもの

ラズパイとセンサーの接続

e22ed1030afb8045e3148a35867184ff.png
b805b31c8a8587b58cbacab1e04051f7.jpg

インターホン親機へセンサーを固定

48208a459bcda1c9cb7d1d5e613d1188.jpg
仮固定なので適当です。。。
インターホンを押して、センサーがちゃんと検知するかつまみで調整をします。
(このセンサーは検知すると基盤のLEDが点灯するので、調整がとても簡単!)

センサーが検知したらSlackへ通知するコード

Slackで「Incoming Webhook」の設定が済んでいることと、slackwebモジュールのインストールが完了していることを前提にしています
※現在は非推奨になっている「カスタムインテグレーション」で作成した「Incoming Webhook」で動作確認しています。

/home/pi/chime2slack.py

import RPi.GPIO as GPIO
from time import sleep
import slackweb

SENSOR = 4
GPIO.setwarnings(False)  
GPIO.cleanup() 
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
SLACK = slackweb.Slack(url="https://hooks.slack.com/services/xxxx/xxxx/xxxx") #Incoming Webhookのurlをここへ記述します

while True:
    if GPIO.input(SENSOR) == GPIO.LOW:
        SLACK.notify(text="チャイムが鳴りました!")
        sleep(60) #連続で通知されないようにスリープを入れる
    else:
        pass
    sleep(0.01)

Slack通知イメージ

undefined.jpg

OS起動時にchime2slack.pyを実行させる

OS起動時に自動実行すれば、都度実行させなくていいので運用がラクです

chime2slack.pyに実行権限を追加する

$ chmod +x /home/pi/chime2slack.py

rc.localの編集

rc.localで自動起動させるやり方はうまく動作しないこともあるのでおすすめできませんが...

$ sudo vi /etc/rc.local

rc.localの中身

#!/bin/bash -e
sudo -u pi /usr/bin/python3 /home/pi/chime2slack.py &
exit 0

動作確認

OSを再起動して、インターホンを押してSlackへ通知がきたらOKです!

所感

とてもイイです。安いセンサーだけど問題なく使えています。
欲を言えば、Echo showにも通知させたい。。。
最新型インターホンがある家は、わざわざこんなことしなくてもスマホ通知できると思いますが、
我が家のようなインターホン使ってて同じ悩みがある人は、簡単に実装できるのでオススメです。

ツイッターでシェア
みんなに共有、忘れないようにメモ

arohajiro

しがない元インフラエンジニアです

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント