ARTICLE DETAIL

资讯详情

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

KNX+HomeAssistant:从无线到有线的智能家居稳定方案与DIY实践

KNX+HomeAssistant:从无线到有线的智能家居稳定方案与DIY实践 1. 为什么我会从无线转投有线 KNX HA1.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 线路电源带扼流圈1300-600KNX IP 接口/路由器1800-18008 路开关执行器11200-20004 路调光执行器11000-1800按键面板模块3-4 个400-1500KNX 总线线缆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/3host填 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 的好处就是稳定、标准、抗干扰但它也是一个需要你认真对待的长期工程规划越细日后越省心。
返回列表