用本地大模型控制智能家居:Home Assistant接入Ollama实战

2026年7月7日 46点热度 0人点赞 0条评论
文章配图

传统智能家居的痛点

家里的Home Assistant跑了快两年了,自动化写了一堆,但说实话用起来还是不够"智能"。比如我想说"太热了",系统不会自动开空调,非得写一堆条件判断——温度高于28度且时间在下午2点到晚上10点之间且人在客厅……每次来客人我都得解释一遍这套逻辑。

问题在于,传统自动化是"规则驱动"的,你得提前把所有可能性都想到。但人的需求是模糊的、动态的。最近Ollama + LLM的方案让我看到了可能性——让大模型来理解自然语言,再转化为Home Assistant的动作。

方案架构

整体思路很简单:

  1. 用Ollama在本地跑一个轻量级LLM(我用的Qwen2.5 7B)
  2. 写一个Python中间件,接收自然语言指令,调用LLM生成HA的Service Call
  3. 通过HA的REST API执行对应的设备操作

整个链路都在局域网内完成,延迟大概200-500ms,体感还行。

实际配置

中间件的核心逻辑大概50行Python,关键部分是给LLM一个设备清单的prompt,让它根据用户指令输出JSON格式的Service Call。比如我说"把客厅灯调暗一点",LLM会输出:

{
  "service": "light.turn_on",
  "entity_id": "light.living_room",
  "data": {"brightness": 128}
}

我加了一层安全校验——LLM输出的entity_id必须在白名单里,不在就拒绝执行。防止模型抽风把热水器开了。

实测效果

跑了一周,几个场景体验不错:

  • "太热了":自动开空调设26度,同时关窗帘
  • "我要出门了":关灯、关空调、扫地机器人开始工作、摄像头切换到离家模式
  • "晚上好":客厅灯调暖色调、电视打开、空调设25度

准确率大概85%,偶尔会理解错,比如"把灯调亮"有时候会变成开所有灯。但比之前纯规则的方式自然多了。

踩坑记录

  • 上下文丢失:Ollama的API默认没有对话记忆,每次都是独立请求。我后来加了session管理,保留最近5轮对话,"再暗一点"这种上下文指令就能正确处理了。
  • 幻觉问题:LLM有时候会"发明"不存在的设备。安全校验层救了我好几次。
  • N100性能:7B模型在N100上推理要3-5秒,体验不太好。加了GPU之后降到500ms以内。

总结

用LLM控制智能家居还处于"能用但不够稳定"的阶段。不过比起一年前,本地模型的质量和速度都提升了很多。等模型再优化几轮,这可能就是智能家居的正确打开方式。

veenyi

这个人很懒,什么都没留下

文章评论