1. 为什么我最终放弃了无线方案,转头折腾KNX有线
三年前装修第一套房子的时候,我跟大多数人一样,脑子里全是"无线智能家居"那套东西——几十块钱一个的Wi-Fi开关、涂鸦传感器、米家全家桶,便宜、上手快、不用改水电。结果住进去半年,我陆续拆掉了家里七成的无线设备。原因很朴素:延迟、掉线、以及"设备一多就集体抽风"。客厅里二十多个Wi-Fi设备同时在线,路由器稍微一忙,灯就要等两秒才亮;半夜传感器误触发把灯全打开;最要命的是有一次出差在外,家里网关离线,我连灯都关不了。
那次之后我下定决心,第二套房子直接上有线方案。选来选去,落到KNX + HomeAssistant这个组合上。KNX是楼宇自动化领域用了三十多年的老牌总线标准,走的是独立的双绞线总线,不依赖网络、不依赖云、不依赖任何一家厂商的服务器;HomeAssistant则是目前开源圈里最灵活的家庭自动化中枢,能把KNX、Zigbee、Wi-Fi、Modbus各种协议揉到一个界面里统一调度。一个负责"稳如老狗"的底层执行,一个负责"想怎么玩就怎么玩"的上层逻辑,这套组合在我看来是目前DIY有线智能家居里性价比和可玩性最平衡的方案。
这篇文章不是科普,也不是厂商软文。我会把从选线、布线、选设备、装ETS、配HomeAssistant、写自动化这一整条链路,按我实际踩过的坑和验证过的做法讲清楚。适合两类人看:一类是正在装修、想一步到位上有线智能的业主;另一类是已经玩腻了无线、想升级到总线方案的DIY玩家。如果你家已经装修完、墙里没预留线,那这套方案对你来说成本会很高,但也不是完全没救,后面我会单独讲改造思路。
先说结论:KNX负责"确定性",HomeAssistant负责"可能性"。想清楚这句话,后面所有的选型和配置就都有主心骨了。
2. KNX这套总线到底强在哪,值不值得为它多花钱
2.1 总线通信和无线通信的本质差别
很多人把KNX理解成"更贵的有线开关",这是误解。无线方案(Wi-Fi、Zigbee、蓝牙)的本质是共享介质、竞争通信——所有设备抢同一个频段,设备越多、干扰越大、延迟越不可控。而KNX是一条专用的双绞线总线,所有设备挂在这条线上,通信是主从轮询+事件触发的确定性机制,理论上一条支线可以挂64个设备,通过耦合器还能扩展到上万点。
打个比方:无线方案像一群人在一个房间里同时说话,谁嗓门大谁先被听到,人一多就乱套;KNX像一条有严格发言规则的会议桌,每个人按顺序说话,永远不会撞车。这就是为什么KNX在酒店、写字楼、机场这种"绝对不能出错"的场景里用了三十多年。
具体到参数上,KNX总线电压是29V直流,通信速率9600bps。这个速率听起来慢得离谱,但你要明白它传的不是视频流,而是"开灯""关灯""调到50%"这种几十字节的控制指令,9600bps完全够用,而且极低的速率意味着极强的抗干扰能力,线拉几百米都不带丢包的。
2.2 一条总线能带多少设备,线怎么选
这是新手最容易翻车的地方。KNX的拓扑规则不是随便拉线就行的:
- 一条**线路(Line)**最多64个设备,实际建议留余量,控制在50个以内
- 一条线路的总线电源通常选640mA的,要给每个设备算电流消耗,一般设备耗电10mA左右,执行器(如开关执行器)可能到20-30mA
- 一个区域(Area)最多15条线路,通过线路耦合器连接
- 主干线(Backbone)再把这些区域连起来
线材方面,必须用KNX专用总线电缆,通常是2×2×0.8mm的屏蔽双绞线,红黑一对走数据+供电,黄白一对备用。别想着用网线或者普通电线代替,阻抗和电容特性不一样,短距离可能能跑,长了必出问题。我见过有人用超五类网线凑合,结果一条支线超过80米就开始随机丢包,排查了整整两天。
提示:总线电缆和强电(220V)走线必须保持至少30cm间距,交叉时尽量垂直交叉。我第一版布线图没注意这个,把总线跟照明回路捆在一起走了一段,结果那一段的通信误码率明显偏高,后来重新分开走线才解决。
2.3 电源和拓扑的坑:为什么你的总线老是重启
KNX总线电源不是随便买个29V电源就行,必须是带扼流圈(choke)的专用电源,它负责把直流供电和通信信号隔离开。普通开关电源直接接上去,通信信号会被电源"吃掉",表现为设备时好时坏、总线频繁重启。
还有一个隐蔽的坑:总线电源要装在线路的中间位置,而不是末端。因为电源到最远设备的线损要控制,装中间能让两端距离更均衡。我一开始把电源装在配电箱最边上,结果最远那个房间的面板偶尔响应慢,把电源挪到线路中段后问题消失。
另外,每条线路的总线两端要接终端电阻吗?KNX不需要像RS485那样接120Ω终端电阻,它的收发器自带阻抗匹配,这点跟很多人熟悉的Modbus不一样,别搞混了。
3. 设备选型:哪些必须上KNX,哪些交给HomeAssistant更划算
3.1 我的"KNX核心+HA外围"分层原则
全屋所有东西都上KNX,钱包扛不住;全用便宜无线,稳定性又不行。我的原则是按"确定性要求"分层:
| 设备类型 | 方案选择 | 理由 |
|---|---|---|
| 照明开关/调光 | KNX | 高频使用,绝不能掉线,调光曲线KNX执行器做得最细腻 |
| 窗帘电机 | KNX | 需要精确位置控制和联动,KNX执行器直接驱动 |
| 地暖/空调阀门 | KNX | 长期运行,稳定性优先,且要跟温控面板联动 |
| 温湿度/人体传感器 | KNX或HA | 关键区域用KNX,次要区域用Zigbee省钱 |
| 门锁/摄像头 | HA | 这些本来就是IP设备,走HA集成更自然 |
| 语音助手/场景面板 | HA | 逻辑层的东西,放HA里改起来方便 |
这套分层的核心逻辑是:执行层(开关、驱动)用KNX保证"按下去一定有反应",感知层和逻辑层用HA保证"想怎么改就怎么改"。比如"回家模式"这个场景,触发逻辑写在HA里,但最终执行的开灯、开窗帘动作是HA通过KNX网关下发给KNX执行器的,执行环节依然是确定性的。
3.2 KNX网关怎么选,这是整套系统的命门
HomeAssistant要跟KNX通信,中间必须有一个KNX网关(KNX/IP Interface或Router)。这是整套系统里最不能省钱的部件,我强烈建议选KNX Router而不是普通的Interface。
区别在哪?Interface是点对点隧道连接,通常只支持有限的几条隧道(比如5条),HA占一条、ETS占一条,很快就用满了;Router是组播路由模式,支持多客户端同时连接,HA、ETS、其他调试工具可以并行工作,而且转发性能更好。我用的是某品牌的Router,价格比Interface贵一倍多,但省心程度完全不是一个级别。
网关的另一个关键参数是是否支持KNX Secure。如果你在意安全(比如担心有人物理接触总线后乱发指令),选支持Secure的型号。不过对大多数家庭DIY场景,物理安全(配电箱上锁)比协议加密更实际。
3.3 执行器和面板的选购心得
开关执行器:按回路数选,常见4路、8路、12路、16路、20路。注意区分开关执行器和调光执行器,调光又分前沿切相、后沿切相、0-10V、DALI几种。LED灯调光一定要确认执行器和灯具兼容,我踩过的坑是买了前沿切相调光器配劣质LED驱动,低亮度时闪烁严重,换成后沿切相+好一点的驱动才解决。
面板:KNX面板价格从几百到几千不等,贵的带温控、带显示屏、带逻辑。我的建议是公共区域用好面板,卧室用基础款。因为面板本质就是个"发指令的按钮",逻辑都在HA里,没必要每个都买顶配。
传感器:KNX的温湿度、CO2、人体存在传感器精度和稳定性确实比无线好,但价格是Zigbee的三到五倍。我的做法是客厅、主卧用KNX,次卧、卫生间用Zigbee通过HA接入,反正这些地方对精度要求不高。
4. 布线阶段:装修时没做对,后面全是泪
4.1 布线图怎么画,配电箱怎么规划
KNX布线必须在水电改造阶段完成,这是不可逆的。我的做法是先画一张点位图,标出每个开关、传感器、执行器的位置,然后画拓扑图,确定每条线路挂哪些设备、电源装哪、耦合器装哪。
配电箱规划是重点。KNX执行器都是导轨安装的,一个8路开关执行器宽度大概4个模数(72mm),加上总线电源、网关、耦合器,一个中等户型轻松占掉一整排导轨。我建议弱电箱和强电箱分开,或者至少留一个专门的KNX配电箱,把所有执行器集中管理。集中式的好处是:接线清晰、散热好、后期维护方便;缺点是每个回路的强电都要拉到配电箱,线材成本高。
提示:执行器集中安装时,强电回路的零线火线都要引到配电箱,别只引火线。我见过有人图省事只引火线,结果调光执行器没法工作(调光需要零线参考)。
4.2 总线走线的实操细节
总线走线有几个硬性规矩:
- 手拉手串联,不要星型。KNX总线是总线型拓扑,设备要一个个串下去,不能像网线那样从交换机星型发散。星型会导致阻抗不匹配,通信不稳。
- 每条线路总长度不超过1000米,电源到最远设备不超过350米。
- 总线电缆要留检修余量,每个点位多留30-50cm,方便后期换面板。
- 强弱电分槽,实在要同槽必须加隔板。
我实际布线时,把总线沿着走廊吊顶走主干,然后每个房间分支下去。分支点用接线端子而不是直接绞接,绞接时间长了容易氧化接触不良。接线端子选KNX专用的,红黑黄白四色对应,别用普通接线帽。
4.3 已经装修完怎么办:改造思路
如果你家已经装修完、墙里没线,全屋KNX基本不现实。但有几个折中方案:
- 局部KNX:只在客厅、主卧这种重点区域开槽补线,其他区域继续用无线,通过HA统一
- KNX over IP:用KNX/IP网关把有限的几个KNX设备接入,但设备本身还是要接线
- 纯HA方案:放弃KNX,用HA + Zigbee/Z-Wave + 有线以太网设备(如Shelly Pro系列,走网线)搭建,稳定性介于纯无线和纯KNX之间
我个人觉得,装修完的房子最务实的做法是HA为核心,有线以太网设备打底,无线设备补充,别硬上KNX。
5. ETS配置:KNX的"编程"到底在编什么
5.1 ETS是什么,为什么绕不开它
ETS(Engineering Tool Software)是KNX官方的配置软件,所有KNX设备的参数、地址、联动关系都在这里配置。它跟HomeAssistant完全是两回事:ETS负责让KNX设备之间能互相通信,HA负责在上层做逻辑和界面。
ETS是收费软件,按项目授权,个人DIY买一个Lite版(最多20个设备)或者Home版(最多64个设备)就够用。别想着跳过ETS直接用HA控制KNX,因为设备出厂时是没有地址的,必须用ETS给每个设备分配物理地址和组地址。
5.2 物理地址和组地址:KNX通信的核心概念
这是理解KNX的关键,我用一个类比讲清楚:
- 物理地址:每个设备的"身份证号",格式是"区域.线路.设备",比如1.1.5表示1区1线第5个设备。这个地址在ETS里分配,用于设备调试和诊断。
- 组地址:设备之间通信的"频道号",格式是"主组/中组/子组",比如1/2/3。一个设备可以监听多个组地址,也可以往多个组地址发数据。
举个例子:客厅面板按下,它往组地址1/0/1发一个"开"指令;客厅的开关执行器监听1/0/1,收到后闭合对应回路。面板和执行器之间不需要知道对方是谁,只需要约定好用同一个组地址。这就是KNX解耦的精髓——加设备、换设备,只要组地址对得上,其他都不用动。
组地址规划是ETS配置里最考验功力的部分。我的规划原则是按功能分区:
1/0/x 照明开关 1/1/x 照明调光 2/0/x 窗帘 3/0/x 温控 4/0/x 场景 5/0/x 状态反馈状态反馈单独一组很重要,因为HA需要读取设备当前状态(灯是开是关),而不是只发指令。很多人配完发现HA里开关状态不同步,就是因为没配状态反馈组地址。
5.3 参数配置里那些容易忽略的选项
每个KNX设备在ETS里都有一堆参数,新手容易全用默认值。有几个必须手动调的:
- 开关执行器的"上电状态":断电恢复后,回路是保持断电前状态、还是强制开、还是强制关。我一般设成"保持",避免停电恢复后全屋灯突然全亮。
- 调光执行器的调光曲线:不同灯具要选不同的曲线,LED一般选对数曲线,白炽灯选线性。
- 面板的"长按/短按"功能:短按开关、长按调光,这个要单独配。
- 温控器的"控制模式":是内部PID还是外部给定,跟HA联动时通常选外部给定。
配完ETS一定要下载到设备并做全量测试,别配完就以为完事了。我习惯配完一个房间就测一个房间,避免最后一次性调试时问题堆在一起分不清。
6. HomeAssistant接入KNX:从能用到好用
6.1 KNX集成的基本配置
HA内置了KNX集成,配置方式是在configuration.yaml里加knx:段,或者在UI里添加。我推荐用YAML配置,因为设备多了以后UI管理很乱,YAML可以版本控制、可以复用。
一个典型的灯配置长这样:
knx: light: - name: "客厅主灯" address: "1/0/1" state_address: "5/0/1" brightness_address: "1/1/1" brightness_state_address: "5/1/1" cover: - name: "客厅窗帘" move_long_address: "2/0/1" stop_address: "2/0/2" position_address: "2/0/3" position_state_address: "5/2/1"address是发指令的组地址,state_address是读状态的组地址。这两个一定要配对,否则HA界面上的开关状态永远不对。
6.2 让HA和KNX状态双向同步
这是最容易出问题的地方。KNX设备被物理面板操作后,状态要能同步回HA;HA里操作后,状态也要同步回KNX面板的指示灯。实现双向同步的关键是所有状态变化都要通过组地址广播。
具体做法:在ETS里,把执行器的状态反馈组地址跟HA的state_address对应上;同时HA发指令时,执行器执行后也会往状态组地址发反馈,HA自动更新。这样无论从哪边操作,状态都是一致的。
我踩过的坑是:一开始只配了address没配state_address,结果HA里点开关能控制灯,但用物理面板开灯后HA界面还是显示"关",自动化逻辑就全乱了。状态反馈是自动化的基础,没有它,HA就是个瞎子。
6.3 用HA做KNX做不到的复杂逻辑
KNX本身也能做逻辑(很多执行器和面板带逻辑模块),但KNX的逻辑编程又难用又难改。我的做法是KNX只做最基础的联动(比如面板直接控灯),所有复杂逻辑都放HA。
举几个HA才能轻松实现的例子:
- 基于时间的场景:日落时自动开客厅灯,这个用HA的
sun触发器一行搞定,KNX做起来很麻烦 - 多条件组合:只有"有人"且"光线暗"且"在客厅"才开灯,HA里几个条件一叠加就行
- 跨协议联动:Zigbee的人体传感器触发KNX的灯,这种跨协议联动只有HA能做
- 自适应调光:根据室外光照传感器数值动态调整室内亮度,HA里写个模板就行
HA的自动化用YAML写,也可以用Node-RED做可视化流程。我复杂逻辑用Node-RED,简单定时用YAML,各取所长。
7. 实测中那些文档不会告诉你的坑
7.1 总线负载和响应速度的真实关系
理论上一条线路64个设备没问题,但实测下来,当一条线路上同时有大量状态广播时,响应会变慢。比如全屋50个灯同时上报状态,总线会拥堵那么一两秒。解决办法是合理分组,把状态反馈分散到不同组地址,减少单条总线的瞬时流量。另外,不是所有状态都需要实时上报,比如温度这种慢变量,可以设成5分钟上报一次,别设成变化就报。
7.2 HA重启后KNX状态丢失
HA重启后,如果KNX设备没有主动上报状态,HA里所有实体都会显示"未知"。解决办法有两个:一是配置sync_state让HA启动时主动读一次;二是用knx.read服务在自动化里定时同步。我是在HA启动自动化里加了一段,启动后延迟30秒把所有关键状态读一遍。
7.3 网关IP变动导致HA失联
KNX网关的IP如果是DHCP分配的,路由器重启后IP变了,HA就连不上了。必须给网关配静态IP,或者在路由器里做DHCP保留。这个坑我踩过一次,出差在外发现家里HA控制不了灯,回来一查是网关IP变了。
7.4 调光最低亮度设太低导致闪烁
LED灯在极低亮度下容易闪烁或闪烁,这是LED驱动的特性决定的。ETS里调光执行器有"最小亮度"参数,我一般设成5%-10%,别设成1%。另外调光曲线的起点也要调,让低亮度区间过渡更平滑。
8. 写在最后:这套方案适合谁,不适合谁
折腾完这一整套,我对"KNX + HomeAssistant"的评价是:它是目前DIY有线智能家居里最稳、最灵活、也最需要耐心的方案。稳在KNX的确定性执行,灵活在HA的无限可能,需要耐心在ETS配置和布线阶段的一次性投入。
如果你正在装修、预算充足、追求十年不用管的稳定性,这套方案值得上。如果你只是想低成本体验智能家居,或者房子已经装修完不想大动,那还是老老实实玩HA + 无线设备,别硬上KNX。
最后分享一个我自己的习惯:所有ETS项目文件和HA配置文件都做版本管理。KNX项目文件用ETS导出备份,HA配置放Git仓库。这样哪天设备坏了要换、或者想改逻辑,随时能回滚。我吃过没备份的亏——有次误删了一个组地址,整个客厅的灯全乱套,重新配花了整整一个晚上。从那以后,改任何配置前先备份,成了我的铁律。