ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Home Assistant 底层机制拆解:一个传感器数值要经历的四段路

Home Assistant 底层机制拆解:一个传感器数值要经历的四段路 Home Assistant 底层机制拆解一个传感器数值要经历的四段路【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io当卧室的 Zigbee 人体传感器突然上报状态灯为什么会在几秒后亮起而仪表盘上的卡片又为何同步刷新Home Assistant 的自动化背后是一条层次分明的状态数据流。把传感读数抽象成实体这一层解决最底层的问题如何让成百上千个来自不同品牌的读数变成一套系统可以统一读写的表格。Home Assistant 把所有读数抽象为实体Entity——每个实体有唯一的实体 ID如binary_sensor.bedroom_motion、当前状态和一组属性。同一个物理设备的多个实体被归组为一个设备设备再按客厅卧室这类空间概念归入区域。一个人体传感器设备至少产出三个实体运动状态detected / clear、照度、电量。这套设计意味着触发器、仪表盘、自动化引用时面对的都是同一张状态表而不是各厂商私有的协议格式。相关文档source/getting-started/concepts-terminology.markdown从集成与订阅注入数据数据模型定好之后要回答数值从哪来。答案是集成Integration每个集成就是一枚协议驱动负责与外部硬件或服务双向通信Philips Hue 灯具经 Hue Bridge 集成进入自建传感器网络则经 MQTT 集成进入。MQTT 是典型的发布/订阅机制设备向特定主题发布 JSON 负载Home Assistant 的 MQTT 集成订阅该主题后把数值写入对应实体配合发现机制新设备无需手工配置即可自动出现在平台上。# 设备向主题发布温度负载为 JSON # MQTT 集成订阅该主题并更新实体状态 topic: zigbee2mqtt/livingroom/temperature payload: {temperature: 26.8}该文件位于 source/_integrations/mqtt.markdown状态变化如何成为自动化触发实体只会存数据需要规则引擎才有意义。Home Assistant 自动化全部由三要素构成触发When、条件And if、动作Then do。触发器本质上是订阅实体状态变化——运动实体从 clear 跳到 detected 的瞬间自动化引擎被唤醒逐条过完条件后才执行动作。以21:45 时若有人在家则打开玄关灯为例# 时间触发 在场条件 开灯动作 alias: 晚间开启玄关灯 trigger: - trigger: time at: 21:45:00 condition: - condition: state entity_id: person.family state: home action: - action: light.turn_on target: entity_id: light.hallway该文件位于 source/_docs/automation/basics.markdown动作如何回写到设备动作不是直接发给设备的指令而是一次服务调用Service例如light.turn_on。服务会分派给对应集成由集成把它翻译成该设备自己的协议MQTT 设备收到的是命令主题上的消息Hue 灯具收到的是桥接器接口调用。这种服务作为统一出口与实体作为统一入口互为镜像自动化永远不需要知道灯是 Zigbee 还是 Wi-Fi 的。脚本Script是同一套动作的延伸——一段保存好的步骤序列可被按钮、语音或自动化随时调起适合多处复用的操作。该文件位于 source/_integrations/script.markdown端到端一次数据闭环前面四层在此闭合成环设备经 MQTT 上报写入状态状态变化触发自动化自动化调用服务服务经集成回写设备新状态再推送给前端。让仪表盘与状态保持同步最后一环是展示。仪表盘Lovelace上的每张卡片只是实体的投影前端通过 WebSocket API 建立长连接实体状态一变服务端主动推送无需轮询。于是自动化把灯翻亮的瞬间卡片上的灯泡图标立刻变色整条链路在秒级内闭合。# 实体卡片把卧室的关键实体聚合展示 type: entities title: 卧室 entities: - entity: light.bedroom_main name: 主灯 - entity: binary_sensor.bedroom_motion name: 人体该文件位于 source/_dashboards/entities.markdown速查表关注点对应路径一句话说明数据模型source/getting-started/concepts-terminology.markdown定义集成、设备、实体、区域的层级关系设备接入source/_integrations/mqtt.markdownMQTT 集成文档含订阅与设备发现机制规则引擎source/_docs/automation/basics.markdown拆解触发、条件、动作三要素动作序列source/_integrations/script.markdown可复用、可手动触发的脚本用户界面source/_dashboards/entities.markdown把实体以卡片形式放上仪表盘想看一次自动化完整的执行轨迹从 source/_docs/automation/testing.markdown 的 traces 说明入手逐步核对每次触发与条件判定。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表