断电断网的那晚,我家的空调为何还能“秒响应“?Midea AC LAN 本地化控制完整上手

📅 2026/8/18 21:09:44
断电断网的那晚,我家的空调为何还能“秒响应“?Midea AC LAN 本地化控制完整上手
断电断网的那晚我家的空调为何还能秒响应Midea AC LAN 本地化控制完整上手【免费下载链接】midea_ac_lanAuto-configure and then control your Midea M-Smart devices (Air conditioner, Fan, Water heater, Washer, etc) via local area network.项目地址: https://gitcode.com/gh_mirrors/mi/midea_ac_lan深夜雷雨劈断了你家的宽带。手机上的厂商APP一直转圈语音助手提示设备离线你摸黑找遥控器——但卧室那台空调此刻却在Home Assistant里亮着点一下制冷 26℃三秒内凉风如约而至。这不是科幻片而是一个叫Midea AC LAN的开源项目带来的日常它让美的M-Smart系列家电的控制指令不再绕道云端服务器而是在你家局域网内直达设备。本文就用一个普通用户从怀疑到离不开的视角带你把这条本地化控制的完整链路走通。智能家电的两种活法绕远路 vs 门对门先看两组数字。走云端时你的每一次按键都要经历手机→厂商服务器→设备的往返体验好坏完全取决于厂商服务器的心情走局域网直连指令只在家里的路由器上转个弯。对比维度云端中转Midea AC LAN 局域网直连典型响应延迟300ms 起步高峰期更慢常在 50ms 以内几乎无感断网/外网故障时全部失灵完全可用设备状态推送依赖轮询或厂商推送TCP长连接实时同步iot_class: local_push隐私数据使用习惯上传厂商服务器留在本地只有Token/Key参与加密握手数据所有权厂商说了算你说了算一句话总结云端方案是打个电话请总机转接局域网直连是直接敲门进院子。这也是为什么越来越多智能家居玩家把本地化当作第一优先级。它是怎么做到的三种协议、一次握手、一条长连接Midea AC LAN 的核心是逆向研究了美的 M-Smart 局域网通信协议再用 Python 实现成 Home Assistant 集成。整个过程像听懂设备说的方言设备用 UDP 广播自报家门用 TCP 端口建立专属对话通道再用 AES 加密防止外人偷听。关键的实现文件都躺在custom_components/midea_ac_lan/midea/core/里discover.py向局域网广播 0x5a5a 开头的数据包等设备回应后解析出设备ID、型号、端口device.py设备通信基类管理 TCP 连接、10 秒心跳、30 秒主动刷新和断线重连本身是一个后台线程security.pyAES 加解密与握手逻辑握手请求0x0、加密请求0x6message.py报文封包/拆包把 0x8370、0x5a5a 等字节流翻译成可读属性。而每种设备空调、风扇、热水器、洗衣机……则在midea/devices/下各占一席比如空调是midea/devices/ac/device.py里面定义了power、eco_mode、indoor_temperature、total_energy_consumption等几十个可读写属性。亲自上手三分钟把第一台设备接进来安装有两条路任选其一路径一HACS 安装推荐在 HACS 商店搜索 Midea AC LAN一键安装后重启 Home Assistant。注意版本要求HA 2022.5 及以上manifest.json中iot_class为local_push。路径二手动拷贝把项目里custom_components/midea_ac_lan整个目录复制到 Home Assistant 的custom_components/下重启即可。接下来是重点——添加设备时会有一次云端之旅配置向导会让你输入美的账号密码目的是从云端拉取每台设备的 Token 和 Key这是设备身份认证的钥匙。全部配置完成后你可以移除账号配置家电照常使用因为 Token/Key 已经存在本地了。这一步是很多教程没讲透的关键用一次云端换永久本地。设备接入有三种姿势按你的网络环境选发现方式适用场景说明自动广播发现普通家庭网络设备与HA在同一子网时直接列出并勾选指定IP搜索多网段/复杂网络输入如192.168.1.255定向广播手动配置广播被屏蔽手填设备码、类型、IP、端口(默认6444)、协议版本、Token、Key强烈建议先给家电在路由器里绑定静态IP否则 DHCP 到期换地址后集成会连不上设备。配置界面里设置 → 设备与服务 → Midea AC LAN也支持随时重设 IP。能接什么设备三十多种家电一套框架Midea AC LAN 的支持面远超空调。看README.md里的清单空调(AC)、除湿机(A1)、微波炉(B0)、烤箱(B1)、洗碗机(E1)、燃气热水器(E3)、洗衣机(DA/DB)、干衣机(DC)、风扇(FA)、空气净化器(FC)、加湿器(FD)、抽油烟机(B6)、冰箱(CA)……从卧室到厨房到阳台基本全覆盖每种设备在doc/下都有独立文档如 doc/AC.md、doc/FA.md。以空调为例除了核心的climate实体还能在配置里勾选出一堆扩展实体室内外温度、实时功率、电量统计传感器以及 ECO 模式、无风感、辅热、屏显等开关。如果你家设备的某些状态同步偏慢可以在自定义里调参{refresh_interval: 15, fan_speed: 100}把主动刷新间隔从默认 30 秒缩到 15 秒状态更跟手代价是略增功耗某些设备也支持自定义特殊参数JSON 格式统一。玩点进阶的让家电学会看电价和看人走没走接入只是开始本地化的真正红利是自动化可以瞬间生效、永不掉线。下面两个 YAML 可直接复制到configuration.yaml或自动化编辑器里automation: - alias: 峰谷电价自动省电 trigger: platform: time at: 14:00:00 # 高峰电价开始 action: service: climate.set_temperature target: entity_id: climate.midea_ac_01 data: temperature: 27 # 高峰时段适当调高设定温度 - alias: 离家全屋断电 trigger: platform: state entity_id: person.owner to: not_home action: - service: climate.turn_off target: { entity_id: climate.midea_ac_01 } - service: fan.turn_off target: { entity_id: fan.midea_fa_01 }如果某个属性没有现成实体还有两个万能后门服务midea_ac_lan.set_attribute按属性名设值和midea_ac_lan.send_command直接下发原始指令字节。想折腾底层能力的开发者这就是你的游乐场。出问题了三个最常见的坑和对策1. 设备发现不到八成是 HA 与家电不在同一子网或路由器开了 AP 隔离。先ping设备 IP 确认连通再检查路由设置。2. 连接报错 invalid tokenToken 和 Key 不匹配多半是换过路由器或重置过设备。重新走一遍账号配置流程拉取最新 Token 即可。3. 状态同步慢有些设备状态变化时不会主动上报只能靠轮询。把refresh_interval调小如 15或到custom_components/midea_ac_lan/const.py里看看CONF_REFRESH_INTERVAL的默认行为心里更有数。需要深挖时打开调试日志logger: default: warn logs: custom_components.midea_ac_lan: debug日志里出现connect failed是网络问题decrypt error是密钥问题timeout则是设备没响应——对症下药即可。写在最后把控制权放回自己家我写下这篇文章时家里的空调、加湿器和洗衣机已经离线运转了一个多月——离线指的是厂商云端而不是我。深夜断电的瞬间Home Assistant 里所有 Midea 设备依然在线、依然秒响应这种感觉用过一次就回不去了。如果你的路由器上正好躺着几台美的系家电下一步很简单装好 HACS 里的 Midea AC LAN按向导走完一次账号配置然后——把账号删掉把路由器断外网试一晚。你会明白什么叫设备在你手里而不是在别人服务器里。【免费下载链接】midea_ac_lanAuto-configure and then control your Midea M-Smart devices (Air conditioner, Fan, Water heater, Washer, etc) via local area network.项目地址: https://gitcode.com/gh_mirrors/mi/midea_ac_lan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考