SHOEISHA iD

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

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

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

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

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

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

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

 IoTではデータ収集だけでなく、クラウド側からデバイスに対してコマンド等のデータを送りたくなることもしばしばあります。例えば、定期的にセンサーデータを収集するデバイスに対する定時外のデータ収集指示などです。

 これを実現する方法として、SORACOMでは以下の方法を提供しています。

  • 閉域網上でクラウド側からのリモートアクセスを可能とする「SORACOM Gate
  • デバイス上のエージェントと協調してデバイス管理を実現する「SORACOM Inventory

 その他には、MQTTのPub/Sub機能を利用して簡易的なデバイスとの双方向通信を実現する考え方もあります。「SORACOM Beam」はデータ転送サービスとして、MQTTによるPub/Subをサポートしています。今回はこのMQTT Pub/Subを利用した簡易的な双方向通信を行ってみます。

 MQTTによるPub/Subを行うためには、「MQTTブローカー」と呼ばれるサーバを構築・運用するのが一般的です。

 先日SORACOMは主に米国で展開している「PubNub」というリアルタイム・データストリーム処理基盤をフルマネージドで提供しているサービスに対応しました

 日本ではあまりなじみのないPubNubですが、米国ではすでに多くの企業が利用しています。PubNubはMQTTにも対応しており、フルマネージドのMQTTブローカーとして利用することも可能です。これを利用してWio LTEに取り付けたブザーを制御します。

図36 SORACOM BeamとPubNubを利用したPub/Sub通信の流れ
図36 SORACOM BeamとPubNubを利用したPub/Sub通信の流れ

注意点

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

 なお、本章ではSORACOM Air SIMやSORACOM Beam等のSORACOMサービスの他、PubNubにおける費用も必要となる場合があります。各サービスのご利用料金を確認するようお願いします。

1:PubNubの準備

  1. PubNubのアカウント作成についてはAdmin Dashboardから進んでください。このとき、メールアドレスによる登録の他、Googleアカウントを利用することも可能です。
  2. [CREATE NEW APP]でアプリケーションを作成します。名前は任意で構いません。また、新規にアカウントを登録した直後の場合は「Demo Project」というアプリケーションが作成済みなので、これを利用することも可能です(以後、Demo Projectを対象とします)。
  3. [Demo Project]をクリックし、左側のメニューから[KEY INFO]をクリックします。すると図37のように「Keyset」が表示されるので、「PUBLISH KEY」と「SUBSCRIBE KEY」の2つを記録しておいてください。
図37 Keysetの表示
図37 Keysetの表示

 以上でPubNub側の準備は完了です。

2:SORACOM Beamの設定

 次はSORACOM Beamの設定です。PubNubに対する認証情報を設定するだけとなります。

  1. [Menu]>[SIMグループ]をクリックすると、SIMグループ一覧が表示されます。「追加」からSIMグループを作成します。名前は任意で構いません。
  2. 先ほど作成したSIMグループをクリックします。その中のSORACOM Beam設定を開いたら[+]をクリックします。その中の「MQTTエントリポイント」を選択し、以降は以下の通り入力します。
    • 設定名:任意(今回はpubnubとしています)
    • 転送先 / 種別:PubNub
    • 認証情報の右の[+]ボタンを押します(図38)。
    • 先ほど記録したPubNubのPUBLISH KEYとSUBSCRIBE KEYを入力します。認証情報 IDは任意で構いません(図39)。
    • [登録]をクリック後、[保存]をクリックします。
  3. [Menu]>[SIM管理]をクリックすると、SIM一覧が表示されます。
  4. Wio LTEに取り付けているSIMにチェックを付けて、>[操作]>[所属グループ変更]を選択します。
  5. 新しい所属グループを、先ほど作成したグループを選択してから[グループ変更]をクリックします。
図38 SORACOM Beam設定画面
図38 SORACOM Beam設定画面
図39 認証情報を登録
図39 認証情報を登録

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

 これでMQTTプロトコルでbeam.soracom.io:1883に接続すると、SORACOM BeamがMQTTSに変換したうえでPubNubのエントリーポイントに接続されるようになります。

3:スケッチの作成

 今回はWio LTEのライブラリに添付されているmqtt-clientのサンプルを基に、ブザーの制御を加えたスケッチを利用します。

 最初に、Arduino IDEのライブラリで「PubSubClient」をインストールしてください。利用するスケッチはma2shita/grove-buzzer-with-mqtt-and-soracom-beam.inoになります。

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

4:Wio LTEの接続

 Grove BuzzerをWio LTEのD38に接続してください。

図40 Grove BuzzerとWio LTEの接続
図40 Grove BuzzerとWio LTEの接続

 以上ですべての作業が完了しました。

5:動作確認

 まずPubNub側でメッセージ送受信の準備をします。

 「Demo Project」を選択した状態で左側のメニューから[DEBUG CONSOLE]を開きます。次に[ADD CLIENT]を押すとメッセージ送受信の制御用画面が表示されるので、右上の[歯車マーク]をクリックし、Channelsタブを開きます。すると図41のようになるので、Publish Channelに「downstream」、Subscribe Channelに「upstream」を入力して[UPDATE CLIENT]をクリックします

図41 Channelsの設定
図41 Channelsの設定

 次はWio LTEを通常モードで起動しましょう。しばらくするとSORACOM Beamに対してuptime(デバイスが起動してからの累積秒数)を送信し始めます。PubNub側でも確認ができるはずです。

 デバイスからクラウドへのデータ送信が確認できたら、いよいよクラウドからデバイスに向けたデータ送信となります。

 先ほどの画面の下部に{"text":"Enter Message Here"}と[SEND]のボタンがあります。このテキストの内容をデバイスに送ることができます。今回は{"text":"Hello SORACOM Beam!!"}として送ります。PubNubではJSON形式をサポートしているため、有効なJSONフォーマットで送信してください。

図42 テキストの設定
図42 テキストの設定

 するとデバイス側で一瞬「ピッ」とブザーが鳴ります。また、シリアルコンソールを表示している場合は図43の通りメッセージが表示されることが確認できるかと思います。

図43 シリアルコンソールに表示されたメッセージ
図43 シリアルコンソールに表示されたメッセージ

注意点

 Grove Buzzerは音量の調整ができません。そのため、実行時は周囲への配慮をお願いします。

次のページ
スケッチ解説

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

「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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー