我有一段代码正在发送 MQTT 消息。
该消息是相同的,唯一的变化是在“开”和“关”之间改变动作。我可以随意结束多次,但是当我发送“开启”时它会锁定(即使它是第一条消息)
这是代码
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
特别是用于操作的值(或者即使我删除它并使用文本“开”或“关”。如果我使用“开”(带空格)它工作正常