关于hass对接mqtt 请参考官网
https://www.hachina.io/docs/7083.html
1 登陆运行着hass的阿里云服务器
2 修改hass配置文件,添加mqtt服务信息
把这个文件拷贝到自己的电脑上,修改后重新上传服务器
添加以下内容
2.1hass连接Mqtt服务器
参考官网 https://www.hachina.io/docs/7211.html
你可以使用Mosquitto的公有云MQTT服务器进行测试。如下配置:
# configuration.yaml配置样例
mqtt:
# MQTT Broker的IP地址或者域名
broker: test.mosquitto.org
#如过是本地搭建的
#broker: 127.0.0.1
# MQTT Broker的端口号,缺省为1883
port: 1883
# 用户名
#username: hachina
# 密码
#password: hachina
# 配置自动发现
discovery: true
# 自动发现使用的主题位置前缀,缺省为homeassistant
discovery_prefix: homeassistant
2.2hass手动添加一个设备(灯)
参考官网 https://www.hachina.io/docs/7214.html
- 主题位置(topic)
主题位置表明双方在哪里进行通讯。
比如,一盏灯的命令主题(command_topic),表示HomeAssistant会将开关命令发送到这儿,而灯会到这儿读取命令进行开关操作;比如,一个温度计的状态主题(state_topic),表示温度计会将温度值发送到这儿,HomeAssistant会从这儿读取温度展现在前端。
一个设备可能包含多个主题位置。例如,温湿度传感器的温度和湿度可以分在两个主题位置,灯的状态和控制命令一般也会分在不同的主题位置。 - 信息内容(payload)
信息内容表示双方用什么信息代表什么含义。
比如,开关灯命令,可以是”ON/OFF”,也可以是”on/off”,”true/false”,”1/0″……
HomeAssistant配置项中payload_XXXX代表对信息内容的配置。
# 这是一个MQTT设备,名字是"MQTT Sensor 1",在MQTT中发布信息的位置在"home/bedroom/temperature"
# 此配置添加系统内实体sensor.mqtt_sensor_1
light:
#设备类型 MQTT
- platform: mqtt
# 设备名字
name: "LED light over MQTT"
# HASS标准格式 状态话题 HASS接收来自设备的状态信息
state_topic: "hachina/hardware/led01/state"
# HASS标准格式 命令话题 HASS发送控制设备的命令
command_topic: "hachina/hardware/led01/switch"
# 命令格式 on 和 off
payload_on: "on"
payload_off: "off"
被控端(灯)将状态发布到主题“hachina/hardware/led01/state
”中,控制端(HomeAssistant)订阅这个主题,用于当前状态显示;
控制端(Home Assistant)将控制命令发布到主题“hachina/hardware/led01/switch
”中,被控端(灯)订阅这个主题,根据其内容进行实际的开关动作。
双方以”on”代表开,以”off”代表关。
3重启 hass
4 登陆控制台,发现多了个灯设备
5 点击按钮,在对应话题会收到" on "
在hass点击一下开关,开关打开
手机调试软件订阅话题,模拟自己是个灯监听
但是马上hass界面端的按钮又回到关闭状态,为什么?
因为手机只是监听,没有往状态话题发布消息--on, 这样hass没有得到灯的反馈,误以为它没开,而自动把开关展示状态显示为关。
需要在硬件esp8266中写程序,每次收到 开灯命令,对应返回 开的状态。