どうも若松です。
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です(一応)
import json
def lambda_handler(event, context):
print(event)
return
確認結果
以下のJSONがイベントとしてLambdaに渡されます。
{
"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につながるのでアイディア次第ではいろいろできそうですね。