RaspberryPi4 Hubot編

# はじめに
@takjg さんの記事を参考に、hubotが動く状態まで設定する。
とてもわかり易くまとめてくれているので、コマンド打っていくだけでセットアップできる。
https://scrapbox.io/smart-home/hubotの雛形の生成
https://scrapbox.io/smart-home/hubotでRM_Mini3を操作する
https://scrapbox.io/smart-home/RM_Mini3の初期設定
[https://scrapbox.io/smart-home/SlackでRM Mini3を操作する](https://scrapbox.io/smart-home/Slack%E3%81%A7RM_Mini3%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B)
[https://scrapbox.io/smart-home/Rasberry Piの起動時にhubotも自動的に起動させる](https://scrapbox.io/smart-home/Rasberry_Pi%E3%81%AE%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%ABhubot%E3%82%82%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B)
# node.jsのセットアップ

``` bash
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt update
sudo apt install -y nodejs npm
sudo npm cache verify --force
sudo npm install npm -g
sudo npm install n -g
sudo n lts
```

# redis
### インストール
```bash
sudo apt install redis-server
```
### データの移行
RP3で動いていたRedisのデータを移動する

```bash
(RP3)$ redis-cli save
(RP3)$ sudo ls /var/lib/redis/
 dump.rdb
```
`dump.rdb`をscpでRP4に転送する
転送する際はredisを停止させておく


# hubotのセットアップ
### インストール
```bash
sudo npm install -g yo generator-hubot
mkdir homebot  # 「homebot」
cd homebot
yo hubot
 ? Owner          # そのままエンター
 ? Bot name       # 「homebot」と入力
 ? Description
 ? Bot adapter    # 「slack」と入力
```

### 設定
```bash
npm install coffee-script@^1.12.6
npm install hubot-broadlink-rm --legacy-peer-deps
rm hubot-scripts.json
vim external-scripts.json
 [
              :
    "hubot-heroku-keepalive",           # この1行を削除
    "hubot-broadlink-rm",               # この1行を追加
              :
 ]
```

hubotのバージョンが上がって依存関係クリアできないようになっているので、古いバージョンで動かす

```bash
vim package.json
 [
              :
    "hubot": "^3.3.2",
    "hubot-slack": "^4.5.3"
              :
 ]
```

# RM mini3のセットアップ
ここを見ながら設定する
https://scrapbox.io/smart-home/RM_Mini3の初期設定

# hubotの起動
```bash
bin/hubot # hubotを起動する

homebot> [Sun Feb 09 2020 14:43:29 GMT+0900 (GMT+09:00)] INFO hubot-redis-brain: Using default redis on localhost:6379
[Sun Feb 09 2020 14:43:29 GMT+0900 (GMT+09:00)] INFO hubot-redis-brain: Data for hubot brain retrieved from Redis
Discovered Broadlink RM device at 192.168.1.xx (xx:xx:xx:xx:xx:xx)
homebot> homebot ping
homebot> PONG
```
Broadlinkのデバイスが見えて、PONGが帰ってきたら動いている

# Hubotをslackをつなぐ
### SlackにHubotを登録してTokenを取得

Slack -> メニュー -> その他管理項目 -> アプリを管理する
hubotを検索 -> homebotとして登録
設定を編集 -> `HUBOT_SLACK_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`をコピー

### Tokenの設定
`~/homebot/bin/hubot`を編集

```bash:hubot
 export PATH= ...
 export HUBOT_SLACK_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    # Tokenを設定する
 exec ...
```

### 起動する
```bash
bin/hubot --adapter slack 
```
### Slackで応答してくれたらOK
![cap.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/a1f70047-4121-dfcc-e9b6-ae67052915f1.jpeg)

# Hubotを自動起動する

### 起動スクリプトファイル作成
`vim ~/homebot/bin/homebot.sh`を作成

```shell:homebot.sh
 #!/bin/sh
 cd /home/pi/homebot
 sudo -u pi bin/hubot --adapter slack
```
`chmod 755 bin/homebot.sh`で実行権を与える


### systemdの設定ファイル作成
`sudo vim /etc/systemd/system/homebot.service`を作成

```bash:homebot.service
 [Unit]
 Description = homebot
 
 [Service]
 ExecStart=/home/pi/homebot/bin/homebot.sh
 Restart=always
 Type=simple
 
 [Install]
 WantedBy=multi-user.targe
```
###  有効化
```bash
systemctl list-unit-files --type=service  | grep homebot  # homebotが登録されているか確認
sudo systemctl enable homebot # 有効化する
```
rebootして、`sudo systemctl status hubot`でサービス起動していればOK

これで楽しい遠隔家電操作が可能になる