做DIY智能家居这些年,我在无线方案上踩过的坑,比踩过的地板砖还多。WiFi插座掉线、Zigbee设备断连、换个路由器全家设备集体失联,好不容易调稳了,隔壁多装两个AP又能把2.4G信道搅得一团糟。后来我下定决心,把主力系统切到了 HomeAssistant + KNX,一套基于有线总线的组合。折腾完以后我只有一个感受:早知道有这套方案,真的不用浪费那么多时间和电池。
这个项目不是让你抛弃所有无线设备,而是把灯光、窗帘、空调等最核心的控制交到KNX手里,再让 HomeAssistant 把所有设备统一入网管理。这篇文章我就把整套 DIY 思路、选型、配置、踩坑全拆开讲一遍,适合准备装修的玩家,也适合装修完但还愿意走明线槽折腾的朋友。
1. 项目选型逻辑:为什么是 HA + KNX
1.1 无线方案的问题,不是质量,而是不确定性
我承认无线智能家居这几年进步很大,Zigbee 3.0、蓝牙Mesh、Thread 都在快速迭代。但作为一个真正想让家里长期稳定运行的人,我越来越意识到:无线方案的软肋不在单设备质量,而在于“不确定性”。
你无法预测哪个设备会因为固件更新突然失联,无法预测某个传感器会不会因为隔了几堵墙而延迟响应,更无法预测路由器重启之后整个网络的重连顺序是否还能恢复到正常状态。我遇到过好几次,出门在外想关个灯,结果 HA 里显示设备不可用,偏偏那盏灯还是常亮状态。这种焦虑感,用多少次“智能”两个字都弥补不回来。
KNX 的底层是 RS485 现场总线,两根线同时供电和传输数据,本质上是个工业级的东西。它没有信道拥挤的问题、没有信号穿墙的问题、没有“设备太多导致网关崩溃”的问题。每一条指令都是事件驱动,按下物理面板的瞬间,指令立刻在总线上广播,响应时间基本是零延迟。这套体系在楼宇自动化里跑了三十多年,稳定性不需要我多吹。
1.2 HA 到底补了 KNX 的哪块短板
KNX 自己也有场景、定时、逻辑功能,但说实话,用 ETS 去做复杂联动和界面化管理,体验还是停留在工程软件层面。HA 的价值在于它把 KNX 的组地址抽象成了一个个实体(light、switch、sensor、climate),让我可以用统一的自动化引擎管理家里所有设备。
举个实际的例子:KNX 面板上的一个按键,可以在 ETS 里配成“发送场景指令”。但如果你想实现“按下按键后,如果室外亮度低于某个值,就把窗帘降一半、客厅灯开到80%”,那直接在 KNX 里面写逻辑会非常拧巴。而在 HomeAssistant 里,这个需求就是几条 yaml 自动化的事,而且可以随时改条件、随时调延时,不用重新跑工地改配置。
所以我的定位很明确:KNX 负责稳定可靠的控制链路,HA 负责智能联动和界面交互。两者各管一段,比任何单一平台都省心。
1.3 这套方案适合谁,不适合谁
先说不适合的人:预算极低、房子是租的、不打算长期维护、只想花几百块体验一下智能家居的朋友,KNX 真不适合你。它的一套总线电源加两三个执行器下来就要上千,面板也是按个数计价的。如果只是想在现有家里加几个智能插座,几百块的 Zigbee 方案显然更合适。
适合的人是:正在装修、愿意为稳定性和可扩展性多花点钱、家里设备数量超过三十个,或者已经受够了无线设备三天两头离线的玩家。这套方案一旦跑稳,基本是“一劳永逸”的,后续不管是接入本地语音、手机APP,还是加传感器做联动,都只是软件层面的工作,不需要再动强电。
2. KNX系统构成与设备选型清单
2.1 核心组件各管什么
KNX 系统看起来设备种类很多,但拆开看就几类东西,理解清楚角色之后再选型,就不会被各种型号绕晕。
总线电源是整个系统的能量来源,它把交流电转换成直流 30V 输出到总线电缆上,同时为所有挂在总线上的设备供电。第二个核心是执行器,装在配电箱里,负责接收总线信号,去控制实际的灯具回路、窗帘电机、插座通断。第三个是控制面板,也就是你装在墙上的开关,它本身不接强电,只是通过总线发按键指令。第四类是传感器,比如人体红外、照度传感器、温湿度传感器,它们把物理状态转成总线数据。
还有一类设备承担“翻译”任务,就是 KNX IP Router 或者 IP Interface,负责把 KNX 总线和局域网连起来,HomeAssistant 就是通过它和总线通信的。选型的时候要注意:Router 和 Interface 的区别在于,Router 有组地址过滤功能,适合多个线路分区;普通家庭一个线路,用 IP Interface 或者 IP Router 都行,我自己选了 IP Router,因为后续如果总线设备增多,还可以扩展线路耦合器。
2.2 设备选型时重点看五个参数
第一看总线电流。每个 KNX 设备的工作电流都要从总线电源里取,面板小一点的大概 5-10mA,执行器、传感器一般在 10-20mA 左右。把全屋设备电流加起来,再留 50% 余量,就是总线电源的选型依据。
第二看执行器通道数和开关类型。家里有调光灯就需要选调光执行器,普通灯就选开关执行器,卷帘、开合帘需要专门的窗帘执行器,电机类型要分清是 220V 还是 24V。买之前先把家里的回路数清点一遍,别为了省成本买少通道数,后面想加回路只能再添一个执行器,反而更贵。
第三看手动控制功能。有些执行器面板上带手动拨杆,调试的时候可以直接在配电箱里强制开关回路,这个功能对前期接线测试非常有价值。我选设备的时候把“是否支持现场手动操作”作为硬性条件,省了调试时爬楼梯的麻烦。
第四看断电恢复逻辑。有些执行器断电恢复后会保持断电前状态,有些会全部关闭,有些会恢复到固定状态。这个参数直接关系到你出差两周后用手机远程开门,结果发现家里冰箱、灯光状态是否稳定。我在选执行器时优先选了支持可编程恢复状态的型号,并把“插座默认关闭、冰箱回路默认保持”写进了第一次配置。
第五看品牌兼容性。KNX 是开放标准协议,理论上不同品牌可以混用,但实际应用中,不同品牌的通信对象、参数类型偶尔会有细微差别。我的原则是:面板和传感器用一个品牌,执行器用另一个品牌,混合使用一般没问题,但都要支持标准 DPT 类型。保守一点的话,前期全部用同一家大厂产品,等摸熟了再混搭。
2.3 布线与总线容量计算
KNX 总线电缆一般用标准双绞线,最典型的是 J-Y(St)Y 2x2x0.8 这种。很多人第一次看到里面有四根芯会懵,其实只需要把红黑这对线接到总线端子的 B+ 和 B- 上就行,黄白那对一般是备用线,不用管。
KNX TP1 总线的最大单段长度是 1000 米,家庭环境远超不了这个限制,但要注意的是,这不是指整条线路拉多长,而是指从电源出发的每一段长度。如果线路特别长或者设备特别多,电压降会导致末端设备供电不足,那就需要加总线电源或者分线路。家用基本不需要担心这一点,但总线电源位置值得提前想好:放在配电箱内,让电源尽量位于整个系统拓扑的中间位置,而不是一端极限位置。
我以自己家为例大概算了一遍:三个控制面板,每个约 10mA;两个传感器,每个约 15mA;一个 4 路开关执行器、一个 2 路调光执行器,加起来约 40mA;一个 IP Router,约 15mA。总额大约 145mA,我选了 320mA 的总线电源,余量约 55%。这个余量不是为了浪费,而是为了让总线电压保持稳定,电源长时间接近满载运行时发热反而更快。
3. ETS配置与HomeAssistant接入实操
3.1 先搞懂三个地址概念
KNX 的学习曲线,大部分卡在“地址”这个概念上。我刚开始也绕了很久,这里用一个直白的方式梳理一下。
物理地址是设备的身份证,一般情况下一个设备一个,格式是“线.设备编号”,比如 1.1.1、1.1.2。它只在工程调试和诊断时用,家庭环境一般就是“1.1.x”这个区间排下去。
组地址是设备之间的通信频道,格式是“主组/中组/子组”,比如 1/1/0。你按下墙上面板时,面板会往特定的组地址发送一个值;执行器订阅了同一个组地址,就能收到这个值并执行开关动作。HomeAssistant 接入 KNX 的核心,就是监听和发送这些组地址。
通信对象则是设备内部的具体变量,比如一个执行器有“开关控制”对象、“状态反馈”对象、还有过温保护对象。在 ETS 里的工作,其实就是把设备通信对象绑定到组地址上,让不同设备的通信对象互相连接起来。
3.2 用 ETS 搭建项目的关键步骤
ETS 是 KNX 官方的配置软件,DIY 规模的项目不需要专业版,用 ETS Lite 就能覆盖二三十个设备的管理。界面是英文的,但习惯后操作并不复杂。
第一步,新建项目并添加设备。项目里会自动生成线路“Line 1”,所有物理设备都分配在这个线路下,依次设置物理地址 1.1.1、1.1.2、1.1.3。
第二步,规划组地址表。这一步最考验整体思考,我的习惯是提前在表格里把组地址列出来,按“主组=功能区域,中组=设备类型,子组=具体指令”的规则分配。比如:
| 组地址 | 功能说明 | 对应设备 |
|---|---|---|
| 1/0/0 | 客厅主灯开关 | 客厅灯执行器 |
| 1/0/1 | 客厅主灯状态反馈 | 客厅灯执行器 |
| 1/1/0 | 厨房筒灯开关 | 厨房灯执行器 |
| 2/4/0 | 主卧窗帘开关 | 窗帘执行器 |
| 2/5/1 | 主卧窗帘位置反馈 | 窗帘执行器 |
| 3/1/0 | 客厅传感器照度值 | 照度传感器 |
这样规划的好处是,后续在 HomeAssistant 里添加实体时,地址规律一目了然,不用每次翻图纸。强烈建议在家里贴一张这样的组地址表,调试时能节省大量时间。
第三步,绑定通信对象。选中某个设备,把它的开关对象拖到对应的组地址上。这里有个容易忽略的细节:开关控制对象和状态反馈对象,往往需要绑定到不同组地址。例如执行器的开关控制绑定到 1/0/0,状态反馈绑定到 1/0/1,这样 HA 才能真实反映灯的当前状态。
第四步,编译并下载。先在 ETS 里编译项目,确认没有地址冲突或对象类型错误,然后通过 USB 接口或者局域网 IP 连接设备,把配置下载到对应的执行器和面板上。下载完成后,物理面板按键就能控制执行器了,不需要 HA 参与。
3.3 HomeAssistant 的 knx 段到底怎么配
HA 的 KNX 集成支持自动读取和手动配置两种方式。如果你已经把所有组地址规划得井井有条,我建议直接手动写在 configuration.yaml 里,这样实体名称完全可控,不容易出现 HA 自动生成一堆乱码的情况。
我给出一个实际可用的最小配置,在 configuration.yaml 里添加:
knx: host: 192.168.1.10 port: 3671 light: - name: 客厅主灯 address: '1/0/0' state_address: '1/0/1' - name: 厨房筒灯 address: '1/1/0' state_address: '1/1/1' switch: - name: 电视墙插座 address: '1/2/0' state_address: '1/2/0' sensor: - name: 客厅照度 state_address: '3/1/0'host 填 KNX IP Router 的局域网 IP,port 固定是 3671,这是 KNXnet/IP 默认端口。添加完成后重启 HA,在“开发者工具”里刷新实体,就能看到刚才定义的那些实体了。
如果你接了温控面板,也可以在 knx 段下配置 climate 实体,HA 会把 KNX 的室温、设定点、阀门开关等组地址映射成一个温控器实体。这一块字段相对多,我建议第一次先把灯和开关跑通,再逐步加温控,不然排查问题时很难定位是 HA 的问题还是 ETS 的问题。
3.4 用自动化把 KNX 面板和 HA 联动起来
KNX 面板本身是一块本地控制设备,即使 HA 停电或者关机,墙面开关依然能用,这就是有线方案的最大底气。而 HA 联动要做的事情,是把 KNX 事件变成自动化触发源,让我在手机上、在传感器上都能统一控制。
比如客厅的 KNX 面板按下了某一键,HA 可以捕获这个事件,再执行更复杂的动作。自动化里可以这样写:
trigger: - platform: event event_type: knx_event event_data: address: '1/1/0' data: 1 action: - service: light.turn_on target: entity_id: light.客厅主灯 - service: cover.open_cover target: entity_id: cover.客厅窗帘这个例子说明,KNX 面板更像是传感器,而不是传统意义上的开关。你按下的每个键、每个组地址事件,HA 都能感知到,然后执行任意逻辑。
我自己其实很少用单一动作的自动化,因为简单的开关灯本来就能在 ETS 里实现。我更多是把 HA 自动化用在“组合动作”上:比如离家场景一键关闭全屋灯光、窗帘、插座;观影场景一键调暗灯光并关闭遮光窗帘。这种体验是纯 KNX 很难舒服地实现的,也是 HA + KNX 组合的精髓所在。
4. 布线施工与联动设计实战
4.1 现场施工的几条纪律
KNX 布线看起来简单,就是一根总线电缆把所有设备串并联起来,但现场施工有几个容易走样的地方。
第一,总线电缆绝对不能和强电电缆穿在同一根管里,也不建议在同一个线槽里紧贴强电走,否则 220V 的电磁干扰会影响总线通信。我见过有人为了省事,把 KNX 线和灯线塞进同一根 PVC 管,结果面板按键一按,执行器就随机抽风。正确做法是总线单独穿管,或者至少距离强电 15cm 以上。
第二,总线连接必须手拉手并联,每个设备之间的连接顺序不重要,因为 KNX 的拓扑允许自由分支,但要注意在总线尽头可以设置总线终端电阻,提升信号质量。家用短线基本不需要纠结终端电阻,如果发现总线末端设备偶尔掉线,再考虑加上。
第三,控制面板的安装要留意底盒内部空间。KNX 面板背后的总线端子比普通开关厚不少,86 底盒如果深度不够,面板会很难压实。建议用 50mm 深的底盒,给总线端子和线缆留足余量。
第四,执行器放在配电箱内,注意散热。KNX 执行器属于电子产品,虽然功耗不高,但在密闭配电箱里长期运行,散热问题还是要重视。配电箱内排列时,把执行器和断路器之间留一点缝隙,不要挤成一团。
4.2 通电后的调试顺序
整个系统接完线后,不要急着把所有设备同时通电。我的习惯是,先只给总线电源通电,然后用万用表测量总线电压,正常在 24V-30V 之间。测完总线电压后,再逐个把执行器、面板接到总线上,观察设备指示灯是否进入正常状态。
接下来才用 ETS 连上 IP Router,先做一次总线扫描,确认所有物理地址都能被正确发现。如果某个设备扫描不到,先别怀疑设备坏了,大概率是总线接线问题,尤其是红黑线接触不良或者端子没压紧。这类问题在刚接完线的现场特别常见,很多“设备故障”其实只是线头松了。
设备全部扫描到之后,在 ETS 里执行一次完整下载。下载完成后直接用面板按键测试本地控制,确认每个按键对应正确的灯或窗帘。本地控制全部验证通过后,再回到 HA 里检查实体状态是否和现场一致。注意,HA 读到的状态来自组地址,如果状态反馈地址配错了,实体状态就会显示反相,这不是设备问题,而是 ETS 里绑定对象绑错了。
4.3 一个完整的联动实例:回家场景
我把自己搭建的一套“回家场景”流程写出来,希望你能感受到 HA + KNX 是怎么协同工作的。
家里门口装了一个 KNX 门磁传感器和一个人体红外传感器。当门被打开且室内无人移动超过 5 分钟时,HA 判定为“回家事件”,自动执行:客厅主灯开至 80%,餐厅灯开启,走廊灯开启,客厅窗帘打开三分之一,空调切换到 26 度制冷。这些灯光硬件全部走 KNX 执行器,HA 只是根据传感器事件发出指令。
这个场景如果放在纯 KNX 里也能做,但需要把门磁传感器、人体传感器、时间逻辑全部写进 ETS 的联动逻辑里,每次想调整参数,都要重新编译下载,非常麻烦。在 HA 里,我只改一下自动化里的亮度和延时数值就好,改完重启 HA 生效,体验差距巨大。
这套方案在实际跑了一年半之后,我最大的感触是:KNX 给我的家提供了一个“物理底座”,HA 则在这块底座上随意叠软件玩法。底座不平,所有玩法都会翻车;底座稳了,软件怎么折腾都不怕。
5. 踩坑记录与问题排查速查表
5.1 总线电压异常导致的“随机性”故障
现象往往是:某些面板按键能亮,但是执行器不动;或者同一个面板,有时候灵敏有时候迟钝;再或者在 HA 里能看到设备在线,可发命令没反应。
最容易被忽略的原因是总线电源容量不足或者线路压降过大。用万用表量一下总线末端电压,如果低于 21V,基本就是这个问题。解决方法通常是:更换更大电流的总线电源,或者把总线电源移到更靠近用电设备集中区的位置,又或者给长距离末端增加一组电源并做物理隔离。我的一个朋友遇到过类似情况,加了一根 100 米的长线到车库,末端设备经常掉线,后来在末端加了一个信号增强器才解决。
5.2 ETS 下载配置后不生效
新装的设备,或者改动过组地址的设备,在 ETS 里点了下载,面板按键还是什么都没发生。这种情况绝大多数是你只下载了“应用参数”,而没有完整下载整个设备应用。
在 ETS 的设备列表里,右键设备,选择“完整下载”,把应用和参数一起刷进去。如果有多个设备都改了,最好右键整个线路,执行“完整下载”一次全刷。这里有个小经验:修改组地址之后不要只下载面板,执行器那边也必须重新下载,因为执行器的通信对象绑定也是在下载时生效的。我之前漏掉了一个执行器的下载,面板按了灯没反应,排查了半小时,最后发现执行器里还是旧的组地址。
5.3 HA 连不上 KNX IP Router
host填对了,网络也能 ping 通,但 HA 里就是没有任何实体或者连接报错。
先确认 UDP 3671 端口没有被防火墙拦掉。很多人的问题出在软路由或者旁路由上。还有一点容易被忽略:KNX IP Router 的 IP 地址和 HA 必须在同一网段。如果 IP Router 在 VLAN 里,HA 在另一个网段,就需要在网关上做 UDP 端口转发,或者把 Router 直接划到 HA 所在的 VLAN。
另外,部分 KNX IP Router 默认开启了组播过滤,如果你在 ETS 里对线路区域做过过滤规则,HA 可能收不到来自总线的某些事件。排查方法很简单:先用一个 UDP 监听工具,看看 HA 网卡上有没有 3671 端口的入站数据包。如果有数据包,说明 Router 在工作,问题大概率在 HA 配置。如果没有数据包,优先检查 IP Router 的状态灯和 ETS 连接测试。
5.4 KNX 设备的指示灯含义
KNX 设备上的指示灯不是装饰品,很多故障都能从灯色里看出一二。不同品牌指示灯定义有细微差别,但大原则是一致的。
正常工作时,总线设备通常亮绿色或绿色慢闪,表示它与总线的通信正常。如果亮红色、红色快闪,或者不规律闪烁,一般表示总线通信错误,或者设备的物理地址没有被正确配置,或者设备总线供电异常。建议在 ETS 里重新扫描一遍该设备,看能不能正常识别。如果扫描时发现设备还在,但通信不稳定,优先检查总线端子是否松动。
还有一类情况是设备指示灯正常、ETS 也能连,但 HA 里实体状态不刷新,多半是状态反馈组地址没有绑定,或者绑定到了错误的通信对象。这个排查看起来复杂,实际上只要你对照组地址表逐项核对,很快能定位。
5.5 我的长期维护经验
最后说一个我踩过几次坑之后总结的点:KNX 项目所有配置一定要版本管理。
不是开玩笑。ETS 项目文件没过多久就会被改动,组地址表也会随着新设备加入而扩展。我会把每次项目文件存档命名成“客厅改造前”“客厅改造后”这种带时间和改动说明的版本,同时把组地址表导出一份 PDF 放进手机。一旦现场出了问题,翻纸面表格比打开 ETS 翻树结构方便得多。
另外,DI Y过程中不要急着追求把所有功能都塞进 HA。KNX 的优势是稳定,HA 的优势是灵活。我的做法是:把每天都要用的基础控制尽量在 KNX 本地实现,把组合场景和跨系统联动交给 HA。这样即使某一天 HA 挂了、NAS 重启了,家里最基本的灯光和窗帘控制依然不会瘫痪。这套“底座稳,上层活”的设计思路,比任何单独设备都重要。
如果你正准备入坑 KNX,我建议从一组灯、一个面板、一个执行器、一台 IP Router 开始试水,跑通整个链路之后再扩大规模。第一套做小一点,把 ETS 和 HA 的配合逻辑跑顺,后面的扩展无非是加设备、加组地址、加自动化的事。等全屋跑起来之后你会发现,这套有线系统每天的维护成本,基本接近零,而它给你的安全感,是多少个无线设备都换不来的。