📌 项目地址:mbillow/localthings | ⭐ 1,063 颗星 | 🔧 Python

三星洗衣机跑完一缸,官方 SmartThings 集成可能过十几秒才更新状态;家里断网,所有三星家电直接从 Home Assistant 里消失。这不是玄学,云端集成就是这样工作的:指令和状态都要绕三星服务器一圈。

LocalThings 干的事很直接:在局域网里和三星家电通信,不登账号,配置完成后不再联系三星服务器。支持推送的家电状态变了就实时上报,其余的每 30 秒轮询一次。断网时洗衣机剩余时间照样能查,自动化照常触发。

有一点要说清楚:LocalThings 只保证自己不向三星发数据,家电和三星云的那条连接它不去动。想彻底断掉家电联网,得自己在路由器上封。

不是逆向,家电本来就说着标准协议

这是这个项目最值得说的部分。三星的联网家电是 OCF(Open Connectivity Foundation)设备,本地接口是有公开规范的。LocalThings 通过 /oic/res 发现家电暴露的资源,从 /oic/d 读出设备类型(洗衣机就是 oic.d.washer)。某个状态如果家电既提供标准 OCF 资源又提供三星私有扩展,LocalThings 优先用标准那份。

通信走 CoAP(RFC 7252),跑在加密的 DTLS 会话里,用 X.509 客户端证书认证。实时推送靠 CoAP Observe 实现。

这套做法比纯逆向靠谱。协议是公开规范,固件小更新一般不会让它突然变样。

支持的设备清单相当长

空调(含多联机)、洗衣机、烘干机、洗烘一体机、冰箱(泡菜冰箱和酒柜也有)、烤箱、灶具和油烟机、洗碗机、微波炉、扫地机器人(早期支持)、空气净化器、除湿机、净水器、EHS 热泵,连回音壁的设置和状态都能读。

能控制什么取决于家电自己上报什么。典型功能:开关机、程序和模式选择、启动/暂停/停止、温度设定、剩余时间和预计结束时间、门和童锁状态、能耗、滤网状态、报警。

兼容性:2022 年之后的大部分三星家电都能用;一些更早的洗衣机、空调和嵌入式烤箱走旧的本机接口(TCP 8888),README 有专门一节讲。配置时自动检测家电用的是哪种接口,检测不到会直接告诉你。

配置前做两件事

配置只需要给家电的 IP 地址,LocalThings 会自动识别类型和型号,生成对应的控件和传感器。

所以第一件事是在路由器上给家电做 DHCP 静态分配,固定 IP。不然家电换个地址,集成就断了。

第二件事:遇到识别不了的设备别急着放弃。如果某台家电配置成功但没被认出来,或者缺某个控制项,Home Assistant 会弹提示请你下载诊断数据。维护者通常凭这一份诊断文件就能补上支持,README 的 “Reporting a capability gap” 一节写了怎么提交。

和官方集成对比

维度 SmartThings 云集成 LocalThings
三星账号 需要 不需要
状态更新 依赖云端 本地推送 / 30 秒轮询
断网后 不可用 可用
协议 云 API OCF / CoAP over DTLS

Python 写的 Home Assistant 自定义集成,安装细节和许可证以仓库页面为准。条件符合的话,它可能就是你要找的东西:把 SmartThings 云集成从系统里删掉的最后一环。

这篇文章对你有帮助吗?

发表回复