Home Assistant 开发指南

前言

Home Assistant(以下 HA) 是一款智能家居管理系统的开源库。

如果想要使用 HA 一般有两种方式:

  • 在虚拟机安装 Hassio - HA 提供的内置相关功能的磁盘映像(可以参考:https://bbs.hassbian.com/thread-8119-1-1.html),这种方法的优点在于非常简单,很快就可以开启一个 HA 的服务器,然后就可以在浏览器访问了,而且 HA 也提供了大量供用户自定义的选项。
  • 另外一种就是下载 HA Core 源码,自己组装相关组件(如:Frontend),这种的方式则是为了实现更完全的自定义,如:修改左侧导航栏的标题。

官方文档:

运行

环境:Debian + VSCode

备注:建议在 Linux 下运行,Windows 请按照官方文档安装配置 WSL(Windows Subsystem for Linux)

core+frontend

core 也即 ha 的核,是核心部分,frontend 是 core 可以装载的一个零件。在组装任何零件之前,首先需要把 core 跑起来。

1. 下载源码

2. 安装依赖

  • 运行以下指令安装 Python 及相关组件:
sudo apt-get install python3-pip python3-dev python3-venv autoconf libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev libudev-dev zlib1g-dev pkg-config libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libavresample-dev libavfilter-dev ffmpeg
  • 提前在 VSCode 中,安装 Docker,Remote - Container 插件。
  • 使用 VSCode 打开 core 文件夹,VSCode 自动弹窗,点击确认“在 Container 中打开”。
    在这里插入图片描述

如果提示用户不在 docker 的用户组内,可参考将当前用户添加到 docker 用户组,如果还是不行,重启一下电脑即可。

3. 组装 frontend

组装 frontend 其实就是在已经打开的 core 中配置 frontend 源码的路径,告诉 core 可以在哪里找到零件。

  • 在之前打开的 core 的容器中找到 .devcontainer/devcontainer.json,添加一个配置项,装载 frontend。
  "mounts": [
    "source=XXX/frontend,target=/workspaces/frontend,type=bind,consistency=cached"
  ],

其中 XXX/frontend 需要替换成您的 frontend 文件夹的路径(必须使用绝对路径,且需要注意 docker 无法自动识别 ~,要用完整的路径);
后面的 target 就是我们装载后 frontend 所在的路径(/workspaces/frontend)。

  • 找到 config/configuration.yaml,告诉 core 零件的位置(使用上一步中 target 的路径即可)。
# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

frontend:
  # Example absolute path: /home/paulus/dev/hass/frontend
  development_repo: /workspaces/frontend/

注意!!!frontend 缩进与 default_config 对齐,否则无法装载 frontend,且不会报错!!!!

4. 配置 nodejs

  • frontend 文件夹下打开终端。
  • 安装 nodejs:运行 nvm install 安装合适版本的 nodejs。(frontend 还是使用的 nodejs,所以需要安装使用 nodejs)
  • 启用 nodejs:运行 nvm use
  • 安装 yarn (脚本需要用,而且 yarn 与 npm 绑定,使用 nvm 安装了新的 nodejs 后,需要重新安装 yarn):运行npm install -g yarn
  • 安装 bootstrap 依赖:运行 sh script/bootstrap

5. 运行

  • 直接在 VSCode 容器内打开 core 文件夹下的终端(注意不能直接在系统终端运行,会出现找不到虚拟环境的问题)
  • (first time) 创建虚拟环境,一键配置项目:sh script/setup
  • 激活虚拟环境:source venv/bin/activate
  • 开启 HA:hass -c config
  • 在浏览器中打开本地服务器页面。
    在这里插入图片描述

frontend develop

下载 frontend 源码后,可以看到代码结构与 Vue 如出一辙。直接大刀阔斧地改就好了。

开发指南

开发的时候如果希望自己的修改能够实时显示在浏览器中,就需要运行一个动态编译的 frontend 包。
具体步骤如下:

  • 使用 VSCode 在 frontend 文件夹下,打开 container(与 core 一致)

    需要注意的是,由于frontend 的容器与 core 存在冲突,打开 frontend 容器时需要先关闭 core 的容器,否则会报错。

  • 在 VSCode 中使用 Ctrl+Shift+P 打开指令面板,Tasks: Run Task -> Develop Frontend 即可开启动态编译。
    在这里插入图片描述
    等待 10 mins 左右(期间出现的一些告警信息可以不用理会)提示打包成功,此后将自动检测代码的改变。

  • 回到 core,仍然是开启容器,执行 hass -c config,运行 HA,然后按照官方文档的方法,关闭浏览器的缓存等,即可享受代码变更的实时显示。

  1. Disable cache by ticking the box in Network > Disable cache
    在这里插入图片描述
  2. Enable Bypass for network in Application > Service Workers > Bypass for network
    在这里插入图片描述
  • 通过源码的修改,可以实现例如:修改导航栏标题。
    在这里插入图片描述
  • 最终打包 frontend 需要使用 gulp build-app --max_old_space_size=4096 其中 4096 为限制使用的内存大小,单位为 MB。

直接使用 sh script/build_frontend 会出现栈溢出的错误。
注意 gulp 内置在 container,需要开启容器后才能使用。

HA 连接小米网关

本项目使用的是小米 Aquara 网关 M1S。
具体步骤如下:

  • 下载米家 APP,注册登录后,添加设备,搜索 Aquara M1S 之类的,点击搜索结果,进入连接网关的流程

    这个地方需要注意,米家直接搜索不一定能够找到我们的网关,这时就需要搜索相应的型号,然后再让米家去找设备。

  • 然后回到 HA,在主界面依次找到:配置 -> 集成 -> 添加集成
    在这里插入图片描述
    注意选择上图标记出来的集成,实测 Aqara 集成无法正常使用。
  • 在后续的窗口中,登录米家云服务,即可连接自己的网关。
    在这里插入图片描述
    使用登录米家 APP 的帐号和密码登录即可。
  • 保持网关与相应设备在同一个局域网下,网关将自动发现这些设备,并同步给 HA。
    在这里插入图片描述

结语

在一些问题上花费了太多时间,结果只是很小的问题把人卡住了。之后有问题还是应该去相关论坛多多请教。

如果也有孤军奋战的小伙伴,有什么问题可以在评论区留言,或许本人可以提供些许帮助。


TroubleShooting 持续更新中。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Home Assistant是一个开源的智能家居控制核心,它具有活跃的社区支持和热度高涨的人气,被认为是最好的智能家居控制核心之一。它可以安装在各种设备和系统上,如Windows、Linux、树莓派和群辉等。为了实现24小时在线,通常会选择树莓派或群辉等NAS设备进行安装。开发Home Assistant有一些步骤,包括下载源码、安装依赖、组装前端、配置nodejs等[3]。开发者还可以使用Home Assistant来连接小米网关,实现更多的功能和集成。总而言之,Home Assistant是一个功能强大且灵活的智能家居控制平台,可以根据个人需求进行定制和开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [构建智能家居的神器HomeAssistant](https://blog.csdn.net/cqacrh2798/article/details/88016852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Home Assistant 开发指南](https://blog.csdn.net/weixin_43536737/article/details/119858438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值