我想通过 MQTT 将值从 HomeAssistant 发送到 ESP8266。我已经成功地以另一种方式完成了它(通过 MQTT 将温度值从 ESP 发送到 HomeAssistant)但是现在我希望能够通过 HomeAssistant 接口将值发送到 ESP。
这是否可以做到这一点(是否有传感器或开关之类的组件可以做到这一点)?
我很乐意为您提供任何帮助,并随时询问是否有任何不清楚的地方。
我想通过 MQTT 将值从 HomeAssistant 发送到 ESP8266。我已经成功地以另一种方式完成了它(通过 MQTT 将温度值从 ESP 发送到 HomeAssistant)但是现在我希望能够通过 HomeAssistant 接口将值发送到 ESP。
这是否可以做到这一点(是否有传感器或开关之类的组件可以做到这一点)?
我很乐意为您提供任何帮助,并随时询问是否有任何不清楚的地方。
如果您已通过 MQTT 将数据从设备发送到 HomeAssistant,那么您肯定可以反过来进行。MQTT 是完全双向的,没有 HTTP 中的服务器和客户端的概念,而是代理和客户端,所有客户端都是一等公民。
您必须确定 HomeAssistant 使用什么主题来发送数据(比方说/my-cool-device/commands
),并且您必须配置设备以便它订阅/my-cool-device/command
和处理传入的消息。
我使用 HA 从 ESP8266 触发主题更新推送。
在 ESP8226 代码中,在 setup 中,注册一个订阅主题的回调函数。 mqttClient.setCallback(callback);
在该 MQTT 回调函数中,读取主题和有效负载消息,并在匹配时执行您的 ESP8266 代码。
if (strcmp(topic, inTopicPub) == 0) {// fishtank/pub
pubAll();
}
在代码初始化时,创建一个主题名称:
const char* inTopicPub = "fishtank/pub";
在 MQTT 连接序列中,注册该主题的订阅请求。 mqttClient.subscribe(inTopicPub);
在 .homeassistant/configuration.yaml 中创建一个开关条目:
switch 9:
- platform: mqtt
name: "Synch"
command_topic: "fishtank/pub"
payload_on: "91"
payload_off: "90"
qos: 0
retain: false
重新加载 HA 以使用更改的配置。
编辑 HA 仪表板添加按钮卡(希望从下拉选项中填充)。
type: button
tap_action:
action: toggle
entity: switch.synch