IFTTTにMaker Channelができましたに書かれている通りIFTTTを利用してデバイスからSlackなどのサービスに通知を送ることができるようになりました。(現時点でIFTTTが対応するサービスは194もあります。)
準備としてはIFTTTで
- 自分のアカウントを作る
- Maker Channelで自分用のURLを得る
- MakerをThisとして、SlackなどをThatとしてRecipeを作る
ということになります。この部分は前回の記事を参照いただければと思います。
準備ができたら、あとはデバイスからそのURLにGETやPOSTで通信するのですが、前回の記事ではArduino Leonardo Ethernetをデバイスとして使用していました。
今回は、mbed、RaspberryPi、Intel Edisonを利用してみたので、その情報を共有させていただこうと思います。
と、前置きが長い割に、これ以降は特に詳しい説明はありません。
mbedを使ってトリガーしてみたサンプルはこちら
HTTPClient_IFTTT_Maker_post_HelloWorld
こちらはHTTPClientライブラリのおかげで短いプログラムになりました。
MBED Developer SiteでTakehiko Shimojimaさんから、HTTPClient.cppのparseURL関数でエラーとなったことをご指摘いただきました。原因はプログラム中、URLのPathに割り当てられたchar配列の長さが足りないということでした。解決策としてHTTPClient.cppのchar path[64]をchar path[96]やchar path[128]など長いものに書き換えることを提案されています。実はこのコードを作った時に私のIFTTT Maker Channelのセキュリティーキーは21文字でPath全体も短かったため問題なく動いていたのですが、Takehikoさんのセキュリティーキーは44バイトあるとのことです。もし上のプログラムを利用される場合はPathの長さにご注意ください。PathはURLのホスト名の後ろに続く部分です。
RaspberryPiやIntel EdisonでPythonでやってみたサンプルはこちら
import文を除けば1行です。
どちらのプログラムについても
- button_pressedの部分 → 自分でつけたEvent Nameへ変更
- YOUR_SECRET_KEYの部分 → 自分用に発行されたSECRET KEYへ変更
が必要です。
ところでRaspberryPiやIntel Edisonは上記のサンプルを動かすためにPythonのrequestsモジュールが必要になりますので、インストールするにはPythonのパッケージ管理ツールpipを使うと楽かと思います。
具体的にはget-pip.pyをダウンロードしておき、ターミナルでpython get-pip.py
をしてpipをインストール。その後pip install requests
としてrequestsをインストールします。
あとは、上記のプログラムをpost-ifttt-maker.pyのような名前で保存してpython post-ifttt-maker.py
とするとIFTTTに通信します。
とはいえ、もしHTTP通信するだけならcurlコマンドでやるほうが楽ではありますが、Pythonなら他のプログラムと混ぜるのも楽かもということでご参考までに。
今回利用したデバイス
- mbed:
- mbed NXP LPC1768
- mbedアプリケーションボードにLANケーブルを繋いで利用
- Raspberry Pi:
- OS: Raspbian
- Raspberry Pi Model A+に無線LAN USBアダプタを差し込んで利用
- 今回利用した無線LAN USBアダプタとは異なりますが、もしまだお持ちでなければ動作確認が取れているPLANEX GW-USNANO2A 無線LAN USBアダプタもおすすめです。
- Intel Edison:
- OS: Yocto Linux
- Intel Edison Breakout Board Kit