どうも若松です。

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

元記事はこちら

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