はじめに
今回はラズパイにボタンを設置してボタンを押すと Slack に投稿できるようにします!
完成品!!
Slack準備
Slack に投稿するためにトークンを取得する必要があります。
-
Slack API にアクセスし App Name と Workspace を入力し Create App をクリックする。
-
左側メニューの OAuth & Permisions をクリックする。
-
Scopes -> Bot Token Scopes に chat:wirte を追加する。
-
OAuth & Permisions ページの上部にある Install App to Workspace をクリックする。
-
インストール後下記が表示されるのでトークンをコピーする。
-
Slack の投稿したいチャンネルにアプリを追加する。
ラズパイ準備
-
SSH 接続する。
-
必要なものを入れていく。
1234567891011121314151617181920212223242526272829# これでバージョン表示される場合はすでにある$ pip3 -V# pip3をインストール(バージョン表示される場合はとばす)$ sudo apt-get -y install python3-pip# pipenvをインストール$ sudo pip3 install pipenv# ディレクトリを作成$ mkdir slack_button# ディレクトリに移動$ cd slack_button# python3系でpipenv初期化$ pipenv --python 3# RPi.GPIOインストール$ pipenv install RPi.GPIO# slackclientインストール$ pipenv install slackclient# button.pyファイル作成$ touch button.py# button.pyファイル編集$ vim button.py -
i と入力し入力モードにする。
-
下記ソースをコピペする。
1234567891011121314151617181920212223242526272829303132333435363738# coding: utf-8import RPi.GPIO as GPIOimport timeimport signalimport sysfrom slack import WebClientdef post(slack_client):slack_client.chat_postMessage(channel="#random", text="test")# Ctrl+CによってSIGINTシグナルが送信された時のハンドラ。終了前にGPIO.cleanupを呼び出すdef handler(signum, frame):print('Signal handler called with signal', signum)GPIO.cleanup()sys.exit(0)# ハンドラの登録signal.signal(signal.SIGINT, handler)# GPI09を入力として利用GPIO.setmode(GPIO.BCM)GPIO.setup(9, GPIO.IN)before = 0# slack設定token = "xxxx"slack_client = WebClient(token)# 無限ループwhile True:# 押された場合には1、押されていない場合0を返すnow = GPIO.input(9)if before == 0 and now == 1:print("Push!!!")post(slack_client)time.sleep(0.1)before = now
token は Slack 準備でコピーしたものを使います。
配線
配線は下記を参考にしました。
ラズパイ+タクトスイッチでSlack用へぇボタン作成してみた
- ブレッドボードの j30 にジャンバ線1のオスを挿す。
- ブレッドボードの j28 にジャンバ線2のオスを挿す。
- ブレッドボードの j23 にジャンバ線3のオスを挿す。
- 抵抗をブレッドボードの i23 と i28 に挿す。
- ボタンをブレッドボードの f30, e30, f28, e28 に挿す。
- ジャンバ線1のメスをラズパイの 3.3V に挿す。
- ジャンバ線2のメスをラズパイの GPIO9 に挿す。
- ジャンバ線3のメスをラズパイの GPIO11 横の GND に挿す。
起動
-
SSH 接続する。
-
下記コマンドを実行して起動する(終了は ctrl + C)。
12$ cd slack_button$ pipenv run python3 button.py -
ボタンを押す。
これで Slack に投稿されました!!
おわりに
とうとうボタンまでつけれたぞ!次は何しようかな。
今回は pipenv まわりに苦労しました(ずっと python3 button.py でモジュール読み込めなかった。。。)
参考
- ラズパイ+タクトスイッチでSlack用へぇボタン作成してみた
- Slack API 推奨Tokenについて
- Pipenvを使ったPython開発まとめ
- Python3でSlack APIを使用してBotを作成
コメント