IFTTTをcurlで操作

# IFTTTをcurlで操作

## smart plugをスクリプトから操作したい

最近、Smart Plug (いわゆる遠隔操作ができるコンセント) が安くなっています。ただ、スマホからOn/Offするだけではもったいない。
自家サーバ (というなのRaspberry Pi君) が、一定温度以上になったら、勝手に外付けファンをOnにできないものかと、思っていた。

そこで、IFTTTにある、Webhookと、Smart Lifeを組み合わせて、自動化に挑戦してみた。

- **Webhook**: 作成したAppletに対して、curlインターフェースを提供するサービス
- **Smart Life**: Smart Plugの一派 (スマホで、Smart Lifeアプリで動作するもの)
- **Meross**: Smart Plugの一派 (スマホで、Merossアプリで動作するもの)


## IFTTTでのMy Applet作成

1. 右上の、New Appletをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/b537e30a-6c4f-c323-2b76-4d69c9882c6e.png)

2. 「if +this then that」がでてくるので、+thisをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/0f81b280-627a-0cbc-48ca-a3ccfab03396.png)

3. 「Choose a service」とでて、検索バーがでてくるので、「webhook」と入力
4. webhookがでてくるので、クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/53954aad-a271-16e9-6d86-8c6623c005d4.png)

5. すごく、間延びした画面が登場。一番左、「Receive a web request」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/ab2e2905-712e-4fde-9568-d289b2c2de12.png)

6. 登録するイベント名称を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/da7ab4ec-b9ea-c4bc-9a54-cc7017408f4a.png)
イベント名称は、curlでアクセスするURLが使う文字列になるので、空白や特殊文字は避けたほうが無難です。

7. ここで、+thisのパートが終了。+thatをクリックして、後半戦へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/1d534367-de46-99c3-98e3-d11cf1c579d7.png)

8. 「smart life」と入力し、「smart life」サービスを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/0a57b525-be3d-8008-3c4b-d5f2ca821965.png)
もしくは、「meross」でも可
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/ec8d6333-f6b1-5e78-955f-7787e4be7f74.png)

9. 使いたいサービスを選択。(ここの例では、Turn offを選択して、継続)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/5f9b6616-8ec2-9650-a582-a1eaaa868505.png)

10. どのデバイスを制御するのか聞かれるので、プルダウンから選択。(ここの例は、スマホで"empty"と名付けたdeviceを指定)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/0ca7177b-c0be-309f-8764-48b6e4ece828.png)

Merossでも、大体同じ展開。(ここでは、スマホで"USB Fan"と名付けたdeviceを指定)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/0e21982c-c4cd-b3fa-b9bb-f8d8ef4b3cc6.png)

　11. 最後に、確認画面をながめて、Finishをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/8f8567fd-3ddb-4043-fa88-57f7f60b5408.png)

　12. My Appletに登録されているか、確認して、終了
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/f8e1d7e1-097b-eb81-7996-7cce1a3f4bbd.png)


## webhookの使い方を確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/d40fbb3a-e57e-d923-2b43-16cbb853af92.png)

 1. 上部にあるサーチボタンをクリック
 2. serviceのタブをクリック (デフォルトは、Appletなので、その右)
 3. すると、webhookが表示される。webhookをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/ac6b9871-75be-5e11-9e03-38a5bdde53b9.png)

 4. 右上に注目。「Documentation」と「Settings」が現れる
- **Documentation** アクセス方法が記載された説明書
- **Settings** アクセス方法で使用するトークンを管理

### Settings

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/adafee1d-08bf-a2f1-7a76-572f7d2583e1.png)

- URLに記載されたURLが、webhookで利用するURL。トークンの部分があるので、本当はもっと長いURLデス
- Edit connectionを押すと、トークンが変化する。つまり、表示されるURLのトークン部分が、変化していくのが確認できる

### Documentation

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213097/bd944d19-782a-60e0-42dd-8eb47258343b.png)

**{event}**と書かれているところに、イベント名で指定したものを入れて使う。ここの例ですと、TurnOffFanとなる。


## Curlしてみる
それでは、実際に、curlしてみる。上記、Documentationに書かれているまんま実行

```
$ curl -X POST https://maker.ifttt.com/trigger/{TurnOffFan}/with/key/abcdefghijklmnopqrstuv
Congratulations! You've fired the TurnOffFan event
```

無事に、ファンが止まれば成功。(実際にとまりました)