Команды требующиеся для работы с протоколами MQTT + TSL шифрованием.

MQTT.

<topic>

Тема которую публикуют и на которую подписываются. По сути ID канала связывающего отправителя с получателем, с той разницей, что получателей может быть много.


M08-R








ATE






Включает или выключает эхо.

ATE[<value>]


<value>


Включает или выключает эхо.

0 Echo mode off

1 Echo mode on


QMTCFG











Настраивает дополнительные параметры MQTT


Настройка команды завещания

AT+QMTCFG="WILL",<TCP_connectID>[,<will_fg>[,<will_qos>,<will_retain>,"<will_topic>","<will_msg>"]]


Настроить время доставки сообещния

AT+QMTCFG="TIMEOUT",<TCP_connectID>[,<pkttimeout>[,<retry_times>[,<timeout_notice>]]]


Настроить тип сессии.

AT+QMTCFG="SESSION",<TCP_connectID>[,<clean_session>]


Настроить время поддержания жизни

AT+QMTCFG="KEEPALIVE",<TCP_connectID>[,<keep_alive_time>]


Настроить SSL защищенное соединение.

AT+QMTCFG="SSL",<TCP_connectID>[,<SSL_enable>[,<ctxindex>]]


Настроить Ali-устройство под Ali-облако

AT+QMTCFG="ALIAUTH",<TCP_connectID>[,"<product_key>","<device_name>","<device_secret>"]


Настроить версию протокола MQTT

AT+QMTCFG="VERSION",<TCP_connectID>[,<version_num>]


Если номер версии пропущен — будет ответ.

+QMTCFG: <version_num>

ОК

Если присутствует.

ОК

Исключение

+CME ERROR: <err>

AT+QMTCFG="VERSION",0,1

<config_type>

<TCP_connectID>

<version_num>

настроить версию MQTT для TCP соединения 0 = 3.1.1


AT+QMTCFG="SSL",0,1,2

<config_type>

<TCP_connectID>

<SSL_enable>

<ctxindex>

включить SSL для TCP соединения 0 и SSL контекста 2

<config_type>


Тип конфигурации.

WILL / TIMEOUT / SESSION / KEEPALIVE / SSL / ALIAUTH / VERSION


<TCP_connectID>


Идентификатор сокета MQTT

[0..5]


<value>


Конфигурационное значение MQTT опциональных параметров.








<will_fg>


Настраивает флаг завещания

0 игнорируется

1 требуется этот флаг


<will_qos>


Флаг QoS: качество обслуживания.

0 не более одного раза: сервер срабатывает и забывает. Сообщения могут быть потеряны или продублированы

1 по крайней мере один раз: получатель подтверждает доставку. Сообщения могут дублироваться, но доставка гарантирована

2 ровно один раз: сервер обеспечивает доставку. Сообщения поступают точно один раз без потери или дублирования


<will_retain>


Удерживать или нет PUBLISH сообщения на серваке.

0 когда клиент посылает PUBLISH сообщение на сервер, сервер не будет удерживать сообщение после того как оно было доставлено текущим подписчикам

1 должен удерживать


<will_topic>


Строка название темы



<will_msg>


Сообщение Will определяет содержимое сообщения, которое публикуется в разделе will, если клиент неожиданно отключен. Это может быть сообщение нулевой длины



<pkttimeout>


Таймаут доставки пакета. [1..60] Def = 5



<retry_times>


Время повтора - когда время доставки пакета выходит.

[0..10] Def = 3

(Видимо через это время будут повторять отправку.)



<timeout_notice>


Следует ли сообщать о тайм-ауте при передаче пакета.

0 – не сообщать
1 — сообщать


<clean_session>


Настройка типа очистки сессии

0 — сервер должен сохранять подписку после обрыва связи

1 — сервер должен отбрасывать любую предварительно наколенную информацию обслуживания клиента типа:

  • Подписки клиента

  • Инфа о сессии

  • Сообщения с QoS 1 и 2


<keep_alive_time>


Время поддержания жизни. Он определяет
максимальный интервал времени между сообщениями, полученными от клиента. Если сервер не получает сообщение от клиента в течение 1,5 раз по истечении
периода поддержания работоспособности, он отключает клиента, как если бы клиент отправил
Сообщение об отключении.
0 Клиент не будет отключен

Диапазон: 0-3600. Значение по умолчанию: 120. Единица измерения: s.


0 — пока не была потеряна связь с клиентом



<SSL_enable>


Режим SSL

0 нормальное TCP соединение

1 используется SSL защищенное соединение


<ctxindex>


SSL индекс контекста SSL

параметр пропускается если <SSL_enable>=0

[0..5]


<product_key>


ключ продукта полученный из AliОблака



<device_name>


имя девайса полученное из AliОблака



<device_secret>


секрет девайса полученное из AliОблака



<version_num>


номер версии MQTT

0 3.1

1 3.1.1


<err>


Код ошибки. В главе 7 подробности.














QMTOPEN







Открыть сеть для клиента MQTT


Команда тестирования

AT+QMTOPEN=<TCP_connectID>,"<host_name>",<port>

Ответ

+QMTOPEN: (range of supported <TCP_connectID>s),"<host_name>",<port> (range of supported <TCP_connectID>s),<host_name>,(range of supported <port>s)

Команда чтения

AT+QMTOPEN?

Ответ

[+QMTOPEN: <TCP_connectID>,"<host_name>",<port>]

Команда записи

AT+QMTOPEN=<TCP_connectID>,"<host_name>",<port>

Ответ

+QMTOPEN: <TCP_connectID>,<result>

AT+QMTOPEN=0,"srv2.clusterfly.ru",9991

<TCP_connectID>

<host_name> <port>

+QMTOPEN: 0,0

<TCP_connectID>

<result>

<TCP_connectID>


идентификатор MQTT сокета

[0..5]


<host_name>


адрес сервера. оно может быть IP адресом или именем домена. maxSize = 100 байт



<port>


порт сервера

[1..65535]


<result>


итого выполнения команды

-1 неудача при открытии сети

0 сеть открыта успешно

1 плохой параметр

2 идентификатор MQTT уже занят

3 неудача при активации PDP

4 неудача при парсинге доменного имени

5 ошибка подключения к сети


<err>


Код ошибки

детали в 7 главе..








QMTCONN






Подсоединится клиентом к MQTT серверу


Команда запрашивает у клиента подключение к серверу MQTT. Когда соединение сокета TCP/IP
устанавливается от клиента к серверу, сеанс уровня протокола должен быть создан с использованием потока подключения

Команда тестирования

AT+QMTCONN=?

Ответ

+QMTCONN: (range of supported <TCP_connectID>s),"<clientID>"[,"<username>"[,"<password>"]]

Команда чтения

AT+QMTCONN?

Ответ

[+QMTCONN: <TCP_connectID>,<state>]

Команда записи

AT+QMTCONN=<TCP_connectID>,"<clientID>"[,"<username>"[,"<password>"]]

Ответ

ОК

+QMTCONN: <TCP_connectID>,<result>[,<retcode>]

AT+QMTCONN=0,"My_konlook","user_cce47f2c","pass_04b6a767"

<TCP_connectID>

<clientID> <username> <password>

+QMTCONN: 0,0,0

<TCP_connectID>

<result> успех

<retcode> соединение доступно



<TCP_connectID>


идентификатор MQTT сокета

[0..5]


<clientID>


строка идентификатора клиента



<username>


имя клиента. может быть использовано при аутентификации



<password>


пароль относящийся к имени клиента(выше). может быть использовано при аутентификации



<result>


итог выполнения команды

0 пакет успешно послан и от сервера получено ACK

1 пакет ретранслирован

2 ошибка при передаче пакета


<state>


статус MQTT соединения

1 MQTT инициализируется..

2 MQTT соединяется..

3 MQTT соединился

4 MQTT отсоединился


<retcode>


соединение вернуло код

0 соединение доступно

1 соединение отвергнуто. не доступная версия протокола

2 отвергнуто. идентификатор понижен

3 отвергнуто. сервер недоступен

4 отвергнуто. плохое имя пользователя и пароль

5 отвергнуто. нет авторизовации.


<pkttimeout>


время на доставку пакета

s [1..60] def = 5


<retry_times>


число повторов когда время на доставку пакета истекло

[0..10] def = 3


<err>


код ошибки

глава 7








QMTPUB






Опубликовать сообщение.


Команда публикует сообщения от клиента на сервер для рассылки заинтересованным подписчикам. Каждое ПУБЛИКУЕМОЕ сообщение связано с именем темы. Если клиент подписывается на одну или несколько тем, любое сообщение, опубликованное в этих темах, будет отправлено сервером клиенту в качестве сообщения ПУБЛИКАЦИИ.

Команда тестирования

AT+QMTPUB=?

Ответ

+QMTPUB: (range of supported <TCP_connectID>s),<msgID>,<qos>,<retain>,"<topic>","<msg>"
ОК

Команда записи с изменяемой длинной

AT+QMTPUB=<TCP_connectID>,<msgID>,<qos>,<retain>,"<topic>"

Ответ

ОК

+QMTPUB: <TCP_connectID>,<msgID>,<result>[,<value>]


Команда записи с фиксированной длинной

AT+QMTPUB=<TCP_connectID>,<msgID>,<qos>,<retain>,"<topic>",<size>

Ответ

ОК

+QMTPUB: <TCP_connectID>,<msgID>,<result>[,<value>]


При ошибках

+CME ERROR: <err>

AT+QMTPUB=0,1,1,0,"user_cce47f2c/test"

<TCP_connectID>

<msgID>

<qos>

<retain>

<topic>

+QMTPUB: 0,1,0

<TCP_connectID>

<msgID>

<result> успех

<TCP_connectID>


идентификатор MQTT сокета



<msgID>


ID сообщения пакета

[0..65535]


<qos>


QoS уровень

0 не более одного раза

1 по крайней мере один раз

2 ровно один раз


<retain>


Сервер будет удерживать сообщение после того как оно было доставлено текущему подписчику.

0 не удерживать

1 удерживать


<topic>


Тема которую нужно опубликовать.



<msg>


Сообщение которое нужно опубликовать.

?в каком формате. судя по логам порядок как с sms. выходит > и после этого нужно послать текст



<result>


Итог выполнения команды

0 пакет послан успешно и принята ACK от сервера (если qos = 0 не требуется ACK)

1 пакет передается

2 сбой при отправке пакета


<value>


Если <result> = 1, <value> будет обозначать время передачи пакета. если 0 или 2 — <value> не будет задействован



<size>


длина данных для определения

[1..1548]


<pkttimeout>


время на доставку пакета

[1..60 s] def = 5


<retry_times>


число повторов если вышло время на доставку

[0..10] def = 3


<err>


коды ошибок.

подробности в 7 главе














Коды ошибок
Error Codes



8503 MQTT link error

8504 MQTT illegal packet

8505 MQTT illegal character

8506 MQTT illegal UTF8

8507 MQTT invalid parameter

8508 The length of transmitted data exceeds the remaining transmission buffer

space.

8509 MQTT buffer overflow

8510 MQTT out of memory

8511 MQTT memory error

8600 MQTT unknown error

8512 MQTT maximum quantity of transmitting packets exceeds the inflight window

size.

8503 MQTT ошибка какойто связи

8504 MQTT неправильный пакет

8505 MQTT неправильный символ

8506 MQTT неправильная кодировка по UTF8

8507 неправильный MQTT параметр

8508 длина переданных данных превышает буфер передачи

8509 MQTT буфер переполнен

8510 MQTT память кончилась

8511 MQTT ошибка памяти

8600 MQTT неизвестная ошибка

8512 MQTT максимальное количество передаваемых пакетов превышает размер окна полета(? потока).








Внезапные сообщения.

QMTSTAT













Показывает состояние изменений MQTT Link Layer


Возникнет когда произойдет смена состояния в MQTT link layer



Когда меняется уровень ll клиент закроет MQTT соединение и отчитается внезапным сообщением.

+QMTSTAT: <TCP_connectID>,<err_code>


+QMTSTAT: 0,1

<TCP_connectID>

<err_code>


<TCP_connectID>



идентификатор сокета MQTT



<err_code>



коды ошибок.







Описание

Как это сделать (?Как это обработать)





0

В описании нет но исходя из практики - успех






1

Соединение закрывается или сбрасывается одноранговым узлом.

Выполнить команду AT+QMTOPEN и снова открыть MQTT соединение.





2

посылает PINg запрос выхода времени или сбоя

Деактивировать PDP, а затем активироватьPDP и переоткрыть MQTT соединение





3

Время на посылку CONNECT запрос вышло или произошел сбой

  1. Проверить когда введено имя и пароль пользователя при соединении

  2. Удостовериться что ID клиента не используется

  3. Переоткрыть MQTT соединение и попробовать послать пакет CONNECT серверу снова





4

Время на посылку CONNACK запрос вышло или произошел сбой

Действие выше.





5

Клиент послал DISCONNECT пакет серверу но сервре закры MQTT соединение.

Все верно — так и должно быть.





6

Клиент закрыл MQTT соединение в процессе ошибки отправки пакета

  1. Удостоверится в корректности данных

  2. Попытаться переоткрыть MQTT соединение пока может быть сетевая пробка или ошибка.





7

Ссылка не активна или сервер недоступен.

Убедитесь, что ссылка активна или сервер доступен в данный момент.





8–255

Резерв на будущее



SSL.







QSSLCFG






Команда настраивает:

  • версию SSL

  • набор шифров

  • уровень безопасности

  • CA сертификат

  • сертификат клиента

  • ключ клиента

  • когда игнорировать RTC время

  • HTTP/HTTPS и SMTP/SMTPS.

Эти параметры будут использованы при процедуре «рукопожатие».


CTX относится к аббревиатуре контекста SSL (Secure Socket Layer), а <ctxindex> - это индекс контекста SSL. GSM-модуль Quectel поддерживает не более 6 контекстов SSL. На основе одного SSLContext может быть установлено несколько SSL-соединений. Настройки, такие как версия SSL и набор шифров, сохраняются в контексте SSL и будут применены к новому соединению SSL, связанному с контекстом SSL

Команда тестирования

AT+QSSLCFG=?

Ответ

+QSSLCFG: "type",(range of supported <ctxindex>s),"value"

Команда записи. Запрашивает настройки контекста

AT+QSSLCFG="ctxindex",<ctxindex>

Ответ

+QSSLCFG: <ctxindex>,<sslversion>,<seclevel>,<ciphersuite>,<cacertname>,<clientcertname>,<clientkeyname>

OK (Or ERROR)

Команда записи. Настраивает версию SSL для определенного контекста SSL

AT+QSSLCFG="sslversion",<ctxindex>[,<sslversion>]

Ответ

If <sslversion> пропущен, запрос SSL определяется контекстом:

+QSSLCFG: "sslversion",<sslversion>

OK

Если указана <sslversion>, установите версию SSL для указанного контекста SSL:

OK (Or ERROR)

Команда записи. Настраивает наборы шифров SSL.

AT+QSSLCFG="ciphersuite",<ctxindex>[,<ciphersuite>]

Ответ.

Если ciphersuite пропущен, запрос наборов шифров SSL определяются этим контекстом:

+QSSLCFG: "ciphersuite",<ciphersuite>

OK

Если определен — этим.

OK (Or ERROR)

Команда записи. Настраивает режим аутентификации

AT+QSSLCFG="seclevel",<ctxindex>[,<seclevel>]

Ответ

Если seclevel опуще

+QSSLCFG: "seclevel",<seclevel>

OK

Если определен

OK (Or ERROR)

Команда записи. Настраивает часть доверенного корневого сертифаката CA

Настрить путь к сертификату корневого центра СЕРТИФИКАЦИИ доверенного сервера для указанного контекста SSL:

AT+QSSLCFG="cacert",<ctxindex>[,<cacertname>]

Ответ

+QSSLCFG: "cacert",<cacertname>

..

OK (Or ERROR)

Команда записи. Настраивет клиентскую часть для определенного SSL контекста

AT+QSSLCFG="clientcert",<ctxindex>[,<clientcertname>]

Ответ

+QSSLCFG: "clientcert",<clientcertname>

OK

..

OK (Or ERROR)

Команда записи. Настраивает клиентскую часть скрытого ключа.

AT+QSSLCFG="clientkey",<ctxindex>[,<clientkeyname>]

Ответ

+QSSLCFG: "clientkey",<clientkeyname>

OK

..

OK (Or ERROR)

Команда записи. Настраивает когда игнорировать RTC

AT+QSSLCFG="ignorertctime"[,<ignorertctime>]

Ответ


Команда записи. Включает/выключает HTTPS функционал

AT+QSSLCFG="https"[,<httpsenable>]

Ответ

+QSSLCFG: "ignorertctime",<ignorertctime>

Команда записи. Настроить индекс SSL для HTTPS.

AT+QSSLCFG="httpsctxi"[,<httpsctxindex>]

Ответ


Команда записи. Настроить тип SMTP/SMTPS:

AT+QSSLCFG="smtpstyle"[,<smtpstyle>]

Ответ


Команда записи. Настоить индекс SSL контекста для SMTPS.

AT+QSSLCFG="smtpsctxi"[,<smtpsct xindex>]

Ответ

AT+QSSLCFG="cacert",2,"RAM:cacert.pem"

<ctxindex>

<cacertname>

корневой сертификат индекс и расположение


AT+QSSLCFG="seclevel",2,1

<ctxindex>

<seclevel>

управлять сертификацией сервера?


AT+QSSLCFG="sslversion",2,3

<ctxindex>

<sslversion>

задать версию ssl = TLS1.2


AT+QSSLCFG="ignorertctime",1

<ignorertctime>

игнорить RTC время

<ctxindex>


индекс SSL контекста

[0..5]


<sslversion>


Версия

0 SSL3.0

1 TLS1.0

2 TLS1.1

3 TLS1.2

4 All



<ciphersuite>


Набор шифров SSL

0X0035 TLS_RSA_WITH_AES_256_CBC_SHA

0X002F TLS_RSA_WITH_AES_128_CBC_SHA

0X0005 TLS_RSA_WITH_RC4_128_SHA

0X0004 TLS_RSA_WITH_RC4_128_MD5

0X000A TLS_RSA_WITH_3DES_EDE_CBC_SHA

0X003D TLS_RSA_WITH_AES_256_CBC_SHA256

0XFFFF All



<seclevel>


Режим аутентификации

0 без аутентификации

1 управление аутентификацией сервера.

2 управления клиентской и серверной аутентификацией если требуется удаленным сервером



<cacertname>


путь к сертификату CA




<clientcertname>


путь к клиентскому сертификату




<clientkeyname>


путь к закрытому ключу пользователя




<ignorertctime>


настроить когда игнорить RTC время

0 не игнорить

1 игнорить



<httpsenable>


включить /выкл функцию HTTPS

0 выключить

1 включить



<httpsctxindex>


SSL контекст HTTPS. индекс контекста.

[0..5]

если хост не настраивает его = -1



<smtpstyle>


тип SMTP/SMTPS

0 No SSL

1 SSL

2 STARTTLS



<smtpsctxindex>


SSL контекст для SMTPS. индекс контекста.

[0..5]

если хост не настраивает его = -1








QSSLOPEN






Команда открывает SSL сокет для соединения с удаленным сервером. В просессе переговоров между модулем и одноранговым узлом, будут использоваться параметры заданные командой QSSLCFG в процедуре рукопожатия.


Хост может настроить тайм-аут для AT+QSSLOPEN. Если модуль не завершит установление SSL-соединения до истечения периода ожидания, будет сообщен URC "+QSSLOPEN: <ssid>, connectcode>". Если хост не настраивает значение тайм-аута, значение тайм-аута по умолчанию равно 90 секундам.

Команда тестирования

AT+QSSLOPEN=?

Ответ

+QSSLOPEN: <ssid>,<ctxindex>,<ipaddr/domainname>,<port>,<connectmode>[,<timeout>]

OK

Команда чтения

AT+QSSLOPEN?

Ответ

OK

Команда записи

AT+QSSLOPEN=<ssid>,<ctxindex>,<ipaddr/domainname>,<port>,<connectmode>[,<timeout>]

Ответ.

Если <connectmode> = прозрачный режим и SSL соединение установлено успешно, тогда -

CONNECT

В других случаях

ERROR

Если <connectmode> = не прозрачный режим, тогда -

+QSSLOPEN: <ssid>,<connectcode>


Если SSL соеднинение установлено не успешно и значение <connectcode> не равно 0

+QSSLOPEN: <ssid>,<connectcode>



<ssid>


ИД защищенного сокета

[0..5]



<ctxindex>


индекс SSL контекста

[0..5]



<ipaddr/domainname>


IP адрес SSL сервера или его URL




<port>


порт на удаленнном сервере




<connectmode>


режим SSL соединения

0 не прозрачный

1 прозрачный



<timeout>


время отводимое на открытие сокета




<connectcode>


результат соединения

0 Success

-1 Error

-2 Socket is occupied








QSECWRITE






Добавляет сертификат или ключ.


Команда добавляет пользовательский сертификат, ключ пользователя или AC сертификат root сервера в RAM или NVRAM. И сертификат и ключ будут сохранены в этих хранилищах в зашифрованном виде. После этого, хост не может прочитать данные из этих хранилищ и может только запросить КС. Заметте что сертификат или ключ не должны существовать в соотв. хранилище пока они добавлены в RAM или NVRAM, если они уже существуют, хост должен удалить их и затем добавить их в соотв. хранилище.

Команда тестирования

AT+QSECWRITE=?

Ответ

+QSECWRITE: <filename>,<filesize>[,(range of supported<timeout>)s]

ОК

Команда чтения

AT+QSECWRITE?

Ответ

ОК

Команда записи

AT+QSECWRITE=<filename>,<filesize> [,<timeout>]

Ответ

CONNECT

После того, как модуль переключится в режим передачи данных, можно будет ввести данные сертификата или ключа. Когда размер введенных данных достигнет <filesize> (единица измерения: байт) или модуль получит последовательность +++ от UART, модуль вернется в командный режим и ответит следующим кодом.

+QSECWRITE: <uploadsize>,<checksum>

ОК

В случае какой то ошибки:

+CME ERROR: <err>

AT+QSECWRITE="RAM:cacert.pem",1360,100

<filename>

<filesize>

<timeout>

CONNECT

? типа можно загружать

+QSECWRITE: 1360,4f4a

<uploadsize>

<checksum>




AT+QSECWRITE="RAM:ca_cert.pem",1614,100 //Upload the server root CA certificate to RAM.

CONNECT

<Input the ca_cert.pem data, the size is 1614 bytes>

+QSECWRITE: 1614,4039

OK


<filename>


Имя файла сертификата для сохранения. Формат может быть таким:


"RAM:filename" файл загружается в RAM


"NVRAM:filename" файл грузится в NVRAM

Поддержика server root CA certificate, один сертификат клиента и один приватный ключ клиента. Имя файла CA сертификата должно быть CA0, имя файла сертификата клиента должно быть CC0, а имя файла закрытого ключа должно быть CK0

CA0 Identify a server root CA certificate

CC0 Identify a client certificate

CK0 Identify a client key


<filesize>


Размер скачанного файла

to RAM [1..32768 byte]

to NVRAM [1..2017 byte]


<timeout>


Задержка приема данных из UART

[3..200 s] def = 100


<uploadsize>


Текущий размер скачанных данных

[byte]


<checksum>


Контрольная сумма скачанных данных









QSSLSTATE






Команда запрашивает статус соединения сокета. Можно узнать не только SSL статус но и TCP/UDP

Команда тестирования

AT+QSSLSTATE=?

Ответ

OK

Команда чтения

AT+QSSLSTATE?

Ответ

OK

Команда записи

AT+QSSLSTATE

Ответ.

Если соединение успешно установлено

+QSSLSTATE: <socketindex>,<connectiontype>,<ipaddr>,<port>,<socketstatus>,<sslconnectionflag>

OK

В случае какой то ошибки:

ERROR


<state>


Строковый параметр показывающий статус соединения.

"IP INITIAL" TCP/IP стек в холостом режиме

"IP START" TCP/IP стек был зарегистрирован в (?сети)

"IP CONFIG" модуль был загружен в актывный GPRS/CSD контекст.

"IP IND" это активация GPRS/CSD контекста.

"IP GPRSACT" GPRS/CSD был успешно активирован

"IP STATUS" локальныйl IP адрес было плулучен с помощью AT+QILOCIP.

"IP PROCESSING" установлено соединение

"PDP DEACT" GPRS/CSD контекст был деактивирован по неизвестной причине



<socketindex>


индекс сокета

[0..5]


<connectiontype>


тип соединения

"TCP"

"UDP"



<ipaddr>


IP адрес



<port>


номер порта



<socketstatus>


Статус сокета

"INITIAL"

"CONNECTING"

"CONNECTED"

"REMOTE CLOSING"

"CLOSING"

"CLOSED"



<sslconnectionflag>


Определите, является ли соединение обычным TCP /UDP или TCP SSL

0 обычное TCP/UDP соединение

1 TCP SSL соединение









QSECREAD






Команда запрашивает контрольную сумму сертификата или ключа. Если КС не соответствует оригинальной принадлежащей пользователю, будет выведена ошибка


Похоже просто проверяет успешно ли записался с хоста в модем сертификат

Команда тестирования

AT+QSECREAD=?

Ответ

+QSECREAD: <filename>

OK


Команда записи

AT+QSECREAD=<filename>

Ответ

+QSECREAD: <good>,<checksum>

OK

В случае какой то ошибки:

+CME ERROR: <err>>


AT+QSECREAD="RAM:ca_cert.pem" //Check CA certificate is correct or not.

+QSECREAD: 1,4039

OK

AT+QSECREAD="RAM:client_cert.pem" //Check client certificate is correct or not.

+QSECREAD: 1,618

OK

AT+QSECREAD="RAM:client_key.pem" //Check client private key is correct or not.

+QSECREAD: 1,83a7

OK


<filename>


Имя файла который будет сохранен?




<good>


Показывает сертификат корректен или нет.

Когда сертификат загружается с помощью AT+QSECWRITE, КС сертификата будет пересчитана каждый раз. Затем эта КС сравнивается с сохраненной




<checksum>






Разное.


CSCS






Назначает кодировку TE

Команда тестирования

AT+CSCS=?

Ответ

+CSCS: (список поддерживаемых кодировок)

OK

Команда чтения

AT+CSCS?

Ответ

+CSCS: <chset> действующая сейчас кодировка

OK

Команда записи

AT+CSCS=<chset>

Ответ

Устанавливает кодировку которую будет использовать модем. Хост может конвертировать в нее.


<chset>


Строка с типом кодировки

"GSM" GSM default alphabet

"HEX" Character strings consist only of hexadecimal numbers from 00 to FF

"UCS2" UCS2 alphabet

"8859-1" ISO 8859 Latin 1 character set





v2.