闲着没事瞎研究一下,主要是根据网上已有的教程自己尝试搭建home-assistant,本文档仅记录一下自己的搭建过程。
一、事前准备
pc(必须为windos专业版,如果不是,可以退出本文章了)、网络(可以访问github)、github账号,以及一些智能家居设备(非必需,只是为了验证最终效果)
homeassistant(简称ha、hass)可以装在任何机器上,本次采用的方式是在window电脑上安装docker,再起linux容器进行安装。
homeassistant作为智能家居的控制核心,是需要7*24小时待机的,正常情况下应当部署在如树莓派、NAS上。本次只是兴趣使然想要体验一遍安装过程,同时看下效果,判断以后有没有长期使用的必要。
二、安装docker
docker是什么这里不再过多介绍,可以通俗的理解为一个虚拟机的管理器,利用它可以实现在window上跑linux,想要在windows上安装docker,windows版本必须是专业版。
可以进入官网下载:https://www.docker.com/products/docker-desktop/,
下载完成后一路默认安装,可以直接安装在C盘,如果觉得C盘空间不够,也可以指定到其他路径,推荐安装在固态硬盘上。
安装完成后检查是否安装成功,打开一个终端(在任意文件夹路径下,按 shift + 鼠标右键,选择在此处打开powershell窗口,下方提到打开终端都是这样操作)
输入 docker --version
正确显示版本号即安装成功,(我的docker安装较早,没有进行升级,官网下载安装后,可能版本不一样)
安装成功后启动docker,由于默认镜像库地址是国外的,使用起来不方便,需要设置一下镜像库地址,在电脑右下角找到docker的图标,右键setting,打开docker管理面板,在Docker Engine里粘贴以下内容
"registry-mirrors": ["https://mkts104l.mirror.aliyuncs.com"]
此为阿里云镜像库,如有需要也可以自己找其他的。
三、拉取镜像并创建容器
docker安装完成后,我们就可以拉取镜像以创建容器了,为了方便下边操作,先简单介绍几个需要用到的docker常用命令
docker --help 查看帮助,以下命令均可以在帮助里找到
docker images 查看镜像
docker ps 查看正在运行的容器
docker ps -a 查看所有容器
docker search 在镜像仓库里搜索镜像
docker pull [镜像名] 拉取镜像
docker network create 为docker创建网桥
docker run [镜像名] 使用指定镜像创建容器
docker start [容器id] 启动指定容器
docker stop [容器id] 停止指定容器
docker exec [容器id] 进入指定容器
docker cp [文件路径] [容器id:文件路径] 向容器指定路径拷贝文件
以上就是接下来会用到的所有docker相关命令。
-
查找home-assistant镜像
打开终端,输入
docker search home-assistant
拉取第一个星标最多的镜像(忘截图了,一般只要替换了阿里云的镜像库,这里都不会出错)
docker pull homeassistant/home-assistants
- 拉取完成后查看镜像列表
可以看到镜像出现在本地,正常情况下接下来只要使用该镜像创建一个容器就好了。
根据本人的踩坑经验,这里还需要加入一些其他步骤,因为最终homeassistant是运行在容器里的,我们想要在外部访问,就必须要访问容器的ip和端口(homeassistant的默认端口是8123)
但是本人实测,宿主机,即我的windows电脑,无法访问到容器里边的ip和端口(也有可能是我自己的问题,故这里需要加入一个步骤,以把容器的ip固定下来,同时将容器里的端口映射出来,这样我们就可以在局域网里的任何设备上访问了。当然,如果你事先有过docker的使用经验,且确保自己电脑不存在这样的问题,那以下步骤可以跳过
-
为docker创建一个网桥
docker network create --subnet=172.30.0.0/16 docker01
这里我指定的ip号段为172.30.0.0/16,后续使用该网桥生成的容器都会属于该网段
-
使用之前的镜像创建容器
docker run -itd --privileged=true --name hass --network=docker01 --ip 172.30.0.6 -p 8123:8123 -p 6021:21 -p 6022:22 -v /sys/fs/cgroup:/sys/fs/cgroup homeassistant/home-assistant
创建容器的标准命令为
docker run -ti [镜像名]
,这里加入了一些其他参数,简单介绍下其含义
--name 为容器指定别名,不指定时由docker自行分配
--network 为容器指定网桥
--ip 指定ip,ip 要在网桥设置范围内,如果不指定ip,容器重启后ip可能会变
-p 进行端口映射,即将宿主机端口和容器端口建立连接
根据需求修改 --name --network --ip -p 配置即可。
创建成功会返回一串id,这是新创建容器的唯一标识,记住这个id,后续会用到,不过不用全部记住,一般前3位就足以标识
-
启动容器
docker start 686
(686要替换成你的id前三位) -
进入容器
docker exec -it 686 /bin/bash
此时会进入linux命令行模式,默认进去的路径是 /config,这里就是 homeassistant所在路径。
需要注意,该镜像生成的容器是基于 linuxkit的,内核为Alpine,默认支持的命令非常少(连vim都没有),如果需要,可以通过
apk add
命令添加(apk即为其包管理工具,如果找不到需要的内容,可以浏览器搜索 Alpine如何安装xxx)
四、设置homeassistant
如果前边的步骤顺利的话,容器启动后,我们就可以在windows上访问homeassistant了。
-
登录并注册
打开浏览器,输入 127.0.0.1:8123,进入 homeassistant界面
根据提示进行注册,记好自己设置的账号和密码,其他的设置不重要,后期可以改。
-
注册成功后即可进入homeassistant的管理界面,到这里,ha部署就算完成了。但为了将我自己米家的设备添加进来,同时也为了使用方便,还有一个重要的步骤要完成。
五、安装HACS
hacs可以理解为homeassistant的应用商店,我们可以通过它方便的获取到github上其他人开发的ha新内容。
安装方式有很多,我这里采用离线安装的方式,在github上找到hacs对应的项目,下载文件直接上传到容器内,重启容器即可
打开终端,进入容器,并进入homeassistant路径,创建两个文件夹: www 和 custom_components
docker exec -it 686 /bin/bash
cd /config
mkdir {www,custom_components}
然后从github下载hacs所需文件:https://github.com/hacs/integration/tree/main/,
通过github下载,我们只需要找到custom_components/hacs 这个文件夹将其上传即可(所有插件下载同理,在github上ha相关的项目里都会有custom_components文件夹,将其里边的内容上传到容器对应目录即可 )
然后将该文件上传到容器内,假设文件路径为 D:\Download\hacs
新开一个终端,输入以下命令
docker cp D:\Download\hacs 686:/config/custom_components/
进入容器内确认文件上传成功后重启容器
docker restart 686
容器重启后刷新浏览器,重新进入hass管理界面
依次选择 配置 -> 设备与服务 (忽略我截图左侧列表的HACS,这是添加成功后才会有的)
第一次打开时,这里应该是空的,点击右下角添加集成,搜索HACS
选择进行添加,由于我已经添加成功,没办法重复添加,在网上找了几个添加过程的截图:
这里四个勾全选,右下角有继续按钮,
这里需要复制最下方的八位字符,然后选中github的链接,右键在新的标签页打开,将复制的字符粘贴进去,根据提示进行认证
等待片刻就会添加成功,如果过程失败就重新添加试试,如果多次尝试都不成功,再考虑homeassistant和hacs版本是否兼容的问题。
添加完成后,在 配置-> 设置与日志 里找到服务管理,点击重新启动,不需要刷新页面,等待片刻即可重启成功(也可以直接重启容器)
这时,左侧列表就会出现HACS了,以后需要安装其他插件可以通过它来安装。
六、安装Xiaomi MIoT
为了将米家设备接入进来,我们还需要另一个插件:Xiaomi MIoT,可以像安装HACS那样安装,也可以直接通过HACS安装,
通过HACS安装:
依次选择 HACS -> 集成 ,点击右下角 浏览并下载存储库,搜索 xiaomi,找到Xiaomi MIoT进行安装。
通过下载文件的方式离线安装,github地址:https://github.com/ha0y/xiaomi_miot_raw。
后续安装步骤参考 hacs安装,不再重述。
只需要登录小米账号,即可获取到米家里的所有设备信息,然后就可以将它们选择性的添加到hass了。
添加完成后,即可在首页看到它们,也可以自定义显示样式
查看pc的内网ip地址,就可以在内网的任一设备上访问(容器需要保持运行状态),平板访问示例:
至此,windows部署hass结束。可以愉快的玩耍啦。