摘要:2025年10月25日,Google 正式切断初代和二代 Nest 学习温控器的云端服务,App 控制、语音控制、自动化全部一夜失效,三百多美元买的"智能"温控器退化成手动旋钮。本文复盘这起事件的完整时间线,拆解智能家居"云依赖"的技术原理,给出一套可直接落地的 Home Assistant 自托管方案,以及选购智能设备时的避坑清单。适合正在搭建智能家居、或担心自家设备"被停产"的开发者。
1. 背景与痛点:你的智能设备,可能随时"降智"
先说个扎心的事实:机械温控器可以用三十年,直到它物理坏掉。而一台依赖云服务的智能温控器,它的寿命不取决于硬件,取决于厂商的服务器还开不开。
这可不是理论推演。Nest 学习温控器,2011年发布初代,2012年二代,2014年欧洲版二代------这三款机器在2025年10月25日被 Google 官方"毕业"了。注意这个日期,写这篇文章的今天刚好是一周年。
被切断的不是"新功能更新",是核心功能本身:
- Nest/Home App 查看设备状态 ❌
- 远程控制 ❌
- 消息通知 ❌
- 手机/平板改设置 ❌
- 第三方语音助手联动、Nest Protect 烟感联动 ❌
- Home/Aaway Assist、多设备节能模式、紧急关闭 ❌
剩下的,是本机手动调温、切模式、设日程。说难听点,这就是一台售价 249 美元起的手动温控器。
Google 的官方说法很"体面":这三款设备都支持了十年以上,在消费电子里算优秀了。还给受影响用户发了升级折扣券。但你想想:温控器是嵌在墙里、接在家用电路上的东西,正常人买它的预期就是"用到坏"。十年服务期对手机来说慷慨,对温控器来说就是半途而废。
💡 我自己去年在 NAS 上部署 Home Assistant 接管米家设备时就被同事问过:"米家 App 不好用吗,折腾这个干嘛?"当时我说不太清楚,现在可以拿 Nest 这事直接甩给他------厂商的服务器不是永动机。
这不是孤例。Sonos 2020年砍旧音箱支持引发用户暴动、SmartThings 多次迁移平台抛弃旧设备、Spotify 2020年停车载Car Thing(2025年1月彻底变砖)。模式都是一样的:硬件还在你手里,灵魂在厂商机房里。
2. 技术原理:云依赖到底"依赖"在哪
要理解为什么断网就变砖,得先看一台"智能"温控器的功能都跑在哪。
2.1 功能分层
一台典型云依赖智能设备的架构长这样:
flowchart TD
| A[手机 App / 语音助手] -->|HTTPS| B[厂商云服务] |
| B -->|WebSocket / 私有协议| C[家里的设备] |
C --> D[本机固件:温控逻辑/传感器/手动操作]
B --> E[账号体系/场景引擎/第三方集成]
E --> F[联动规则/通知/自动化]
关键在于:设备本身往往只保留"执行层"。温度调节算法可能在云端跑,联动规则一定在云端跑,App 和设备之间几乎没有直接通信------所有指令都绕厂商服务器一圈。
这就是为什么断云之后:
- App 连不上设备------App 根本不认识你家的温控器,它只认识云端 API
- 语音控制失效------语音助手的设备列表是云端下发的
- 联动全断------场景引擎在云端,规则无处执行
- 本机手动操作还能用------这部分逻辑烧在固件里,不依赖网络
2.2 本地协议 vs 云协议
对比一下两条技术路线:
| 维度 | 云依赖架构 | 本地优先架构 |
|---|---|---|
| 控制链路 | App → 云 → 设备 | App/网关 → 设备(局域网直达) |
| 断网表现 | 核心功能失效 | 基本全功能可用 |
| 断云风险 | 厂商停服即"变砖" | 不存在单点 |
| 延迟 | 200ms~数秒 | 10~50ms |
| 隐私 | 数据上云 | 数据留在本地 |
| 典型代表 | 早期 Nest、多数云端智能灯 | Zigbee/Z-Wave/Matter 本地设备 |
好消息是行业在往本地化走:Matter 协议明确要求本地控制优先,Thread 边界设备组成本地 mesh,Home Assistant 更是把"local control first"写进了基因。坏消息是,大量存量设备和不少新品仍然是云依赖架构------买之前不查清楚,就是给自己埋雷。
3. 环境准备:一套可落地的自托管救赎方案
被断云的设备怎么办?Nest 这事有个漂亮的后续:开发者 Cody Kociemba 做了开源项目 No Longer Evil,给这三款被弃的温控器刷新固件,恢复远程控制和仪表盘管理。三种玩法:
- 用官方免费服务器:刷固件 → 注册免费账号 → 用 Web 仪表盘,远程控制、日程、离家检测全回来
- Home Assistant 插件自托管:装 No Longer Evil add-on,设备直接进你自己的 HA
- 完全自建服务器:自定义 IP 和端口的独立部署
我的建议是第二种。理由后面讲踩坑时说。
3.1 Home Assistant 部署(Docker 版)
我的实测环境(自己 NAS 上跑了大半年,稳定):
-
Docker Engine 27.x
-
Home Assistant Container 2026.10.x
-
宿主机:x86_64,2核 CPU / 4GB 内存足够
创建数据目录并授权(容器内以 uid 1000 跑,目录权限不对会起不来)
mkdir -p /opt/homeassistant/config
chown 1000:1000 /opt/homeassistant/configdocker run -d
--name homeassistant
--restart=unless-stopped
--device=/dev/ttyUSB0:/dev/ttyUSB0
-v /opt/homeassistant/config:/config
-e TZ=Asia/Shanghai
-p 8123:8123
ghcr.io/home-assistant/home-assistant:stable
起来之后浏览器访问 http://<宿主机IP>:8123,首次进入会引导创建管理员账号。注意 --device 那行是给 Zigbee/Z-Wave 棒子用的,纯 Wi-Fi 设备或刷机 Nest 不需要。
⚠️ 数据目录的 uid 授权是新手第一大坑。我第一次部署时容器无限重启,日志里只有一句
Permission denied,查了半天才发现容器进程 uid 是 1000 而我目录是 root 的。chown 1000:1000一把梭解决。
3.2 接入被弃设备
Nest 温控器走 No Longer Evil 插件路径;其他品牌被弃设备也各有社区方案:
# configuration.yaml 示例:No Longer Evil 接入后的温控器实体
climate:
- platform: nolongerevil
host: 192.168.6.10
port: 8321
# 一条最简自动化:离家关空调逻辑(云端死了也能跑)
automation:
- alias: "离家自动调低温度"
trigger:
- platform: state
entity_id: binary_sensor.presence_home
to: "off"
action:
- service: climate.set_temperature
target:
entity_id: climate.nest_living_room
data:
temperature: 17
这段 YAML 的意义在于:触发和执行全部发生在你家局域网内。没有厂商服务器什么事,断外网照跑不误。这就是自托管和云依赖的本质区别------自动化逻辑的所有权回到你手里。
4. 实战实现:把"云死亡风险"变成可管理的工程问题
原则一句话:新设备进场前做"断云测试",存量设备逐步迁移到本地控制。
4.1 断云测试脚本
设备到手先别急着装墙上,用这个流程测一遍:
#!/usr/bin/env python3
"""断云冒烟测试:断外网后核心功能是否存活"""
import subprocess, time, sys
def check_local(entity: str, ha_url: str = "http://localhost:8123"):
# 断外网模拟:iptables 掉 HA 宿主机的出站流量(别在主力机上跑!)
cmds = [
"sudo iptables -A OUTPUT -d 0.0.0.0/0 -p tcp --dport 443 -j DROP",
f"curl -s -o /dev/null -w '%{{http_code}}' {ha_url}/api/states/{entity}",
"sudo iptables -D OUTPUT -d 0.0.0.0/0 -p tcp --dport 443 -j DROP",
]
for c in cmds:
r = subprocess.run(c, shell=True, capture_output=True, text=True)
print(f"$ {c}\n -> {r.stdout.strip() or r.stderr.strip()}")
if __name__ == "__main__":
check_local(sys.argv[1] if len(sys.argv) > 1 else "climate.nest_living_room")
time.sleep(1)
print("\n判定:HTTP 200 = 本地控制存活;超时/拒绝 = 云依赖,考虑退货或刷机")
跑完看输出:断掉 443 出站后,局域网内的 API 调用还能返回 200,说明控制面在本地;如果直接超时,这台设备的一切都握在厂商手里。
4.2 架构迁移路线
flowchart LR
A[现状:全部云依赖] --> B{设备支持本地协议?}
| B -->|Matter/Thread/Zigbee| C[直接接入本地网关] |
| B -->|仅云 API| D[社区集成/HACS 方案] |
D --> E[有方案 → 半本地化]
D --> F[无方案 → 淘汰换本地协议设备]
C --> G[Home Assistant 统一自动化]
E --> G
F --> G
G --> H[云只作远程访问通道<br/>不再是单点]
迁移优先级很现实:先迁安防类 (门锁、摄像头,断网失效代价最高),再迁环境类(温控、照明),最后是娱乐类。我自己家里的顺序就是这么排的,米家系设备通过 Miot Auto 集成全量进了 HA,云端只剩远程访问一条通道------就算哪天厂商整活,家里的自动化照样转。
5. 效果验证:云依赖 vs 自托管实测对比
拿我自己的部署数据和公开事件做对照:
| 对比项 | 云依赖方案 | Home Assistant 自托管 |
|---|---|---|
| 指令延迟 | 300ms~2s(跨云往返) | 10~50ms(局域网) |
| 断外网 | 自动化失效 | 自动化照常执行 |
| 厂商停服 | 功能归零(Nest 实证) | 不受影响 |
| 设备支持广度 | 官方生态内 | 2000+ 集成,含大量被弃设备 |
| 维护成本 | 零 | 需自行升级备份(每月约10分钟) |
| 学习曲线 | 打开App即用 | 初次配置约半天 |
延迟数字不是拍的,是我在自己网络上用 HA 的 trace 日志统计出来的量级。诚实说一句:自托管不是免费的午餐,你付出的是维护责任,换来的是功能所有权。对动手能力一般的人来说,先从"关键设备本地化"做起,不必一步到位。
还有一个容易忽略的收益:隐私。云依赖方案里,你家什么时候有人、什么时候睡觉、空调开多少度,全在厂商数据库里。本地化之后这些数据一个字节都不出户。
6. 踩坑记录
这一段是我在 NAS 上折腾 HA 大半年的真实账单,按疼痛程度排序:
- uid 权限坑 :容器跑在 uid 1000,数据目录给了 root,无限重启。前文说过,
chown 1000:1000解决。排查思路:docker logs里找 Permission denied,别急着重建容器。 - 升级变砖坑 :大版本升级前必须备份
/config,我吃过一次升级后集成全红的亏,回滚备份十分钟救回来。现在养成习惯:升级前ha backups new --name pre_upgrade。 - 官方 App 远程访问坑:Nabu Casa 要订阅,自己搞 TLS 又要域名又怕暴露端口。最后用的方案是安全隧道回家(WireGuard)+ HA Companion App 直连,零订阅费且不暴露公网面。
- 设备"半本地"陷阱:有些设备号称本地控制,实际上只有开关本地、状态同步走云。判定标准就是第 4 节那个断云测试------别信宣传页,信实测。
- Nest 刷机门槛:No Longer Evil 需要物理拆机接线刷固件,动手能力一般的话谨慎评估,拆坏排线就得不偿失了。这是我把"用插件自托管"排在"完全自建"前面的原因------能少动手就少动手。
7. 总结与展望
Nest 温控器事件给所有人上了一课:智能设备的"智能",如果跑在别人的服务器上,那只是租来的。十年支持期听起来长,但对嵌墙家电来说不够。而 No Longer Evil 这样的开源项目证明了另一件事:只要设备固件可以被替换,"停产"就不是死刑。
落到操作层面,三件事现在就能做:
- 新买智能设备前,查三样:支不支持 Matter/本地 API、社区有没有 HACS 集成、厂商的历史停服记录
- 已有设备跑一遍断云测试,摸清自己的"云暴露面"
- 用一台旧电脑或 NAS 搭 Home Assistant,先把安防和环境类设备迁进去
云不是敌人,单点才是。厂商云做远程访问的便利层没问题,但核心控制权和自动化逻辑,应该留在你自己家里。
你的智能家居里有几台设备是纯云依赖的?如果明天它们的云服务关停,哪些会立刻罢工?欢迎在评论区报一下型号,我整理一份"断云存活清单"更新到下一篇文章里。