Sigfox Shield for ArduinoのデータをAWSに送信してみました。
スイッチサイエンス社では在庫が無かったので、SORACOMさんから購入しました。
様々なセンサーがこのシールドには搭載されています。
単体でネットワークに繋がるので、直ぐにIoTを試すことが出来ます。
搭載センサー
- 加速度センサ(MMA8451Q)
- 温湿度・気圧センサ(BME280)
必要なもの
準備
SORACOM社から購入しているので、購入後セットアップは下記を参照してください。
https://dev.soracom.io/jp/start/sigfox_hw_unashield-v2s/#_ga=2.210765397.1366760851.1509329125-812912311.1499217908
DynamoDBテーブル作成
まずデータを保存するためのテーブルをAWSのDynamoDBに作成します。
項目 | 値 |
---|---|
テーブル名 | SigfoxDemo |
プライマリキー | timestamp(数値型) |
Lambdaの作成
続いてLambdaの作成を行います。関数の作成をクリックしてください。
IAMのインラインポリシーを下記のように設定しました。
Resourceのテーブル名はIDは各々の設定を入力してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
},
{
"Action": [
"dynamodb:PutItem"
],
"Resource": "arn:aws:dynamodb:ap-northeast-1:XXXXXXXXXXX:table/SigfoxDemo",
"Effect": "Allow"
}
]
}
関数コードを入力
関数が出来たら、関数コードを入力部分をクリックしてコードを追加しましょう
// initialize SDK and document client
var AWS = require("aws-sdk");
var docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = function(event, context) {
// SORACOMから送られてくるタイムスタンプ取得
event.item.timestamp = event.timestamp;
// build API parameter
var params = {
Item: event.item,
TableName: 'SigfoxDemo' /*対象のテーブル名*/
};
// call PutItem operation
docClient.put(params, function(err, data){
if (err)
context.fail(err);
else
context.succeed({Item: event.item, Result:'success'});
});
};
API Gatewayの設定
APIの作成をクリックしてください。
POSTのセットアップ
ヘッダーの追加をクリックして、SORACOMから送られてくる「X-SORACOM-TIMESTAMP」を設定します。
本文マッピングテンプレートにあるマッピングテンプレートの追加
をクリックして
Content-Typeにapplication/json
を入力
送られてくるデータをこれで取得する
{
"timestamp":$input.params('X-SORACOM-TIMESTAMP'),
"item":$input.json('$')
}
テスト
これでうまくDynamoDBに書き込まれるかテストを行ってみます。
これでDynamoDBに書き込まれたはずです。
ここで書き込まれなかった場合はロールの設定を見直してみましょう。DBアクセス権限が無い場合があります。
デプロイする
作成したAPIをデプロイしましょう
APIキー作成
APIキーを作成しましょう。
AWSとSORACOM Beamを紐付ける
ここからは、SORACOMさんの管理画面から操作していき、作成したAWSと紐付けていきます。
管理画面のSigfoxグループをクリックしてください。
SORACOM Air for Sigfox 設定
シールドから送られてくるバイナリデータをパースする為の設定です。
SORACOM Beam 設定
事前共有鍵の設定
カスタムヘッダを追加
Sigfoxデバイス管理
実行する
ここまで完了したら、Sigfox Shield for Arduinoに電源を繋いで起動してみましょう
するとDynamoDBにセンサー値が書き込まれるかと思います。
まとめ
比較的簡単にAWSとの接続が出来ました。しかも1年間は通信料が無料という特典付きです!
USBの電池ボックスとケースを作成すればサーバーの温度を測れる簡易センサーが作れると思います。
是非お試しあれ!