SORACOM Advent Calendar 201919日目の記事です。
今日は、ソラコムのSIMをUSBモデムに挿して通信する時に使うAT(エーティー)コマンド
がどのようなものかについて、お話ししたいと思います。
きっかけ
ソラコム認定デバイスのUSBモデムを使って通信する時、各種デバイスで SORACOM Air を使用するにあるsetup_air.sh
というスクリプトを実行すると、それだけで簡単にインターネットに繋がるのですが、その中身がずっと気になっていました。どうやらATコマンド
というものを叩いているようなのですが、私には謎の文字列の羅列にしか見えず、なかなか興味を持てないまま月日が経ちました。
そんな中、技術書典というイベントでATコマンドカルタ
というものが販売されていたので、これを買って眺めているとATコマンドに興味が湧いてきて、その勢いで書いたのがこのブログになります。
これを見て、「ふむふむ、コマンドごとに何か意味があるのね。これってWindowsやLinuxのコマンドみたい。こうして見ると分かりやすいかも。」と思いました。
ATコマンドって何?
コマンド
とは機械に何かを実行させる命令のことで、やって欲しいことを伝えると機械がそれを実行し、必要に応じて結果を返すものです。例えば身近な例ですと、「OKグーグル 明日の天気教えて」とか「アレクサ 何か音楽かけて」と伝えることがコマンドに相当します。
同じように、USBモデムに対して「ショートメッセージ(SMS)送って」とか「USBモデムのメーカーを教えて」などの命令を伝えるためのコマンドがATコマンド
なのです。下の図で言うと、Raspberry PiからUSBモデムに対してATコマンドで命令するイメージです。SIMを挿したUSBモデムをRaspberry Piに挿しただけでは通信ができず、通信するためにはATコマンドが必要なのです。
具体的なATコマンドの例として、ATI
というコマンドを見てみましょう。
ATコマンド
は全てAT
から始まるのですが、このATはATtention
、つまり「注目!」のような意味なので、これはまさに先ほどの「OKグーグル」や「アレクサ」に相当します。そしてAT
の後のI
が命令に相当し、今回のケースだと「モデムの製造情報を教えて」という要求になります。
どんなコマンドがあるの?
USBモデムに挿さっているSIMのIMSIを教えて!
AT+CIMI
295050910xxxxxx
コマンドの結果で返されるIMSIは、SORACOMのユーザコンソールで見れるコレです。
USBモデムのメーカーやモデル名を教えて!
ATI
Manufacturer: huawei
Model: MS2372h-607
Revision: 21.328.02.01.00
IMEI: 8670230301xxxxx
+GCAP: +CGSM,+DS,+ES
電波状況を教えて
AT+CSQ
+CSQ: 25,99
数字が電波状況を表しているそうです。
他にもモデムとやり取りするためのコマンドはたくさんあります(カルタが出来るくらいなので)。また、標準規格で定義されているATコマンドの他に、モデムの種類ごとに独自のATコマンドが用意されているようなケースもあります。
で、結局どうやって繋げてるの?
setup_air.sh
スクリプトにあるATコマンドだけ取り出すと、こんな感じです。
AT+CFUN=1
ATZ
AT+CGDCONT=1,"IP","$1"
ATD *99***1#
これをざっくり一言で言うと、「無線通信が可能な状態にして、設定を初期化した後、接続のための設定をしてから指定した番号にダイヤル接続する」という感じの命令をUSBモデムにしていることになります。この命令をすることで、SORACOMに接続できているのですね!
次のステップ
今回は、ATコマンドに興味を持って頂くことにフォーカスして、詳細や手順は一切省きました。このブログを見て頂き、実際に自分でもコマンドを叩いてみたい!
・数字が電波状況を表しているそうって、、もっと正確に!
と思われた方は、ぜひこちらのブログをご覧ください!
それでは、「ATコマンドのこと知りたいなら、まずはやさしさあふれるこのブログを見るといいよ」と言われる日が来ることを願って投稿!