1. Home Assistant 初识:它到底是什么?
说实话,我第一次接触 Home Assistant 的时候,也以为它就是个「智能家居遥控器」。后来才发现,这玩意儿远比我想象的深。
Home Assistant(简称 HA)是一个开源的智能家居平台。你可以把它理解成智能家居的「大脑」——它不生产设备,但能把所有设备串起来。
我见过太多人家里堆了五六个 App:米家一个、华为一个、涂鸦一个、苹果家庭一个……每个 App 管自己的设备,互不搭理。Home Assistant 要解决的,就是这个痛点。
它能做什么?
简单说,三件事:
- 统一管理:把不同品牌的设备拉到同一个界面。灯是飞利浦的,传感器是小米的,窗帘是杜亚的——在 HA 里,它们都在一个页面上。
- 自动化联动:比如「当温度超过 30 度,自动关窗并打开空调」。这种跨品牌的联动,原生 App 基本做不到。
- 本地化运行:所有逻辑跑在你自己的服务器上,不依赖云端。哪怕断网,家里的自动化照样跑。
我个人最看重的就是本地化。有一次我朋友家的智能灯突然全离线了,一查是云服务器挂了。而我的 HA 跑在树莓派上,断网照样开关灯——这种掌控感,很踏实。
核心概念:实体、设备、区域
刚开始用 HA 的人,最容易搞混的就是这三个词。我当年也绕了一阵子,这里给你讲清楚。
实体(Entity)
实体是 HA 里最小的数据单元。一个传感器、一个开关、一个灯,都是一个实体。
每个实体有一个唯一的 ID,比如 sensor.temperature_living_room。你写自动化的时候,操作的就是这些实体。
小技巧:实体 ID 可以自定义。我习惯用「设备类型_区域_功能」的命名方式,比如 light.kitchen_main。这样后期维护起来特别省心。
设备(Device)
设备是实体的「容器」。一个物理设备可能包含多个实体。
举个例子:你买了一个小米温湿度计。它在 HA 里是一个「设备」,但这个设备下面有 sensor.temperature(温度)、sensor.humidity(湿度)、sensor.battery(电量)三个实体。
| 概念 | 类比 | 例子 |
|---|---|---|
| 设备 | 一个硬件盒子 | 小米温湿度计 |
| 实体 | 这个盒子上的某个功能 | 温度传感器、湿度传感器 |
嗯,这里要注意:一个设备可以只有一个实体,也可以有十几个。比如智能灯,通常就一个 light.xxx 实体。而空调伴侣这种设备,可能包含温度、功率、开关等多个实体。
区域(Area)
区域就是「房间」或者「空间」。你把设备和实体分配到不同的区域,HA 就能按区域来管理。
比如我把客厅的灯、窗帘、温度传感器都归到「客厅」区域。这样在界面上可以一键控制整个客厅,写自动化时也可以直接引用区域。
我曾经踩过一个坑:一开始没分区域,所有设备混在一起。结果写自动化时,要找某个传感器得翻半天列表。后来花了一下午重新整理区域,才把系统理顺。所以建议你从一开始就规划好区域,别偷懒。
它们之间的关系
说白了就是三层结构:
- 区域(最上层):客厅、卧室、厨房……
- 设备(中间层):每个区域里有哪些硬件
- 实体(最底层):每个硬件提供哪些数据或控制点
你想想看,这种分层设计的好处是什么?
举个例子:你想写一个自动化——「当客厅温度超过 28 度,打开客厅空调」。如果用区域来写,代码里只需要写「客厅区域」,HA 会自动找到客厅里的温度传感器和空调设备。如果以后你换了空调,只需要在设备层面更新,自动化不用改。
这就是我为什么说 HA 的设计很聪明。它把物理世界抽象成了三层,每一层只管自己的事。你不需要关心底层细节,只需要告诉它「我要什么」,而不是「我怎么做」。
小结
这一章我们聊了:
- Home Assistant 是什么——一个开源的智能家居大脑
- 它能做什么——统一管理、自动化联动、本地化运行
- 三个核心概念——实体(最小数据单元)、设备(实体的容器)、区域(空间分组)
下一章,我会带你亲手把 HA 装起来。别担心,我会把每一步都拆开讲清楚。到时候你跟着做就行。