投稿日

SORACOM Beam / Funnel / Harvest が USSD からの入力をサポート

皆様こんちにちは。ソラコムのソフトウェアエンジニア ogu です。

今回は、多くの方にとってはあまり聞き慣れないであろう “USSD” というものを使った新機能のお知らせです。

このたび、SORACOM の Global SIM (plan01s, plan01s-LowDataVolume) を使って、USSD (Unstructured Supplementary Service Data) と呼ばれるデータを送信することができるようになりました。

USSD は 3GPP TS 22.090 / 23.090 / 24.090 などの標準規格で定められていますが、一言で言うと 160 バイトほどのデータをネットワーク上のサーバーに向かって送信したり、逆にサーバー側から受信したりできる機能です。
(ただし現時点では SORACOM の USSD 機能はデバイスからサーバー側への方向の送信のみサポートしています)

そして、SORACOM ならではの特徴として、デバイスから USSD で送信したデータを Beam でインターネット上のサーバーに転送したり、Funnel でクラウド上のサービスへ入力したり、Harvest へ蓄積することができます。

SMS との比較

ただ、それだけ聞くと SMS とどこが違うのか、という感じがするかもしれませんね。
ちょっと表にしてまとめてみました。

機能など SMS USSD
主な目的 センターを介した端末間でのメッセージ交換
端末とセンターの間でのメッセージ交換
端末とセンターの間でのメッセージ交換
一度に送信可能なデータサイズ 140 バイト 160 バイト
センターでの保管・再送 あり なし
端末側での蓄積 あり なし
SORACOM での利用料金 端末からの送信: 0.4 USD
端末への送信: 0.005 USD
端末からの送信: 0.005 USD
端末への送信: 未サポート
SORACOM でサポートしている文字コード等 GSM 7 bit default alphabet, UCS2, Binary GSM 7 bit default alphabet
対応している SORACOM のサービス Beam, Funnel, Harvest Beam, Funnel, Harvest

(いずれも 2018 年 7 月 4 日現在の情報です)

USSD のメリット

上の比較表を見ると、USSD は SMS に比べて劣っている点ばかりに見えるかもしれませんが、一つだけ大きく優れているところがあります。

端末から送信する際の価格が SMS の 1/80 になっています!

USSD は SMS と比べてメッセージをセンターで保管したり再送したりする必要がないなど、いくつかの理由により実現できている価格です。

また、メリットは価格だけではありません。
CS ネットワークに位置登録が完了している状態になっていればすぐに使うことができます。
(技術的には、 AT+CREG? の結果の stat が 1: Home network に registered もしくは 5: roaming で registered のいずれかになっていれば使うことができます)

どういうことかというと、パケット通信を行わないので、パケット通信のための準備(ダイヤルアップなど)が不要で、そもそも APN 設定すら不要です。

データ送信方法も非常に簡単で、プログラムで送信するなら AT+CUSD という AT コマンドを 1 行実行すれば送信完了です。
サーバーからのレスポンスも受け取ることができます。(機種によっては、モード変更などの AT コマンドを実行する必要がありますが、それでもシンプルで簡単です)

Wio 3G のライブラリ(Arduino IDE 用)にサンプルがありますので、簡単さを実感していただけるのではないかと思います。

そして USSD を送信するには、実はプログラムすら必要ありません。

電話アプリで *901011*123# といった感じの、ちょっと変わった番号に電話するだけでも送信が可能なのです。

しかも、それで Beam / Funnel / Harvest を使ってクラウド上のサービスと連携が可能になるのです。

これほど簡単に IoT デバイスからクラウドに向けてデータ送信が可能となると、いろいろと夢が膨らむのではないでしょうか?

たとえば、デバイスを普段はドーマントモードで休眠させておき、サーバー側からは SMS で指示を出してデバイスを起こし、デバイス側は SMS の内容を読み取って指示された処理を行ったら結果を USSD で返す、といったような仕組みが考えられますね。
通信の頻度が低い場合は、とても安価に(1 往復で約 1 円程度で)低消費電力なシステムを構築することができそうです。

詳しい使い方は こちらのドキュメント をご確認ください。

なお、安価とはいえ1往復で1円なので、たとえば毎分データを送信するような用途には向いていないことはおわかりいただけるかと思います。
(1ヶ月 30 日として、30日×24時間×60分 = 43,200 回の送信が行われてしまうので 4万円以上の請求になってしまいます。こういう用途にはやはりパケット通信を用いましょう。)

あくまでも、頻度の低いデータ通信で済む場合に利用を検討してみてください。(1日数回程度、もしくは不定期に通信するような場合の利用が目安となるでしょうか)

対応機種

以下の機種で AT コマンドを用いての USSD の送信を確認しました。

  • Wio 3G SORACOM Edition
  • Huawei MS2131i-8
  • Huawei MS2372h-607
  • Quectel UC20 (+ EVBKIT)

USSD は GSM 時代から存在する、いわゆる “枯れた” 技術なので、上記以外の機種でも SORACOM の Global SIM が利用可能なデバイスであればたいてい USSD を送信することができるのではないかと思います。
ただし、3G による接続が必要ですので、LTE 専用機種だとサポートされていないかもしれません。(3G/LTE 両方に対応した機種なら OK なはずです)

電話アプリでの送信は、いくつかの機種の SIM フリースマホで確認しました。
おそらく皆さんのお手元の電話機でも送信できると思います。

ぜひ、この古くて新しい機能の活用方法を考えてみてくださいね。

ogu