Linux 部署Home Assistant 以及集成米家

  • 项目背景

最近项目中,分配到了对接智能家居设备的任务,即需要通过调用api的方式,从而达到控制设备的目的。

  • 需求分析

需要在代码中或者其他地方调用api来控制设备。那这不就是物联网了嘛。找几个对接平台,对比下价格,然后去调用对应平台的API去控制设备,岂不是简简单单?(后面发现是我太天真了) 开冲开冲。

  • 技术方案选择

.米家
 

说起小米,无人不知,无人不晓了吧。米家就是其旗下的智能生活平台,米家里面有个专门的硬件设备对接平台(小米IoT开发者平台),进去一看,
麻瓜了、米家没有api接口对外开放。pass

.涂鸦智能

涂鸦智能Tuya是一个全球化的物联网平台,提供设备连接、云服务、数据分析等全面的解决方案。这是其开发者平台的官网(Tuya Smart Developer Center),里面有个云开发的IoT Core连接服务,可以以api的方式控制设备。刚好符合要求。有一个月的试用期
 


ps:首次进云开发 需要创建云项目,然后购买资源包
但是,
后续的费用有点惊人,考虑到成本问题,暂时搁置该选择。

.Home Assistant

Home Assistant 是一个基于Python 3开发的开源家庭自动化平台。可以跟踪和控制家庭中的所有设备,
并实现自动化控制。重点是:免费、开源、且提供API。完美。

  • 部署Home Assistant

部署采用的基于Linux系统的docker 方式,没有安装docker的先自行安装docker。

1.拉取官方稳定版镜像

docker pull ghcr.io/home-assistant/home-assistant:stable

2.在Linux服务器上创建一个文件夹,用来挂载HA的配置文件,否则重启项目后,配置会丢失。
我的文件路径是 /data/home-assistant/config


​3.使用docker运行该镜像、这里我是没有指定端口的,默认端口是8123

docker run -d --name=home-assistant --privileged -v /data/home-assistant/config:/config -v /run/dbus:/run/dbus:ro --net=host ghcr.io/home-assistant/home-assistant:stable

指令说明
1.docker run:启动一个新的 Docker 容器

2.-d:以“分离模式”(后台运行)启动容器

3.--name=home-assistant:为容器指定名称为“home-assistant”

4.--privileged:给予容器特权模式,允许访问主机设备(通常用于访问硬件设备)

5.-v /data/home-assistant/config:/config:将主机的 /data/home-assistant/config 目录挂载到容器的 /config 目录,用于存储 Home Assistant 的配置文件

6.-v /run/dbus:/run/dbus:ro:将主机的 D-Bus 系统总线挂载到容器中,以只读模式(ro)访问

7.--net=host:使用主机的网络模式,容器将直接使用主机的网络接口

8.ghcr.io/home-assistant/home-assistant:stable:指定要运行的 Docker 镜像,这里是 Home Assistant 的稳定版

4.在浏览器地址栏输入 ip:8123 即可访问项目、我这个页面是初始化后的。
 


首次进来后,需要创建账号、密码、以及一些初始化设置,按照步骤进行即可。然后再进行登录。

  • Home Assistant集成米家

由于我现有的设备是小爱同学,所以需要集成米家进来。
.安装米家插件
1.通过HACS(HA的第三方应用商店)安装米家插件。前提是需要你先安装好HACS。
2.直接下载米家的插件(https://github.com/XiaoMi/ha_xiaomi_home/blob/main/doc/README_zh.md),
下载源码的zip包,然后解压,将文件夹中的custom_components文件夹放到挂载目录的 /data/home-assistant/config 下面。然后重启项目。(我采用的是这种方式)

.集成米家并授权
1.设置------>设备与服务


2.添加设备--选择小米
 


3.授权
 


 


 



这是会出现错误,不用担心,把homeassistant.local换成自己的部署服务器的IP即可。
 




请注意:这里有个隐藏的坑,就是你授权的小米账号下如果是没有设备的话,是无法继续往下步骤走的。


添加成功后,即可在页面看到小米home
 


然后点击箭头
 


 


就可以在页面看到设备的具体信息以及操作了。

  • 以api的方式控制设备

这是HA的官方文档地址(REST API | Home Assistant Developer Docs)
 


这里面最重要的接口是
 


domain 是实体
service 是服务
小爱同学的控制面板上有很多操作,比如播放、暂停等。怎么去调用呢?
先进去设备页面。然后有个自动化的选项。然后选择 + 号创建
创建新自动化---->添加动作----->按钮
按钮选中后,在下发的目标中 选择选择--->小爱同学 选择实体---->播放
 



 


 



 


 

点击右上角的三个点哪里,有个 运行动作的按钮。可以测试下该步骤是否正常。正常后点击右下角的保存

保存后(不保存也可以,只是为了看yaml),再点击三个点、往下拖到,有个YAML编辑的选择、点击进去
 


 


看到action中的 button.press没有?
button 就是domain
press 就是service
entity_id: button.xiaomi_cn_8******1_lx01_play_a_4_2 是接口的json参数。

所以接口的curl就是
curl --location 'http://IP:8123/api/services/button/press' \

--header 'Authorization: Bearer TOKEN' \

--header 'Content-Type: application/json' \

--data '{

"entity_id": "button.xiaomi_cn_8*******_lx01_play_music_a_5_4"

}'
这个API接口就可以调用小爱的播放功能了。如果还需要调用其他功能呢?
按照上面的步骤,选择不同的按钮就可以了。
因为这种方式可以完整得拿到对应的domain以及service,还有实体ID。

ps:去以下截图的地方可以找到所有的实体ID
 


 



这时候有细心的同学就发现了。请求头不是还有个token的呢?没错。请求接口的时候。还需要带上token。
 


有的 兄弟,有的
 


 



然后,去postman测试下。
 


调用成功、至此,收工。过程中有问题、可以交流。
 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值