IFTTT Maker ChannelをmbedやRaspberryPiやIntel Edisonで使う

投稿者:

IFTTTにMaker Channelができましたに書かれている通りIFTTTを利用してデバイスからSlackなどのサービスに通知を送ることができるようになりました。(現時点でIFTTTが対応するサービスは194もあります。)

準備としてはIFTTTで

  • 自分のアカウントを作る
  • Maker Channelで自分用のURLを得る
  • MakerをThisとして、SlackなどをThatとしてRecipeを作る

ということになります。この部分は前回の記事を参照いただければと思います。

準備ができたら、あとはデバイスからそのURLにGETやPOSTで通信するのですが、前回の記事ではArduino Leonardo Ethernetをデバイスとして使用していました。

今回は、mbedRaspberryPiIntel 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のホスト名の後ろに続く部分です。
path


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なら他のプログラムと混ぜるのも楽かもということでご参考までに。

今回利用したデバイス