用 AI 搭一个会照顾人的家

目录
  1. 先分清每件事由谁来做
  2. 网络:有线打底,旁路由补位
  3. 线怎么走
  4. J4125:一台小主机,几份差事
  5. IPv6:绕开主路由
  6. 设备:先看能不能进米家
  7. 米家和 Home Assistant 怎么分工
  8. 自动化写好以后,还得过日子试
  9. 洗衣机的状态不一定可信
  10. 进门不一定是回家
  11. 家庭影音:发链接入库
  12. Tailscale:从外面连回家
  13. 随时查家里状态的 AI
  14. 让 AI 动手的几条规矩
  15. 用了一阵的真实感受
  16. 住着舒服,比多几个功能重要
  17. 参考

我想要的智能家居,得能处理一些很小的事:洗衣机洗好了,提醒一声;有人在睡觉,就先别说;出门几分钟拿个快递,回来不用再欢迎一遍。单独看都不难,真要写成自动化,才发现每句话后面都有好几个条件。

我家的 Home Assistant 现在跑着十几条这样的自动化,大多是我提需求,Claude Code 帮我写的,用的是 Opus 5.5。给它接好读取设备和历史记录的工具后,它能查实体、写配置,也能回头检查为什么某次提醒没响。最省心的是出了问题还能接着改,不必每次从文档里重新找起。

日常开灯、关阀和播报,仍然由网关或 Home Assistant 按规则执行,不需要每次都问大模型。AI 主要帮我把这些规则搭起来,另外也接了一个随时能查家里状态的助手。下面记的是我家这套配置,以及住进去以后才发现的几个问题。

先分清每件事由谁来做

截至写这篇文章时,家里接入了 117 台设备,其中 105 台来自米家。Home Assistant 里有 3825 个实体。一个开关、一项温度读数、一个运行状态都可能各占一个实体,并不是又买了几千台设备。

最开始要定下来的,是哪些事交给米家,哪些事交给 Home Assistant。我的分法是:按开关亮灯、漏水关阀这些要反应快、断外网也得工作的,放在米家网关本地;跨品牌和判断条件多的,放在 Home Assistant;远程访问统一走 Tailscale。

一件事在家里是怎么跑完的
  1. 设备1床头三开开关「已转无线」:按键只发信号,灯一直通电
  2. 米家网关2本地联动单击右键 → 执行「主卧明亮模式」
  3. 设备3主卧筒灯亮。全程不出家门,HA 不参与

高频、对延迟敏感的动作,交给米家网关本地跑。

外网断了断网、HA 宕机都照常

选一个日常场景,看设备、网关、Home Assistant 和外网分别做了什么。这里的断网指外网中断,设备和网关仍有电。

网络:有线打底,旁路由补位

灯偶尔不听话,可以再按一下;家里几十台设备时不时离线,就很难分清是自动化写错了,还是网络出了问题。所以装修时,我先把网线铺好。

线怎么走

每个房间都预埋了网线,装修时统一换成了超六类线。Wi-Fi 交给有线回程的 AP,不用无线中继。封墙后再换线麻烦,点位和走线值得提前多想一遍。

  • 入户:光猫负责拨号,出两根线。一根进锐捷网关的 WAN 口,家里的 IPv4 都从这里走;另一根直接接到 J4125 的一个空网口,只给 IPv6 用,原因在后面。
  • 主路由和 AC:锐捷 RG-EG209MG-P。家里设备的地址、网关都由它发,自带 PoE 口,AP 用一根网线就能供电和联网,也由它统一管理。
  • AP:客厅一台 RG-EAP272(MG) 吸顶 AP,主卧、次卧各一台,都是 Wi-Fi 7。在用的米家中枢网关也放在客厅电视附近。家里走动时的切换目前比较顺,但漫游效果也取决于终端和覆盖情况。
  • 电竞房:预留两个网口,主机走有线。
  • 机柜:放在玄关鞋柜里,有 J4125、Mac mini、锐捷网关和一台备用的小米中枢网关。鞋柜空间小,PDU 排插、短网线和散热都得一起安排。
不同的流量,走不同的路
光纤WAN 口IPv6 专用LANPoE 供电Wi-Fi互联网IPv4 在运营商 NAT 后光猫拨号 · 只有一个 /64锐捷网关IPv4 网关 · DHCP · ACJ4125旁路由离线3 台 AP吸顶Mac mini影音库电竞房两个网口电视 · 手机光纤WAN 口IPv6 专用LANPoE 供电Wi-Fi互联网IPv4 在运营商 NAT 后光猫拨号 · 只有一个 /64锐捷网关IPv4 网关 · DHCP · ACJ4125旁路由离线3 台 AP吸顶Mac mini影音库电竞房两个网口电视 · 手机
不依赖 J4125

设备从锐捷拿到地址,网关也是锐捷。IPv4 流量经 AP、锐捷、光猫出去,J4125 不在这条路上。

每根线都按实际接法画出。选一种流量,看数据走哪几段线,以及离不离得开 J4125。

J4125:一台小主机,几份差事

为什么要多这一台机器,是两个现实条件逼出来的。一是公网 IPv4 很难拿到:宽带出口在运营商级 NAT 后面,外面主动连不进来,找运营商要公网 IP 也不一定给。二是光猫的超级管理员密码在运营商手里,改不了桥接,路由器自己拨不了号;IPv6 那边,光猫也只在自己的 LAN 口给出一个前缀。锐捷对这两件事都帮不上忙,这些活就落到了 J4125 身上。

J4125 是一台用赛扬 J4125(四核,处理器功耗约 10 瓦)的软路由小主机,带四个 Intel 2.5G 网口,装的是 iStoreOS(基于 OpenWrt)。它在家里当旁路由:地址固定在家庭网段里,自己的网关指向锐捷,不接管全屋的 DHCP。设备默认仍然从锐捷拿地址和网关,想用它的功能再单独指过去。

它身上的活不少:

  • 代理:跑 OpenClash,fake-ip 模式,国内直连,其余按规则分流。需要的设备把网关和 DNS 改成 J4125,就能透明代理;不方便改网关的,在应用里填它的 HTTP/SOCKS 端口。J4125 自己的流量也走代理,所以 Tailscale 要单独放行,后面会说到。
  • IPv6 中继:把光猫下发的 IPv6 前缀带进家里,下一节细说。
  • Tailscale 子网路由:把家里的网段发布出去,在外面也能访问没装客户端的设备。
  • Home Assistant:用 Docker 跑,米家、海尔两套集成和所有自动化都在这里。
  • 录像备份:外挂一块 1 TB 的监控盘,开 SMB 给米家摄像头做定时备份。

电视用得最多。在电视的网络设置里改成手动 IP,网关和 DNS 都填 J4125,YouTube、Netflix 的 App 就能直接打开,不用在电视上装任何代理软件。几个细节:

  • DNS 必须一起改。 fake-ip 模式靠 J4125 的 DNS 把域名换成一个内部的假地址,流量到了网关才知道该交给代理。只改网关不改 DNS,流量认不出来。
  • 别让电视走 IPv6 绕过去。 家里有了 IPv6,但 OpenClash 只代理 IPv4。它的 DNS 不返回 IPv6 地址,电视就只会用 IPv4 连这些网站。
  • 屏蔽 QUIC。 YouTube 默认用基于 UDP 的 QUIC,我在 OpenClash 里把它屏蔽了,App 会退回 TCP,走代理更稳。
  • Netflix 看节点。 它会识别代理和机房 IP,能不能看、能看哪个地区的片库,取决于节点出口的 IP,和家里怎么配关系不大。

旁路由的好处是出了事影响小。J4125 重启、升级或者被我改坏了,家里照样能上网、看影音库,停掉的只是代理、IPv6、Home Assistant 和远程访问。坏处也在这里:这么多事都压在一台小主机上,改它之前我都会先备份配置;人不在家时远程改网络,还会先放一个超时自动回滚的脚本,免得失联了只能跑回去。

IPv6:绕开主路由

运营商开通 IPv6 以后,光猫拨号拿到前缀,但只在自己的 LAN 口通告一个 /64。超管不在我手里,没法在光猫上打开前缀委派(DHCPv6-PD),试着改前缀长度也直接报错。/64 已经是 SLAAC 能用的最小网段,没法再切一块给锐捷后面的网络,剩下的办法只有两种:NAT66,或者把这个 /64 原样中继进家里。锐捷不支持中继,NAT66 也配不起来,只好让 J4125 绕开它:

  1. 单独拉一根线。 J4125 拿出一个网口,不放进家里的网桥,直接接光猫的空 LAN 口。IPv4 照旧走锐捷,这根线只管 IPv6。
  2. 三项都设成中继。 用 OpenWrt 自带的 odhcpd,把 RA、DHCPv6、NDP 都设成 relay:光猫那一侧是上游,家里这一侧是下游。手机、电脑用 SLAAC 自己生成公网 IPv6 地址,不需要 NAT。
  3. 上游口别要地址。 接光猫的那个口要设 accept_ra=2,并且不向光猫申请 DHCPv6 地址(reqaddress none),否则光猫每四十秒回一次 No Binding,连接来回掉。accept_ra 要写进 sysctl 配置,不然重启后中继就失效了。

这一路踩的坑:

  • 开通不等于生效。 运营商说后台开好了,装维上门当场测还是不通;光猫断电重启三分钟后,一下全通了。遇到“说开了但不通”,先重拨再下结论。
  • 新设备有一段慢热期。 中继要先学到设备的地址,出站才通。我见过一台电脑拿到地址后等了约十分钟才能上网,这段时间里别急着改配置。
  • 前缀会变。 光猫重拨后十几分钟里,前缀换过好几次才稳定,下次重拨还会再变。所以别拿 IPv6 地址做固定的域名解析。
  • 主路由自己的 IPv6 关掉了。 锐捷 WAN 口的 IPv6 开着时,J4125 自己的 IPv6 回程出过异常,关掉以后恢复。具体成因没完全查清,现在就让它保持关闭。
  • IPv6 要单独看防火墙。 IPv4 有运营商 NAT 挡着,外面主动连不进来;IPv6 没有这层。刚打通时,J4125 上一个本该只在内网用的服务端口,一度能从公网直接访问,后来关掉了入站放行。现在接光猫那一侧默认拒绝入站。

打通 IPv6 最大的收益在 Tailscale。IPv4 这边,锐捷没开 UPnP 或 NAT-PMP,运营商 NAT 映射出去的端口又隔几分钟就变,打洞经常失败,只能走中继。有了 IPv6,手机在外面用蜂窝网络时也能和家里直连,老房子的路由器和 J4125 之间直连约 6 毫秒。

路由器配置也踩过一次坑:AI 用逆向接口改 DNS 后,当晚网络出了故障。这件事让我把“路由器只读”写进了后来的使用规矩。

设备:先看能不能进米家

我选设备时优先看米家,主要是想少维护几套平台。常用的开关、灯、传感器都能在这里找到,再通过小米官方的 xiaomi_home 集成接入 Home Assistant。不过,能进米家不等于所有功能都能带进 Home Assistant,买之前还得查具体型号和需要的实体。官方说明也列出了兼容范围。

我家大部分设备走的是米家的蓝牙 Mesh 2.0,开关、温控器、阀门控制器都是。它们不连 Wi-Fi,直接和中枢网关通信,常电的设备还能互相转发信号。配合网关本地执行的自动化,宽带断了,按开关照样亮灯,场景照样能跑,漏水照样关阀;停掉的只是在外面用手机遥控、让小爱播报这类要走云端的功能。中枢网关也因此成了全屋最关键的一台设备,好在家里还留着一台备用的。

下面是我家的选型和当时的购入价或询价,部分来自闲鱼,不能当作现在的统一报价。

用途我的选型当时价格
米家网关小米中枢网关 ×2(一台在用,一台备用)约 300 元/台
墙面控制小米智能中控屏 ×2,自带人体存在感应约 300–370 元/台
开关领普蓝牙 Mesh 智能开关,在闲鱼收了一批二手单开 48、双开 58、三开 68 元
空调接入中弘 B19SE 中央空调控制器558 元
温控面板YOOMI 三合一温控器 MESH2.0 ×5,替换原来的老面板约 224 元/个
漏水关阀钻石阀门控制器 Mesh2.0 + 小米水浸卫士 2 ×6阀门 105–153 元,水浸约 60 元/只
存在感应领普人体存在筒射灯、领普 ES3 人体存在传感器视型号
播报小米智能音箱 Pro视渠道
空气净化米家空气净化器 6 Pro,带 PM2.5 和甲醛检测视渠道
室外安防小米智能室外摄像机 4 Pro + 64 GB TF 卡404 + 98 元
主机J4125 小主机、Mac mini视配置

其中有几处,光看设备清单不太容易明白。

老中央空调要分两步接。 原来的线控面板接不进米家。我用中弘 B19SE 控制器接到空调通信总线上,让 6 台室内机出现在米家里;再用 YOOMI 三合一温控器替换墙上的老面板,同时管空调、地暖和新风。这套能不能用,要先确认空调品牌、机型和协议都在兼容范围内。面板上的“空调开关”会直接控制室内机,测试时不能当成一个无关紧要的虚拟按钮。

智能灯要一直有电。 领普开关的按键可以设成“已转无线”:按键只发信号,不再直接切断灯的电源,再由米家自动化决定做什么。我家主卧门口的三开,三个键分别对应“睡觉”“温馨”“明亮”。这样关灯以后,灯还在线,下次场景调用才能找到它。代价是按键控制也依赖网关和联动正常工作。

漏水关阀这笔钱花得值。 六只水浸卫士放在厨房、洗碗机下、洗衣机下、两个卫生间和阳台,任意一只报警,就由米家网关在本地关掉进水总阀。传感器加阀门不到 600 元,安装后要实际测一次报警能不能带动关阀。

海尔洗衣机、烘干机和冰箱则通过 HACS 里的海尔集成接入,天气接和风天气。这些跨平台的数据,留给 Home Assistant 处理。

米家和 Home Assistant 怎么分工

我家米家里有 42 条自动化,执行方式都标着“网关本地执行”:开关按键对应的灯和场景、天黑时的人体感应亮灯,以及漏水关阀。比如玄关要同时满足有人、环境光低于 100 lux 才亮灯。这些不依赖外网或 Home Assistant,但设备供电和本地通信还是要正常。

Home Assistant 主要补三件事:

  1. 跨品牌联动。 海尔洗衣机洗好了,让小爱音箱说一声。
  2. 组合多个条件。 判断“全屋刚才没人,现在有人回来”,要一起看传感器、灯和时间。
  3. 把入口放到一起。 首页面板直接调用米家里的离家、观影、就餐等手动场景,场景内容仍在米家维护。我家的“离家”涉及 63 个设备,包括灯、新风、6 台空调和室外摄像头,不必在两边各写一遍。

米家增删设备后,还要在 xiaomi_home 的“配置 → 更新设备列表”里同步;面板里引用的实体也可能需要调整。我会让 AI 对照设备清单和实体注册表,把这些遗漏找出来。

自动化写好以后,还得过日子试

下面这些是 Home Assistant 里实际在跑的规则。温度阈值和播报时间按我家的设备、作息设置,换一家需要重新调。

类别自动化触发和限制
安全漏水报警全天有效;打破勿扰、取消静音、音量至少六成,每分钟一轮,传感器恢复后停止
安全冰箱门没关任一门开超过 2 分钟
安全冰箱冷藏、冷冻温度异常冷藏高于 8 度或冷冻高于 −12 度,持续 20 分钟;夜里发现的等到 7:30 再确认一次
家务洗衣机洗好了、干衣机烘好了07:30–22:30 才播,30 分钟内只播一次
家务衣服忘了取洗好一小时,仍没有取衣迹象;筒门状态不可靠,改用生活阳台有人活动作为替代信号
家务洗涤剂、柔顺剂、过滤器提醒延后 20 秒,免得和“洗好了”撞在一起;12 小时内只播一次
家务每周电池检查每周六上午十点;全部正常就不播
问候回家问候06:30–23:30 内,六个条件全部满足才说,两小时内只说一次
问候工作日早安避开法定假日;昨晚有人在家、早上第一次走出卧室时播报,附带天气提醒
记录扫地机开始清扫、洗衣待取不出声,只记时间,供问候语引用
巡检漏水和冰箱门每 5 分钟和每次重启后检查,补上可能漏掉的报警

播报还得排队。小爱音箱收到新文字会立刻切换,连发两句时,第二句会把第一句掐断。我把所有消息交给同一个脚本:普通消息排队,漏水这类紧急消息可以打断它。脚本按每字 0.3 秒、外加 3 秒估算一句话要说多久,再发下一句。这只是估时,并不能保证音箱真的播完了。

洗衣机的状态不一定可信

最初,“衣服忘了取”的规则靠筒门开关判断。实际洗过一次后,查历史才发现:筒门一直报“关”,开门取衣也没变;洗完后的状态判断也没有按预期触发,所以该有的提醒没响。

后来让 AI 分开改了两处:用洗涤阶段判断是否洗完,用生活阳台的人体存在传感器推测有没有人取衣。去过阳台当然不等于取过衣服,这个替代办法会漏提醒,但比盯着一个从来不变的筒门状态实用。自动化里的实体名字看起来再准确,也得和真实动作对一次。

进门不一定是回家

书房、电竞房、厨房、餐厅和阳台没有人体存在传感器,生活阳台有。“全屋无人”没法直接读一个值,只能综合已有的信号推断。

它凭什么说“欢迎回家”
电梯间光厅玄关厨房生活阳台书房客卫电竞房次卧餐厅客厅主卧主卫阳台
18:40傍晚玄关空了 10 小时
  1. 时间在 06:30–23:30 之间18:40
  2. 两小时内没问候过是
  3. 玄关此前 30 分钟没人离开 10 小时
  4. 其余人体传感器都没人都没人,且 30 分钟没变化
  5. 各房间的灯都关着都关着
  6. 音箱没在播放是
它会说

傍晚好,欢迎回家!洗衣机洗好了,衣服记得取出来。累了一天,先坐下歇会儿。

改个条件
选一个场景,看有人进门后它怎么判断。也可以点房间放人,再点一次表示有人但没开灯。图中把各处状态保持的时长做了简化,欢迎词取自实际话术池。

我把灯也算进判断:书房虽然没有传感器,灯亮着时就先当有人。可如果那个人没开灯,规则仍可能误判。图里选“书房没开灯”,就能看到它一边发现不了人,一边照常说欢迎。这是目前还在的盲区。

重启也会影响判断。Home Assistant 重启后,实体的状态时间戳可能集中刷新,不能拿来直接算离家时长。现在检测到相关时间戳都挤在三分钟内,就跳过“这么快就回来啦”这类依赖时长的话。

问候语也是 AI 帮忙写的程序在拼:按时段选开头,再补一两件相关的事,比如洗好的衣服、天气或周末。两个人的生日、农历节日和节气也放了进去,节气和节日预先算到 2030 年;最近说过的 45 句话会被记下来,尽量避免天天重复。这里没有每次调用大模型现场写词。

家庭影音:发链接入库

影音库跑在 Mac mini 上的 Emby,文件放在两块硬盘里。写这篇时有 273 部电影、28 部剧,共 2251 集。客厅电视用 Emby 客户端,手机和电脑在外面通过 Tailscale 访问。

入库流程也让 AI 帮我接了起来。现在把网盘分享链接发给它,说“入库”,后面按这几步走:

  1. 读取分享内容,结合 Sonarr(剧集)或 Radarr(电影)确认作品和集数;
  2. 转存到自己的网盘,用 alist 提供 WebDAV 访问;
  3. 用 rclone 增量下载,我这里开会员后通常是每秒 30–36 MB;
  4. 交给 Sonarr 或 Radarr 重命名、归档到对应硬盘;
  5. 通知 Emby 刷新,刮削海报和简介。

导入时遇到过两个问题。我这套外部下载流程用 DownloadedEpisodesScan 没能完成认领,后来改用 ManualImport。网盘里的番剧还经常只有 01.mkv 这样的文件名,得先核对季度和集数,再映射成 S01E01,不能只靠文件顺序猜。

我给入库流程定的默认规则是:已有文件就跳过,不删除、不替换。 画质升级要单独提出,再确认覆盖范围,免得整理片库时把旧版本顺手删了。

电视端也有个小插曲。TCL 电视上的 Emby 客户端(2.5.03g)第一次能登录,退出再进却一直转圈,提示“无效用户名和密码”。让 AI 在 J4125 上抓包后,没看到 App 发出登录请求,于是顺着自动登录去查。把启动方式改成“当前用户登录”后恢复了。至少这次,问题不在密码。

Tailscale:从外面连回家

我家的宽带没有公网 IPv4,出口在运营商级 NAT 后面,单靠 DDNS 和路由器端口映射没法从外面连进来。我用 Tailscale 把手机、电脑和家里的主机接到同一张私有网络里,不必把 Home Assistant、Emby 或路由器后台直接开放到公网。

一张网连起所有设备
家 · 192.168.110.0/24手机在外,4G/5GMuseMeta 云端虚拟机老房子红米 AX6000自建 DERP成都中继J4125HA · 子网路由锐捷网关管理后台Mac miniEmby 影音库光猫没有公网 IPv4家 · 192.168.110.0/24手机在外,4G/5GMuseMeta 云端虚拟机老房子红米 AX6000自建 DERP成都中继J4125HA · 子网路由锐捷网关管理后台Mac miniEmby 影音库光猫没有公网 IPv4
http://<Mac 的 tailnet 地址>:8096

手机和 Mac mini 都在 tailnet 里,Emby App 填 Mac 的 Tailscale 地址就行。能打洞就点对点直连;打不通,就走自建的成都 DERP 中继。我这里到中继的延迟约十毫秒,看片还得看带宽。

选一种用法,看访问路径和地址。实线与虚线分别表示直连和中继两种可能,实际走哪条要看当时的连接状态。

我家是这样接的:

  1. 先让主机入网。 手机、电脑、Mac mini、J4125 都装 Tailscale,老房子的红米 AX6000 也装上。
  2. 给装不了客户端的设备留一条路。 J4125 开启 IP 转发后,用 tailscale set --advertise-routes=192.168.110.0/24 发布家里的网段,在管理后台批准路由,并配置访问规则。客户端还要接受这条路由,Linux 客户端尤其要检查。具体步骤见子网路由文档。
  3. 直连不通时用国内中继。 我这里连官方 DERP 的延迟偏高,于是在成都的云服务器上自建了一个。我的网络到它大约十毫秒,这个数跟所在地和线路有关,远程看片还得看带宽。
  4. 给管理入口配 HTTPS。 路由器后台用自签证书,入口是 https://<机器名>.<tailnet>.ts.net:8443。在 J4125 上执行 tailscale serve --bg --https=8443 https+insecure://<路由器局域网地址>:443,Serve 会签发正规证书并反代过去。官方示例多是代理本机端口,但填局域网地址我这里实测可用。访问范围仍受 tailnet 策略限制。

改 Tailscale 的单项设置,我用 tailscale set。tailscale up 在漏写已有参数时会提示,并给出包含旧设置的命令;--reset 才是显式重置未指定设置的选项。命令说明里有这个区别。

如果还跑着 Clash,DNS 和代理规则也要一起看:

  • OpenClash(路由器上):Tailscale 的连接要避免被透明代理绕走,相关域名要能正常解析。我遇到过代理节点故障后,Tailscale 已有连接还通,控制面却断了四天多才发现。
  • Clash Verge(Mac 上):fake-ip 模式曾把 *.ts.net 解析到 198.18 开头的假地址。我在 fake-ip-filter 里加了 +.ts.net,并把这类域名交给 Tailscale 的 DNS 100.100.100.100 解析;前提是本机 Tailscale 已经连上。

随时查家里状态的 AI

配置自动化时我用 Claude Code,出门后想随口查家里,则接了 Muse。Meta 在 2026 年 9 月发布的这个助手运行在独立的云端虚拟机里,关掉 App 后也能继续做事。

我在 Muse 的虚拟机里装了 Tailscale,让它连到 Home Assistant;再创建一枚单独命名为 muse 的长期访问令牌,便于以后找到并撤销。给它常用实体的说明后,就可以问“冰箱门关好了吗”“洗衣机洗完了吗”,它通过 REST API 查状态,再把结果整理成一句话。出差时,也可以另外安排定时查询和汇报。

这里有个容易混淆的地方:写上“只读”,不代表令牌就只有读取权限。 长期令牌沿用所属账号的权限,普通用户也能控制实体;令牌叫 muse 只是便于管理,不会自动给它加上权限限制。Home Assistant 权限文档区分了普通用户和只读权限。

Tailscale 访问规则可以把它能连接的目标缩到 J4125 的 8123 端口,但读状态和控制设备都经过这个端口。长期指令里的“不要控制空调、地暖、门锁”只能约束行为,不能替代接口权限。要真正做到只读,还需要验证过的只读授权,或在中间加一层只暴露指定状态的接口,并阻断它直连 Home Assistant。这是下一步需要收紧的地方,当前这套直连令牌的做法还没有做到。

另外,查询结果会进入 Muse 的云端环境。Tailscale 保护的是连接过程,并不意味着家里的状态始终留在本地。

让 AI 动手的几条规矩

AI 帮我省了不少配置时间,也误操作过。一次测试温控器,客厅中央空调以制冷模式开了 37 秒;另一次用逆向接口改路由器 DNS,只复刻了网页“保存”按钮的一部分动作,当晚整网告警,第二天逐台重置 AP 才恢复。后一次的因果还没完全查清,不能断言就是它改坏了,但我不想再这样试一次。

现在我按操作会影响什么、出错后能不能恢复,给它划了几条规矩。

  • 改配置前留备份。 Home Assistant 配置改完要跑 check_config,确认退出状态和输出,再重载;校验通过以后,还要看实际有没有按预期运行。
  • 测试会动到设备的操作,先问人。 即使只是对已关闭的地暖再发一次“关闭”,也要留意会不会连带触发别的动作。
  • 夜里不测试。 21:45 到次日 7:30,不开灯、不出声、不执行会改变状态的场景。这个时间是给调试设的,比日常提醒更严格。
  • 密码由人自己输入。 AI 可以帮忙打开页面,登录这一步留给我。
  • 路由器只读。 现有脚本只保留读取接口,也要求它不另写脚本绕过。只要它还握着管理权限,这就仍是一条操作约定,不能当作技术隔离。
  • 把故障原因和改法记下来。 新会话未必带着上次的上下文,下次开工先读笔记,能少走一些弯路。

用了一阵的真实感受

Tailscale 确实好用。 没有公网 IP,也不用折腾端口映射和 DDNS,装上客户端就能从外面连回家。打通 IPv6 以后,手机在外面多数时候能直连,偶尔走中继也够用。现在出门看片、改配置、让 Muse 查家里,都靠它。

锐捷的 AC 加 AP 也确实好用。 做工扎实,Wi-Fi 7 跑得快,管理界面现代、专业,哪台 AP 带了几台设备、信号怎么样,一眼就能看清。不过没必要按官方价买,闲鱼上有代理商出货,都是全新的,便宜不少。

住着舒服,比多几个功能重要

这套系统里,有些功能是我特意没加的:摄像头认出人车不播,扫地机扫完不播,也不另做一套每天定时念天气的早报。家务提醒大多放在 07:30 到 22:30,回家问候有自己的时间段和判断条件。漏水则随时报警。时间表还会继续调,免得提醒本身变成麻烦。

最大的感慨还是 AI。以前不懂的、嫌复杂的、不敢动的,比如 IPv6 中继、带一串条件的自动化、抓包查电视为什么登不上,现在都能交给它,而且做得比我自己动手更细、更周全。但我也确实不像以前那样清楚每一行配置。所以备份要留着,改动要能查,实际效果还得自己验收。洗衣机报错状态、人在书房没开灯,这些问题都不是看一遍代码就能发现的。

现在我最满意的,是洗完衣服偶尔能被提醒一下,晚上有人睡觉时家里能安静下来。至于它还能多聪明,等这些小事先稳定做好再说。

参考