Home Assistant + 本地 LLM:保护隐私的智能家居,无需 cloud
云端智能家居系统——Google Home、Alexa、SmartThings——会持续将有关您家中情况的信息片段发送到远程服务器。用于智能家居的本地 LLM 则改变了这一隐私局面:您的 Home Assistant 服务器控制灯具和恒温器,Ollama 模型将您的请求转化为操作,所有数据都留在本地网络内。本指南介绍如何具体连接 Ollama 与 Home Assistant、选择哪种轻量级模型以将延迟保持在两秒以内,以及您在隐私保护方面实际能获得哪些收益。
#为什么要在智能家居中使用本地 LLM?
在传统云设备上,每句语音都会被发送到远程服务器进行转录、理解并执行。转录内容会被保留,有时还会交由外包方用于模型训练,制造商也能够知道您何时回家、何时打开房间灯光、何时播放晚间歌单。对许多家庭而言,这种过度向第三方泄露的信息是不可接受的。
Home Assistant 从根源上解决了这个问题:它是一个开源平台,运行在您自己的硬件上,并在本地与智能设备通信(Zigbee、Z-Wave、Matter、MQTT)。通过 Ollama 为它添加本地 LLM 后,您就能获得一个能够理解自由表达的指令(“将客厅的暖气温度调低两度”、“关闭底层的所有灯”)的助手,整个过程中任何音频或指令都不会离开局域网。
- 真正的隐私保护
- 不会向第三方发送使用数据,也不会根据您的使用习惯建立广告画像。
- 离线运行
- 即使互联网中断或云服务提供商发生故障,您的智能家居仍会响应指令。
- 可预测延迟
- 无需往返数据中心;延迟仅取决于您的本地设备。
- 完全控制权
- 您可自行选择模型,随时更新,当有更优模型时可直接替换。
#先决条件
只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。
- 在线空间,终身可用
- PDF + 文件
- 终身更新
- 已部署 Home Assistant
- 最低版本 2024.6(包含原生 Ollama 集成)。理想情况下使用最新稳定版。HA OS、HA Container 或 HA Supervised 均适用。
- 一台用于 Ollama 的机器
- 如果运行 HA 的机器性能足够强,Ollama 可以与 HA 在同一台机器上运行,也可以在局域网内的一台独立 PC 上运行。Mac mini M4、NUC i7 或配备至少 8 GB 显存 GPU 的 PC 都能很好地胜任。
- Ollama 已安装
- 守护进程在端口 11434 上运行。请使用 curl http://localhost:11434 检查——响应应为 Ollama is running。如果尚未安装,请先按照本站的 Ollama 安装指南操作。
- 稳定的局域网
- 理想情况下,HA 和 Ollama 应位于同一 VLAN,Ollama 服务器应使用固定 IP 地址。两者之间必须开放 11434 端口。
- 合适的模型
- 我们接下来就会讲到这一点。现阶段,请记住:需要一个支持 tool calling(工具调用)的模型。
#轻量级模型,适用于智能家居指令
智能家居场景下,合适的模型未必是参数最大的:它必须(1)正确支持工具调用以调用Home Assistant服务,(2)能流利使用法语,(3)响应速度快。3B至8B参数的Q4_K_M模型是最佳选择。
- Qwen 3.5 9B(Q4_K_M,约 6.6 GB 显存)
- 2026 年 8 GB 显存配置的标杆选择。工具调用可靠,法语表现出色,支持视觉和 256k 上下文,在 GPU 上的延迟也较为合理。这是智能家居的良好起点。
- Granite 4.2 8B(Q4_K_M,约5.3 GB VRAM)
- IBM,Apache 2.0,支持 128k 上下文,非常节省 token。工具调用可靠且简洁:如果 Qwen 执行您的指令时出现偏差,这是一个不错的替代选择。
- Granite 4.2 3B(Q4_K_M,约需 2.2 GB 显存)
- 适用于配置较低的设备(Pi 5、无 GPU 的 NUC)。资源消耗很低,支持工具调用,但处理复杂指令时可靠性较低——请使用简短、明确的语句。
- Gemma 4 12B(Q4_K_M,约 7.6 GB 显存)
- 适合拥有 RTX 3060 12 GB 或更好显卡的用户。支持多模态,采用 Apache 2.0 许可证,对模糊指令(“在客厅营造温馨氛围”)和上下文的理解有明显提升。
- Mistral Small 24B (Q4_K_M, ~14 GB VRAM)
- 法语能力和通用任务表现都很出色,仅适用于显存为 16 GB 及以上的显卡。除了严格控制家居设备外,也能轻松进行内容丰富的对话。
#1. 将 Ollama 连接到 Home Assistant
Home Assistant 自 2024.6 版本起正式集成 Ollama,可通过界面完全配置,无需修改 configuration.yaml 文件。
- 01在 Ollama 端拉取模型在运行 Ollama 的机器上,执行以下 shell 命令。下载大小根据所选模型约为 3-5 GB。
- 01使 Ollama 在局域网中可访问默认情况下,Ollama 仅在 localhost 上监听。为了让 Home Assistant(可能运行在另一台设备上)能够调用它,请让该服务在所有网络接口上监听。
- 01在 Home Assistant 中添加集成设置 > 设备与服务 > 添加集成 > 搜索“Ollama”。
- 02填写URLURL : http://IP-DU-SERVEUR-OLLAMA:11434 (例如:http://192.168.1.42:11434). 若 Ollama 与 HA Container 运行在同一台机器上,请使用 http://host.docker.internal:11434.
- 03选择模型Home Assistant 会自动查询 Ollama 并显示可用模型列表。请选择 qwen3.5:9b。
- 04启用控制(Control Home Assistant)在集成选项中,勾选「Control Home Assistant」。这使得LLM能够调用服务(如开关设备、调节温度)。若未勾选,LLM仅能进行对话。
#2. 向助手开放适当的实体
Home Assistant 有时会管理数百个实体(传感器、插座、灯泡、视图、自动化等)。将所有实体发送给大语言模型会耗尽上下文并干扰模型推理。技巧在于:仅暴露助手实际需要控制的内容。
- 01设置 > 语音 > 暴露这里列出了所有实体。启用助手需要控制的实体:灯光、温控器、插座、卷帘。禁用内部传感器(如树莓派的内存、Zigbee 信号等),这些对人类用户没有用处。
- 02用自然语言重新命名像 light.salon_lampe_principale_zigbee_3 这样的实体名称很难看懂。请将其重命名为“客厅主灯”。使用便于人理解的名称,LLM 就能更可靠地选中正确的实体。
- 03按区域分组为每个实体分配一个区域(客厅、厨房、卧室等)。LLM即可理解「关闭客厅的灯」,而无需手动列出每盏灯。
- 04测试在设置 > 语音 > 助手中,点击您的 Ollama 流水线的聊天图标,然后尝试:“卧室的温度是多少?”接着尝试:“打开客厅的主灯”。
#3. 100% 本地语音流水线(可选)
如果您希望以语音方式发言(而非在HA应用中输入文本),Assist可实现语音识别 → LLM → 语音合成的本地链路,无需依赖Google或Amazon。
- 唤醒词 — openWakeWord
- HA 官方附加组件。在 Pi 或 ESP32 卫星设备(Atom Echo、M5Stack)上检测唤醒词(“Hey Jarvis”、“Nabu”)。
- STT(语音转文本)——Whisper
- 基于faster-whisper的官方HA插件。tiny或base模型足以处理简短的法语指令。在性能尚可的CPU上,转录耗时约1–2秒。
- LLM — Ollama (已配置)
- 接收语音转录,调用合适的 HA 工具,返回确认语句。
- TTS(文本转语音)—— Piper
- Home Assistant 官方附加组件。提供原生法语语音(fr_FR-siwis-medium、fr_FR-tom-medium)。速度很快,每句话约需 200 毫秒。
安装并启动四个插件后,可在“设置 > 语音 > 助手”中配置处理流程:选择 Whisper 作为语音识别(STT)组件,选择您配置的 Ollama 集成作为对话智能体,选择 Piper 作为文本转语音(TTS)组件。此时,您就可以通过语音控制家中的设备,无需任何出站网络连接。
#延迟:本地 vs 云端
这一点常常被忽视。云端并没有什么魔法:每条指令都要往返数据中心,还要在服务器端排队。本地运行则能省去一半的传输路径。
- 云端(Google/Alexa)
- 云端语音识别(STT,约 400 毫秒)+ 云端意图识别(约 300 毫秒)+ 经云端执行 Home Assistant(HA)操作(约 200 毫秒)+ 语音合成(TTS,约 300 毫秒)= 平均 1.2–1.8 秒,网络负载高时会更长。
- 本地 — Pi 5 + 在 CPU 上运行的 3B LLM
- STT Whisper tiny(约 800 毫秒)+ LLM 3B(CPU 上约 3–5 秒)+ 动作执行(约 50 毫秒)+ TTS Piper(约 200 毫秒)= 4–6 秒。执行一条指令时尚可接受,但频繁使用时会让人感到沮丧。
- 本地 — PC + 8B LLM + 8 GB 显存的 GPU
- Whisper base(约 400 ms)+ LLM 8B Q4(约 600–900 ms)+ 执行动作(约 50 ms)+ TTS(约 200 ms)= 1.3–1.6 秒。与 Google Home 一样快,无需云端。
- 本地 — Mac mini M4 24GB
- 完整管道约 1.1-1.4 秒,得益于集成 GPU 和统一内存。这可能是 24/7 家庭自动化 LLM 最佳的性能/功耗比。
#究竟有哪些数据会离开局域网(没有任何数据)
我们来实际验证数据范围。在一个 HA + Ollama + Whisper + Piper 配置良好的环境中:
- 通过麦克风捕获的音频
- 通过本地 Whisper 处理。音频不会离开本地网络。
- 您的语音指令转录成的文本
- 发送至本地 Ollama。任何转录内容都不会离开本地网络。
- 您的设备与区域列表
- 与 Ollama 本地实例共享,以确保调用正确的实体。仍限于局域网(LAN)内。
- HA 决策与操作
- 由HA执行,可直接与本地Zigbee/Z-Wave/Matter/MQTT通信。
- Piper 语音回复
- 本地音频合成。不通过网络获取任何语音合成内容。
唯一可能的出站流量是 Home Assistant(HA)、Ollama 和模型的更新流量——由您决定何时进行更新。如果需要严格限制联网,安装完成后可以切断 HA 主机的互联网连接:所有功能仍可正常运行。
#技巧与故障排除
- LLM以英文回答
- 在 Ollama 集成中添加系统提示:“你是家里的智能家居助手。始终用法语回答,只用一句简短的话。”对于 Qwen 3.5 或 Granite 4.2,这条指令就足够了。
- 它会编造不存在的实体
- 这是模型太小或实体名称含义不明确的表现。请用自然语言重新命名实体,减少开放的实体数量,或在显存足够时切换到 Gemma 4 12B。
- 调用了正确的服务,却作用于错误的区域
- 请检查 HA 中的每个实体是否都已分配「area」。如果没有分配区域,模型就会自行猜测,并在名称相近时出错。
- 延迟在几小时后迅速下降
- Ollama 已将模型从内存中卸载。请设置 OLLAMA_KEEP_ALIVE=24h 后启动服务(如需保持一周,则设置为 168h)。
- 从 HA 连接时出现 Connection refused
- Ollama 仍监听在127.0.0.1上。请检查systemd单元中的OLLAMA_HOST=0.0.0.0:11434,重启服务,并从HA机器使用curl进行测试。
- Pi 5 进行 CPU 运算时发热
- 在 CPU 上运行 LLM 会让 4 个核心的利用率都达到 100%。如果您坚持让所有任务都在树莓派上运行,请加装散热风扇(或使用 Argon ONE V3 树莓派 5 机箱)。否则,请将 Ollama 部署到另一台主机上。
- 希望将 Ollama 的访问范围限制在局域网内
- 请监听具体的局域网 IP,而不是 0.0.0.0:11434(例如 OLLAMA_HOST=192.168.1.42:11434)。Ollama 将不再接受来自其他网络接口的连接。
#深入了解
您现在已经有了一个可正常运行、基于本地 LLM 的智能家居助手。以下是一些进一步探索的方向:
- 在 Linux 上安装 Ollama
- 如果您希望将一台 Linux 机器专用于 Ollama(24/7 家居自动化最干净的场景),Linux 安装指南涵盖了 systemd、GPU NVIDIA / AMD 以及网络配置。
- 在 Raspberry Pi 5 上运行 LLM
- 用于具体评估配备 8 GB 内存的 Pi 5 在仅使用 CPU 时能运行哪些模型,包含以 tokens/sec 衡量的速度基准测试,以及 1–3B 模型的选择建议。
- 选择量化方式(Q4、Q5、Q8)
- 了解为什么 Q4_K_M 是智能家居场景中的最佳平衡点,以及何时提高到 Q5_K_M 或降低到 Q3 才合理。
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。