我的温控器在讲工业协议,只是不对我讲
来源:dev.to — 2026-09-03
📋 概述
一位资深软件工程师面对自家客厅里一个没有 API、没有文档、只有串行总线的 Delta Controls 温控器,决定不去换智能设备(那会牵动整个集中式 HVAC 系统),而是学会它的语言。他通过安装菜单发现它是 BACnet MS/TP 网络的节点,用两晚钻研协议、花数周只读不写地逐个反向工程出约 50 个可用对象,最后用 ESP32 搭起自己的网关。全文最打动人的是那条自设铁律,以及他对「AI 能做到什么、做不到什么」的清醒判断。
🔑 核心要点
- BACnet MS/TP 跑在 RS-485 令牌环上:主节点轮流持令牌发言,错过时序就会被踢出环;HEADER 与 DATA 双重 CRC 让它对损坏帧鲁棒,真正的风险在别处
- 三大真实风险:地址冲突(两个主节点同地址会让整条总线混乱)、时序(半双工上乱发会撞毁别人的帧、慢节点拖慢全总线)、语义(WriteProperty 是真实写入,搞错对象就把依赖它的系统配置改了)
- 自设铁律「讲不清一帧在做什么,这帧就不上总线」——总线不是你的,犯错不归犯错者买单;周余只读、确认对象职责、只在自屏验证后写入
- 读到不等于写到的那个对象:`BV:90003` 命令 eco 状态、`AV:510` 反映它,可读对象与可写对象常常不是同一个,这一区分省下了一个 bug
- 手建的 CSV(类型/实例/自定义名/单位/分区/是否可写/读取频率)成为全项目唯一事实来源——没有任何语言模型能产出它:它没有你的总线、不知道你的设备、无法把一个寄存器对应到走廊里真转起来的风机盘管
- AI 在硬件侧真正有用的是知识性咨询:选哪款 USB-RS485 转换器、怎么无中断并联差分对、GND 要不要接、120Ω 终端在哪——这些电工常识是作者上一周才学会的
💡 金句
那根总线不是我的,在那里犯错不会由犯错的人来买单。
👍 0
👎 0
← 返回 dev.to 首页