Home Assistant 中文文档 下载 App

Home Assistant 实体、服务与状态模型

Home Assistant 的核心抽象

Home Assistant 的整个系统围绕三个核心概念构建:实体(Entity)、服务(Service)、状态(State)。理解了这三个概念,Home Assistant 的一切都好理解了。

实体(Entity)—— 一切都用实体表示

实体是 Home Assistant 的基本数据单元。每一个被 Home Assistant 知道的东西——一盏灯、一个温度传感器、一个开关、一个摄像头、一个自动化脚本——都是实体。

实体 ID 格式

每个实体有唯一的 ID:domain.entity_id

Domain含义示例
light灯light.living_room
switch开关switch.heater
sensor传感器sensor.temperature_kitchen
binary_sensor二态传感器(开/关、在/不在)binary_sensor.door_front
climate温控/空调climate.thermostat_upstairs
cover窗帘/车库门cover.garage_door
media_player媒体播放器media_player.sonos_kitchen
camera摄像头camera.doorbell
lock门锁lock.front_door
automation自动化automation.lights_sunset
script脚本script.arrive_home
person人员person.me
zone区域zone.home
group组group.all_lights
input_boolean输入开关(UI 按钮)input_boolean.guest_mode
select下拉选择select.home_mode
number数值number.thermostat_setpoint

实体状态

每个实体都有一个当前状态(State)和零个或多个属性(Attributes)。

实体:light.living_room
状态:on
属性:
  brightness: 80
  color_temp: 300
  friendly_name: 客厅主灯
  device_class: light
  area_id: living_room
  ...

实体:sensor.temperature
状态:24.5
属性:
  unit_of_measurement: °C
  device_class: temperature
  state_class: measurement
  ...

特殊状态值

状态含义
on / off二态实体
unknown实体刚出现,还没拿到有效状态
unavailable实体对应的设备离线了
none某些特定场景的空值

服务(Service)—— 执行动作

服务是 Home Assistant 执行动作的方式。任何"做事"都通过调用服务完成:开个灯 = 调用 light.turn_on,发个通知 = 调用 notify.xxx。

服务命名格式

同样是 domain.action:

服务做什么
light.turn_on开灯
light.turn_off关灯
light.toggle切换
switch.turn_on开开关
climate.set_temperature设温度
notify.mobile_app_me给我手机发通知
homeassistant.restart重启 Home Assistant
automation.turn_off禁用某个自动化
camera.snapshot摄像头拍照
lock.lock锁门
media_player.media_play播放媒体

调用服务的三个参数

action:
  - service: light.turn_on       # 服务名
    target:                        # 目标(可以是 entity_id / area_id / device_id / floor_id)
      entity_id: light.living_room
    data:                          # 服务参数(不同服务参数不同)
      brightness_pct: 80
      color_name: warmwhite

用 YAML 模板动态调用

action:
  - service: "{{ trigger.service_name }}"    # 动态服务名
    target:
      entity_id: "{{ trigger.entity_id }}"
    data:
      state: "{{ trigger.to_state.state }}"

服务发现

所有可用服务可以在 Developer Tools → Services 页面浏览——这是 Home Assistant 里最强大的"手册",每个服务的参数、目标、示例都在这里。

状态变化触发事件

实体的状态变化会产生事件——Home Assistant 的事件总线(Event Bus)把这些事件分发给所有订阅者。自动化就是最主要的事件消费者。

light.living_room 状态从 off → on
  → 事件总线发出 state_changed 事件
  → 监听这个事件的自动化被触发
  → 自动化检查条件
  → 条件满足,执行动作

Developer Tools —— 探索系统的最佳入口

Home Assistant 内置的 Developer Tools 是了解实体、服务、状态的最佳工具:

Tab功能
States所有实体的当前状态实时列表
Services浏览和调用所有服务
Events查看 Home Assistant 事件总线(实时监听 state_changed 事件最有用)
TemplateJinja2 模板调试器
Set States手动设置实体状态(调试自动化时很有用)
Call Service快速调用某个服务(调试动作时)
Manifests查看所有已加载的集成
Logs实时日志

总结理解

实体 = Home Assistant 知道的所有东西(灯、传感器、摄像头、自动化…)
状态 = 每个实体当前是什么情况(开/关、24.5°C、电量 80%…)
服务 = 能做什么动作(开灯、设温度、发通知…)
事件 = 实体状态变化时发出的通知(触发自动化)
自动化 = 监听事件 + 检查条件 + 调用服务

这五个概念构成了 Home Assistant 的整个运行模型。理解它们之后,Home Assistant 就不再是一个"魔法盒子",而是一个清晰可预测的系统。