サイト内検索

Quectel 通信モジュール MQTT接続ガイド

はじめに

今回は、Quectel社通信モジュールを用いた「MQTT通信の評価手順」の一例をご紹介します。

電源起動やキャリア回線経由でのネットワーク接続手順に関しては、以下別記事にてご紹介しております。

(▶詳しくは「Quectel 通信モジュール接続ガイド」をご参照ください。)

使用機材のご紹介

・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証明書を有効化

クライアント証明書・秘密鍵のアップロードから有効化まで

以下では、クライアント証明書および秘密鍵をUFS(Universal Flash Storage)にアップロードし、SSL通信に使用可能な状態に設定する手順を示します。
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ページへ戻る場合、以下をクリックください。