AWS
lambda
IoT
SORACOM
awsIoT

SORACOM Buttonから渡されるイベントを確認してみた

どうも若松です。

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につながるのでアイディア次第ではいろいろできそうですね。