// 发送设备配置信息到HA的TOPIC_CONFIG
void sendConfigToHA() {
// 创建一个JSON对象
StaticJsonDocument<256> jsonDoc;
// 填充JSON对象的属性
jsonDoc["name"] = "ESP8266 Switch"; // 设备名称
jsonDoc["unique_id"] = "esp8266_switch"; // 设备唯一ID
jsonDoc["state_topic"] = TOPIC_STATE; // 状态主题
jsonDoc["command_topic"] = TOPIC_COMMAND; // 控制主题
jsonDoc["availability_topic"] = TOPIC_ONLINE; // 在线状态主题
// 将JSON对象序列化为字符串
String jsonStr;
serializeJson(jsonDoc, jsonStr);
// 发送配置信息到HA的TOPIC_CONFIG
if (client.connected()) {
client.publish(TOPIC_CONFIG, jsonStr.c_str());
// 打印发送的配置信息到串口监视器
Serial.println("Sent configuration to Home Assistant:");
Serial.println(jsonStr);
} else {
Serial.println("MQTT not connected. Cannot send configuration.");
}
}
// 初始化函数
void setup() {
Serial.begin(115200);
delay(20);
// 配置静态IP
WiFi.config(staticIP, gateway, subnet, dns);
// 连接Wi-Fi网络
reconnectwifi();
pinMode(LAMP5, OUTPUT); // 配置LAMP5为输出,用于控制开关
client.setServer(mqtt_server, mqtt_port); // 设置MQTT服务器
client.setCallback(callback); // 设置MQTT消息回调函数
// 连接MQTT服务器
reconnectmqtt();
// 发送设备配置信息到HA的TOPIC_CONFIG
sendConfigToHA();
}
不能被HA识别,求助这个config订阅内容要怎么写,用的Arduino IDE,想试着用8266写个开关,能在ha上控制。
折腾了一天了,只成功了联网和MQTT
|