はじめに
前回はモジュールを接続して、sigfoxクラウドにメッセージ送信まで確認できました。
今回はもう少し踏み込んで、AWSのIoTCoreと連携させDynamodbやTimeStreamなどのDBに情報を書き込むまでをゴールにしたいと思います。
前回その①
AWSIoTCoreの設定
先にエンドポイント側を設定しておく必要があります。
IoTCoreでデバイスを登録してトピック名まで設定してください。
詳細は私の過去記事を参照ください。
MQTTによる通信確認であればルール設定までは不要です。
IoTCoreのMQTTモニタリングで通信確認可能です。
Sigfoxクラウド側での設定
位置情報オプションの確認
DeviceType→information内にあるOptionsを確認します。
Sigfox geolocation service
がNetwork location
であることを確認します。
Callbackの設定
DeviceType→CallBacksにでAWS IoTを選択
設定画面が表示されるので、下記手順の通り設定を行います
①ExternalId
をコピーしてLanch Stack
をクリックしてAWSへ遷移
②AWSのCloudformationでは特に編集せずにそのまま進める
③ARNRole
が表示されるのでコピーして、sigfoxクラウドへコピーする
④Topic
にトピック名を入力します。
ワイルドカードを使ってデバイスIDなどを埋め込むことができます。
トピック名の例
AWSIoTCore:ESP32/+/pub
Sigfoxクラウド:ESP32/{device}/pub
⑤Json Body
に下記Jsonを入力する。(ここはお好みで編集してください)
{
"device":"{device}",
"time":{time},
"data":"{data}",
"seqNumber":"{seqNumber}",
"lqi":"{lqi}",
"fixedLat":"{fixedLat}",
"fixedLng":"{fixedLng}",
"operatorName":"{operatorName}",
"countryCode":"{countryCode}",
"deviceTypeId":"{deviceTypeId}",
"computedLocation":{computedLocation}
}
センサーからのデータを挿入したい場合
Sigfox Payload configuration(Payload display)機能で実装することができます
その際はエッジ側でセンサデータ16進数に変換する必要があります。
詳細は下記をご覧ください。
Callback作成時にエラーがでる場合
下記のようなエラーがでた場合の対処です。
Your entered information doesn''t allow us to retrieve the endpoint from AWS. Please try to configure again your information through the button ''Launch Stack'' or change the method of configuration.
このエラーはCloudformationで作成したロールにIoTCoreの権限がないときにでるエラーです。
IAMロールに各権限(AWSIoTFullAccessなど)をアタッチして再トライすることで解決することができます。
IAM→Roles→作成されたロール
メッセージを送信してCallbackを確認する
ATコマンドよりメッセージを送信してみます。
AT$SF=1234567890
再度メッセージを確認するとCallbackがあることが確認できます。内容を確認すると緯度経度情報なども確認できると思います。
AWS側もIoTcoreのMQTTモニタリングやルール設定した各DBへ通信が上手くいっているか確認してみましょう。