TechNote

事務屋のおぼえがき

【SwitchBot】スイッチボットハブミニから指ロボットを操作3 – IFTTT連携してURLトリガー操作

SwitchBotをIFTTT (If This Then That)と連携させて、URLトリガーで指ロボットを操作する手順のメモ。

SwitchBotアカウントを作成する

SwitchBotアプリをダウンロードし、アカウントを作成します。下記の記事参照。

kojikoji75.hatenablog.com

SwitchBot Hubを設定する

SwitchBot Hub Miniをセットアップし、指ロボットをHubに接続します。下記記事参照。

kojikoji75.hatenablog.com

IFTTTアカウントを作成する

IFTTTサイトまたはスマホアプリ上からアカウントを作成します。

ifttt.com

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などがばれてしまいます。

PHPcurl

curlの書き方はPHPだと下記のような感じになる。

<?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);

Pythoncurl

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の「アクティビティ」から容易に確認できるので、とりあえずはログ出力の実装なども不要。