Программа Arduino C ++ блокируется после отправки «on» но не «выключен»

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

Сообщение то же самое, единственное изменение — изменение действия между «вкл» и «выкл».
Я могу закончить столько раз, сколько захочу, но когда я отправляю «on», он блокируется (даже если это первое сообщение)

Вот код

void update_thing(int pin, String thing, String action) {

Serial.println(thing + " State Requested to " + action);
Serial.println(action.c_str());
if (action == "On") {
digitalWrite(pin, HIGH);                    // Pin  = 5 V, LED Turns On
} else {
digitalWrite(pin, LOW);                     // Pin  = 5 V, LED Turns Off
}

// Generate a new message
sprintf(msg, "{\"state\":{\"reported\":{\"%s\": \"%s\"}}}", thing.c_str(), action.c_str());
if((rc = myClient.publish("$aws/things/myYunLight/shadow/update", msg, strlen(msg), 1, false)) != 0) {
Serial.println("Publish failed!");
Serial.println(rc);
}
}

Проблема заключается в переменной msg, объявленной как

char msg[100]; // read-write buffer

и, в частности, значение, передаваемое действию (или даже если я удаляю его и использую текст «вкл» или «выкл». Если я использую «вкл» (с пробелом), он работает нормально

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …