SORACOM LTE-M Button PlusでSORACOM BeamをIFTTTと連携させてボタンを押したらEmailが送られてくるように設定してみた。
まず先に結論から書くと、設定はうまくいった。
自分のGmail宛てにEmailを送信する設定をして、 次のように 無事にLTE-M Buttonの出力をメールで受け取ることができた。(iPhoneでGmailを受信してる)
SORACOMのサイト上での設定で注意する点が2点ある。
1つはSORACOM Beamの設定で、HTTPではなくUDPtoHTTPで設定するということだ。
なぜならLTE-M Buttonの出力は、TCPではなくUDPで出力されるから、SORACOM BeamがUDPで受け取ってHTTP(https)で出力するように設定する必要があるためである。
もう1つは、SORACOM Airの設定で、バイナリパーサーの設定を「@button.ifttt」に設定するということだ。
LTE-M ButtonがUDPで送信する生データはバイナリデータなので、そのままだと取り扱いに困る。なので、便利な機能としてバイナリパーサーという自動変換の機能がある。
SORACOM Airが受け取った生データのバイナリデータをJSON形式のテキストデータに変換して、次のBeamやHarvestなどのサービスに受け渡してくれる。
「@なんたら」という簡易設定名を指定すれば、自分でデータのバイト数やintやfloatかなどの細かい設定をしなくても済むようになっている。
そして、LTE-M ButtonをIFTTTで使う場合には、「@button.ifttt」と設定すればよいということだ。
以下、そこにたどり着くまでにやった内容をメモとして書いておく。(他人が読んでも参考にならないだろうけど)
まず、SORACOMのコンソールで LTE-M Buttonの設定をしなおして、SORACOM Harvestを無効にして、SORACOM Beamを使う設定をしてみることにした。
SORACOM Harvestを有効にしているのは、このあいだLTE-M Buttonのハンズオンで使い方としてそうやっていたのに倣って自分もそう設定したからだ。
→ SORACOM LTE-M Button Plusのハンズオンに行ってきた
しかし、SORACOM Harvestは、それなりに使用料金が掛かる。
それに対してSORACOM Beamは、1ヶ月に10万リクエストまでは無料なので、よほどの使い方をしないかぎり追加料金なして利用できる。
→ SORACOM Beam のご利用料金
SORACOM Harvestを一旦無効(OFF)にして、Beamの設定を追加した。
やり方は、前にSORACOM Air SIMのハンズオンセミナーに行ってやったとおりの方法だ。
→ SORACOMハンズオンセミナー名古屋に行ってきた
具体的な手順はもう忘れてしまっていたので、ハンズオンの資料が公開されているのを見て設定をした。
→ 「SORACOM x RaspberryPi ハンズオン〜超音波センサー編〜」 ハンズオン用テキスト
Beamがデータを転送する先は、IFTTTのwebhookというAPIで、前にこのハンズオンで設定をしていたのをそのまま使うことにした。
次にIFTTTで、設定をTwitterに出力する設定したのを変更して、Emailで出力をするように設定しなおしてみることにした。
前に作ったIFTTTアプレットの編集でできるかと思ったら、うまく行かない。
というかIFTTTの使い方というか操作方法がよく分からなくて困った。IFTTTの参考書を前に1冊買ってあったはずなのだけど見当たらなくて手元に無い。
一旦アプレットを削除して、新規作成した。IFの部分とTHENの部分とを順に設定して、IFの部分はwebhookで、THENの部分はEmailを使うアプレットを作って、細かい設定をした。
PCからcurlでIFTTTのwebhookのURLを直接叩く方法があるので試してみて、ちゃんとメールが送られるというのを確認した。
しかし、SORACOM Beamの設定をしたはずなのにIFTTTが反応しないという状態で、ちょっと悩んだ。
冒頭に書いたようにLTE-M ButtonはTCPではなくてUDPでデータを送信するというのに気がついた。
このあたりのblog記事が参考になった。
→ SORACOM LTE-M Button Plusと外部サーバーにあるNode-REDを連携したメモ
Beamの設定をUDPtoHTTPで設定しなおすと、IFTTTにちゃんとデータが送信されて、メールが届いた。
しかし、送られてきたメールにボタンの情報が無く、ボタンが単発で押されたのか、長押しされたのか分からないし、バッテリー残量も分からない。
これについては、Twitterで解決方法を教えて頂いた。
このあたりのバイナリパーサーの設定をするとよいということだ。
→ バイナリパーサー詳細 SORACOM Developers
SORACOM Harvestを使ったときには、バイナリパーサーの設定で「@button」というのを使ったが、SORACOM Beam+IFTTTを使う場合にはその設定ではうまくいかない。
IFTTT用のバイナリパーサー設定の「@button.ifttt」というのを設定したら、無事にボタンの情報も送られてくるようになった。
バイナリパーサー経由で変換されIFTTTのwebhookで3つのExtraデータが送られてきた。
SINGLEというのはボタンの押され方、次に重複して日本語のカタカナでシングル、その次に100という値でバッテリーの残量の数値の100倍の値が送られてきている。
あとは、LTE-M Button Plusに外部に取り付けている傾斜スイッチとリレーを調整すれば、実用になりそうだ。