SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「Grove IoT スターターキット for SORACOM」で始めるIoTプロトタイプ製作

IoTは小さく始めて素早く改善しよう!「Grove IoT スターターキット for SORACOM」とクラウドの本格連携

「Grove IoT スターターキット for SORACOM」で始めるIoTプロトタイプ製作 第2回

「クラウドリソースアダプタ サービス」SORACOM FunnelでAWS IoT Coreと連携する

 PaaSやSaaSの活用はいいことづくめのように見えます。しかし、いざ実際にデバイスとクラウドサービスと連携をしようとすると、デバイス側にSDK(Software Development Kit;クラウドサービスを利用するための認証プロセスやプロトコル変換を行ってくれるライブラリ群)のセットアップが必要となります。クラウドから提供されている最新の機能を存分に利用できる反面、セットアップ可能な機種やスペックに条件が存在します。

 SORACOMでは、さまざまなクラウドサービスと連携する仕組みも用意されています。代表的なものが「SORACOM Funnel」(「ソラコム ファネル」と読みます)です。SORACOM Funnelは、いわばプロキシサーバのように動作します。これにより、デバイス側にSDKが入っていなくとも、SORACOM Funnelで対応しているクラウドサービスにデータを送ることができます。

 今回はAWSが提供しているIoT向けのフルマネージド・サービス「AWS IoT Core」へデータを送り、同じくAWSが提供しているフルマネージドのモニタリングサービス「Amazon CloudWatch」でモニタリングしてみます。

図22 モニタリングの流れ
図22 モニタリングの流れ

注意点

 本章ではSORACOMアカウントの他、AWSアカウントも必要となるため準備してください。(AWSアカウントの作成等の準備については解説しません。ご了承ください)

 また、本章ではSORACOM Air SIMやSORACOM FunnelなどのSORACOMサービスの他、AWSにおける費用も必要です。各サービスの利用料金を確認するようお願いします。

1:AWS IoT Core設定

 まず、AWS IoT Coreの設定を行います。AWS IoT Core上に、トピックに対応する「ACT(ルールとアクション)」を作成するだけです。

 通常、AWS IoT Coreを利用する場合はAWS IoT Core上に「モノ」や「証明書」を作成する必要があります。SORACOM Funnelと連携する場合はこうした設定が不要になるのも、SORACOM Funnelを利用する利点です。

アクションの作成

 AWS IoT Coreコンソールの左側のメニューから[ACT]をクリックして、ルールを作成します。

 名前と説明は任意で入力します。今回は名前をSensorToCloudWatch、説明をSend sensor data to CloudWatchとしました。

 属性に*、トピックフィルターにsensorを指定します。

図23 ルールの作成画面
図23 ルールの作成画面

 [アクションの追加]を押し、「CloudWatch にメッセージデータを送信する」を選びます。

 メトリクス名Distance、メトリクス名前空間Sensor、単位None、値${payloads.distance_cm}を指定します。

 新しいロールの作成をクリックし、任意の名前(今回はAWSIoTtoCloudWatchとしました)を指定し、[新しいロールの作成]をクリックします。

 IAMロール名から作成したロールを選択し、アクションの追加を押します。

図24 アクションの設定画面
図24 アクションの設定画面

 最後に[ルールの作成]をクリックすると、ルールが作成されます。これでsensorのトピックにデータが着信すると、CloudWatchへデータが送信される設定ができました。

テストとCloudwatch側の確認

 AWS IoT Coreコンソールの左側のメニューから[テスト]をクリックし、[発行]からテストデータを送ってみます。

 トピックをsensorに、データは以下の通り設定して[トピックに発行]をクリックします。

{"payloads":{"distance_cm":100}}
図25 データの設定画面
図25 データの設定画面

 これで、AWS IoT Coreのルール経由でCloudWatchにデータが送信されました。確認してみます。

 CloudWatchコンソールの左側のメニューから、メトリクスをクリックします。すると「Sensor」というカスタム名前空間ができているはずです。

図26 「Sensor」のカスタム名前空間ができていることを確認
図26 「Sensor」のカスタム名前空間ができていることを確認

 SensorをクリックしていくとDistanceが見つかります。これをグラフに追加しましょう。

図27 Distanceを追加
図27 Distanceを追加

 先ほど送信した100という数値が描画されています。

図28 グラフに描画されている様子
図28 グラフに描画されている様子

 これでAWS IoT Coreの設定が完了しました。

2:AWS IAMユーザ作成

 AWS上にAWS IoT Coreへデータを送信する専用のユーザ(IAMユーザ)を作成し、適切な権限を付与します。

  1. AWSマネージメントコンソールでAWS IAMのコンソールを開きます。
  2. ユーザ名には「AWSIoT」などの分かりやすい名前を付けます。APIキーが必要なので「プログラムによるアクセス」のチェックボックスを付け、次のステップへ進みます(図29)。
  3. 「既存のポリシーを直接アタッチ」を選び、「iotdata」と検索窓に入れ「AWSIoTDataAccess」にチェックボックスを入れ、次のステップに進みます(図30)。
  4. 確認画面で、ユーザの作成をクリックします。
  5. 完了画面では、アクセスキーIDと、シークレットアクセスキーをどこかに保存しておきます。CSVファイルをダウンロードしてもいいです(図31)。

 これで専用ユーザの作成と設定は完了です。

図29 ユーザー詳細の設定
図29 ユーザー詳細の設定
図30 アクセス権限設定画面
図30 アクセス権限設定画面
図31 ユーザーを追加 完了画面
図31 ユーザーを追加 完了画面

3:SORACOM Funnel設定

 次はSORACOM Funnelの設定です。主に2つあり、1つは転送先クラウドサービス設定と、もう1つが転送先クラウドサービスに接続するための認証情報です。基本的な操作はSORACOM Harvestと同じになります。

  1. [Menu]>[SIMグループ]をクリックすると、SIMグループ一覧が表示されます。[追加]からSIMグループを作成します。名前は任意で構いません。
  2. 先ほど作成したSIMグループをクリックします。その中の[SORACOM Funnel 設定]を開いて、まずスイッチをONにします。すると各種情報が入力できるようになるので、以下の通り設定します。
    • 転送先サービス:AWS IoT
    • 転送先URL:https://data.iot.ap-northeast-1.amazonaws.com/sensor
    • 認証情報の右の[+]ボタンを押します(図32)。
    • 先ほど作成したIAMユーザの認証情報を入力します(図33)。
    • [登録]をクリックしたあと、[保存]をクリックします。
  3. [Menu]>[SIM管理]をクリックすると、SIM一覧が表示されます。
  4. Wio LTEに取り付けているSIMにチェックを付けて、>[操作]>[所属グループ変更]を選択します。
  5. 新しい所属グループを、先ほど作成したグループを選択してから[グループ変更]をクリックします。
図32 SORACOM Funnelの設定
図32 SORACOM Funnelの設定
図33 認証情報を登録
図33 認証情報を登録

 以上でSORACOM Funnelの設定は完了です。

4:スケッチの作成

 前回利用したスケッチ「ma2shita/grove-ultrasonic-ranger_soracom-harvest.ino」を改造して、SORACOM Funnelに送信できるようにします。

 Arduino IDEを起動し、前回使用したスケッチを読み込んだ後、2カ所変更を行います。

 9行目を以下の通り変更します。データの送信間隔を60秒に変更しています。

//旧
#define INTERVAL        (3000)
//新
#define INTERVAL        (60000)

 50行目を以下の通り変更します。送信先をSORACOM HarvestからSORACOM Funnelに変更しています。

//旧
  connectId = Wio.SocketOpen("harvest.soracom.io", 8514, WIOLTE_UDP);
//新
  connectId = Wio.SocketOpen("funnel.soracom.io", 23080, WIOLTE_UDP);

 その後はWio LTEをDFUモードにし、スケッチの書き込みを行います。

 以上でWio LTEに超音波測距センサーで計測した距離を、SORACOM Funnelに送信するプログラムの書き込みが完了しました。

5:動作確認

 Wio LTEの電源をON(通常モード)で起動して動作確認をしてみましょう。TeraTermもしくはArduinoIDEのシリアルモニタを使用します。

 Receive:200と表示されるようになれば、SORACOM Harvestへデータが送信されたことになります。

 この200はHTTPコードに対応しています。

図34 TeraTermでの動作確認
図34 TeraTermでの動作確認

 また、CloudWatchを見てみるとデータが描画されている様子が見えます。

図35 データが描画されている様子
図35 データが描画されている様子

 このように、SORACOM Harvestにデータが送信できるようになれば、送信先の変更をするだけでSORACOM Funnelを通じてさまざまなクラウドサービスと連携することも可能になります。

次のページ
「データ転送サービス」SORACOM BeamとPubNubで双方向通信

この記事は参考になりましたか?

「Grove IoT スターターキット for SORACOM」で始めるIoTプロトタイプ製作連載記事一覧
この記事の著者

松下 享平(株式会社ソラコム)(マツシタ コウヘイ)

 株式会社ソラコムの事業開発マネージャーとして主にデバイスの企画を担当しながら、エバンジェリストとして、SORACOMサービスを企業・開発者により理解、活用いただくための講演活動を担当。90年代半ばの地方ISPの立ち上げをキャリアスタートとし、主にインターネットを取り扱ったシステムインテグレーターを...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10675 2018/02/15 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー