本記事は2020/05/09に作成したものです。
最新の環境ではうまく動作しない可能性がありますのでご注意ください。
ステイホーム中の運動といえば、我が家はNetflix見ながらのローラー台です。
今とても安全に運動できるのでホント助かっています。
ただ、これやっているとイヤホンしていることもあってインターホンのチャイム音に全く気がつけないんですよね。。。このままでは、宅配業者を返してしまうこともあり大変申し訳ない。
そこで、「インターフォンが押されたらSlackへ通知する仕組みを作ればいいじゃないか」 となり、ラズパイとセンサーを組み合わせて作ってみました。
これならチャリもがいていても、スマートウォッチの通知でバッチリ気がつきます。
我が家はインターホンが押されると、親機のディスプレイが点灯します。
明るさの変化を検知できるフォトレジスタを使ったセンサーなら、簡単に検知できそうです。
ネットで、明るさの変化をデジタル出力するセンサーを見つけたのでこれを使うことにしました。
3.3Vで駆動させると、暗くなると3.3V、明るくなると0Vになります。
つまみは検知する明るさの調整もできます。安いのに素敵なセンサーです。
仮固定なので適当です。。。
インターホンを押して、センサーがちゃんと検知するかつまみで調整をします。
(このセンサーは検知すると基盤のLEDが点灯するので、調整がとても簡単!)
Slackで「Incoming Webhook」の設定が済んでいることと、slackwebモジュールのインストールが完了していることを前提にしています
※現在は非推奨になっている「カスタムインテグレーション」で作成した「Incoming Webhook」で動作確認しています。
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)
OS起動時に自動実行すれば、都度実行させなくていいので運用がラクです
$ chmod +x /home/pi/chime2slack.py
rc.localで自動起動させるやり方はうまく動作しないこともあるのでおすすめできませんが...
$ sudo vi /etc/rc.local
#!/bin/bash -e
sudo -u pi /usr/bin/python3 /home/pi/chime2slack.py &
exit 0
OSを再起動して、インターホンを押してSlackへ通知がきたらOKです!
とてもイイです。安いセンサーだけど問題なく使えています。
欲を言えば、Echo showにも通知させたい。。。
最新型インターホンがある家は、わざわざこんなことしなくてもスマホ通知できると思いますが、
我が家のようなインターホン使ってて同じ悩みがある人は、簡単に実装できるのでオススメです。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント