技術情報

Sens'it V3のデータをAWS IoTからDynamoDBV2に書き込む

2018.10.15

AWS IoTのルールエンジンで"DynamoDBテーブルにメッセージを挿入する"場合は、

img-20181015-technical-01.png

こちら"Sigfox CallbackとAWS IoT連携"を見てください。
ここでは、元となるペイロード(JSON)が下記のような構成になっているが、

sensit.json
{ "device":"B42XXX", "time":"1539592634", "data":"fe0da56c", "battery_level":31, "mode":1, "button_alert":"true", "temperature":421, "humidity":108 } 

各値を計算してからデータベース(DynamoDB)に挿入したい場合です。
例えば、battery_levelは
バッテリー電圧 = (battery x 0.05) + 2.7
のような場合です。
この場合は、"データベーステーブル(DynamoDBv2)の複数列にメッセージを分割する"をアクションとして選択することとなります。

img-20181015-technical-02.png

DynamoDBv2に挿入する方法

こちら"Sigfox CallbackとAWS IoT連携"で、まずは一連の流れを作っていただいて結構です。それを下記の通り修正していきます。
AWS IoTのACTルールを作成します。ルール名は適当につけてもらえれば結構です。ルールクエリステートメントで下図のようなクエリを作ります。

img-20181015-technical-03.png
SELECT
 (battery_level * 0.05) + 2.7 AS battery_voltage, *
FROM 'sigfox'

ここでは、'sigfox'トピックからとってきたJSONから"(battery_level * 0.05) + 2.7"した値を"battery_voltage"カラムに、その他すべて()をDynamoDBに挿入します。ということを意味します。
アクションは、"データベーステーブル(DynamoDBv2)の複数列にメッセージを分割する"
を選択し、挿入先のテーブル名、ロールを設定します。

img-20181015-technical-04.png

ルールのテスト

AWS IoTのテストメニューから"sigfox"トピックにサブスクライブし、Sigfox Callbackで転送されるJSONサンプルを下図のように記載し、[トピックに発行]ボタンを押します。

img-20181015-technical-05.png

すると、DynamoDBのテーブルを見ると下図のように"battery_voltage"というカラムが追加されていることを確認できます。

img-20181015-technical-06.png

あとは、Sens'it v3がデータを送るたびにDynamoDBが更新されていきます。

著者情報

Products and Marketing Department 日比 学

京セラコミュニケーションシステム株式会社(KCCS)よりSigfox社(フランス)に出向中の元自称Sigfoxエバンジェリスト

  • KCCSから追い出され、フランスの片田舎で余生を過ごしています
Twitter:https://twitter.com/ghibi