どうも若松です。
SORACOM LTE-M Button がリリースされたので、買ってみました。
https://soracom.jp/products/gadgets/aws_button/
どこでもLambda叩けるのは便利ですよねー
いろいろ可能性を感じます。
セットアップ
AWS IoT 自体が触るの初めてだったので、いろいろと仕様を確認しながら触ってみました。
セットアップはこの辺りを見ながらやりました。(割愛)
https://dev.soracom.io/jp/start/aws_button_slack/
イベント確認用Lambda
とりあえず、Lambdaに渡されるイベントの内容を確認しないとコードが書けないので、確認用のLambdaを用意しました。
CloudwatchLogsに吐かれたイベントのJSONを確認するだけなので、超シンプルです。
言語はPython3.6です(一応)
get-event
import json def lambda_handler(event, context): print(event) return
確認結果
以下のJSONがイベントとしてLambdaに渡されます。
event
{ "deviceInfo": { "deviceId": "XXXXXXXXXXXXXXXX", "type": "button", "remainingLife": 99.49749, "attributes": { "projectRegion": "ap-northeast-1", "projectName": "soracom", "placementName": "soracom-button", "deviceTemplateName": "get-event" } }, "deviceEvent": { "buttonClicked": { "clickType": "SINGLE", "reportedTime": "yyyy-mm-ddThh:mm:ss.xxxZ" } }, "placementInfo": { "projectName": "soracom", "placementName": "soracom-button", "attributes": {}, "devices": { "get-event": "XXXXXXXXXXXXXXXX" } } }
clickType
の値はボタンの押し方で以下のように変わります。
押し方 | 値 |
---|---|
シングルクリック | SINGLE |
ダブルクリック | DOUBLE |
長押し | LONG |
押し方で機能変えたいときは、この値で判別すればよいようです。
気になること
以下のドキュメントを見ると、実際にイベントとしてLambdaに渡されたJSONと異なる形式のJSONの記載がありました。
しれっと修正されてました。(11/8追記)
https://dev.soracom.io/jp/aws_button/how-it-works/
SORACOMコンソールで確認できるJSONと同じ形式のようなので、AWS IoTに送られる生のJSONがこの形式なのかもしれません。
まとめ
簡単にセットアップできてサクサク試せるので、とても楽しいです。
ボタン自体の機能はシンプルですが、Lambdaにつながるのでアイディア次第ではいろいろできそうですね。