用 AI + Home Assistant 养龟:从仪表盘到行为分析
背景
最近对养龟产生了兴趣,家里陆续来了 6 只:草龟、地图龟、西非侧颈龟、三只黄喉拟水龟。龟缸上装了 TP-Link 摄像头,群晖 NAS 跑着 Surveillance Station 24 小时录像,水温传感器和加热棒也配齐了。
东西都有,但用起来全是分散的。看温度一个 APP,看摄像头另一个,加热棒手动开关。录了几百 GB 的视频从来没人翻。
刚好最近一直在用 Claude Code 折腾家里的 Home Assistant,上周才用它逆向了空气净化器的 API。这次想试试,纯靠对话,能把养龟这件事做到什么程度。
现在是什么样的
打开手机 HA,龟缸的东西全在一个页面里:

摄像头画面、乌龟活动状态、加热棒功率和用电量、水温湿度趋势。温度异常会 Telegram 推送。
每半小时还会收到一段精华视频和一段 AI 写的行为分析:

整个过程我没写一行代码。仪表盘、自动化、监控脚本、视频处理、AI 分析,都是和 Claude Code 聊出来的。
HA 仪表盘和自动化
跟 Claude Code 说的第一句话大概是「把乌龟摄像头加到 HA 仪表盘上」。
然后就是不停地提需求:
「加热棒的功率和用电量也显示出来」
「水温做个仪表盘,标出适宜温度区间」
「加个 24 小时和 7 天的水温趋势图」
「温度太低或太高给我发 Telegram」
它每次直接改 HA 的配置文件和仪表盘数据,改完重启,我刷新手机看效果。不满意继续说,满意就下一个。跟一个懂 HA 的人聊天没什么区别,我不用管 YAML 怎么写、automation 怎么配。
![]() | ![]() |
|---|---|
| 加热棒 7 天功率、水温湿度仪表盘 | 24 小时水温湿度趋势,带温区标注 |
水温趋势图标了过冷/偏冷/适宜/偏热/过热的区间。加热棒功率曲线能看出工作规律,比如图上 4 月 7 号之前加热棒是关着的,之后才开始工作。
自动化跑了温度过高和过低两条告警。温度异常 Telegram 几分钟就能收到。
AI 活动监测
仪表盘能看数据了,但龟在干嘛,水温曲线看不出来。
我问 Claude Code 能不能做个活动监测。它的方案:每 5 分钟从 SS 录像里抽帧对比,检测画面变化判断龟有没有在动。处理放在家里闲置的 Mac 16”(M1 Max 64GB)上,NAS 只管存录像。
抓帧对比
录像在 NAS,Mac 通过 SSH 读取。一开始传整个 100MB 的 mp4,12 秒。后来只传文件头 5MB(mp4 的 moov atom 在文件头,够解码出帧),降到 2 秒。
NAS 录像 → ssh head -c 5MB → OpenCV 读帧 → 灰度+高斯模糊 → 像素差值
变化超 2% 就算”活跃”,结果推到 HA sensor。
精华视频
「有活动时直接发视频给我」
Claude Code 做了每 30 分钟的精华视频。检测到活跃的时间点,从对应录像截取片段拼在一起。
一个细节:一开始用 OpenCV 逐帧重编码,25 秒出一个片段,画质还糊。后来装了 ffmpeg 用 -c:v copy 直接裁切,2 秒搞定,1080p 原始画质。工具选对了差十倍。
本地大模型看龟
精华视频解决了”看什么”。但我还想知道每只龟在干嘛。
我问有什么办法识别不同的乌龟。Claude Code 列了几种:OpenCV 颜色轮廓检测、YOLO、深度学习个体识别、Vision LLM。6 只龟品种差异大,草龟最小深色、地图龟最大有花纹、西非侧颈脖子侧扁、小青体型差不多,直接用视觉大模型就行,不用训练。
试了 Gemini API 配额不够。我说能不能跑本地的。最后用 Ollama 跑 Gemma 4(8B Q4 量化),M1 Max 64GB 没什么压力。
分析分两步。先逐帧:从 30 分钟录像均匀抽 30 帧,每帧单独让 Gemma 描述看到了什么。再汇总:30 条描述拼一起,让 Gemma 总结这半小时。
prompt 改了好几轮。一开始让它「分析哪只最活跃哪只最安静」,输出很八股。我说不关心这个,改成「像朋友聊天一样说说」,输出就对味了。

摄像头视角。右上角是晒背台,中间红蘑菇是装饰。能看到龟在晒背台上叠罗汉,它们特别爱干这个。
架构
┌──────────────────────────────────────┐
│ NAS (群晖 DS923+) │
│ Surveillance Station → 30min MP4 │
│ HA VM → 仪表盘 / 自动化 / 告警 │
│ 水温传感器 · 加热棒 · 摄像头 ONVIF │
└──────────────┬───────────────────────┘
│ ssh pipe + HA API
┌──────────────▼───────────────────────┐
│ Mac 16" (M1 Max 64GB) │
│ │
│ monitor.py 每5分钟 │
│ └─ 抓帧对比 → 活跃/静止 → HA │
│ highlights.py 每30分钟 │
│ ├─ ffmpeg 截取精华视频 → Telegram │
│ ├─ 30帧 → Gemma 4 逐帧分析 │
│ └─ 综合汇总 → Telegram │
│ daily_report 每天22:00 日报 │
│ │
│ Ollama + Gemma 4 (8B) 本地推理 │
└──────────────────────────────────────┘
HA 管数据采集、展示、告警。Mac 管视频处理和 AI 推理。两边通过 HA REST API 连起来。launchd 定时跑,开机自启。
关于没写代码
系统里有 Python 脚本(OpenCV 图像对比、ffmpeg 调用、Ollama API、Telegram 通知)、HA 的 YAML 配置(sensor、automation、lovelace dashboard)、launchd 定时任务,代码量不算少。
但我确实一行都没手写。
每一步都是对话完成的。我说「把摄像头加到仪表盘」,它改 lovelace JSON。说「温度告警发 Telegram」,它写 automation YAML。说「用本地模型分析龟缸画面」,它装 Ollama、拉模型、写脚本、配定时任务。
我干的事更像是产品经理:说需求、看效果、给反馈。
不是说技术不重要了。这套系统里有不少技术判断,比如只传 mp4 头部 5MB 而不是整个文件、用 ffmpeg stream copy 而不是重编码、逐帧分析再汇总而不是多图一起扔给模型。只是这些判断现在 AI 也能做。
成本
零。硬件家里都有,软件全开源,AI 推理跑本地。Mac 每月多费大概 3 块钱电。
养龟是个慢节奏的事。但每天翻翻 Telegram 的报告,看看谁又霸占了晒背台、谁偷偷换了个位置,比蹲在缸前看半天有意思多了。

