SwitchBotをIFTTTとBeebotteとRaspberryPi4で操作する パート２

# はじめに
こちらはSwitchBotをIFTTTとBeebotteとRaspberryPi4で操作する [パート１](https://qiita.com/usakai/items/35fe781809d5ac9cbf08) の続きです。

# 構成
![スクリーンショット 2021-06-26 10.16.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/17c5a524-d53f-df2a-ed00-a0f463e37bde.png)

# 使用するもの

- iPhone
- IFTTT
- Beebotte
- Raspberry Pi 4
- SwitchBot

# 操作するswitchbotのmacアドレスを調べる
Switchbotアプリのホームタブから操作するデバイスを選択し、右上の三つの点のアイコンをタップするとmacアドレスが表示されます。表示されたアドレスをこの後利用します。
<img width="300" alt="IMG_0F71D35529A8-1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/abcf364a-cf65-07a3-1875-3091a8d4ddba.png">


# python-hostからswitchbotを操作してみる
https://github.com/OpenWonderLabs/python-host


- 必要なライブラリをインストールする

RaspberryPiにログインして以下のコマンドを実行します。

```
sudo apt-get update
sudo apt-get install python-pexpect
sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev 
sudo apt-get install libudev-dev libical-dev libreadline-dev
sudo pip install bluepy
```

- python-hostをクローンする

```
git clone https://github.com/OpenWonderLabs/python-host.git
```

- switchbotを操作する

`xx:xx:xx:xx:xx:xx`には上で調べたmacアドレスを入力してください。
最後の引数は`Turn On`で電源がオンになり`Turn Off`で電源がオフになります。

```
cd python-host
sudo python switchbot.py xx:xx:xx:xx:xx:xx Turn On
```

# Node-REDを利用してBeebotteからデータを取得する

Raspberry Piで以下のコマンドを実行します。

- Node.jsとNode-REDをインストール

```
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
```

- 起動時にNode-REDを自動起動させる

```
sudo systemctl enable nodered.service
```

- Node-RED起動

```
node-red-start
```

`http://<RaspberryPiのIPアドレス>:1880`にアクセスします。
今回作成するフローは以下の通りです。

![スクリーンショット 2021-07-01 22.48.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/13894dc1-aed7-414d-e257-a70cf5bed13c.png)

- mqtt in ノード

Topicには[パート１](https://qiita.com/usakai/items/35fe781809d5ac9cbf08)で設定した「Channel Name」と「Resource Name」を利用して、`<Channel Name>/<Resource Name>`のように指定します。
![スクリーンショット 2021-07-01 23.09.27 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/175f67d9-7beb-8b7e-b568-11dd26cdcb6b.png)

Serverの右にあるボタンをクリックし、以下の画像のように設定します。
![スクリーンショット 2021-07-01 22.55.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/18959110-56bb-6c43-7788-962a31e1c932.png)

Usernameには[パート１](https://qiita.com/usakai/items/35fe781809d5ac9cbf08)で控えておいたBeebotteの「Channel Token」を入力します。
![スクリーンショット 2021-07-01 22.55.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/08416f1e-101e-0a27-e539-ec5c62e6ae54.png)

- switch ノード

[パート１](https://qiita.com/usakai/items/35fe781809d5ac9cbf08)のIFTTTの設定のThen Thatで`{"data": "on"}`と`{"data": "off"}`が送られるように設定したので`msg.payload.data`が`on`か`off`で分岐させます。
![スクリーンショット 2021-07-02 18.39.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/dedc2c75-9fcf-8915-cfe3-514d503202ea.png)

- exec ノード

電源がOnとOffの２パターン作ります。
Commandには上で試したswitchbotを操作するコマンドを入力します。
`sudo python <switchbot.pyまでのパス> <macアドレス> <Turn On　または　Turn Off>`

![スクリーンショット 2021-07-02 18.40.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/93d7f81d-a08a-b405-5397-d92f07a807ba.png)

# iPhoneのショートカットから操作してみる
パート１で作成したショートカットアプリで作成したOnまたはOffのショートカットをタップするとSwitchbotが操作できます。