#はじめに
Raspberry PiにUSB温度計を接続して、muninやM2Xに定期的に測定値を投げる方法を紹介したが、今回はIFTTTのMakerチャンネルを活用して、IFTTTのIf This Then ThatのThisをmakerチャンネルで実現。Thatを変えて、色々な場所に測定値を飛ばせるようにした。
遊んだ時の記事は以下を参照してほしい。
RASPBERRYPIにUSB温度計をつけて、MUNINでグラフ化
M2Xで部屋の温度を記録する
#準備
Raspberry PiにUSB温度計を接続して、temperコマンドで利用可能にするまでの手順は、上記のRASPBERRYPIにUSB温度計をつけて、MUNINでグラフ化で紹介したので、こちらを参考にしてほしい。
##IFTTT側の設定
Makerチャンネル経由で測定値を送る準備をする。
Makerチャンネルでキーを生成して、トリガがかけられるようにしておく。
あとは、curlでPUTすればOK。
How To Trigger Evensでトリガのテストが可能。
生成されたキーがURLに入っている。
{event}の箇所が、IFTTTでレシビを作った際に「どのトリガなのか?」を区別する箇所になる。
つまり、Makerチャンネルを1つ作っておけば、レシピ作成時に複数のトリガを同時にかけることができる。
##Raspberry Pi側の設定
こちらは、cronから定期的に温度を投げるようにすればOK。
IFTTTの思想的に「定期的に」や「一定の時間になったら」という条件をつけた瞬間に、それがThisになってしまうので、「定期的に」「なにか」を「なにか」へ、を実現するためには誰かが定期的にトリガをかけてやる必要がある。
そこでRaspberry Pi側はcronでIFTTTのMakerチャンネルにトリガをかけるようにすればよい。
#!/bin/sh
temp_date=$(/usr/bin/temper | cut -f1 -d',')
temp_val=$(/usr/bin/temper | cut -f2 -d',')
curl -X POST -H "Content-Type: application/json" -d "{\"value1\":\"$temp_date\",\"value2\":\"$temp_val\"}" https://maker.ifttt.com/trigger/{YOUR EVENT}/with/key/{YOUR KEY}
こんな感じのスクリプトを書いて、cronで動作させる。
/etc/cron.dに以下のような感じで15分おきにトリガするようにしてみた。
スクリプトの場所は自分が作った場所へ適宜変更よろしく。
#!/bin/sh
*/15 * * * * root /home/pi/temper/usb_temp.sh
temperコマンドを叩くと、以下のように「取得時間」「温度」が表示される。
これをcutで分解し、curlコマンドでIFTTTにValue1に取得時間、Value2に温度を入れて投げる。
そうすると、IFTTTから値を取り出してThenThatできる。
pi@raspberrypi2 ~ $ sudo temper
2015-10-25 10:05:02,26.92
#IFTTTでレシピを作る
準備が完了したらレシピを作り、好きな場所に定期的に送られてくる室温を保存する。
今回はGoogleスプレッドシートへの保存と、Wolfram Data Dropへの保存をやってみた。
##レシピ作成時の設定
Event Nameに固有のイベント名を入力する。
この名称がMakerチャンネルでイベントを識別するための名称となる。
curlコマンドで投げたURLに使われている所ね。(以下の{YOUR EVENT}の箇所)
curl -X POST -H "Content-Type: application/json" -d "{\"value1\":\"$temp_date\",\"value2\":\"$temp_val\"}" https://maker.ifttt.com/trigger/{YOUR EVENT}/with/key/{YOUR KEY}
##Googleスプレッドシートへの出力結果
こんな感じ。バッチリですな。いえい。
#さいごに
IFTTTの魅力爆発なMakerチャンネルは活用すべしって感じ。
Slackに投げるもよし、twitterでつぶやくもよし。この辺りの楽しさがIFTTTの良い所。
単純にcurlで投げても面白いのだが、IFTTTのMakerに投げることで、ThenThatを変えて複数の効果を簡単に得られる感じがとてもいいですな。
Netatmo ウェザーステーションもIFTTT連携できるチャンネルがあるが、「ある一定の室温になったら」というトリガしかなく、「ある時間の温度、湿度、気圧のデータをどこかに」はIFTTT単体では無理。
そのような場合もNetatmoのWebAPIをRaspberry Piから叩いて、同じようにMakerチャンネルに投げればOKなので、俄然とNetatmoが欲しくなってしまう。