☰
智能家居实战:用Home Assistant实现空调远程监控与自动关闭
2026/10/28 13:53:42 网站建设 项目流程

男子出去游玩一周忘记关空调,回家推门瞬间破防——这类话题最近讨论度很高。先不评价电费单有多刺激,单从技术角度看,这就是一个非常典型的“家电状态远程不可知”问题:人在外地,空调开没开、开了多久、实时功率多少、有没有办法自动关,全部没有数据。解决这个问题靠的不是什么复杂算法,而是一套成熟的智能家居物联网组合:带功率监测的 WiFi 智能插座、空调红外控制器(空调伴侣)、温湿度传感器,再加上 Home Assistant 这类本地中控服务,组合成“远程查看 + 条件触发 + 自动断电”的自动化闭环。

这篇文章把整套方案拆开讲:需要买什么硬件、怎么部署、怎么建自动化规则、怎么通过 API 把“关空调”这个动作接进自己的脚本或定时任务,最后附一份高频问题排查清单。无论你是想给家里、工作室还是宿舍的空调加一道保护,都能照着落地。

1. 核心能力速览

能力项说明
解决问题外出时无法感知空调运行状态,忘记关机导致长时间空耗电
方案类型智能插座 + 红外遥控 + 温湿度传感器 + 本地自动化中控
推荐硬件门槛带功率监测的 WiFi 智能插座、空调红外伴侣、USB 温湿度传感器
软件平台Home Assistant(可跑在 Docker / 树莓派 / NAS / 旧电脑)
启动方式厂商 App 配网 + Home Assistant 服务端部署 + 设备集成
是否支持 API支持,Home Assistant 提供 REST API / WebSocket API
是否支持批量任务支持,自动化规则、场景脚本、定时巡检均可批量管理
是否支持远程查看厂商受控云服务可支持,默认建议局域网内优先使用
适合场景家庭、工作室、门店、宿舍等长期无人值守场景的用电保护

先说清楚,这不是某个单一开源项目,而是由多个开源组件和商业硬件组合出来的方案,核心开源部分是 Home Assistant。这个组合的优势是设备状态、自动化规则、历史记录都可以留在本地,不绑定单一云平台;代价是部署有一定门槛,适合愿意动手折腾的玩家。如果你只想要“装个 App 就能远程关空调”的最低成本方案,那直接买一个带功率监测的智能插座,用厂商 App 就够,不需要下面整套流程。

2. 适用场景与使用边界

这套方案适合谁:

  • 经常出差、旅游,一走就是几天到一周的人;
  • 家里有老人小孩,容易忘关空调或不会设置定时的人;
  • 工作室、门店、宿舍等无人时段需要保证用电安全的场景;
  • 想统计空调真实耗电量、评估每月电费构成的人。

能解决的实际问题:

  • 远程查看空调插座实时功率,判断空调是否还在运转;
  • 到点自动关闭,或者检测到长时间无人后触发关闭;
  • 温湿度过高或过低时自动启动、调整或关闭空调;
  • 通过 API 把空调控制接到自己的脚本、语音助手或外部服务。

需要避开的场景:

  • 没有稳定 WiFi 的场所,所有方案都依赖网络;
  • 空调是工业级或特殊高压设备,没有标准插座接口;
  • 追求“零改造、纯物理操作”,不想增加任何智能设备;
  • 对数据隐私要求极高,且完全不接受任何厂商云服务。

使用边界与安全提醒必须放在前面:智能插座和空调伴侣要选择符合国家标准、有强制认证的正规产品,不要使用来路不明的改装设备。空调是大功率电器,涉及改电路或接线时一定要断电操作,非专业人士不要拆改墙插。远程控制功能会经过网络,账号密码要保管好;对外暴露的服务必须做访问控制,不要把公网端口随意开放。自动化规则是辅助手段,不能替代定期的电气安全检查和设备维护。

3. 环境准备与前置条件

3.1 硬件清单

典型的组合如下,具体根据家里空调类型选择:

硬件作用选择要点
WiFi 智能插座(带功率监测)远程断电、实时功率读取确认插头额定电流匹配,16A 空调要用 16A 规格
空调红外伴侣 / 空调伴侣通过红外码遥控开关、温度、模式确认支持自己空调品牌的红外码库或支持学习功能
温湿度传感器按室温触发空调自动化选能接入 Home Assistant 的型号
长期开机的迷你主机 / 树莓派 / NAS跑 Home Assistant 服务1 核 CPU + 1GB 内存起步,磁盘建议 5GB 以上

3.2 软件与网络环境

  • 路由器最好支持 2.4GHz WiFi。很多智能插座不支持 5GHz,或者 5GHz 穿墙后不稳定,配网前先确认。
  • 准备 Docker 环境,或者直接选择刷 Home Assistant OS。
  • 电脑浏览器访问管理界面,手机端装 Home Assistant 官方 App。
  • 智能插座厂商的 App 必须装好,因为第一步配网通常要在厂商 App 里完成。

部署前先核对这份通用检查清单:

检查项要求
WiFi 频段2.4GHz 覆盖稳定
插座规格支持目标空调的额定电流
手机 App能成功配网并远程控制插座
主机资源至少 1 核 CPU、1GB 内存、5GB 磁盘
Docker如用容器部署,需安装 Docker Engine 或 Docker Desktop
端口8123 等 Web 管理端口不能被占用

4. 安装部署与启动方式

4.1 第一步:给智能插座配网

这一步没有统一命令,因为不同厂商 App 操作略有差异,但通用流程是一致的:

  1. 把智能插座插到空调插座和空调插头之间,或者用空调伴侣替换原遥控器;
  2. 手机连接家里的 2.4GHz WiFi;
  3. 打开厂商 App,进入添加设备,按提示让插座进入配网模式;
  4. 等待设备上线,确认 App 里能看到实时功率。

配网成功后,先不要急着接 Home Assistant。直接在厂商 App 里验证一下远程关机和开机,这一步如果失败,后面集成一定失败,这是最基础的问题。

4.2 第二步:部署 Home Assistant

Home Assistant 的安装方式比较多,这里给一个 Docker 通用模板,实际路径和镜像版本需要按你的平台调整:

# 创建配置目录 mkdir -p /opt/homeassistant/config # 启动容器,映射 8123 管理端口 docker run -d \ --name homeassistant \ --restart=unless-stopped \ -v /opt/homeassistant/config:/config \ -v /etc/localtime:/etc/localtime:ro \ -p 8123:8123 \ ghcr.io/home-assistant/home-assistant:stable

启动后访问http://宿主机IP:8123,按页面引导创建管理员账号、填写家庭名称和时区。如果你用的是树莓派或专用盒子,更推荐直接刷 Home Assistant OS,管理体验更接近完整系统,支持一键安装集成和加载项。刷机流程一般是:下载官方镜像 -> 写卡工具写入 SD 卡 -> 接网线或配置 WiFi -> 浏览器访问http://homeassistant.local:8123。

4.3 第三步:添加设备集成

把智能插座和传感器接进 Home Assistant,取决于设备通信协议:

  • 小米、涂鸦等平台设备:在“设置 -> 设备与服务 -> 添加集成”里搜索对应品牌,登录账号后自动发现设备;
  • 支持 MQTT 的设备:先在 Home Assistant 安装 Mosquitto broker 加载项,再在设备端配置 MQTT 服务器地址,最后用 MQTT 集成添加实体;
  • Broadlink 等红外设备:添加 Broadlink 集成后,用遥控器学习空调码,生成对应的 climate 实体。

不同硬件接入方式差异很大,动手前先查 Home Assistant 官方集成文档,确认你的设备支持哪种协议。不要看到一份教程就照搬,设备型号不一致,实体 ID 和命令格式都会不同。

4.4 第四步:验证设备实体

在 Home Assistant 的“开发者工具 -> 状态”里搜索插座和传感器,正常情况下能看到类似这样的实体:

# 实体状态示例,实际 ID 以设备接入后生成的为准 sensor.plug_power: "0.00" # 实时功率,单位 W switch.plug: "on" # 插座开关状态 sensor.temperature_room: "26.5" # 房间温度 climate.ac: "cool" # 空调模式

看到这些实体,说明设备已经成功接入,可以进入自动化配置。

5. 功能测试与效果验证

5.1 测试远程开关空调

测试目的:确认 Home Assistant 能把“关闭空调”的指令成功下达到插座或空调伴侣。

操作步骤:

  1. 打开 Home Assistant 仪表盘,找到插座实体;
  2. 点击关闭,观察实体状态变为 off;
  3. 到空调旁确认空调已断电或进入待机;
  4. 再次打开,确认恢复供电。

判断标准:实体状态变化与设备实际动作一致,局域网环境下延迟一般在 1 到 3 秒量级。

失败排查:先回厂商 App 看设备是否在线。如果厂商 App 能控制但 Home Assistant 不行,检查集成配置、实体 ID 是否精确,或者是否有自动化规则在反复覆盖状态。

5.2 测试功率监测

测试目的:通过实时功率判断空调是否真的在运转,这是远程判断空调状态最可靠的方式。

操作步骤:

  1. 打开空调制冷模式,设置一个明显温度,观察 Home Assistant 中功率实体的数值;
  2. 关闭空调,等待 1 到 2 分钟,再次查看功率值。

判断标准:空调运行时的功率明显高于待机功率,关闭后功率回落到待机值附近。有了功率监测,在外地就不需要靠“我记得关没关”来猜,打开 App 看功率就知道空调状态。

5.3 测试自动化规则

自动化是这套方案的核心。先看一个常见需求:出门后长时间无人,自动关闭空调。使用手机定位触发是一个稳妥的方式:

# Home Assistant 自动化示例:离家 30 分钟后关闭空调 # 注意:所有实体 ID 都需要替换成你自己环境里的实体 alias: "离家自动关空调" triggers: - trigger: zone entity_id: person.zhang_san event: leave zone: zone.home conditions: - condition: state entity_id: switch.ac_plug state: "on" actions: - action: switch.turn_off target: entity_id: switch.ac_plug

再看第二个常见需求:室温达到目标后自动关闭空调,避免整夜空转:

alias: "到达目标温度自动关空调" triggers: - trigger: numeric_state entity_id: sensor.temperature_room above: 26 conditions: - condition: state entity_id: climate.ac state: "cool" actions: - action: climate.turn_off target: entity_id: climate.ac

测试方法:先手动把条件改成容易触发的临时值,比如把 above 改成 20,确认触发逻辑正确后再改回真实值。自动化加入后,在“设置 -> 自动化与场景”里能看到运行记录,触发失败会留下报错信息,方便定位。

6. 接口 API 与批量任务

6.1 Home Assistant REST API

Home Assistant 提供 REST API,长期访问令牌在“个人资料 -> 安全 -> 长期访问令牌”里生成。请求时把令牌放在 Header 里:

# 查询实体状态示例 curl -X GET \ -H "Authorization: Bearer 你的长令牌" \ -H "Content-Type: application/json" \ http://localhost:8123/api/states/switch.ac_plug

返回结果是 JSON 格式,其中 state 字段就是实体当前状态。基于这个接口,可以写巡检脚本:每天定时检查空调功率,如果发现功率高于某个阈值且连续运行超过设定时长,就执行关闭动作并发送通知。

6.2 Python 脚本关闭空调

import requests BASE_URL = "http://localhost:8123" TOKEN = "你的长令牌" ENTITY_ID = "switch.ac_plug" headers = {"Authorization": f"Bearer {TOKEN}"} def get_power() -> float: url = f"{BASE_URL}/api/states/sensor.plug_power" resp = requests.get(url, headers=headers, timeout=10) data = resp.json() return float(data["state"]) def turn_off_ac() -> None: url = f"{BASE_URL}/api/services/switch/turn_off" payload = {"entity_id": ENTITY_ID} requests.post(url, json=payload, headers=headers, timeout=10) power = get_power() print(f"当前功率: {power} W") if power > 200: # 阈值按实际空调待机/运行功率调整 turn_off_ac() print("检测到空调仍在运行,已自动关闭") else: print("功率正常,不做操作")

这类脚本可以放进 Linux 的 cron 或 Windows 计划任务里,形成“定时巡检 + 自动处置”的批量任务。比如每天早上 9 点和晚上 11 点各执行一次,正好覆盖出门和睡觉两个关键时间点。

6.3 多设备批量任务设计

不止一台空调时,可以维护一个设备清单,脚本循环处理:

{ "devices": [ { "entity_id": "switch.ac_plug_room1", "power_sensor": "sensor.plug_power_room1", "max_run_hours": 8 }, { "entity_id": "switch.ac_plug_room2", "power_sensor": "sensor.plug_power_room2", "max_run_hours": 8 } ] }

批量巡检脚本按清单循环执行,每次记录检查时间、功率和处理结果,写入本地日志。失败重试策略建议:单个设备调用失败先重试 2 次,间隔 10 秒;连续失败则跳过本轮,等下一次巡检再处理,避免一台设备卡死整批任务。

7. 资源占用与性能观察

7.1 Home Assistant 的资源占用

Home Assistant 本身不算重。在 Docker 或树莓派环境下,空载时 CPU 占用一般很低,内存占用取决于集成数量,从几百 MB 到 1GB 区间都比较常见。如果加载了大量历史记录并长期统计,磁盘占用会持续增长,建议定期清理或配置数据库保留策略。

观察方法:Docker 环境用docker stats homeassistant查看实时占用;树莓派可以用htop查看。如果 CPU 长期过高,优先检查是否有集成在频繁轮询设备,把轮询间隔调大通常能立刻降下来。

7.2 影响响应速度的因素

  • 设备轮询间隔:智能插座如果没有本地协议、每次都走云服务,单次状态刷新延迟会明显偏高;
  • WiFi 信号:设备离路由器太远会频繁超时重试,拖慢整个自动化链路;
  • 红外控制:空调伴侣发出红外指令后,空调不一定立刻响应,自动化里需要预留合理等待时间;
  • 自动化数量:同一个状态变化可能触发多个自动化,注意排查循环触发问题。

7.3 降低占用和提升稳定性的思路

  • 优先选支持本地协议(如本地 MQTT、局域网 API)的设备,减少云依赖;
  • 在记录配置里排除不需要长期保存的实体,收敛数据库增长;
  • 简单任务可以不用跑完整 Home Assistant,直接用厂商 App 的定时功能也能解决大半需求;
  • 批量巡检脚本里加超时和重试逻辑,避免单台设备异常拖垮整批任务。

8. 常见问题与排查方法

问题现象可能原因排查方式解决方案
插座离线,App 无法控制WiFi 信号弱、路由器重启、设备固件异常查看设备指示灯,检查路由器在线设备列表重启插座和路由器,靠近路由器重新配网
Home Assistant 里看不到实体集成未正确添加或实体被禁用查看集成日志,确认设备协议删除集成重新添加,检查实体是否被隐藏
自动化不触发条件不满足、触发源配置错误在自动化运行历史里查看触发记录用临时阈值测试触发逻辑,修正条件
API 返回 401长令牌无效或未携带 Header检查 Header 格式和令牌状态重新生成长期访问令牌
红外控制空调没反应空调品牌或型号不在红外码库内用原遥控器测试学习功能重新学习红外码,或更换支持该品牌的空调伴侣
功率传感器一直为 0插座不支持功率监测或固件未上报查看设备规格说明和实际数据流更换带功率监测的插座
批量脚本卡住设备响应超时、网络阻塞查看脚本日志,确认卡在哪一步为每个请求设置超时并增加重试
远程访问失效厂商云服务异常或网络环境变化查看 App 设备状态和网络使用厂商受控远程服务,避免依赖公网端口映射

9. 最佳实践与使用建议

第一次搭建时,不要一上来就配置一堆自动化。正确的推进顺序是:

  1. 先在厂商 App 里确认硬件远程控制和功率读取都正常;
  2. 接入 Home Assistant 后,手动测试开关和功率读取;
  3. 加一条最简自动化,比如“每天 23 点关闭空调”;
  4. 跑一周,观察运行记录和误触发情况,再逐步补充复杂规则。

工程化方面,建议做这几件事:

  • 把设备配置和自动化 YAML 纳入版本管理,改坏了可以快速回滚;
  • 自动化规则里加上通知动作,通过 App 推送告知执行结果;
  • 批量巡检脚本输出结构化日志,方便后续排查;
  • 所有远程访问优先走厂商提供的受控服务和 HTTPS,不要直接把 8123 端口映射到公网,避免被扫描和未授权访问;
  • 给 Home Assistant 开启自动备份,配置和数据库定期备份到独立存储。

合规和隐私同样要注意。智能设备会采集家庭用电数据,使用前先了解厂商隐私政策。涉及摄像头、人脸识别等强隐私设备时,不要和空调控制混在同一个无隔离的网络里。电气安全方面,插座额定电流必须匹配空调,长时间运行的自动化要设置兜底逻辑,比如检测到功率异常过高时直接关闭并通知。

10. 总结与下一步

回到开头的场景:出门一周忘关空调,回家看到电费单瞬间破防。这套智能家居方案不能帮你免掉这次电费,但能让你以后每次出门前都对设备状态心里有数,甚至人还没到家,空调已经按计划关闭。

最值得先验证的功能是功率监测和远程关闭,这两项确认没问题,整套方案的地基就稳了。最容易踩的坑是设备协议不统一:买设备之前先确认是否支持本地 API 或 MQTT,避免买回来只能走厂商云,自动化的实时性和稳定性都打折扣。

下一步可以按需扩展:接入温湿度传感器做更精准的环境控制,把门窗传感器纳入离家判断逻辑,或者把巡检脚本升级成一个小型 Web 服务,做成家庭用电实时看板。这套组合的扩展空间很大,从“防止破防”到“全屋自动化”,可以一步一步搭起来。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询