HomeAssistant杂记
阅读量: 101
阅读人次: 102
Integration(集成)
Integration(集成) 是 Home Assistant 中用于连接外部设备、服务或平台的模块化组件。每个集成专注于一个特定领域(称为 domain),例如智能灯泡、传感器、天气服务等。其核心功能包括:
- 数据交互:与第三方设备或服务通信(如通过 API、协议等)。
- 状态管理:生成并维护设备或服务的实时状态(如温度传感器的当前数值)。
- 事件处理:监听设备触发的事件(如门锁被打开)或主动触发事件。
- 服务暴露:提供可被其他集成调用的自动化服务(如控制灯光开关)。
Entity(实体)
实体 是 Home Assistant 中表示设备、传感器或功能的最小逻辑单元。
每个实体对应一个具体的实例,例如:
- 一盏智能灯泡(light.bedroom_light)
- 一个温度传感器(sensor.living_room_temperature)
每个实体包含以下核心信息:
-
唯一标识符(Unique ID):全局唯一,用于区分不同实体(如 button.wake_pc)。
-
状态(State):
- 表示当前状态(如 on/off、温度值 23.5°C)。
- 例外:button 实体是无状态的,点击后状态会立即重置。
-
属性(Attributes):
附加信息(如传感器的单位 unit_of_measurement: "°C")。
-
能力(Capabilities): 定义实体能执行的操作(如灯光可调亮度、颜色)。
Service(服务)
服务 是 Home Assistant 提供的 可调用功能,用于执行具体操作或修改实体状态。
例如:
- 发送唤醒包(
wake_on_lan.send_magic_packet
) - 开灯(
light.turn_on
) - 更新传感器数据(
homeassistant.update_entity
)。
自定义设备接入 Home Assistant,推荐使用MQTT。
Configuration.yaml 配置文件
MQTT
代理(Broker)
这里推荐使用 NanoMQ,它比较轻量小巧,而且还集成了 ZeroMQ、NNG等桥接功能。
设备发现(Discovery)
设备实现 Discovery 功能,可使得设备接入时, Home Assistant 只需要做最少配置即可。
主题(Topic)
<discovery_prefix>/<component>/[<node_id>/]<object_id>/config
<discovery_prefix>
:设备发现的主题前缀默认为homeassistant
,也可以变更,DIY 期间一般不做变动。<component>
:MQTT集成支持的类型,例如:binary_sensor
,待会我要自己实现的调温灯带属于light
。在 Home Assistant 的 Integrations 的页面搜索 MQTT 能够看到各种各样的已支持的组件类型。<node_id>
:可选字段,Home Assistant 不会使用,一般由使用者或开发者使用,方便进行区分及管理。<object_id>
:设备ID,用于区分不同的设备。
问题
在使用 Home Assistant 的 Wake on LAN 集成的时候,我如何在 switch turn_off 的时候,向 MQTT 发送一条消息?
我想实现一个Home Assistant 功能,它能在主页显示一个开关,然后分别订阅一个MQTT主题显示当前状态,当开关切换时,发布两个MQTT主题。为此我需要做些什么?