本記事は2020/02/03に作成したものです。
最新の環境ではうまく動作しない可能性がありますのでご注意ください。
これは部屋の施錠状態をメンバーへ周知するために作ったものです。
解錠や施錠を行った時にタクトスイッチを押すことで、Slackへその旨を通知します。
以前はAmaz◯nダッシュボタンでやっていたのですが、サービス廃止に伴いラズパイとタクトスイッチで作り直しました。
slackの「Incoming Webhook」の設定は済んでいることを前提にしています
※現在は非推奨になっている「カスタムインテグレーション」で作成した「Incoming Webhook」で動作確認しています。
回路ができたらコードの作成をします
まずはSlack通知に使うモジュールをpipでインストールします
$ pip3 install slackweb
Slack通知に使うコードを作成します
#!/usr/bin/env python3
import RPi.GPIO as GPIO
from time import sleep
import slackweb
UNLOCK = 20
LOCK = 21
slack = slackweb.Slack(url="https://hooks.slack.com/services/xxxx/xxxx/xxxx") #Incoming Webhookのurlをここへ記述します
MSG_UNLOCK = "研修室解錠しましたにゃ"
MSG_LOCK = "研修室施錠しましたにゃ"
SLACK_NAME = "RaspberryPiボタンさん"
GPIO.setwarnings(False)
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(UNLOCK, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(LOCK, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def sw_unlock(ch):
slack.notify(text=MSG_UNLOCK, username=SLACK_NAME)
def sw_lock(ch):
slack.notify(text=MSG_LOCK, username=SLACK_NAME)
GPIO.add_event_detect(UNLOCK, GPIO.RISING, callback=sw_unlock, bouncetime=500)
GPIO.add_event_detect(LOCK, GPIO.RISING, callback=sw_lock, bouncetime=500)
while True:
sleep(0.1)
$ chmod +x /home/pi/lock2slack.py
$ sudo vi /etc/rc.local
rc.localに書くやり方は古いですが手軽なので
#!/bin/bash -e
sudo -u pi /usr/bin/python3 /home/pi/lock2slack.py &
exit 0
あとは、OSを再起動させて動作確認ができたら完了です
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント