SwitchBotをIFTTTとBeebotteとRaspberryPi4を使ってiPhoneのショートカットから操作する パート１

# はじめに
SwitchBotを買ったのでiPhoneのショートカットから家の照明を操作しようとしたところ、ハブがないとできなかったことを後から知ったので自分で作ることにしました。

<img width="400" alt="83F12EA0-6531-4447-8F4D-CEFBA7204B9E.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/5be5083b-5a51-552a-144f-a9e67550d947.jpeg">

# 構成
<img width="600" alt="スクリーンショット 2021-06-26 10.16.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/505415f8-fb41-0488-531e-6b12de1e640e.png">

パート１ではiPhoneのショートカットからIFTTTを経由してBeebotteにデータを送信するところまでを作成します。
また、今回はSwitchbotをスイッチモードで利用するため、オンとオフの２種類のショートカットを作成し、照明のオン、オフができるようにします。

# 今回使うもの
- IFTTT
- Beebotte
- iPhone

# Beebotteでの作業
まず初めに[beebotte](https://beebotte.com/login)にアクセスしてアカウントを作成します。
ログイン後、「Channels」から「Create New」をクリックします。

「Channel Name」と「Resource Name」に適当な値を入力して「Create channel」をクリックし、Channelを作成します。

<img width="600" alt="スクリーンショット 2021-06-26 10.25.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/1758f15a-ba42-d159-881f-b26041f60591.png">

作成したChannelを選択して遷移後に表示された画面の「Channel Token」の値はこの後の作業で利用します。

# IFTTTでの作業
以下ではSwitchBotをONにするための作業を記載します。同様の手順でOFFも作成してください。
[IFTTT](https://ifttt.com/)にアクセスしアカウントを作成して、ログインします。
## If Thisを設定する
「My Applets」から「Create」「If This」の順でクリックします。

<img width="600" alt="スクリーンショット 2021-06-26 10.35.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/e9e80617-8dff-a920-e054-649b795834fb.png">

入力欄にwebhooksと入力すると「Webhooks」が表示されるのでクリックします。
「Receive a web request」をクリックすると以下の画面が表示されます。

<img width="600" alt="スクリーンショット 2021-06-26 10.38.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/c31d1b40-125d-c463-371f-2ecb4a63f507.png">

「Event Name」に`SwitchBot_On`を入力して、「Create trigger」をクリックします。

## Then Thatを設定する
次に「Then That」をクリックします。
先ほどと同じ手順で「Webhooks」をクリックします。
「Make a web request」をクリックすると以下の画面が表示されます。

<img width="600" alt="screencapture-ifttt-create-2021-06-26-10_41_41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/58c4e960-b4f6-26e4-bc22-3ff1eb8fa148.png">

各項目を入力します。

- URL：`https://api.beebotte.com/v1/data/publish/{{Channel Name}}/{{Resource Name}}?token={{Beebotteのトークン}}`
    - Channel Name、Resource Nameは「Beebotteでの作業」で入力した値を利用します。
    - Beebotteのトークンは「Beebotteでの作業」で確認した「Channel Token」の値を利用します。
- Method：POST
- Content Type：application/json
- body：`{"data": "on"}`　（dataの値はonまたはoff）

「Create action」をクリックします。
「Continue」「Finish」の順にクリックしたら登録完了です。

# iPhoneでショートカットを作成する
こちらもSwitchBotをONにするための作業を記載します。同様の手順でOFFも作成してください。

iPhoneで「ショートカット」アプリを開き、「マイショートカット」の右上のプラスボタンをタップします。
「アクションを追加」をタップし、検索欄に「url」と入力し「URL」を選択します。

<img width="300" alt="IMG_5742.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/dbac0c0c-4a2c-1631-fe7a-2cc65178656e.png">

同様に「URLの内容を取得」を選択します。

<img width="300" alt="IMG_5743.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/f7fb55a2-d891-1c25-f548-2da2347c15f1.png">

次にURLに入力するWebhooksのURLを調べます。
[こちら](https://ifttt.com/maker_webhooks/settings)にアクセスして「Account Info」のURLにアクセスします。

<img width="600" alt="webhookssettings.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/bbf56e79-cafb-f0be-e3d3-eea60f11ba01.png">

「Make a POST or GET web request to:」の下に書かれているURLを利用します。

<img width="600" alt="スクリーンショット 2021-06-26 13.42.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/029d4999-3949-327c-eb68-dd2300d18f61.png">


iPhoneのショートカットに戻り、「URL」に調べたWebhooksのURLを入力します。{event}の部分はIFTTT設定の「If This」の「Event Name」で設定した`SwitchBot_On`に変更します。

<img width="300" alt="IMG_5744.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/bb0f310d-25a2-486a-4ffc-82dba2f2424e.png">

右上の完了をタップしてショートカットの設定は終了です。

# 動作確認
[Beebotte](https://beebotte.com/dev/console)の「Console」を開きます。

![スクリーンショット 2021-06-26 11.27.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/6c3d02fa-50c9-6d09-df4d-59509caf3ede.png)

Subscribeの「Channel」にBeebotte設定で入力した「Channel Name」を、「Resource」に「Resource Name」を入力して「Subscribe」ボタンをクリックします。

その後、iPhoneのショートカットアプリから先ほど作成したショートカットをタップして、BeebotteのConsoleタブのMessagesにデータが表示されたら成功です。
![スクリーンショット 2021-07-02 19.20.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497539/a51d8523-be3c-1a0f-2099-3764daaebbe1.png)



パート１はこれで終了です。パート２ではRaspberryPiでBeebotteに来たデータをMQTTで取得し、取得したデータにしたがってSwitchBotを制御します。

# 参考
IFTTTとBeebotteを使ってGoogleHomeからRaspberryPiを操作する
https://qiita.com/msquare33/items/9f0312585bb4707c686b
iOS 12のショートカットをIFTTTと連携させる方法。HomeKit非対応デバイスも「Hey Siri」で操作可能に！
https://gadget-shot.com/42820