智能家居云依赖排坑:从 Nest 温控器被远程“变砖“到 Home Assistant 自托管救赎

摘要: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 和设备之间几乎没有直接通信------所有指令都绕厂商服务器一圈。

这就是为什么断云之后:

  1. App 连不上设备------App 根本不认识你家的温控器,它只认识云端 API
  2. 语音控制失效------语音助手的设备列表是云端下发的
  3. 联动全断------场景引擎在云端,规则无处执行
  4. 本机手动操作还能用------这部分逻辑烧在固件里,不依赖网络

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,给这三款被弃的温控器刷新固件,恢复远程控制和仪表盘管理。三种玩法:

  1. 用官方免费服务器:刷固件 → 注册免费账号 → 用 Web 仪表盘,远程控制、日程、离家检测全回来
  2. Home Assistant 插件自托管:装 No Longer Evil add-on,设备直接进你自己的 HA
  3. 完全自建服务器:自定义 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/config

    docker 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 大半年的真实账单,按疼痛程度排序:

  1. uid 权限坑 :容器跑在 uid 1000,数据目录给了 root,无限重启。前文说过,chown 1000:1000 解决。排查思路:docker logs 里找 Permission denied,别急着重建容器。
  2. 升级变砖坑 :大版本升级前必须备份 /config,我吃过一次升级后集成全红的亏,回滚备份十分钟救回来。现在养成习惯:升级前 ha backups new --name pre_upgrade。
  3. 官方 App 远程访问坑:Nabu Casa 要订阅,自己搞 TLS 又要域名又怕暴露端口。最后用的方案是安全隧道回家(WireGuard)+ HA Companion App 直连,零订阅费且不暴露公网面。
  4. 设备"半本地"陷阱:有些设备号称本地控制,实际上只有开关本地、状态同步走云。判定标准就是第 4 节那个断云测试------别信宣传页,信实测。
  5. Nest 刷机门槛:No Longer Evil 需要物理拆机接线刷固件,动手能力一般的话谨慎评估,拆坏排线就得不偿失了。这是我把"用插件自托管"排在"完全自建"前面的原因------能少动手就少动手。

7. 总结与展望

Nest 温控器事件给所有人上了一课:智能设备的"智能",如果跑在别人的服务器上,那只是租来的。十年支持期听起来长,但对嵌墙家电来说不够。而 No Longer Evil 这样的开源项目证明了另一件事:只要设备固件可以被替换,"停产"就不是死刑。

落到操作层面,三件事现在就能做:

  1. 新买智能设备前,查三样:支不支持 Matter/本地 API、社区有没有 HACS 集成、厂商的历史停服记录
  2. 已有设备跑一遍断云测试,摸清自己的"云暴露面"
  3. 用一台旧电脑或 NAS 搭 Home Assistant,先把安防和环境类设备迁进去

云不是敌人,单点才是。厂商云做远程访问的便利层没问题,但核心控制权和自动化逻辑,应该留在你自己家里。

你的智能家居里有几台设备是纯云依赖的?如果明天它们的云服务关停,哪些会立刻罢工?欢迎在评论区报一下型号,我整理一份"断云存活清单"更新到下一篇文章里。

相关推荐
BSD_HY3 小时前
智能家居中控面板的结构暗战:薄膜开关为什么还没退场
矩阵·智能家居·薄膜开关·源头工厂
硅基造物主3 小时前
STM32 从 0 到 1 做智能家居(二):把开发环境一次配好
stm32·mqtt·智能家居·hal库·esp-12f
诺伦5 小时前
Manus 2.0 推出个人 Agent 平台 Cue:通用编排与垂类闭环,架构差在哪 | RiseClaw玄策
架构设计·ai agent·manus·agent编排·增长运营agent
星恒讯工业路由器7 小时前
Modbus透传和Modbus网关有什么区别?从字节转发到协议翻译的选型思路
网络·物联网·modbus·工业物联网·工业网关·rs485·协议转换
李永奉8 小时前
杰理可视化SDK开发-音频录制功能使用教程
笔记·单片机·嵌入式硬件·mcu·物联网·音视频
钱工的门窗技术笔记8 小时前
铝木复合门窗中木材的角色分类与界面可分解性:结构判定、失效路径与维护设计
网络·物联网·数据分析
艾络迅Acceleronix8 小时前
气象监测:STM32+EG800Z AT + 艾络迅平台实战|气压/光照/雨量采集全流程
stm32·单片机·嵌入式硬件·mcu·物联网·1024程序员节
硅基造物主8 小时前
STM32 从 0 到 1 做智能家居(一):先想清楚要做什么
stm32·mqtt·嵌入式·智能家居·hal库·esp-12f
注塑机数据采集联网9 小时前
中科晟达注塑机 MES 系统:从车间到数字化的智能制造实践
大数据·数据仓库·人工智能·物联网·制造·数据库架构