Skip to content
/ boushi2 Public
forked from h-takeyeah/boushi2

ラズパイに接続された光センサの値を読んで部屋の開閉状態を通知するSlackBot

License

Notifications You must be signed in to change notification settings

su-its/boushi2

 
 

Repository files navigation

boushi2

ラズパイに接続された光センサの値を読んで部屋の開閉状態を通知するBot。SlackのSlash Commandsを利用して/boushitsuと入力すると通知が返ってくる。

依存ライブラリはこれ

光センサ(cds)

前準備 Slack Botの作成

  1. Slack Botを作成しておく。

App Token(SocketModeでWebSocketの経路を開くために必要)

  1. アプリの設定画面

slackbot_setting_page

をスクロールして出てくるApp-Level TokensのところのGenerate Token and Scopesをクリックする。

  1. スコープconnections:writeを持つトークンを生成する。

生成できると以下のようになる。

app_token

Bot Token

  1. アプリの設定画面に出ているこのトークンを使用する。

bot_token

manifestファイル

自動生成されるが一応参考までに。

display_information:
  name: boushitsu
  description: boushitsu
features:
  bot_user:
    display_name: boushitsu
    always_online: false
  slash_commands:
    - command: /boushitsu
      description: boushitsu
      should_escape: false
oauth_config:
  scopes:
    bot:
      - commands
settings:
  org_deploy_enabled: false
  socket_mode_enabled: true
  token_rotation_enabled: false

インストールと起動

  1. 依存ライブラリをインストール。

仮想環境(この文書ではこの仮想環境を指す)を無理に使う必要は無いが、もし使うならRPi.GPIOも改めてインストールしないと見えないのでインストール。このときRPi.GPIOのビルドが落ちるかもしれないが、以下のようにCFLAGSを設定することで回避できる(work around)。

# Python 3.6+ required
python -m venv .venv # 2系と3系が共存している環境ではpython3コマンドを使用せよ
source .venv/bin/activate

pip install -U pip
CFLAGS=-fcommon pip install -U -r requirements.txt
  1. 環境変数にトークンを設定して起動する。
export SLACK_APP_TOKEN=<your-xapp-token>
export SLACK_BOT_TOKEN=<your-xoxb-token>
python main.py

永続化

実際運用するときはサービスとして動かすものと思う。pm2向けの設定ファイルがある。Node.js向けだが、使えるのでいいでしょう。

  1. pm2そのものを公式にしたがってセットアップしておく。

  2. 設定ファイル例をコピーする。

cp ecosystem.config.js.example ecosystem.config.js
  1. コピーしてできた本チャンの設定ファイルを好きなエディタで編集する。各トークン、SLACK_APP_TOKEN(xapp-で始まるトークン)とSLACK_BOT_TOKEN(xoxb-で始まるトークン)を設定する。

    なお、設定ファイルは仮想環境向けに書いてあるが、仮想環境を使わない場合はinterpreterのところをpython3に書き換えること。

  2. 起動する。

pm2 start ecosystem.config.js
pm2 save # pm2のserviceが動いている前提

About

ラズパイに接続された光センサの値を読んで部屋の開閉状態を通知するSlackBot

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages

  • Python 100.0%