9
7

More than 3 years have passed since last update.

Sigfox CallbackとAWS IoT連携

Last updated at Posted at 2018-10-11

Sigfox Callbackには、Custom Callback以外にAWS IoT、AWS Kinesis、Microsoft Azure Event hub、Microsoft Azure IoT hub、IBM Watson IoT Platformへの連携が用意されています。
ここでは、AWS IoTとの連携方法を記載します。

Sigfox Callback設定とAWS IoTの設定

image.png
まずは、Sigfoxクラウドで、Callback設定画面に移動し、「AWS IoT」を選択します。
image.png
下図の画面になります。後ほど、AWS IoT側の設定で必要になるExternal Idをコピーしたうえで、[Launch Stack]ボタンをクリックします。
image.png
AWSコンソールが立ち上がり、CloudFormationの画面に移るので、そのまま[Next]をクリックします。
image.png

スタックの詳細の指定画面になります。AWSAccountIdはご自身のAWSアカウントIDExternalIdは、先ほどSigfoxクラウドのCallback設定でコピーしておいたExternalIdを、Regionには、ご自身のリージョンを入力してください。リージョンを調べる場合は、こちらから探してください。アジアパシフィック(東京)の場合は、「ap-northeast-1」となります。
image.png
TopicNameは、AWS IoTにpublishするトピック名となります。
[次へ]ボタンをクリックすると、オプションの設定画面になりますので、そのまま[次へ]ボタンをクリックすると、確認画面になります。
☑AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。
にチェックを入れて、[作成]ボタンクリックで、スタックが作成されます。
作成されたスタックを開き、「出力」を確認します。
image.png
ここで、ARNRoleTopicをコピーしておき、SigfoxクラウドのCallback設定画面に戻り、ARN RoleとTopicに貼り付けます。RegionはAWS IoT側で設定したリージョンと同じものを選びます。
image.png
Json Bodyには、AWS IoTにCallbackするデータをJSON形式で入力します。今回は、下記のようなJSONを送ってみます。

sigfox_awsiot.json
{
  "device":"{device}",
  "time":{time},
  "data":"{data}"
}

[OK]ボタンをクリックし、Callback設定を完了させます。これで、SigfoxクラウドからAWS IoTへのCallbackが完了しました。

DynamoDBにデータを送ってみる

image.png
SigfoxクラウドからのデータをDynamoDBに保存していきます。
AWSのサービス一覧から「DynamoDB」を選択します。
image.png
DynamoDBのダッシュボードから「テーブルの作成」ボタンをクリックし、テーブル名とプライマリーキーを設定します。絶対ではないですが、deviceとtimeをキーにしておきます。(timeキーを追加する場合は、☑ソートキーの追加にチェックをいれてください。)
テーブルの作成が完了するとDynamoDBのテーブルメニューにテーブル名が表示されます。
image.png

DynamoDBにデータを受け渡すためのRoleを設定

image.png
DBテーブルを用意しただけでは、データが受けわされてないので、受け渡し用の設定を行います。
AWSサービス一覧から「IoT Core」を選択し、左メニューのACTをクリックし、[ルールの作成]を行います。
image.png
ルールの作成画面では、AWS IoT (CloudFormation)で設定したデータハブからデータを取得し、そのあと、どうするかを定義します。
今回は、"sigfox" Topicから全てのデータを取得し、DynamoDBに、そのデータを挿入したいので、ルールクエリステートメントには、
SELECT * FROM 'sigfox'
と入力します。(Topic名がsigfox以外の場合は、ご自身の環境に合わせて書き換えてください)
image.png
[アクションの追加]ボタンをクリックし、DynamoDBテーブルにメッセージを挿入するを選択。[アクションの設定]ボタンをクリックし、アクションの設定内容を記載していきます。
image.png
今回は、先ほど作成したDynamoDBのテーブル名を選択します。選択すると、"device"とうパーティションキーと"time"というレンジキーが自動設定されます。
あとは、パーティションキーの値に${device}、レンジキーの値に${time}を入力し、この列にメッセージデータを書き込むという入力欄にpayloadを入力してください。これで、DynamoDBテーブルにpayload列が追加され、その列にSigfoxクラウドからCallbackされたメッセージの中身(JSON形式)が挿入されていくこととなります。
(IAMロール名も適当に作っておいてください)
最後に、[ルールの作成]ボタンをクリックすると、ルールが一つ出来上がります。
image.png
DynamoDBのテーブルを確認すると、Sigfox Callbackで設定したJSONにあわせた項目が挿入されていることが確認できます。
image.png

Sigfox Japan KCCS

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7