Отправка данных в схеме JSON с использованием команд AT

#c #json #parsing #at-command

Вопрос:

Я работаю над установлением соединения MQTT с сервером. Мне нужно отправить данные на сервер в формате схемы JSON, используя команды AT.
Модуль, используемый в модуле N58 Neoway. С помощью команд AT установлено соединение, и для публикации данных или подписки на данные на/с сервера это должно происходить в формате JSON.
Используемая команда AT является:

 AT MQTTPUB=1,1,<"topic_name">,<"data">
 

Мне нужно отправить схему JSON вместо данных.
Ищу любые предложения/помощь.

Исходный код основан на C.

Комментарии:

1. Подходит ли экранирование в стиле JSON data для формата экранирования цитаты? … К вашему сведению, если вы ищете систему мягкого типа, которую можно преобразовать в / из JSON, вы можете посмотреть FIOBJ с facil.io (Я — автор). Следующая версия разрабатывается в этом репозитории GitHub

2. Вы ознакомились с руководством Neoway N58 ?

3. К вашему сведению: вопросы с просьбой помочь найти библиотеку считаются не по теме и могут быть закрыты. Есть лучшие форумы / сайты для поиска библиотек.

Ответ №1:

Проблема при отправке JSON через команды AT заключается в том , что он содержит двойные кавычки " , которые, к сожалению, интерпретируются в соответствии со спецификацией ETSI команд AT как начало строкового параметра. Итак, во многих модулях происходит то, что невозможно отправить строку JSON в качестве параметра.

Некоторые поставщики модемов решают эту проблему, запуская онлайн-режим, в котором данные могут передаваться в необработанном виде.
Вместо этого N58 использует другую стратегию, которая заключается в экранировании специальных символов. В руководстве по командам AT это называется выходом по каналу передачи данных.

Хотя руководство могло бы быть лучше (нет явного объяснения экранирования канала передачи данных), мы можем сделать вывод из примеров (см., Например, в AT UDPSEND ): чтобы экранировать " символ, просто напишите " так, как вы бы сделали в строке C. Пример:

 AT MQTTPUB=1,1,"topic_name","{"menu":{"id":"1","value":"2"}}"
 

Комментарии:

1. Спасибо за ответ. После использования escape-последовательности формат работает.