技術情報
Sigfox CallbackとAWS IoT連携
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の設定
まずは、Sigfoxクラウドで、Callback設定画面に移動し、「AWS IoT」を選択します。
下図の画面になります。後ほど、AWS IoT側の設定で必要になるExternal Idをコピーしたうえで、[Launch Stack]ボタンをクリックします。
AWSコンソールが立ち上がり、CloudFormationの画面に移るので、そのまま[Next]をクリックします。
スタックの詳細の指定画面になります。AWSAccountIdはご自身のAWSアカウントID、ExternalIdは、先ほどSigfoxクラウドのCallback設定でコピーしておいたExternalIdを、Regionには、ご自身のリージョンを入力してください。リージョンを調べる場合は、こちらから探してください。アジアパシフィック(東京)の場合は、「ap-northeast-1」となります。
TopicNameは、AWS IoTにpublishするトピック名となります。
[次へ]ボタンをクリックすると、オプションの設定画面になりますので、そのまま[次へ]ボタンをクリックすると、確認画面になります。
☑AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。
にチェックを入れて、[作成]ボタンクリックで、スタックが作成されます。
作成されたスタックを開き、「出力」を確認します。
ここで、ARNRoleとTopicをコピーしておき、SigfoxクラウドのCallback設定画面に戻り、ARN RoleとTopicに貼り付けます。RegionはAWS IoT側で設定したリージョンと同じものを選びます。
Json Bodyには、AWS IoTにCallbackするデータをJSON形式で入力します。今回は、下記のようなJSONを送ってみます。
{ "device":"{device}", "time":{time}, "data":"{data}" }
[OK]ボタンをクリックし、Callback設定を完了させます。これで、SigfoxクラウドからAWS IoTへのCallbackが完了しました。
DynamoDBにデータを送ってみる
SigfoxクラウドからのデータをDynamoDBに保存していきます。
AWSのサービス一覧から「DynamoDB」を選択します。
DynamoDBのダッシュボードから「テーブルの作成」ボタンをクリックし、テーブル名とプライマリーキーを設定します。絶対ではないですが、deviceとtimeをキーにしておきます。
テーブルの作成が完了するとDynamoDBのテーブルメニューにテーブル名が表示されます。
DynamoDBにデータを受け渡すためのRoleを設定
DBテーブルを用意しただけでは、データが受けわされてないので、受け渡し用の設定を行います。
AWSサービス一覧から「IoT Core」を選択し、左メニューのACTをクリックし、[ルールの作成]を行います。
ルールの作成画面では、AWS IoT(CloudFormation)で設定したデータハブからデータを取得し、そのあと、どうするかを定義します。トピックフィルターでは、CloudFormationで設定したTopic名(今回は"sigfox")を入力。属性は、とりあえず、全部ということで、""を入力します。
[アクションの追加]ボタンをクリックし、DynamoDBテーブルにメッセージを挿入するを選択。
先程作成したテーブル名など、テーブルの設定を行い[アクションの追加]*ボタンをクリックします。(IAMロール名も適当に作っておいてください)
最後に、[ルールの作成]ボタンをクリックすると、ルールが一つ出来上がります。
DynamoDBのテーブルを確認すると、Sigfox Callbackで設定したJSONにあわせた項目が挿入されていることが確認できます。