bridges.toml
把 rha 的实体暴露给外部生态(HomeKit 等)。这份文件是可选的——不接对外协议就不用 建,没有它就没有任何对外端口和广播。
方向别搞反:要把外部生态的设备接进来不走这里,那是南向 adapter,写在 devices.toml 里。
[[bridge]]name = "home"type = "homekit"pin = "031-45-154"
export = ["plug_bedroom.switch_s2_on_p1", "thermo_demo.temperature"]exclude = ["*.indicator_light_*"]name / type / enabled / export / exclude 是所有协议共有的字段,其余键都是该
type 的私有参数(上例里的 pin 就是)。私有参数的字段表见各协议页,目前是
HomeKit。
export 的 glob 与 [storage] 的一样,但空表含义相反
Section titled “export 的 glob 与 [storage] 的一样,但空表含义相反”export / exclude 的 glob 与 [storage] 的 record / exclude
是同一份实现,写法可以照搬。但空表的含义正好相反:record = [] 是全记,而
export 没有默认值、必须显式写,压根没有「留空」这个选项——照着存储那边的习惯留空,
这里是 check 期错误。
导出集自动并入 hot 轮询
Section titled “导出集自动并入 hot 轮询”被导出的实体会自动进入高频轮询集合,与被规则引用的实体同等待遇。
不并的话它们走 cold(默认 300s):你在米家 App 里关掉插座、或者按了插座上的物理键, HomeKit 里最长 5 分钟才更新。hot 的定义是「有活跃消费者」,而「我把它导出到 HomeKit」 就等价于「有人会实时看它、点它」——规则引用只是消费者的一种,不是全部。
关掉的桥为什么连校验都跳过
Section titled “关掉的桥为什么连校验都跳过”enabled = false 的语义见下表,这里说的是它一个不太直观的后果:关掉的桥连参数都不
校验。这是跟 [storage].enabled 对齐的——一个已经关掉的东西不该因为参数写错而挡住
整份配置。代价是错误留到重新开启时才报,所以启动日志里会明说「配了但关着」。
bridge 变更不参与热重载,rha reload 只重读 automations/。这一点与设备变更一样。
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
enabled | boolean | true | 关掉这个 bridge, 但把配置留着。缺省开启, 与 关掉 = 当它不存在: 不监听、不广播、不校验, 导出集也不并进 hot 集合 (否则关掉 HomeKit 之后那些实体还在被高频轮询, 白烧一份请求)。 必须是显式字段, 不能落进下面的 |
exclude | array | [] | 在 |
export* | array | — | 导出白名单(实体 id 的 glob, 只支持 没有默认值, 必须显式写。 从官方 spec 生成型号表后一台插座有 28 个实体, 「默认全导」会把上电默认状态、充电保护、告警阈值一股脑推到 HomeKit 里。 |
name* | string | — | 这个 bridge 的名字。跨 与设备名不同, 它不要求 snake_case —— 因为它会被当成对外显示名用出去: HomeKit 桥就拿它作「家庭」里看到的桥接器名字和 mDNS 广播名。 配对状态也按它落盘( |
type* | string | — | bridge 类型, 对应 |