水無瀬のプログラミング日記

プログラムの勉強した時のメモ

RaspberrtPi3でSlackBotを動かす設定

はじめに

久しぶりにラズパイでslackbotを動かしたくなったので、設定した内容まとめ。
過去に一度設定したけど、微塵も覚えてないので、まとめついでに一から設定します。
ついでに、前に設定してなかったip固定とかsystemctlに登録とかしときます。

前提

作業しているPC:Mac(Sierra 10.12.6)
ラズパイ:Raspberry Pi 3 Model B

OS設定編(Macでの作業)

前回何設定したか覚えてないので、OS入れ直してついでにIPを固定しておく。
OSはここから好きなものをダウンロードする。
今回はRaspbianのwith Desktopの方を入れる。
※普通にライトで良かったなーと今更思った。

ダウンロードが終わったらSDカードをMacに挿してOSを入れる。
ここの処理を間違えると悲惨なことになるらしいので要注意。

# コピー先を探す
$ diskutil list 

# 一旦外す
$ diskutil unmountDisk /dev/disk6(※今回はたまたまdisk6だった)

# コピーする
$ sudo dd bs=1m if=[入れたいOS] of=/dev/rdisk6

ラズパイを起動する前にSSHの設定をしておく。
予めsshファイルを作って置けば最初からSSHで繋がるようになっているらしい。
やっとかないとあとで設定が必要そう。

# 中身はなくていいから作るだけ作っとく
$ touch /Volumes/boot/ssh

ラズパイ設定編

ラズパイを起動し早速ターミナルでいろいろ設定。

IP固定化

いちいち変わられても接続するのが面倒くさいので固定する。

$ sudo vi /etc/dhcpcd.conf

# 以下内容を追記
interface wlan0
static ip_address=[設定したい固定IPアドレス]/24
static routers=[デフォルトゲートウェイのIPアドレス]
static domain_name_servers=[DNSサーバーのIPアドレス]

# [SSID]と[PASSPHRASE]は環境に合わせて変更
# /etc/wpa_supplicant/wpa_supplicant.confにパスワードが書かれるので、嫌なら消しとく
$ sudo sh -c 'wpa_passphrase [SSID] [PASSPHRASE] >> /etc/wpa_supplicant/wpa_supplicant.conf'

# 最後に再起動
$ reboot

これでipアドレスが固定されればOK。

slackbotを入れて動かす

botPythonで動かすことにする。
Slack側の設定は終わってる前提です。
ライブラリはpip3 install slackbotでインストールしておく。
※ついでにvimも入れとく人はsudo apt-get install vimも叩いとく。

準備が出来たらbotを作成する。
とりあえず最小構成で動くとこまで。
フォルダ構成、ソースは以下の通り。

$ cd '任意のフォルダ'
# bot動かすファイル
$ touch run.py
# botの設定を書くファイル
$ touch slackbot_setting.py
# プラグインを入れとくフォルダ作成
$ mkdir plugins
# プラグインとして認識してもらうために、空ファイルでいいので作成
$ touch ./plugins/__init__.py
# -*- coding: utf-8 -*-

from slackbot.bot import Bot


def main():
    bot = Bot()
    bot.run()


if __name__ == "__main__":
    main()
# -*- coding: utf-8 -*-

API_TOKEN = "slackで確認したTOKEN"

default_reply = "は?何言ってんの?"


PLUGINS = [
    'plugins'
]

ファイルを用意したら、python3 run.pyで起動。
話しかけて、返事してくれればOK。

f:id:minase_mira:20180531225216p:plain

botをサービス化しとく

python3 run.py &とかで動かしておいても問題ないけど、一応ちゃんと設定しておく。
手順とファイルの内容は下記の通り。

# unit定義ファイル作成
$ sudo vim /etc/systemd/system/runUbibot.service

# リストにいることを確認
$ sudo systemctl list-unit-files --type=service | grep runUbibot
# 自動起動設定しておく
$ sudo systemctl enable runUbibot.service
# 起動
$ sudo systemctl start runUbibot.service
[Unit]
Description = 説明

[Service]
ExecStart = ~~/start.sh(絶対パスで)
# 再起動設定
Restart = alwasy
Type = simple

[Install]
WantedBy = multi-user.target
# このファイルに実行権限を与えとく`chmod 0777`とか
#!/bin/bash

# 直接これを指定する方法がわからなかったので、shell経由
python3 run.py

これで動いていればOK。

まとめ

これでいつ、ラズパイが消し飛んでも復活できるはず。
備忘録としてまとめておきます。