1. 为什么我会从无线转投"有线 KNX + HA"
1.1 无线智能家居的爽与痛
如果你也在折腾智能家居,大概率体会过这种纠结:无线的随手即得,真用起来却总差一口气;有线的稳如磐石,偏偏又贵又麻烦。这套 HomeAssistant + KNX 的 DIY 方案,就是我把"差的一口气"补上之后沉淀出来的整套经验。
先说无线的优势,确实无可替代:Zigbee、BLE、Wi-Fi 设备买回来就能用,想挪个传感器换个房间,五分钟搞定。但用了一年多之后,问题开始冒头。墙里面没有预留电源线,不少传感器只能用电池,两三个月就得换一次;偶尔家里来个人一趟,设备多到信道拥挤,网关重启后一堆设备"失联",你在手机上一顿操作,灯就是慢半拍。更难受的是,每个品牌都有自己的 App,想做一个"离家全部关闭"的简单场景,得先搞清楚哪个设备在哪套生态里,维护成本直线上升。
后来我下决心做有线智能家居,核心诉求只有一个:底层的开关、调光、窗帘动作必须百分之百可靠,不依赖家里的网络,也不依赖某个品牌云。上层再用 HomeAssistant 这种开源中心把感知、自动化、语音接进来。于是 KNX 这个在公建领域用了二十多年的老协议,成了我的首选。
1.2 KNX 不是旧时代的遗物,而是被低估的稳定底子
很多国内玩家一听到 KNX,第一反应是"老、贵、封闭",其实这是个误解。KNX 是国际标准化组织认可的楼宇控制总线标准(参照 ISO/IEC 14543-3),简单点说,它就是智能家居领域的 USB:不管什么厂商,只要做出符合这个标准的设备,就能在同一根总线上互相通信。
真正的关键优势在于架构。KNX 总线上挂着的每个执行器、按键面板、传感器,都有自己的处理器和通信逻辑,压根不需要一个"中央大脑"来发号施令。你按一下墙上的面板,这个开关命令直接在总线上广播,执行器自己就会响应。就算哪天 HomeAssistant 宕机了、家里路由器挂了,起码每个房间的灯和窗帘还是能手动控制的——这一点,无线方案几乎做不到。
我见过太多人把智能家居的稳定寄托在某个网关身上,结果网关一坏全屋瘫痪。KNX 这种没有单点故障的分布式设计,才是长期居住最值得投入的地方。代价是需要提前布线、需要花力气学习配置,但这笔账算下来非常划算。
1.3 HomeAssistant 在这套架构里的真实位置
那 HomeAssistant 在这套方案里到底是干嘛的?说得直白一点,它是"大脑",但不是"命脉"。
KNX 负责的是标准的开关、调光、窗帘、地暖控制这些"能不能动、动得稳不稳"的事情。而 HomeAssistant(后面我简称 HA)负责的是"什么时候该动、怎么动才聪明"。比如根据太阳高度自动拉窗帘、根据客厅亮度和人来人往自动开灯、离家后一键关闭全屋,这些复杂的联动逻辑,完全可以在 HA 里写自动化,让 HA 作为总线上的一名"特殊参与者",通过 KNX 的 IP 接口把命令发到总线。
这样分层之后,好处非常明显:底层控制链路是 KNX 的,稳定可靠;上层智能是 HA 的,免费、开源、生态海量。两个层次各干各的活,不会因为上层出问题就导致全屋失控。
另外 HA 还是统一入口。我可以把家里的 Zigbee 人体传感器、蓝牙温湿度计、米家空气净化器、HA 本身装在一台小主机上,再把 KNX 的执行器也接进来,最终在手机上一个 App 里看所有设备。这种"混搭"的玩法,才是 DIY 玩家真正爽到的地方。
1.4 谁适合走这条路,谁最好别碰
说句实话,我不建议所有读者看完这篇就立刻下单。这套方案最适合两类人:
第一类是正在装修、准备水电,有时间在墙上开槽铺线的准业主。KNX 总线就是一种弱电电缆,必须在砌墙之前埋进线管里,之后再想加线几乎只能走明线,非常难看。
第二类是有一定折腾精神、愿意花时间阅读配置文档的爱好者。KNX 的门槛不在硬件,而在软件,你至少要在 ETS 工具里建立项目、分配地址、下载配置,这一套流程第一次跑通可能需要好几个晚上。如果只想要"买回来插电就能用"的体验,那还是继续用无线生态更省心。
如果你符合条件,那么接下来的内容会帮你避开大量会浪费时间的坑。
2. 动手之前:架构、选型与布线的完整准备
2.1 一套最精简的家用 KNX 拓扑结构
先别急着买设备,在脑子里把拓扑搭明白才不会走弯路。家用 KNX 系统其实不复杂,拿 100 平米左右的户型举例,一条 KNX 总线线路就足够了。
这条线上需要挂四类基本角色:一个必须带扼流圈的 KNX 线路电源、若干个执行器(开关、调光、窗帘)、若干个按键面板或触摸屏、一台 KNX IP 接口,用来让 HA 与总线通信。执行器和按键面板的数量取决于你要控制多少回路,一个8路开关执行器能管8个强电回路,每个按键面板背后再接不同的按钮模块接入总线。
IP 接口是连接 HA 和 KNX 的桥梁,常见的形态有 USB 接口、串口接口和网口接口。家用我最推荐网口形式的 IP Interface 或路由器,因为它在 HA 里配置最简单,同时还能用 ETS 在线调试。
这整套拓扑的一个核心特点是:KNX 设备并行挂在同一对总线上,所有通信都在这根总线上广播。一条总线的设备数量上限是 64 个,家用场景一般用 15-25 个就够,完全不用担心容量。
2.2 执行器、面板与控制模块的选型
KNX 设备厂家非常多,MDT、Gira、ABB、Schneider、Zennio 都有成熟产品,还有国内厂商做的高性价比模块。选型的时候别被品牌迷了眼,关键是看型号对应的功能和参数。
以我最常用的三种执行器为例。开关执行器,就是一系列大功率继电器,每个回路接受总线命令后接通或断开 220V 强电。调光执行器则更适合用于餐厅射灯、灯带这类需要亮度调节的场景。窗帘控制模块本质上是专门驱动电机正反转的开关执行器,通常预留了换向和限位接口。
按键面板这块,我建议优先考虑带状态 LED 的型号,比如面板上有蓝色小指示灯,你断电或者操作后可以一眼看出当前开/关状态。还可以直接买一个 KNX 触摸屏,把常用场景编成几个页面,体验会好很多。
如果你需要传感器,我个人的经验是 KNX 总线传感器不要买太多,因为 KNX 的温湿度/照度模块普遍不便宜。温度、湿度、光照、人体存在这些感知类数据,交给 HA 生态里的 Zigbee 或蓝牙传感器更划算,感知交给无线,动作交给 KNX,才能发挥两边优势。
2.3 布线阶段最容易翻车的三个细节
布线的细节决定了你的 KNX 总线能稳定跑多少年,这里必须多说几句。
第一,总线线缆要单独穿管。市面上有专门的 KNX 总线线缆,通常标记 J-Y(st)Y 2x2x0.8,里面四根芯线:红黑两根用于 29V 直流供电,黄白两根用于数据通信。它绝对不能和 220V 强电线放在同一个线管里,否则强电会对很弱的总线信号产生干扰,现场会出现诡异的间歇性失控。总线线管和强电线管之间至少保持 4-5 厘米的距离,过线盒里也要分开独立走。
第二,KNX 电源必须买带扼流圈(choke)的型号,最好配套相同品牌的"电感"单元。这个细节网购时特别容易看漏,普通 24V 直流电源也能给总线供电,但缺少扼流圈会导致数据帧在电气上无法正确叠加,设备之间说话互相"听不见"。第一次我用一个不带 choke 的开关电源,结果总线上一键发送命令,所有模块都没反应,换成带 choke 的电源立刻恢复,这个位置值得画圈标红。
第三,总线端子接线时注意极性。红黑供电、黄白通信都有严格接法,接反轻则设备不上电,重则烧毁模块。动手前先拍照留存每段线的颜色分配,别靠记忆硬接。
2.4 预算到底要准备多少
预算这个问题,问的人最多,我直接给一个 DIY 自用的参考范围。注意这是不求最贵、只求稳定的路线,不是高配工程报价:
| 项目 | 数量 | 参考价位(人民币) |
|---|---|---|
| KNX 线路电源(带扼流圈) | 1 | 300-600 |
| KNX IP 接口/路由器 | 1 | 800-1800 |
| 8 路开关执行器 | 1 | 1200-2000 |
| 4 路调光执行器 | 1 | 1000-1800 |
| 按键面板模块 | 3-4 个 | 400-1500 |
| KNX 总线线缆 | 50 米 | 100-200 |
| 线管、过线盒、杂件 | 若干 | 200-400 |
| 合计 | - | 4000-7500 |
如果你已经有 HA 主机(比如一台 NUC 或树莓派),这部分不计入。单看 4000-7000 元的造价,对于一套能用十年以上的有线系统来说,我觉得非常值。无线方案看似便宜,但把各种网关、一代接一代的换代成本和维护时间算进去,其实早就不便宜了。
3. 核心实操:把 HA 和 KNX 接上线并做出场景
3.1 连接方式怎么选:USB、串口还是 IP 接口?
HA 接入 KNX 总线,一共有三种主流通道:USB 接口直连、串口直连、IP 接口(或 IP 路由器)。我建议优先用 IP 接口,因为 USB/串口方式把 HA 主机变成了一个固定接线节点,一旦主机断电重启,HA 和 KNX 的通信就断了;而 IP 接口本身就是总线和局域网之间的桥,即使 HA 没运行,它仍然保持 KNX 总线的正常通信状态,从稳定性上讲更有优势。
物理结构上,IP 接口接入 KNX 总线时也要占用一个物理地址。每个 KNX 设备在总线上都要有唯一的物理地址,类似设备的门牌号,IP 接口也一样,你在 ETS 工程里给它分配一个地址,它才有资格在总线上收发消息。
HA 侧则通过 KNXnet/IP 协议访问这个 IP 接口。默认端口是 3671,这个端口号平时不用改,只需要在路由器或交换机上给设备一个固定 IP,别让它过几天换一个地址就行。
3.2 在 HA 里配置 KNX 集成(tunneling 模式)
HA 对 KNX 的支持已经很原生,直接内置了knx集成,分为tunneling(隧道模式)和routing(路由器模式)等几种。家用接单个 IP 接口时,用tunneling就够了,配置很直接。
找到 HomeAssistant 的configuration.yaml,加入下面这段示例:
knx: tunneling: host: 192.168.1.224 port: 3671 local_ip: 192.168.1.180 state_updater: true rate_limit: 40 state_polling_interval: 60 switch: - platform: knx name: "Living Room Main Light" address: '1/1/1' state_address: '1/1/1' light: - platform: knx name: "Dining Spot" address: '1/2/1' state_address: '1/2/1' brightness_address: '1/2/2' brightness_state_address: '1/2/2' cover: - platform: knx name: "Living Room Curtain" move_long_address: '2/0/1' stop_address: '2/0/2' position_address: '2/0/3' position_state_address: '2/0/3'host填 IP 接口的局域网地址,local_ip填 HA 主机自己的地址,端口保持 3671 默认。这里注意rate_limit: 40的意思是把 HA 对总线的发送速率限制为每秒最多约 40 个帧,防止自动化一激动把总线挤爆;state_updater打开后,HA 会定时轮询总线上已配置实体,让界面上的开关状态与实际总线状态尽量保持一致。
实体名称可以用你顺手的英文别名,后面在仪表盘里显示更自然。凡是 KNX 总线上的设备,实体都会自动带knx_前缀,比如switch.living_room_main_light、light.dining_spot,也会出现在集成发现列表中。
3.3 ETS 侧的地址规划与设备"打卡"
光有 HA 配置还不够,KNX 侧必须在 ETS 工程软件里完成基本配置,否则总线上的设备并不知道"1/1/1"这个地址该干嘛。
ETS 是 KNX 官方的工程配置工具,全称 Engineering Tool Software,个人版免费且足够管理一条线路上的几十个总线设备,DIY 场景完全够用。打开 ETS6,新建项目,再新建一个线路,接着给每一个总线设备分配物理地址:习惯上1.1.1可以作为电源或线路设备的占位,1.1.2、1.1.3给执行器,1.1.4给面板,1.1.5给 IP 接口。物理地址必须唯一,重复会出现总线消息混乱,这一点怎么强调都不过分。
接下来是组地址。组地址是 KNX 通信的真正核心,它就像一个广播频道:某个按键发送的是1/1/1,某几个执行器正好监听1/1/1,他们之间就能完成控制。组地址格式是"主组/中组/子组",例如1/1/1可以约定为"客厅主灯开关",1/2/2可以约定为"餐厅调光亮度"。
在 ETS 里创建组地址时,还要选择正确的 DPT(数据传输点类型)。开关状态选DPT 1.001(布尔型),亮度值选DPT 5.001(无符号 8 位),窗帘位置一般选DPT 5.001。选错类型会导致 HA 读回来一个匪夷所思的数字,比如 255 这种明显不对劲的"开"。
配置完之后点击"下载"按钮,把工程写到设备里。注意下载时笔记本需要通过 USB 接口或网络方式连接到 KNX 总线,下载完成后拔掉编程工具,总线照常工作。ETS 不需要常开,真正运行时总线上的决策是各个设备自己完成的,这一点常常有人搞混。
3.4 一条真正落地的自动化:人来灯亮、人走延迟关
KNX 总线本身是非常"听话"的执行员,它不擅长思考,你也别在总线里去写复杂条件,复杂逻辑交给 HA 的自动化。这里我给你一条可复制的入门场景:家里的人体存在传感器感知到有人,如果室内照度不够,就打开餐厅灯;人离开五分钟后,自动关灯。
先接好人体传感器。如果传感器是 Zigbee 协议,门磁/人体感应会以binary_sensor.xxx的实体形式出现在 HA 里;如果是 KNX 传感器,则同样会以binary_sensor.knx_xxx出现。无论哪种,自动化写法都一致:
automation: - alias: "Dining Light On When Presence" trigger: - platform: state entity_id: binary_sensor.living_room_presence to: "on" condition: - condition: numeric_state entity_id: sensor.living_room_illuminance below: 150 action: - service: light.turn_on target: entity_id: light.dining_spot data: brightness_pct: 80 - alias: "Dining Light Off After No Presence" trigger: - platform: state entity_id: binary_sensor.living_room_presence to: "off" for: "00:05:00" action: - service: light.turn_off target: entity_id: light.dining_spot注意 HA 里sensor.living_room_illuminance需要你提前从某个光照传感器接进来,我这里用 150 勒克斯作为阈值,你也可以按自己习惯调。这套自动化的爽点在于:只要 KNX 侧的组地址配对正确,HA 发一个1/2/1命令过去,灯的执行器立刻响应,那种"按一下就亮、绝不犹豫"的手感,和纯无线方案的延迟有明显差别。
3.5 状态同步与总线性能调优
做过一段时间 HA + KNX 之后,你会慢慢体会到状态同步的重要。KNX 总线上设备很多,按下墙面面板时,执行器会改变实际输出,但 HA 界面里的开关状态不会自动变,除非你给每个实体都配了state_address。
最好的做法是在 HA 配置里为每个控制实体同时指定address和state_address。address是 HA 发命令时用的组地址,state_address是 HA 监听总线状态更新时用的组地址。多数情况下两者可以相同,因为你按面板时,发送的开关对象地址往往就是状态反馈地址,这样 HA 一收到总线消息就知道实际状态变没变。
state_polling_interval是兜底机制。如果总线上的某些老式设备不支持主动回传状态,HA 就会每隔一定秒数主动轮询一次。我设为 60 秒,既能保证界面基本同步,又不会让总线因为 HA 的轮询而过载。对于想要更高实时性的场景,比如门锁、报警这类,可以把轮询缩短到 20-30 秒,同时拉低rate_limit以留出总线带宽。
4. 折腾记录:常见故障、排查思路与避坑速查
4.1 KNX 设备在 HA 里"整体失联",怎么分层定位
遇到问题先别慌,我的排查顺序永远是:HA → IP 接口 → KNX 总线 → 单个设备。
先看 HA 的 KNX 集成日志,确认 HA 到 IP 接口的网络有没有通。可以用ping 192.168.1.224这类命令直接测试 IP 可达性,通不了就去看 IP 接口的供电和网线。IP 接口通常自带状态指示灯,总线供电正常时指示灯会亮起稳定颜色,如果灯灭说明 29V 总线电源没送过来,或者进线端子松了。
排除网络问题后,再用 ETS 的 Bus Monitor 看总线活动。Bus Monitor 属于总线偷听工具,能看到总线上当前流动的原始帧,如果总线上一片寂静连定期心跳都没有,大概率是总线供电出了问题,或者线缆断了。如果总线上消息不断但相关设备没有响应,则聚焦到物理地址冲突和设备本身下载配置是否成功。
4.2 通信超时、掉数据包与总线扰动
通信超时是另一个高频问题,尤其在房子里同时开了多个风扇、变频空调等大功率设备时。KNX 总线本身是抗干扰设计,但如果总线线缆与强电线距离不够,或者总线线用了劣质非标线,还是会出现偶发的通信失败。
排查手段逐步收紧。首先把总线的速率限制调低,比如 HA 里的rate_limit从 40 降到 20,看超时是否改善。其次检查两个末端设备之间是否超过说明书里的 1000 米总线长度上限,普通家庭不会超,但有些走线规划绕了远路的可能踩线。最后看总线线缆是否有破皮、接头氧化的情况,这些都会造成瞬时短路导致地址冲突或丢帧。
经验之谈:总线两端加一个终端匹配电阻的做法在某些 RS485 场景很常见,但 KNX TP 不走那个方案,别照搬,加了反而会影响信号。
4.3 断电重启后状态不同步与启动顺序
家里停电后再来,KNX 设备有的保持断电前的状态,有的会回到默认"关"状态,因为不同执行器的参数不同。HA 重启后默认显示关,这时如果你伸手去点一下"开",总线上的设备可能早就亮了,界面上却一直显示关,于是你既不敢关,又觉得它不准。
这个问题靠state_updater解决大半,但还不够彻底。我建议在 HA 启动延迟 60 秒后,执行一个"重读所有 KNX 组状态地址"的动作。最省事的办法是把相关 KNX 实体都在switch/light配置里保留state_address,然后让 HA 自动轮询。如果你想更即时,可以写一个自动化,在 HA 启动或 KNX 集成恢复时触发,依次向各state_address发送状态读取命令,把实际状态拉回来。
4.4 一个容易被忽略的"权限"问题:ETS 做工程授权
ETS 配置 KNX 设备时,很多模块在下载配置前会要求"解锁",这个功能叫安全授权/设备权限,它本质上是为了防止别人偷偷修改你的总线设备。
刚入门时我遇到的怪象是:整条总线的设备都在,ETS 也能看见,但执行器就是下载不进去。检查半天发现设备默认带一个安全启动码,需要把它和工程里的项目授权文件绑定。解决方法是先在 ETS 里把设备恢复出厂,再重新设置安全授权并下载配置,注意恢复出厂一动作会把已有组地址配置清空,做之前先把工程备份导出。
4.5 我遇到过的五类问题速查
| 现象 | 第一步排查 | 常见根因 |
|---|---|---|
| HA 里 KNX 实体不出现 | 检查configuration.yaml缩进和地址格式 | 组地址写法少了一节或引号问题 |
| 整个总线设备没有反应 | 看 KNX 电源指示灯、用 ETS Bus Monitor | 总线供电故障、电源不带扼流圈 |
| 单个模块控制不了 | 在 ETS 查看该设备状态、重新下载配置 | 物理地址重复或设备配置出错 |
| 调光亮度数值乱跳 | 核对组地址 DPT 类型 | 用了 1.001 布尔型去解亮度 |
| HA 重启后状态不对 | 等待下次轮询周期,观察状态地址是否配置 | 缺少state_address或轮询间隔过长 |
5. 一年使用后的进阶玩法与真心话
5.1 有线为主、无线为辅的混合架构
做完 KNX 基础后,这套系统最大的优势是开放,你可以随心所欲地把 HA 生态里的便宜传感器、语音音箱、摄像头全部接进来当成"外围感知层"。
我的实际方案是:KNX 负责灯光、窗帘、地暖执行这些控制;人体存在传感器、门窗感应器尽量选 Zigbee,反正每隔几个月换一次电池还可以接受;再放一个蓝牙网关,把室内温湿度、空气质量收齐。HA 把所有实体一栏拉通,然后在 Node-RED 里做更复杂的场景逻辑。混合架构虽然听起来不"纯正",但它确实兼顾了成本和体验。
5.2 场景联动:把 HA 才有的能力加到 KNX 上
如果只把 HA 当成一个超级开关面板,那就太浪费了,真正的乐趣在于写出厂家 App 根本做不出来的场景。
比如我的"离家关闭"自动化:检测到所有人离开家超过两分钟,先执行 KNX 全关指令,把灯光、窗帘电机、部分插座断电,然后自动把空调设为节能模式。再比如"观影模式":当投影幕降下、影院灯调暗时,自动把客厅射灯调到 10%,同时玄关灯缓缓调暗到 30%。这些场景涉及到的条件判断、延时、多步骤执行,KNX 总线做起来极其繁琐,而 HA 里几行自动化就搞定了。
关键还是那句话:KNX 负责可靠执行,HA 负责聪明决断,两个层次各司其职。
5.3 从毛坯到入住:分三个阶段的推进清单
如果你是准备装修的准业主,我的经验是分三个阶段推进。
水电改造之前先把 KNX 总线图和强电回路图画好,确定每个面板位置、每条总线走线路径、执行器强电箱里占用几个回路。强烈建议让水电工只负责穿线,总线端子的压接由你或者懂行的人亲自动手,这样后续故障排查心里有数。
装修中后期布完线但墙面没封死时,把总线电源接通,挂上 IP 接口和几个关键执行器,用 ETS 下载最简工程做一次"链路测试",此时发现问题还能改线。
最后等到柜子、灯具全部安装完毕,再分批安装执行器、传感器、按键面板,把 HA 里所有实体配好,写自动化,做仪表盘,反复调参一个礼拜,这是最费心也是最快乐的一周。
5.4 最后分享一个我踩过最深的坑
做这套系统一年以来,要我说印象最深的事,不是预算超支,不是设备难装,而是组地址规划没做好。
一开始我图省事,每个功能随手新建一个组地址,结果一年之后家里多了几十个组地址,有的叫1/1/3,有的叫3/2/7,我自己都不知道哪个对应哪路窗帘。后来要加一个场景,就得翻来覆去地查地址,效率极低。第二次布置时我把组地址按房间分主组(客厅 1、餐厅 2、卧室 3),按功能分中组(灯光 0、窗帘 1、空调 2、插座 3),按回路顺序分子组,再配一张 Excel 表格记录,才彻底治好了这个问题。
所以真心建议你准备开工前,先拿出一张纸,把"哪个房间、哪个回路、哪个功能"对应到哪组组地址固定写下来,后续改起来顺畅得多。KNX 的好处就是稳定、标准、抗干扰,但它也是一个需要你认真对待的长期工程,规划越细,日后越省心。