「データ転送サービス」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に取り付けたブザーを制御します。
注意点
本章ではSORACOMアカウントの他、PubNubアカウントも必要となるため準備してください。(PubNubアカウントの作成についての詳細な解説はしません。ご了承ください)
なお、本章ではSORACOM Air SIMやSORACOM Beam等のSORACOMサービスの他、PubNubにおける費用も必要となる場合があります。各サービスのご利用料金を確認するようお願いします。
1:PubNubの準備
- PubNubのアカウント作成についてはAdmin Dashboardから進んでください。このとき、メールアドレスによる登録の他、Googleアカウントを利用することも可能です。
- [CREATE NEW APP]でアプリケーションを作成します。名前は任意で構いません。また、新規にアカウントを登録した直後の場合は「Demo Project」というアプリケーションが作成済みなので、これを利用することも可能です(以後、Demo Projectを対象とします)。
- [Demo Project]をクリックし、左側のメニューから[KEY INFO]をクリックします。すると図37のように「Keyset」が表示されるので、「PUBLISH KEY」と「SUBSCRIBE KEY」の2つを記録しておいてください。
以上でPubNub側の準備は完了です。
2:SORACOM Beamの設定
次はSORACOM Beamの設定です。PubNubに対する認証情報を設定するだけとなります。
- [Menu]>[SIMグループ]をクリックすると、SIMグループ一覧が表示されます。「追加」からSIMグループを作成します。名前は任意で構いません。
-
先ほど作成したSIMグループをクリックします。その中のSORACOM Beam設定を開いたら[+]をクリックします。その中の「MQTTエントリポイント」を選択し、以降は以下の通り入力します。
-
設定名:任意(今回は
pubnubとしています) - 転送先 / 種別:PubNub
- 認証情報の右の[+]ボタンを押します(図38)。
- 先ほど記録したPubNubのPUBLISH KEYとSUBSCRIBE KEYを入力します。認証情報 IDは任意で構いません(図39)。
- [登録]をクリック後、[保存]をクリックします。
-
設定名:任意(今回は
- [Menu]>[SIM管理]をクリックすると、SIM一覧が表示されます。
- Wio LTEに取り付けているSIMにチェックを付けて、>[操作]>[所属グループ変更]を選択します。
- 新しい所属グループを、先ほど作成したグループを選択してから[グループ変更]をクリックします。
以上で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に接続してください。
以上ですべての作業が完了しました。
5:動作確認
まずPubNub側でメッセージ送受信の準備をします。
「Demo Project」を選択した状態で左側のメニューから[DEBUG CONSOLE]を開きます。次に[ADD CLIENT]を押すとメッセージ送受信の制御用画面が表示されるので、右上の[歯車マーク]をクリックし、Channelsタブを開きます。すると図41のようになるので、Publish Channelに「downstream」、Subscribe Channelに「upstream」を入力して[UPDATE CLIENT]をクリックします
次はWio LTEを通常モードで起動しましょう。しばらくするとSORACOM Beamに対してuptime(デバイスが起動してからの累積秒数)を送信し始めます。PubNub側でも確認ができるはずです。
デバイスからクラウドへのデータ送信が確認できたら、いよいよクラウドからデバイスに向けたデータ送信となります。
先ほどの画面の下部に{"text":"Enter Message Here"}と[SEND]のボタンがあります。このテキストの内容をデバイスに送ることができます。今回は{"text":"Hello SORACOM Beam!!"}として送ります。PubNubではJSON形式をサポートしているため、有効なJSONフォーマットで送信してください。
するとデバイス側で一瞬「ピッ」とブザーが鳴ります。また、シリアルコンソールを表示している場合は図43の通りメッセージが表示されることが確認できるかと思います。
注意点
Grove Buzzerは音量の調整ができません。そのため、実行時は周囲への配慮をお願いします。
