KSMNの IoT ×アクアリウム

アクアリウム × IoT

SORACOM GPSマルチユニットからKinesis Data Firehoseへ温湿度データを送信 その1

1. はじめに

こんにちは、KSMNです。

YouTubeの動画でSORACOM GPSマルチユニットについて紹介しました。 youtu.be

動画ではイモリウムの温湿度を試しに取得しましたが、うちの小さなイモリウムに置くには大きいのでこちらのデバイスはベランダビオトープ用としたいと思います。

また、動画では単にデータの取得状況の確認までしか実施できていません。

今回は実際にクラウド(AWS)へデータを送信・保存する設定を実施したいと思います。

2. 今回の構成

SORACOMを使ったAWSへのデータの送信は、SORACOM Funnelというサービスで可能です。今回はGPSマルチユニットで取得した温湿度データをSORACOM Funnelで、AWSKinesis Data Firehoseへ送信、S3へ保存します。

f:id:KSMN:20200823155608p:plain
構成
soracom.jp

設定方法についてはSORACOMのドキュメントに手順が用意されているので簡単にできます。

dev.soracom.io

実はデータの保存・可視化はSORACOMの以下のサービスを利用することでも可能です。

soracom.jp soracom.jp

今回、AWSへ保存するのは、機械学習や異常検知など、より自由にデータを扱いたいためです。まあ、自分が仕事でAWSを触っているというのもあるのですが。。。

3. AWS側の設定

3-1.Kinesis Data Firehose作成

まずはKinesis Data Firehoseを作成します。

コンソールにログインし、Kinesisの画面からKinesis Data Firehoseの作成を開始します。

f:id:KSMN:20200823155626p:plain

特別な設定はいりません。デフォルトで大丈夫です。今回、保存先はS3なのでS3を選択します。保存先のS3は新規作成しまた。

f:id:KSMN:20200823155804p:plain

3-2. IAMユーザー作成

SORACOM側からKinesisにアクセスするためにIAMユーザーを作成します。個人的にはIAMユーザーの利用ではなく、IAMロールでアクセスしてくれるようにアップデートされないかなー、と思います。。。

IAMの画面でIAMユーザーを新規作成します。アクセスの種類は「プログラムによるアクセス」です。 f:id:KSMN:20200823160453p:plain ポリシーは「AmazonKinesisFirehoseFullAccess」をアタッチしました。 f:id:KSMN:20200823160516p:plain 作成を実行したらアクセスキーとシークレットキーの書かれたCSVをダウンロードします。アクセスキーとシークレットキーはなくさないようにしましょう!

4. SORACOM側の設定

4-1. IAMユーザーの認証情報の登録

手順3-2で作成したIAMユーザーのアクセスキーとシークレットキーをSORACOM側へ登録します。

SORACOMへログインし、ユーザー名 > セキュリティ をクリック。 f:id:KSMN:20200823160940p:plain 認証情報ストアで認証情報を登録します。 f:id:KSMN:20200823160952p:plain

4-2. SORACOM Funnelの設定

GPSマルチユニットで利用しているSIMが所属するSIMグループで、SORACOM Funnelの設定を実施します。SORACOM FunnelをONにして各項目を入力します。転送先サービスは Firehose を選択、転送先URL・認証情報は前の手順で作成したものを入力します。

f:id:KSMN:20200823161953p:plain

5. 確認

データが送信・保存できているか確認します。上記手順を実施してしばらくするとS3にファイルが保存されます。中身を確認すると取得された温湿度が確認できます。以下は例です。

{"operatorId": "OP0043263044", "timestamp": 1598167210733, "destination": {"resourceUrl": "https://firehose.ap-northeast-1.amazonaws.com/xxxxxxxx", "service": "firehose", "provider": "aws"}, "credentialsId": "xxxxxxxxxx", "payloads": {"bat": 3, "temp": 28.3, "rs": 4, "lon": null, "y": null, "humi": 46.6, "lat": null, "x": null, "z": null, "type": 0}, "sourceProtocol": "udp", "imsi": "xxxxxxxxxxxxxx"}

6. まとめ

今回はGPSマルチユニットからSORACOM Funnelを使ってS3へデータを保存する設定を実施してみました。これまで、SORACOMのコンソールでデータを確認してただけだったので、これで保存したデータを使って可視化や機械学習といった様々なチャレンジができそうです。