个人学习 HA 到入门,大约花了足足一周,期间走了许多弯路。
HA 说是入门比较简单,但其实许多教程都说得比较含糊笼统。或者只是一些片段,懂的人很好理解,但新人很难搞明白到底怎么才能把这些片段组合到一起并生效。
另外就是 HA 的各种组件模块很多,可以实现很复杂的功能。但对新人来说就很容易看花眼,不知道该如何取舍。
作为初学者,一开始想实现个非常简单的功能,都无从下手,非常头大。所以就想分享一下我的一些配置。同时我给很多文件加了详细的注解,希望能帮助新玩家快速地入门。
通过这个教程,你可以完成一个完整的流程。
从搭建后台,到修改配置文件,到编辑前端页面。
从而大致掌握 HA 的用法和原理,快速入门。
通过一个统一的平台,控制所有的智能设备(开关/插座/遥控器/智能家电)。跳过各个硬件厂商自己做的 App。
因为最终控制端是网页的形式,所以电脑手机都可以进行控制。
还可以直接用 iOS 上的 Home App 控制你的设备,也就可以用 Siri 来控制家电。
自由设定各种 自动化 和场景,可以把规则订得非常精细复杂。比如:
- 到家自动开灯放歌开空调
- PM2.5 爆表了自动开空气净化装置
- 有陌生人来家里了自动记录
- 等等
- 
需要拥有至少一个智能设备 - 我是博联的万能遥控器 RM Pro+,比较方便接管各种传统家电。
- 你也可以从插座开关等小东西入手,但最好先搜索一下,确认该设备能不能接入HA。比如博联的天猫精灵定制款,据说就很难下手。
- 如果你现成有一个智能家电,比如空调/冰箱/电视等等,那起点就比我高了。
 
- 
一些基础的计算机知识 - 比如文件相对路径 / ip地址 / mac地址 / 简单的命令行(至少会复制黏贴回车)/ 有个文本编辑器 / 等等。
- 升级一点要求,最好能读懂一些英文文档。这样万一我没提到的部分,你可以比较方便地找到对应的资料。无障碍访问网络的能力也是加分项。
- 总之这部分要求不算太高,对程序员来说很基础。如果基础知识太缺乏,可能容易卡在一些比较意外的地方。
 
- 
理解 yaml 文件格式 - HA 的绝大部分改动,就是写配置文件。这几乎不应该算编程。
- 简单来说 yaml就是一个类似json的文件格式,只不过全部用缩进来控制。需要至少理解 List/Array、Dict/Table、str、int,类似这些基本的程序概念。我感觉唯一要记住的,就是用-开头来标识列表/数组。
- 可以参考 YAML 语言教程 - 阮一峰的网络日志
 
这部分是我个人理解,帮助厘清一些基本概念,另外简单列几个常见的术语,我刚学的时候被这堆名词搞得头大。
- 
后台 - Home Assistant 是一个服务,需要运行在一个24小时不关机的硬件上。
- 一般玩家都是让它运行在树莓派或者路由器上。
- 我是刚好有一台 MBA 当服务器,所以我是运行在 Mac 系统上。
- 当然 windows 也是可以的。
 
- 
配置 - 这个服务运行的时候,会读取相关的配置文件。
- 我们使用 HA,其实主要工作,也就是修改这些配置文件。
- 比如,在 switch.yaml这个文件里,我们填写好博联的 ip/mac,就可以用它来控制这个设备了。
- 配置文件有好几个,常用的有开关 / 脚本 / 自动化 / 等,
 
- 
前端 
- 
HA/hass 都是 home assistant 的简称,我懒所以用 HA 。类似的服务还有 Domoticz 等。 
- 
lovelace 好像是 HA 的前端页面的一套模板的名字,大致就等同于 HA 的网页。frontend 也是指前端。 
- 
homebridge 也是一个服务,基于NodeJS。主要是用来连接苹果的 homekit。HA 等于是控制都用自己的一套,然后通过它来转发到 homekit,实现对接。 
- 
博联/欧瑞博/米家/易微联 类似这些,是几家大的智能硬件供应商。选购他们的设备前,务必确认一下是否能接入 HA。比如有些天猫精灵定制版,要接入就很麻烦,新人的话非常不推荐了。现在各家都在圈地,大都硬件厂商做的 App 都比较粗糙。 
- 
另外天猫精灵/米家,还有京东好像也有一个,都是类似 HA 的服务平台,试图成为统一的硬件管理入口。 
- 
ZigBee 一种物联网协议。 
- 
首先你要有 python,从这里安装 Download Python | Python.org。直接装就完了,这步不展开了。 
- 
然后有了 python 你应该就有了 pip。简单来说,在命令行键入 pip install homeassistant。万一提示pip命令不存在,自己查资料看看怎么解决。
- 
其它也有直接下载打包文件,或者 docker 之类的,懂的自然懂,小白也没必要学。 
- 
最好安装一下 pip install colorlog,后期捉虫方便一些。
- 
扩展阅读 
- 
直接在命令行键入 hass --open-ui就可以了。
 这里命令行指 Mac 下的Terminal,Win 下命令提示符。
- 
第一次运行,会下载一大堆的依赖文件,比较耗时。 
- 
HA 的 配置文件根目录 - Mac 默认是 ~/.homeassistant/。
 打开该目录方式有两种,一种是在 finder 按cmd+shift+G,然后粘贴上述地址进入该目录。
 另一种方法是在自己用户名的根目录,按cmd+shift+.(句号),显示隐藏文件,然后进入该目录。
- Windows 是 %APPDATA%/.homeassistant。
 按win+r,然后粘贴前面这段,进入该目录。
- 其它看这里 Configuring Home Assistant - Home Assistant
 
- Mac 默认是 
- 
下载好的依赖文件在 ./deps目录,我是 195M(仅供参考,升级后会变化的) 。但你现在还没填配置文件,应该会比这个小。如果网络不好卡太久,可以考虑全局梯子。
- 
如果不幸在这一步就遇到问题,可以试试: - 删掉 deps目录
- 甚至 pip install homeassistant --force-reinstall强制重装一遍 HA 。
- 然后运行,它会自动再下载一遍依赖文件。
 
- 删掉 
- 
如果成功,会自动打开浏览器,并打开 HA 的前端页面。 
 我的是http://10.0.0.12:8123。
 然后可能会要求你新建一个用户,照办就是了。
- 
先关闭 HA 的服务,直接在命令行按下 ctrl+C好了。
- 
在这个 github 页面的右上角,有一个绿色的按钮 Clone and download,点开选download zip。
- 
下载完之后,把里面的东西解压到你的 .homeassistant里。反正就是把我的configration.yaml等文件,覆盖你现有的文件,别搞错层级就行。
- 
先打开 configuration.yaml,这个是 总配置文件。
 里面一堆!include xxx.yaml说明它引用了其它配置文件。这样把文件拆分,防止单个文件太长。
 可以先把第三行,name改成你家的名字,注意冒号后需要一个空格。
- 
把 secrets_sample.yaml改名为secrets.yaml。
 这个文件里是一些隐私信息,可以被其它配置文件引用。然后可以先把其中的经纬度填一下。- google map 找到你家,然后放到最大,地址栏就是经纬度。
- 或者 iPhone 用户,用我写的这个 shortcut 。
 
- 
这次直接在命令行输入 hass就可以了,前一次带的参数是顺便打开 UI 用的。这次因为配置文件变成我的了,增加了一些东西,可能会下载一些新的依赖。
- 
如果成功运行,那这次的网页上应该就有一堆按钮了,也就是读取了我的 lovelace 配置文件。有可能显示不完全对,没关系,慢慢来。 
- 
如果运行失败,有可能是上次没有完全退出,端口被占用。 
 Mac 可以试试在命令行输入lsof -i :8123看看是否被占用,如果有,杀掉对应的PID进程就好了。
 另外lsof -i :51827是 homekit 的默认端口,有时候也需要手动杀进程。
- 
这里 语言 我们选中文。 
- 
主题 可以选 erimus-dark-mode,也可以保持默认。
 对应的文件在./themes/erimus_dark_mode.yaml。有兴趣可以自己制作主题。我这个为了配合黑色的手机,颜色比较深。
- 
语言/主题设置是 跟随设备 的。所以如果你用手机打开这个页面,就需要再设置一次。 
- 
以后我们修改了配置文件,HA 都需要重新读取才能生效。有些文件可以在运行过程中直接读取刷新,比如分组 / 脚本 / 自动化。但其它大部分需要重启整个 HA 来重新载入配置文件。 
- 
你可以考虑浏览器留一个 tab,保持在这个页面。因为后面你改了配置文件,会频繁地需要重启。我重启了有几百次吧…… 
 你可以按住ctrl然后点开发者工具,在新标签页里开始我们的下一步。
这里常用来检查状态,或者测试命令,等等。我常用的三个标签是状态、服务、模板,下面分开来讲一下。
- 
这里是查看 sensor 或者 switch 等等实体的状态的地方。 
- 
随便选一个实体(实体怎么来的后面会说),下面就会出现该实体的状态 state和属性attribute。将来如果你要手动改状态,比如图上的 off 改成 on,然后点设置状态。那这个实体的状态就会被刷新了。
- 
在测试自动化的时候,经常需要手动修改状态,以达到触发条件。(你总不能离家五分钟再跑回来,只为了测试一次吧。)另外在使用天气或者其它 sensor 的时候,也需要来这边查看状态和细节属性。 
- 
第一个红框 服务,意味着 "做什么"。第二个红框实体,意味着 "对谁做"。
- 
图上是一个很简单的例子, switch.turn_on就是打开开关。然后开哪个开关呢,就是switch.light_1这个开关。
- 
如果你配置好了 switch 或者其它实体,就可以在这里测试是否生效。 
- 
关于服务 - 里面东西没有很多,就是几个大类各自的指令。
- 可以键入关键字,它会提示相关指令。比如 turn_on,它就会告诉你哪些类型可以被turn_on。
- 另外有一些命令,比如 homeassistant.turn_on,可以包揽所有类型的turn_on。
 
- 
关于实体 - 这里可以开始注意的是,实体的写法都是 domain.entity_id。
- 比如这里的 switch,我们就可以去 configration.yaml这个总的配置文件里面找switch,发现switch: !include switch.yaml,也就说要去switch.yaml里找。
- 在 switch.yaml里,在 65 行左右(可能将来会变化),找到light_1:。
- 到这一步,可以想见,我们用服务 switch.turn_on,运行的就是这个light_1下面的command_on的内容。
- 这里 switch就是domain,也就是 HA 支持的一些大类。而light_1就是entity_id。
 
- 这里可以开始注意的是,实体的写法都是 
- 
有些复杂的服务,需要填写服务数据,也就是参数。点 填写示例数据,可以填入参数样本,然后按需修改。
模板是用来测试 template 的地方。
初学者一时用不上,就不展开了。反正知道有这么个地方就行。
- 
打开 sensor.yaml,取消注释第 7-16 行。
 左:修改前,右:修改后。 强烈推荐非程序员朋友,也拥有一款编辑器。 
 我个人使用的是 Sublime Text。
 这样你可以看到彩色的代码,及时发现格式错误。
 同时可以框选这些行,然后按ctrl+/一次取消多行注释,而不是一行行去删#。
- 
这相当于我们添加了一个天气的感应器。保存该文件,并重启 HA 。 
- 
重启完毕后,我们先进入 状态查看一下这个sensor有没有生效。搜索sensor.weather_temperature,应该能看到
  
- 
这说明新的 sensor添加成功。
- 
回到 HA 的首页,也就是 概览。
- 
界面会进入编辑模式,这时右下角会有一个圆形带加号的按钮,点击。 
- 
在一大堆卡片类型里,选择 历史图表。
- 
这时候可以看到预览,因为我们刚添加完这个传感器,所以没有历史数据。 
- 
按右下角 保存,在页面上就可以看到我们刚增加的面板了。
- 
这就是 一个完整的流程 - 我们 修改配置文件 添加了一个传感器
- 保存然后 重启 HA 让新配置生效
- 在状态里确认新传感器添加成功(可省略)
- 最后把这个传感器 放到前端网页 上
 
- 
一开始用得最多的卡片是 实体卡片,新添加的比如开关等等,基本都先加到实体卡里试下效果。
我们的教程大致到这里就可以 告一段落 了。
后续可以直接看我的配置文件,和文件内的一些注释,我写得还满详细的。
大家可以配合自己的智能设备,实际添加一个,然后加到页面进行控制,那样比较有成就感。
我的目的只是帮助新玩家快速的熟悉和入门,之后能玩的很多很多。
至于深入和扩展的功能,我也是初学者,全靠 google 和 官方论坛 。
如果有疑问或者想指正,可以通过 "-讨论区-" Issues 来交流。
根目录下 home-assistant_v2.db 是个 sql,记录了历史状态等内容。
然后 .storage 文件夹里,也记录了一些账号等内容。lovelace 的配置文件也在里面。
要做 git 备份的,可以直接参考我的 .gitignore。
后面再稍微补充一点内容。
- 
你运行 HA 的设备会有一个 ip,比如我的是 10.0.0.12。那么在手机 safari 浏览器,输入10.0.0.12:8123,冒号要英文的,应该就可以看到前端页面。
- 
如果看不到,可能是你的设备有防火墙,可以关闭防火墙测试一下。如果确定是防火墙问题,再自行搜索解决方案。 
- 
在 safari 浏览器,点击底部正中的 转发按钮,然后Add to Home Screen添加到主屏幕。这样以后调用会比较方便,页面也更美观。
- 
HA 也有官方的 App,支持 iOS 的通知消息,还可以跟踪定位信息。但我登陆有问题,还没解决,有兴趣的可以自己看看。 
- 
直接看这个吧,HomeKit - Home Assistant,下面有一段 setup。我已经添加好了,懒得重搞一遍了,反正挺简单的。 
  
- 
后续可以把 home 添加到 control center,就是右上角下划那个界面。 
- 
或者加入 捷径,然后把捷径放到 -1 屏,也就是 widget 那屏,可以快速调用。
- 
Siri 的话也可以,我英文系统就是 turn on/off xxx。会自动 识别 group,开关全部灯。也支持 组合命令,比如 xxx and zzz,它会执行两组命令。
- 
如果锁屏无法语音控制 Home,提示要先解锁。需要到 iPhone设置 / face id & passcode / ALLOW ACCESS WHEN LOCKED,打开 Home Control。 
- 
老式的控制器最大的问题,是无法 反馈状态。 
 比如我的很多遥控器,开关按钮是同一个。如果有一次发送失败,HA 记录的当前状态就会出错。或者你偶尔用传统遥控器控制了设备,那设备的状态也不会反馈到 HA 。所以用上 HA 之后,我基本没用过传统遥控器。
- 
最便宜也是最 通用 的改造方案,应该就是万能遥控 + 智能开关 + 智能插座。 
 遥控器咸鱼100,单红外的更便宜些,插座和开关30几一个,基本几百块钱就能完成全屋改造。而且不需要替换掉现有的电器,也不必特地买一些昂贵又不成熟的智能产品。就是简单在现有线路上,加一个控制器,基本是无痛接入。
- 
用电安全 最重要。 
 智能设备还比较新,有一些负载或安全问题,可能需要时间来验证。另外像电动窗帘这类,靠近易燃材料的,有些还带电池且长期日晒的,都需要注意相应的防护工作。
- 
设计安全 优先。 
 比如一些自动化等功能,必须考虑被误触发的可能,要优先考虑避免极端情况。 有些用例,用来控制宠物的喂食换气等等,毕竟涉及生命,就需要有容错的设计。
- 
网络安全 也很重要。 
 技术太菜的厂家有可能被攻击破解,技术太好的厂家没准又会多采集不少隐私,都有风险。玩 HA 也是为了完全接管,可以通过路由器把设备隔离起来。另外如果实在不得不拿隐私换便利,那 尽量把秘密告诉给不相关的人。国内厂商更有可能,更加 "充分地" 利用你的隐私来获利。而国外厂商,即便想拿你的隐私卖广告,也未必能骚扰得到你。
- 
硬件隔离 
 比如需要使用网络摄像头的,可以考虑加装一个智能插座。然后通过自动化,在你在家的时候,自动把摄像头移向死角,并切断摄像头插座的电源。从硬件上杜绝被偷拍的可能。
- Integrations - Home Assistant 所有可以整合的设备服务一览
- Home Assistant Demo Lovelace 的示范页面
- /local/in yaml or resources equals the real path- /www/.
- Erimus-Koo/Extract_BroadLink_learned_codes_from_iOS_App: 博联 RM Pro+ 最简单学码方式 博联的射频学习好像是一个坑,有射频设备的看这里。







