こんにちは、ソラコムのtakiponeこと大瀧です。
IoTデバイスの運用には、ネットワークへの接続をより確実にするために無線の電波状況を把握することが重要です。SORACOM Air forセルラーで提供する3G/LTE/LTE-M通信の場合、IoTデバイスに搭載する通信モジュールから現在の電波状況を取得できる一方で、離れた場所にある複数のデバイスからそれらの値を集めて一覧するのには工夫が必要です。そこで本ブログでは手軽に電波状況を一覧する手段として、SORACOMが提供するWeb管理画面(ユーザーコンソール)のSIM一覧に電波状況を表示する手順をご紹介します。
表示する仕組み
SORACOM Air forセルラーにはSIMごとにデータを保存するメタデータサービス機能があり、デバイスから HTTP リクエストでデータを送信し、SORACOM プラットフォームで SIM およびタグというラベル単位にそのデータを保持します。最近、SORACOM ユーザーコンソールに SIM 一覧画面で保持するタグの値を表示する機能が追加されたので、デバイスで取得した電波状況をこの仕組みを用いて表示させるわけです。電波状況はデバイスのLTE通信モジュールから取得します。
メタデータサービスは電波状況に限った仕組みではありませんので、デバイスで取得する様々な単一データの簡易な表示にも応用できます。一方で複数データの表示や過去の履歴を一覧する機能はありませんので、移動体に載せて電波状況が頻繁に変化するような用途には向きません。その場合は SORACOM Harvest Data などデータを扱うためのSORACOMサービスを検討いただくのが良いでしょう。
設定手順
SORACOMの設定
メタデータサービスはSIMグループで有効にするため、まずはSIMグループを作成します。
グループの設定画面にある [SORACOM Air for セルラー設定] の[メタデータサービス]のスイッチをオン、今回は SIM からデータを書き込むため、[読み取り専用]のチェックをオフにします。
続いて SORACOM IoT SIM を SIM グループにセットします。SIM を選択して [操作] – [所属グループ変更] をクリックし先ほど作成した SIM グループを選択、 [グループ変更] で変更します。
これで SORACOM の設定は完了です。
デバイスの設定
デバイスでは、通信モジュールから電波状況を取得する方法を選択します。 Linux が動作するデバイスの場合は、ModemManager の mmcli
コマンドが手軽です。
$ mmcli -m 0 | grep "signal quality"
| signal quality: 62% (recent)
$
ModemManager がインストールされていない Linux や組み込みデバイスの場合は、通信モジュールへの AT コマンド AT+CSQ
で RSSI 値が取得できます。例えば、 Raspberry Pi OS をインストールした Raspberry Pi に SORACOM Onyx LTE USB ドングル SC-QGLC4-C1 をセットする場合 AT コマンド用デバイスファイルは /dev/ttyUSB3
になるので、以下のように確認できます。
$ echo 'AT+CSQ' > /dev/ttyUSB3
$ cat /dev/ttyUSB3
AT+CSQ
+CSQ: 23,99
OK
# <Ctrl> + <C>で終了
$
電波状況の善し悪しは用途や現場の状況によるため、実際の通信に支障がないかどうかの検証を通してこれらの値を評価するのがおすすめです。今回ご紹介した RSSI や signal quality の値の詳細については SORACOM IoT SIM が動作確認済の IoT ゲートウェイ Armadillo-IoT を製造・販売しているアットマークテクノさんの Web サイトを参照ください。
取得した値を HTTP リクエストとしてメタデータサービスに送出します。 Linux の場合は cURL コマンドが手軽でしょう。
$ curl -s -X PUT -d '[{"tagName": "signal","tagValue": "23"}]' -H "Content-Type:application/json" http://metadata.soracom.io/v1/subscriber/tags > /dev/null
$
メタデータサービスのURLおよびリクエストボディーは以下のドキュメントを参考にします。
組み込みデバイスの場合は組み込みOSのライブラリのほかに、HTTPクライアント機能を持つ通信モジュールでは AT コマンドで送信できることがあります。たとえばQuectel製通信モジュールにはTCPクライアントの AT コマンドがあり、以下のコマンドを組み合わせてHTTP PUTリクエストを送出できます。
AT+QIOPEN=1,1,"TCP","metadata.soracom.io",80
AT+QISEND=1
AT+QIRD=1
AT+QICLOSE=1
AT+QISEND
で送信するデータの例( \r\n
はCRLFを示す改行コードです)
PUT /v1/subscriber/tags HTTP/1.1\r\n
Host: metadata.soracom.io\r\n
User-Agent: curl/7.74.0\r\n
Accept: */*\r\n
Content-Type:application/json\r\n
Content-Length: 40\r\n
\r\n
[{"tagName": "signal","tagValue": "23"}]\r\n
Quectel 製通信モジュールの AT コマンドには HTTP クライアントもありますが、 PUT リクエストを送信するコマンドは無いため、 TCP クライアントのデータ送信に HTTP リクエストの形式を指定して代用します。
動作確認
では、送信したメタデータを SORACOM ユーザーコンソールの SIM 一覧画面に表示します。SIM 一覧画面上部の歯車アイコンをクリックし、表示列の設定ダイアログを表示します。
ダイアログ末尾の [+ 追加] ボタンをクリックします。
デバイスから送信したタグ名(前述の cURLコマンドの例では signal
)を入力し、[タグの表示列を追加] – [保存] ボタンをそれぞれクリックします。
SIM 一覧の表に signal
列が追加され、デバイスから送信したデータが表示されました!
電波状況が良くなく LTE 通信に失敗する場合、データの更新が滞ることになります。電波状況の値に加えて電波状況の取得時刻を任意のタグで SORACOM Air メタデータサービスに送信し、ユーザーコンソールで確認できるようにするのも良いでしょう。
まとめ
デバイスの電波状況を SORACOM の SIM 管理画面で一覧するために、 SORACOM Air メタデータサービスへのデータ送信と一覧画面での表示方法をご紹介しました。今回のタグを含めた SIM 一覧の情報は API でも取得できますので、他のシステムとの連携も検討いただけると思います。通信はもちろんですが、 SIM やデバイスの管理に役立つ SORACOM の様々な機能をご活用ください。