Я пытаюсь использовать библиотеку arduino-mqtt.
У меня есть эта работа, отправляющая строку json. Проблема заключается в попытке разобрать строку с ArduinioJson. Он просто не возвращает значения.
Я думаю, что это может быть связано со ссылкой на указатель в функции mqttMessageRecived ( String & payload ).
Функция вызывается при появлении сообщения MQTT:
void mqttMessageReceived(String &topic, String &payload){
//Example String for test
String json = "{"id" : "100" , "cmd" : "0xff"}";
jsonout(payload);
Serial.println("Sending Static String");
jsonout(json);
Функция для анализа ввода JSON:
void jsonout(String Json){
StaticJsonDocument<200> doc;
//Deserialize the JSON document
DeserializationError error = deserializeJson(doc, Json);
Serial.println("Got String: ");
Serial.println(Json);
// Test if parsing succeeds.
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
return;
}
const char* id = doc["id"];
const char* cmd = doc["cmd"];
// Print values.
Serial.println(id);
Serial.println(cmd);
}
Непроанализированный вывод:
Сообщение от MQTT
Got String:
"{\"id\" : 4 , \"cmd\": \"0xee\"}"
Результат = Нет вывода из анализа json
Непроанализированный вывод:
Отправка статической строки
Got String:
{"id" : "100" , "cmd" : "0xff"}
Результат = Вывод из анализа json:
100
0xff