【SwitchBot】スイッチボットハブミニから指ロボットを操作3 – IFTTT連携してURLトリガー操作
SwitchBotをIFTTT (If This Then That)と連携させて、URLトリガーで指ロボットを操作する手順のメモ。
- SwitchBotアカウントを作成する
- SwitchBot Hubを設定する
- IFTTTアカウントを作成する
- WebhooksのURLを取得する
- 動作確認方法いろいろ
- PHPでcurl
- Pythonでcurl
- ログはどうする
SwitchBotアカウントを作成する
SwitchBotアプリをダウンロードし、アカウントを作成します。下記の記事参照。
SwitchBot Hubを設定する
SwitchBot Hub Miniをセットアップし、指ロボットをHubに接続します。下記記事参照。
IFTTTアカウントを作成する
IFTTTサイトまたはスマホアプリ上からアカウントを作成します。
WebhooksのURLを取得する
IFTTTにログインした状態で、「Create」ボタン。
「If This」を選択
検索ボックスで「web」と入れて、絞り込まれた結果から「Webhooks」を選択。
「Receive a web request」を選択。
適当なイベント名をつけ、「Create trigger」。
「Then That」を選択。
検索ボックスで「sw」と入力し、絞りこまれた結果からSwitchBotを選択。
SwitchBotの動作を選択する。この例では「BotPress」とする。
IFTTTとの連携がきちんとできていたら、メールアドレスと指ロボット名が自動セットされる。確認して「Create action」。
「Continue」
「Finish」
右上の自分のプロフィールアイコンをクリックし、ドロップダウンメニューから「My Services」を選択。出てきた下記画面で「Webhooks」を選択。
「Documentation」をクリック。
ここに表示されるURLには、キー情報が含まれるので取り扱いに注意が必要。
画面に表示されるURL(赤枠部分)をコピーし、メモ帳などに貼り付け、[event]の部分を上記手順でつけたイベント名に書き換える。(この例では"btn_pressed"としたので「https://maker.ifttt.com/trigger/btn_pressed/json/....(略)」となる)
動作確認方法いろいろ
最後に動作確認について。
最も手っ取り早い確認方法としては、ブラウザの上部URLバーに先ほどのURLを貼り付けてEnterすることで動作確認できる。
curlコマンドをたたく環境がある場合は下記のような感じでcurlコマンドでも動作確認可能。
curl -X POST https://maker.ifttt.com/trigger/btn_pressed/json/with/key/XXXXXXXXXXXXXXXXX
もう少し一般向けに、テストボタン等を使いたい場合はサイト上にURLを仕込んだリンクやボタンを設置するとか。ただしセキュリティ的なものを考える必要はある。 サイトにボタン設置した場合は、ボタンクリック時にプログラムからcurlを実行するようにします。ボタンにIFTTTの直リンクをはってしまったらIDなどがばれてしまいます。
PHPでcurl
<?php
//curlセッション初期化
$ch = curl_init();
//curlオプション設定
curl_setopt($ch, CURLOPT_URL, "https://maker.ifttt.com/trigger/btn_pressed/json/with/key/xxxxxxxxxxxxxxxxxxxxxx");
//curl実行する
curl_exec($ch);
//curlセッション終了
curl_close($ch);
Pythonでcurl
curlの書き方はPythonだと下記のような感じになる。Pythonではrequestsによってcurlコマンドと同等のことができる。
import requests
def ifttt_wh(eventid):
url = "https://maker.ifttt.com/trigger/" + eventid + "/with/key/[IFTTTキー入力]"
response = requests.post(url)
if __name__ == '__main__':
ifttt_wh("btn_pressed") #イベント名を関数に渡す
ログはどうする
IFTTTのWebhookを使った実行ログは、IFTTTTの「アクティビティ」から容易に確認できるので、とりあえずはログ出力の実装なども不要。