mqtt 订阅更改中继状态 json
mqtt subscribe to change relay state json
如果这样的代码应该发送什么数据
void mqttCallback(char *topic, byte *payload, unsigned int length)
{
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++)
{
Serial.print((char)payload[i]);
}
Serial.println();
if (strcmp(topic, DeviceConfig.MqttSub) == 0) // topic = /command
{
Serial.print("Recvd relay command parse code: ");
StaticJsonDocument<100> doc;
DeserializationError error = deserializeJson(doc, (char *)payload);
Serial.println(error.code());
if (error == DeserializationError::Ok)
{
if (doc.containsKey("state") && doc["state"].is<int>())
{
DeviceConfig.RelayOn = (doc["state"].as<int>() == 1);
Serial.print("Changing state: ");
Serial.print(DeviceConfig.RelayOn );
Serial.println();
}
}
}
}
我试过ON:OFF和0:1,但是控制继电器不起作用
看起来 MQTT 消息负载需要是一个 JSON 对象,至少具有以下内容:
{
"state": 1
}
如果这样的代码应该发送什么数据
void mqttCallback(char *topic, byte *payload, unsigned int length)
{
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++)
{
Serial.print((char)payload[i]);
}
Serial.println();
if (strcmp(topic, DeviceConfig.MqttSub) == 0) // topic = /command
{
Serial.print("Recvd relay command parse code: ");
StaticJsonDocument<100> doc;
DeserializationError error = deserializeJson(doc, (char *)payload);
Serial.println(error.code());
if (error == DeserializationError::Ok)
{
if (doc.containsKey("state") && doc["state"].is<int>())
{
DeviceConfig.RelayOn = (doc["state"].as<int>() == 1);
Serial.print("Changing state: ");
Serial.print(DeviceConfig.RelayOn );
Serial.println();
}
}
}
}
我试过ON:OFF和0:1,但是控制继电器不起作用
看起来 MQTT 消息负载需要是一个 JSON 对象,至少具有以下内容:
{
"state": 1
}