起点:Home Assistant + NAS
所有折腾的起点是一台跑在家里 NAS 上的 Home Assistant。选择自建而非用各品牌自带的 app,原因很简单:家里的设备来自不同厂商,每个都有自己的 app,统一到一个平台管理是刚需。
目前接入的设备覆盖了几个房间:多个房间的灯光、两台 Dyson 空气净化器、两台投影仪(分别在不同房间)、温控、以及几个智能音箱。
Dyson 本地直连:绕过云端
Dyson 的空气净化器默认走云端控制,链路是 手机 → Dyson 云 → 设备。延迟可感知,偶尔云端抽风还会完全失联。
研究后发现可以通过逆向 Dyson 的 MQTT 协议实现本地直连。设备机身的贴纸上印有产品序列号和一串凭证信息,通过特定算法可以计算出 MQTT 连接所需的凭据,直接在局域网内和设备通信。
本地直连的好处很直接:链路更短、延迟更低、不依赖外部云服务。坏处是 Dyson 固件更新可能会改变协议,需要持续跟进社区的逆向进展。
iOS Shortcuts 语音控制:从 Siri 到 Home Assistant
这是整个系统中最有趣的部分。控制链路是:
iPhone / Apple Watch → Siri → Shortcut → Webhook → AI 助手 → Home Assistant API
用户对 Siri 说一句自然语言指令,Shortcut 把语音转成文本,通过 Webhook 发给 AI 助手,AI 助手理解意图后调用 Home Assistant 的 API 执行操作。
好处
自然语言理解。 你可以说"有点暗了",AI 助手会根据当前时间和你所在的房间,判断应该开哪盏灯、调到什么亮度。你可以说"睡觉了",它会关掉所有灯、把空净调到夜间模式、关闭投影仪。这种上下文感知能力是传统语音助手做不到的。
不用记设备名。 原生 HomeKit 需要你记住每个设备的精确名称,说错了就不响应。通过 AI 中转,你可以用模糊的描述,它会自己匹配。
支持复合指令。 一句话完成多个操作,无需逐个设备控制。
坑
Shortcut 命名有讲究。 如果你把 Shortcut 命名为太通用的词(比如"帮忙"),Siri 会把它和系统功能混淆,可能触发播放音乐之类的意外行为。需要选一个足够独特但又好记的触发词。
延迟比原生 HomeKit 高。 整个链路经过语音识别 → Webhook → AI 理解 → API 调用,比 HomeKit 直连慢大约 2-3 秒。日常使用可以接受,但如果你习惯了 HomeKit 的即时响应,这个延迟是能感知到的。换来的是灵活性的巨大提升——原生 HomeKit 做不到的复杂场景联动,这条链路都能实现。
投影仪接入:极米 + Xiaomi Miot Auto
家里有两台投影仪,其中一台极米的接入过程颇费周折。
极米投影仪原生不支持 HomeKit,Home Assistant 的官方集成也没有覆盖。最终方案是通过 Xiaomi Miot Auto 这个第三方集成把极米接入 Home Assistant(极米走的是小米 IoT 生态),然后配置 Universal Media Player 做一层封装,统一控制接口。
最终效果:可以通过 Siri → AI 助手的链路控制投影仪的开关、音量、输入源切换。
AI 理解上下文的优势
传统智能家居控制是指令式的:"打开客厅灯"、"把空调调到 24 度"。加入 AI 助手后,控制变成了对话式的。
"有点暗了"——AI 根据当前时间判断:如果是傍晚,开客厅主灯;如果是深夜,只开一盏小灯,亮度调低。
"太热了"——AI 检查温控传感器的读数,调整空调或空净的风速。
"准备看电影"——AI 关灯、开投影仪、把音箱音量调到合适的水平。
这种上下文感知让交互变得更自然。你在描述感受和需求,而非发出精确的设备指令。
折腾的乐趣和代价
实话说,搭建这套系统花费的时间远远超过直接用各品牌原生 app 的成本。光是 Dyson 本地直连的调研就花了好几个晚上,iOS Shortcuts 的各种兼容性问题也是反复调试才搞定。
但折腾带来的集成度和定制度是原生方案无法比拟的。所有设备统一管理、自然语言控制、基于上下文的智能联动——这些能力一旦用上就回不去了。
而且对开发者来说,折腾本身就是乐趣的一部分。研究协议、调试链路、优化体验,每解决一个问题都有成就感。智能家居是一个特别适合开发者发挥的领域:够复杂、够实用、反馈即时。
如果你也在考虑折腾智能家居,我的建议是:从 Home Assistant 开始,一个设备一个设备地接入,遇到问题多查社区。生态已经非常成熟,大部分常见设备都有现成的集成方案。至于 AI 语音控制这条路线,等基础设施稳定之后再加也不迟。