『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 2189|回复: 11

[求助] 不能被HA识别,config部分该怎么写

[复制链接]

1

主题

11

帖子

48

积分

新手上路

Rank: 1

积分
48
金钱
37
HASS币
0
发表于 2023-9-6 16:18:28 | 显示全部楼层 |阅读模式
// 发送设备配置信息到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
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2023-9-6 17:04:27 | 显示全部楼层
既然自己会写程序,那么看文档应该也不是问题吧?
https://www.home-assistant.io/integrations/mqtt#mqtt-discovery
回复

使用道具 举报

1

主题

11

帖子

48

积分

新手上路

Rank: 1

积分
48
金钱
37
HASS币
0
 楼主| 发表于 2023-9-6 18:28:38 | 显示全部楼层
XCray 发表于 2023-9-6 17:04
既然自己会写程序,那么看文档应该也不是问题吧?
https://www.home-assistant.io/integrations/mqtt#mqtt- ...

不会写,这个是chatgpt帮我写的,每行注释了才勉强看懂
回复

使用道具 举报

1

主题

11

帖子

48

积分

新手上路

Rank: 1

积分
48
金钱
37
HASS币
0
 楼主| 发表于 2023-9-6 18:39:23 | 显示全部楼层
XCray 发表于 2023-9-6 17:04
既然自己会写程序,那么看文档应该也不是问题吧?
https://www.home-assistant.io/integrations/mqtt#mqtt- ...

谢谢,识别到了
回复

使用道具 举报

1

主题

11

帖子

48

积分

新手上路

Rank: 1

积分
48
金钱
37
HASS币
0
 楼主| 发表于 2023-9-6 23:33:07 | 显示全部楼层
XCray 发表于 2023-9-6 17:04
既然自己会写程序,那么看文档应该也不是问题吧?
https://www.home-assistant.io/integrations/mqtt#mqtt- ...

超版,可以帮我找找失败的源头吗?一晚上了还是没搞定,按文档成功的连上的信息写的是感应器,改成开关后一直没能成功,mqttx上能收到8266发出来的config消息,ha确总是识别不到,是不是少了什么参数,显示的内容是
Topic: homeassistant/ESP-01/home/configQoS: 0
{"name":"水泵开关","unique_id":"HA-ESP8266-03","command_topic":"home/bedroom/switch1/set","state_topic":"home/bedroom/switch1","qos":0,"payload_on":"ON","payload_off":"OFF","retain":false}

对应的代码是:
// TOPIC_CONFIG配置
void sendConfigToHA() {
  // 创建一个JSON对象
  StaticJsonDocument<256> jsonDoc;

  // 设置开关的配置信息
  jsonDoc["name"] = switchName;
  jsonDoc["unique_id"] = switchUniqueId;
  jsonDoc["command_topic"] = TOPIC_COMMAND; // 控制开关的命令主题,请更改为您的命令主题
  jsonDoc["state_topic"] = TOPIC_STATE; // 设置状态主题
  jsonDoc["qos"] = 0; // 设置QoS级别,可以根据需要进行更改
  jsonDoc["payload_on"] = "ON"; // 设置开启状态的payload
  jsonDoc["payload_off"] = "OFF"; // 设置关闭状态的payload
  jsonDoc["retain"] = false; // 设置是否保留最后一个消息

  // 将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.");
  }
}
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2023-9-7 07:49:27 | 显示全部楼层
nomi 发表于 2023-9-6 23:33
超版,可以帮我找找失败的源头吗?一晚上了还是没搞定,按文档成功的连上的信息写的是感应器,改成开关后 ...

名字不要用中文,其他的多看文档、找个示例代码学习。我自己没这么玩过,mqtt也好久不用了,帮不上太多。
回复

使用道具 举报

13

主题

575

帖子

3047

积分

论坛元老

HomeAssistant

Rank: 8Rank: 8

积分
3047
金钱
2467
HASS币
20
发表于 2023-9-7 08:52:56 | 显示全部楼层
把config的topic改成  homeassistant/switch/bedroom/config 试试
回复

使用道具 举报

1

主题

11

帖子

48

积分

新手上路

Rank: 1

积分
48
金钱
37
HASS币
0
 楼主| 发表于 2023-9-7 09:51:22 | 显示全部楼层
DDDear 发表于 2023-9-7 08:52
把config的topic改成  homeassistant/switch/bedroom/config 试试

试了,还是失败
回复

使用道具 举报

1

主题

11

帖子

48

积分

新手上路

Rank: 1

积分
48
金钱
37
HASS币
0
 楼主| 发表于 2023-9-7 09:52:33 | 显示全部楼层
XCray 发表于 2023-9-7 07:49
名字不要用中文,其他的多看文档、找个示例代码学习。我自己没这么玩过,mqtt也好久不用了,帮不上太多。 ...

换成了英文还是失败,文档里没有相同环境的示例,我再找一找看
回复

使用道具 举报

13

主题

575

帖子

3047

积分

论坛元老

HomeAssistant

Rank: 8Rank: 8

积分
3047
金钱
2467
HASS币
20
发表于 2023-9-7 11:46:46 | 显示全部楼层
nomi 发表于 2023-9-7 09:51
试了,还是失败

我用mqtt客户端试了下可以的,只修改了配置主题
微信截图_20230907114323.png 微信截图_20230907114444.png 微信截图_20230907114418.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 10:55 , Processed in 0.732553 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表