はじめに
今回は、Quectel社通信モジュールを用いた「MQTT通信の評価手順」の一例をご紹介します。
電源起動やキャリア回線経由でのネットワーク接続手順に関しては、以下別記事にてご紹介しております。
使用機材のご紹介
・Quectel社 UMTS & LTE_EVB Kit(基板本体/EG95-JP TE-A ボード/対応アンテナ類)
・USBケーブル(USB-A to micro B)
・ノートPC(評価キット接続、ATコマンド制御用)
+ 対応USBドライバー(入手は、弊社までお問い合わせください。)
+ ATコマンドツール(TeraTerm、Quectel社製QCOMツールなど)
・NTT docomo 5G nano SIM カード
ネットワーク接続の確認
AT+CEREG?
+CEREG: 0,1
AT+CGATT?
+CGATT: 1
+CEREG: 0,1:ネットワークに登録済みであることを示します。
+CGATT: 1:ネットワークにアタッチ済みの状態です。
MQTT通信手順(各コマンドの"OK"までの応答は省略します。)
通信モジュールへIPアドレス割当
AT+QIACT?
AT+QIACT=1
AT+QIACT?
+QIACT: 1,1,1,"xx.xxx.xxx.xxx"// IPアドレス割当確認
MQTT と SSL の関連付け
AT+QMTCFG="ssl",0,1,2 // MQTT クライアントとSSL,SSLコンテキストIDとの関連付け
本手順では、SSLコンテキストD を、MQTTクライアントに関連付けます。
TLS設定とCA(Certificate Authority)証明書のアップロードから有効化まで
以下では、TLS を TLS1.2 に固定し、CA証明書をUFS(Universal Flash Storage)にアップロードし、有効化する手順を示します。
// TLSバージョン設定
AT+QSSLCFG="sslversion",1,3 // 3=TLS1.2
// セキュリティレベル設定
AT+QSSLCFG="seclevel",1,1 // 0=認証なし(証明書不要, 非推奨)、1=CA証明書のみ必須、2=CA証明書+クライアント証明書+秘密鍵が必須
// UFS内のファイル一覧と空き容量の確認
AT+QFLST // UFSのファイル一覧を表示
AT+QFLDS="UFS:" // UFSの空き容量を照会
// 不要ファイルを削除
AT+QFDEL="UFS:<File name>" // 指定ファイルを削除
// CA証明書をUFSにアップロード
AT+QFUPL="UFS:cacert.pem",<BYTES>,10000 // UFSにCA証明書(<BYTES> バイト)を書き込み
AT+QSSLCFG="cacert",1,"UFS:cacert.pem" // CA証明書を有効化
クライアント証明書・秘密鍵のアップロードから有効化まで
AT+QFUPL="UFS:clientcert.pem",<BYTES>,10000 // クライアント証明書(<BYTES> バイト)を書き込み
AT+QSSLCFG="clientcert",1,"UFS:clientcert.pem" // クライアント証明書を有効化
AT+QFUPL="UFS:clientkey.pem",<BYTES>,10000 // 秘密鍵(<BYTES> バイト)を書き込み
AT+QSSLCFG="clientkey",1,"UFS:clientkey.pem" // 秘密鍵を有効化
// 環境に応じて暗号スイートを設定
AT+QSSLCFG="ciphersuite",1,0xFFFF // 例:1,0xFFFF=利用可能な暗号スイートをすべて選択
モジュール時刻が現在時刻と差異がないか確認
// パターン1: 証明書の有効期限チェックをモジュール内の時刻で実施する場合
// モジュール内の現在時刻を確認
AT+CCLK?
// 時刻がずれている場合は、適切な現在時刻を設定
AT+CCLK="yyyy/mm/dd,hh:mm:ss+xx"
// パターン2: 証明書の有効期限チェックをモジュール内の時刻で実施しない場合
AT+QSSLCFG="ignorelocaltime",2,1
証明書の有効期限チェックが行われるため、モジュール内の時刻が大きくずれていると、証明書エラーが発生するおそれがあります。
証明書の有効期限チェックを行わない設定も可能ですが、セキュリティレベルとしては下がります。
MQTT通信開始からPublish/Subscribe動作後、通信終了まで
// MQTT Keep Alive タイマー設定
AT+QMTCFG="keepalive",0,0
// MQTTサーバーOpenからクライアントID接続
AT+QMTOPEN=0,<MQTTサーバーホスト名>,1883
AT+QMTCONN=0,"<クライアントID>"
+QMTCONN: 0,0,0
// Publish動作
AT+QMTPUBEX=0,0,0,0,<pub_topic>,30
> This is test data, hello MQTT. // 任意のテキスト送信
+QMTPUBEX: 0,0,0
// Subscribe動作
AT+QMTSUB=0,1,<sub_topic>,2
+QMTSUB: 0,1,0,2
+QMTRECV: 0,0,<sub_topic>,30,"This is test data, hello MQTT" // トピックにPublishされたメッセージ確認
// MQTT 切断
AT+QMTDISC=0
+QMTDISC: 0,0
+QMTSTAT: 0,5
本手順は、MQTT通信の基本動作確認例です。
本例では、Keep Alive無効化後にMQTTブローカーへ接続し、Publishで送信したメッセージをSubscribeで受信を行っており
Publish及びSubscribeの正常な双方向通信を確認後、MQTT通信を切断します。
おわりに
本記事の内容に関して、LPWA/LTE/5G通信モジュールの最新製品にご興味がございましたら、弊社までお問い合わせください。
お問い合わせ
Quectel製品および通信モジュールに関するお問い合わせは、以下のリンクより承っております。
Quectel メーカー情報Topへ
Quectel メーカー情報Topページへ戻る場合、以下をクリックください。