Home Assistant 开发指南
HA运行指南
- 前言
- 运行
- core+frontend
- 1. 下载源码
- 2. 安装依赖
- 3. 组装 frontend
- 4. 配置 nodejs
- 5. 运行
- frontend develop
- 开发指南
- HA 连接小米网关
- 结语
前言
Home Assistant(以下 HA) 是一款智能家居管理系统的开源库。
如果想要使用 HA 一般有两种方式:
- 在虚拟机安装 Hassio - HA 提供的内置相关功能的磁盘映像(可以参考:https://bbs.hassbian.com/thread-8119-1-1.html),这种方法的优点在于非常简单,很快就可以开启一个 HA 的服务器,然后就可以在浏览器访问了,而且 HA 也提供了大量供用户自定义的选项。
- 另外一种就是下载 HA Core 源码,自己组装相关组件(如:Frontend),这种的方式则是为了实现更完全的自定义,如:修改左侧导航栏的标题。
官方文档:
- 环境配置
- frontend 配置
运行
环境:Debian + VSCode
备注:建议在 Linux 下运行,Windows 请按照官方文档安装配置 WSL(Windows Subsystem for Linux)
core+frontend
core 也即 ha 的核,是核心部分,frontend 是 core 可以装载的一个零件。在组装任何零件之前,首先需要把 core 跑起来。
1. 下载源码
clone 源码到本地 core & frontend
安装 VSCode for Linux 与 Docker
安装 nvm(nodejs 版本管理工具)
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/frontenddevelopment_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,然后按照官方文档的方法,关闭浏览器的缓存等,即可享受代码变更的实时显示。
- Disable cache by ticking the box in Network > Disable cache
- 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 持续更新中。
Home Assistant 开发指南相关推荐
- Qt Assistant快速指南
Qt Assistant快速指南 Qt Assistant快速指南 管理书签 搜索关键词 使用自由文本搜索 Qt Assistant快速指南 一旦安装了Qt,就可以像开发主机上的任何其他应用程序一样启 ...
- EAS 取数公式二次开发指南
取数公式开发指南 只是做报表公式二次开发做一个参考 开发所需要新建的文件 com/kingdee/eas/fi/newrpt/formula/define/ formulas_defination.x ...
- STM32开发指南阅读记录
一.STM32的开发方式:标准库,HAL库,寄存器开发 1.寄存器开发:通过直接操作寄存器进行开发,但是由于STM32的寄存器数量众多,逐个查询比较繁琐. 2.标准库:ST公司为每一款芯片都编写了一份 ...
- Rasa中文聊天机器人开发指南(1):入门篇
文章目录 1. Rasa简介与安装 1.1 Rasa简介 1.2 Rasa安装(v1.9.4) 1.1 Ubuntu 16.04环境 1.2 Windows10环境 2. Rasa使用--构建简单聊天 ...
- 最全面的Unity游戏开发指南视频教程 第2卷
最全面的Unity游戏开发指南视频教程 第2卷 流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小 ...
- Linux 汇编语言开发指南
Linux 汇编语言开发指南 肖文鹏 (xiaowp@263.net), 北京理工大学计算机系硕士研究生 本文作者 肖文鹏是北京理工大学计算机系的一名硕士研究生,主要从事操作系统和分布式计算环境的研究 ...
- 《Python和Pygame游戏开发指南》——2.16 pygame.display.update()函数
本节书摘来自异步社区<Python和Pygame游戏开发指南>一书中的第2章,第2.16节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区" ...
- 400 多行代码!超详细 Rasa 中文聊天机器人开发指南 | 原力计划
作者 | 无名之辈FTER 责编 | 夕颜 出品 | 程序人生(ID:coder_life) 本文翻译自Rasa官方文档,并融合了自己的理解和项目实战,同时对文档中涉及到的技术点进行了一定程度的扩展, ...
- Knockout应用开发指南 第六章:加载或保存JSON数据
原文:Knockout应用开发指南 第六章:加载或保存JSON数据 加载或保存JSON数据 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地 ...
最新文章
- nginx防mysql注入_nginx防止sql注入
- 【JOI2017春季合宿】Port Facility
- 使用windowManager实现音乐播放器(悬浮框)效果
- 银行不告诉的秘密,看完豁然大悟
- 美国大学计算机专业排名2014,2014年美国大学计算机科学专业排名
- C++获取CPU信息应用经验分享
- oracle 中update select 和连接字符串配合使用
- raiden_graph
- 把字符串复制到剪贴板
- Vim快速选中、删除、复制引号或括号中的内容
- 这就是XcodeGhost作者的原话
- opencv cvtcolor函数中断异常
- oracle 白鳝 row cache lock,ROW CACHE LOCK导致数据库CPU高案例分析
- DHT11温湿度模块
- 前端企业级代码规范(巨详细)
- spring中aop默认使用jdk动态代理,springboot2以后默认使用cglib来实现动态代理详解
- 美森快船收费标准和操作流程是怎样的?
- Linux安装redis并设置开机自启以及利用小红桶连接(命令行方式)
- 2019_IJCAI_Deep Adversarial Social Recommendation
- tc275的flexcan的接收与发送
热门文章
- UE4 蒙太奇 组合动画
- 练习-Java字符串之StringToKenizer类分割字符串之计算手机话费总额
- win10 nuget 无法下载_Win10 动不动就报毒怎么破?教你轻松解决_搜狐汽车
- 计算机管理windows无法访问指定设备,windows无法访问指定设备路径或文件如何解决...
- python mask_python_mask_array的用法
- 基于 STM32F103C8T6 对音频数据的 Flash 读取与 DAC 播放
- 如何辨别优劣高防服务器?
- “云控制服务”的设想
- oracle rrsf_Oracle实战笔记(第三天)
- 运算符,++,--,*,/和%的运用和区别