SORACOM Beam(以下、Beam)は、IoT デバイスにかかる暗号化等の高負荷処理や接続先の設定を、クラウドにオフロードできるサービスです。Beam を利用することによって、クラウドを介していつでも、どこからでも、簡単に IoT デバイスを管理することができます。大量のデバイスを直接設定する必要はありません。
Beam では、IoT デバイスからのデータアップロード時は、3G/LTE 閉域網を通じて Beam のエンドポイントまでデータが送信され、Beam から先のインターネットでは、Beam によって通信が暗号化され、お客様のサーバーに安全にデータを届けることができます。 これにより、CPUやバッテリーの問題で暗号化処理が難しいようなデバイスでも、デバイスに負担をかける事なく、安全にデータを送信する事が可能です。
Beam を利用することで、IoT デバイス側ではデータの送信先を Beam に固定することができます。 Beam からのお客様のサーバーへの接続情報は、Beam の Web コンソール(ユーザーコンソール)もしくは API を利用して、Air SIM のグループ単位で別々の宛先を設定することができます。 これにより、デバイス側に接続の情報(アドレスや認証情報、証明書など)を持たせる必要がなくなるため、デバイスの管理の負担が軽くなります。
Beam を経由して、HTTP によるデータ送信を行ってみましょう。
テスト用のサーバとして用意されているhttps://beamtest.soracom.io を利用します。
もしご自身のサーバやクラウド環境へインストールしてみたい人は、サーバプログラムのソースコードを参照して下さい。
また通信を行うデバイスとしては、Raspberry Pi などをお持ちの方は USB モデムや、3GPI などを利用して接続してもよいですし、用意が出来ない場合にはスマートフォン等に入れて自分のパソコンをテザリングする事で、デバイスからの動作を想定したテストを行う事が出来ます(筆者の場合は、Raspberry Pi と FS01BU の組み合わせか、iPad mini と MacBook を接続して各種テストを行っています)。
Beam の設定は、SORACOM ユーザコンソールから行います。 大まかな手順としては、下記のようになります。
※もし SIM 登録時にグループを作成済みの場合には、スキップしてグループへの Beam 設定投入まで読み進めてください
ユーザコンソール(図3)上部メニューから「グループ」をクリックしてグループ設定画面に移動
「追加」を押してグループ作成
任意の名前を指定しグループ作成後、作成されたグループをクリックして詳細設定画面に移動
「SORACOM Beam 設定」をクリックし、「+」ボタンから「HTTP エントリポイント」を選択
上部メニューの「SIM 管理」から使用する SIM を選択後、「操作」から「所属グループ」から先ほど作成したグループを選択して「グループ変更」を押す
以下のように設定を投入
設定名:任意
エントリポイント:パス "/"
転送先:ホスト名 "beamtest.soracom.io" 、 パス "/"
ヘッダ操作:IMSIヘッダ付与・IMEIヘッダ・署名ヘッダ "ON" 、事前共有鍵 "topsecret"
SORACOM Air で繋がっている機器から、実際に Beam を経由してサーバにアクセスしてみましょう。
GET リクエスト Beam の エントリーポイントhttp://beam.soracom.io:8888/ にブラウザや curl コマンドでアクセスしてみましょう。
ブラウザでのアクセス
curl コマンドでのアクセス
Beam 経由の場合には、使用しているSIMの識別番号(IMSI)、使用している機器の識別番号(IMEI)をサーバ側で取得出来ています。
POST リクエスト HTTP でデータを送信するために、POSTリクエストを行ってみましょう。
~$ curl -X POST -d "SoftwareDesign" https://beamtest.soracom.io
Success: SoftwareDesign
~$ curl -X POST -d "SoftwareDesign" http://beam.soracom.io:8888
Access Authorized: SoftwareDesign
サーバに直接データを送信した際には単に Success となっていて、Beam を経由した場合には、Access Authorized となります。 もし Beam 経由でしかデータを受け付けないように設定すれば、セキュリティを向上させる事が可能となります。
HTTP 通信は TCP 通信となるので、少量のデータを送信する際には、通信開始時の3ウェイ・ハンドシェイクや余分なHTTPヘッダによるオーバヘッドが気になるユースケースがあります。先ほどの例では、14バイトのデータを送信するのに、送受信を合わせて400バイト以上の転送量が発生しています。 またデバイスによっては、HTTP で通信する事自体が困難な場合があります。SORACOM Beam では、そのような場合に有効な「プロトコル変換機能」があります。
この機能を使うと、デバイスからは TCP や UDP で Beam のエンドポイントに接続してデータを送信し、Beam が受け取ったデータを HTTP(S) で Web サーバに送信する事が出来ます。この機能を活用する事で、モバイル通信の通信容量とバッテリ消費を少なく抑える事が可能となります。
グループ詳細設定画面で「SORACOM Beam 設定」をクリックし、「+」ボタンから「UDP → HTTP/HTTPS エントリポイント」を選択
以下のような設定を投入
設定名:任意
転送先:ホスト名 "beamtest.soracom.io" 、 パス "/"
ヘッダ操作:IMSIヘッダ付与・IMEIヘッダ・署名ヘッダ "ON" 、事前共有鍵 "topsecret"
デバイスからのUDPでのデータ送信には、netcat (nc) コマンドを -u オプション付きで使用します。
~$ nc -u beam.soracom.io 23080
SoftwareDesign
200 Access Authorized: {"payload"=>"U29mdHdhcmVEZXNpZ24K"} => SoftwareDesign
デバイスから Beam のエントリーポイントまではデータが UDP のパケットで送信されるため、データ量に対してオーバーヘッドが少なくなるので、データ通信容量の節約になります。また Beam からサーバまでは HTTP(S) の通信で JSON 形式で POST されるため、アプリケーションサーバは一般的な Web サーバで簡単に構成する事が出来る事もメリットとなります。
SORACOM Beam を利用したデータ通信についての解説は以上ですが、SORACOM には他にも様々なサービスがございます。ぜひ、開発者向けサイト から各種ドキュメントをご参照ください。
次の記事では、もっとSORACOMの機能を試したい方、情報収集したい方向けのサイトをご紹介します。