智能家居之旅,第二站:设备接入HomeAssistant的方法

[复制链接]
查看2227 | 回复22 | 2024-4-25 14:46:40 | 显示全部楼层 |阅读模式
本帖最后由 起个名字好难啊 于 2024-4-25 14:47 编辑

前言
上次我们在安装HomeAssistant的时候,顺便把MQTT 集成安装好了。为什么要装MQTT 集成呢?原因就在于,WiFi 设备(Ai-WB2 或者Ai-M6x等模组)接入服务器必定要使用网络协议,而MQTT 是这些网络协议中最常用的。例如:阿里云的物联网平台,米家、鸿蒙等,都有基于MQTT协议的接入方式。而HomeAssistant 对MQTT的适配也十分友好。
HomeAssistant的MQTT(MQTT的基本知识自行学习,这节不讲MQTT协议)HomeAssistant的MQTT集成,大家可以理解为一个MQTT的客户端,通过固定的数据格式,它能够自己订阅Topic,并且接收数据和下发数据。所以在使用HomeAssistant 的MQTT 的时候,需要先配置远程MQTT服务器。说到这里就可以直到,设备接入HomeAssistant 的方式了,请看下图:
网络架构图.jpg
说白了,就是MQTT 服务器负责转接了HomeAssistant和其他WiFi 设备的数据,HomeAssistant 只不过是订阅了每一个接入到HomeAssistant 上的设备的Topic,和获取到了每个设备下发的Topic。话不多说,我们直接动手。
MQTT 服务器的搭建
MQTT 服务器我建议使用远程服务器来搭建,当然局域网中也可以,使用远程服务器主要还是为了避免家里有多个局域网(多个路由器)的情况,而且任意能够访问网络的WiFi 设备都能接入。本地服务器的搭建方式可以参考狗哥的搭建MQTT服务器的帖子:在pi上面部署开源的MQTT服务器(EMQX)
远程服务器的搭建也差不多,只是系统不一样而已。首先登录到你的远程服务器上:

                               
登录/注册后可看大图


后面的步骤就参考狗哥的帖子,跟着他的帖子来就行,狗哥帖子没有贴指令:
下载 MQTTx Ubuntu 版:
  1. wget https://www.emqx.com/zh/downloads/broker/5.6.1/emqx-5.6.1-ubuntu20.04-amd64.deb
复制代码
安装:
  1. sudo apt install ./emqx-5.6.1-ubuntu20.04-amd64.deb
复制代码
运行:
  1. sudo systemctl start emqx
复制代码
安装完成之后,远程服务器还需要开放两个端口:18083和1883.(18083 是MQTT后台管理端口,1883 是客户端连接端口,如果你需要加密连接(SSL/TSL)的话,可能还需要开放8883)
mqtt.png
最后验证一下,打开浏览器输入:ip:18083,访问成功:首次登录账号:admin,密码:public
mqttdl.png
HomeAssistant 连接服务器
分别点击 “配置”——>"设备与服务"——>"添加集成"——>输入框搜“MQTT”选择第一个,然后填入MQTT服务器的IP地址:
mqttconfig.png
连接成功会提示:
mqttOK.png
另外,我建议打开HomeAssistant 的高级功能,用来配置MQTT发现前缀等内容。
gaojigongeng.png
然后你就可以开启高级选项,就能够配置客户端ID及其他功能:
网络架构图1.jpg
接入HomeAssistant 的前提条件
我们需要了解HomeAssistant 的MQTT 自动发现机制:HomeAssistant 官方规定了,其他MQTT设备想要在HomeAssistant中显示的话,就需要在连接MQTT服务器的时候,以实体的方式进行登录。HomeAssistant 平台才能识别到,并显示在MQTT集成里面。就像下面那样:
entity.png
HomeAssistant 官方也给出了关于实体登录的文档:https://www.home-assistant.io/integrations/mqtt
并且也给出了对接例子:
example.png
上面的意思是:连接服务器之后,给某个Topic 发送固定的示例上的json 数据。例子中如下:
Topic:
  1. homeassistant/binary_sensor/garden/config
复制代码
Json:
  1. {
  2.    "name":null,
  3.    "device_class":"motion",
  4.    "state_topic":"homeassistant/binary_sensor/garden/state",
  5.    "unique_id":"motion01ad",
  6.    "device":{
  7.       "identifiers":[
  8.          "01ad"
  9.       ],
  10.       "name":"Garden"
  11.    }
  12. }
复制代码
使用MQTTx 客户端测试一下:
网络架构图3.jpg
可以看到,确实按照上面的内容发送之后,HomeAssistant 的MQTT 集成就能显示东西了。所以说,每个实体我们只要根据说明发送相应的数据就能登录上去了。一下篇帖子给大家介绍一下Ai-M61/62的开关(switch)实体登录HomeAssistant的内容。
MQTTXX.png

本帖被以下淘专辑推荐:

回复

使用道具 举报

1084504793 | 2024-4-25 15:06:29 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-4-25 15:09:33 | 显示全部楼层
期待莫哥的下一篇!
用心做好保姆工作
回复 支持 反对

使用道具 举报

干簧管 | 2024-4-25 15:30:30 | 显示全部楼层
莫哥厉害👍
回复 支持 反对

使用道具 举报

mowhale | 2024-4-25 15:49:55 | 显示全部楼层
小白看了瑟瑟发抖
回复 支持 反对

使用道具 举报

djy876 | 2024-4-25 15:54:53 | 显示全部楼层
莫哥厉害
回复

使用道具 举报

lazy | 2024-4-25 16:31:39 | 显示全部楼层
回复

使用道具 举报

1055173307 | 2024-4-25 20:25:08 | 显示全部楼层
学习
回复

使用道具 举报

yff | 2024-4-25 23:28:47 | 显示全部楼层
点赞
回复

使用道具 举报

bzhou830 | 2024-4-26 08:32:39 | 显示全部楼层
莫哥高产!
选择去发光,而不是被照亮
回复

使用道具 举报

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

本版积分规则