尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

用 Home Assistant 报表看懂你家的历史数据统计

用 Home Assistant 报表看懂你家的历史数据统计 用 Home Assistant 报表看懂你家的历史数据统计【免费下载链接】core:house_with_garden: Open source home automation that puts local control and privacy first.项目地址: https://gitcode.com/GitHub_Trending/co/core上个月电费比前一个月多了 40 多块你想确认到底是哪台设备在深夜偷偷跑电——打开 Home Assistant它的历史数据统计模块能把每个传感器每一次状态变化都记下来再自动算出均值、极值和累计量。这篇文章带你走完一条路径先让数据落库再用历史数据 API 拉曲线最后把月度能源统计导出成 CSV全程三处配置、两段接口调用。先把最近 10 天的数据录下来Home Assistant 里负责落库的组件叫 Recorder简单说就是把实体状态按时间存进数据库的行车记录仪。它默认开启默认保留 10 天。想调保留时长、排除掉高频变动但不重要的实体比如自动化状态在 configuration.yaml 里加一段 recorder 配置recorder: db_url: sqlite:////config/home-assistant_v2.db purge_keep_days: 30 exclude: domains: - automation重启后状态变化会按原始状态 → 5 分钟聚合 → 小时级汇总三级滚动入库原始行存在states表短期统计在statistics_short_term表长期统计在statistics表元信息统一挂在statistics_meta里。聚合逻辑在 homeassistant/components/recorder/statistics.py配置常量在 homeassistant/components/recorder/const.py。一条请求拉出 30 天温度曲线 目标拿到某实体过去 30 天的显著状态变化。历史数据 API 是带访问令牌的 REST 接口只返回实质变化的行不返回每次属性刷新。curl -H Authorization: Bearer $LONG_LIVED_TOKEN \ http://homeassistant.local:8123/api/history/period/2026-07-29T00:00:00Z?filter_entity_idsensor.living_room_tempend_time2026-08-28T00:00:00Zsignificant_changes_only1预期输出是数组每个元素含entity_id和states列表states里是state、last_changed等字段直接喂给绘图库即可。⚠️ 常见坑路径里的日期含冒号和时不编码会直接 404用Z结尾的 UTC 格式最省事。前端仪表盘里看到的历史曲线走的就是同一份数据。如果不想每次轮询历史模块还有一个history/streamWebSocket 消息见 homeassistant/components/history/websocket_api.py建连后状态变化会推送过来适合做实时大屏。把月度能源统计导出成 CSV 目标统计报表导出——按天汇总用电量。在能import homeassistant的脚本里比如自动化或自定义集成直接调统计接口from homeassistant.components.recorder.statistics import get_statistics import csv with open(energy_daily.csv, w, newline) as f: writer csv.writer(f) writer.writerow([day, kWh_total, mean, peak]) for day in range(7): stats get_statistics(hass, start, end, {entity_id}, daily) row stats[entity_id][0] writer.writerow([start.date(), round(row[sum], 2), round(row[mean], 2), round(row[max], 2)])预期输出是一行一天的 CSVsum列就是当天累计 kWh。⚠️ 常见坑sum是累计值别对多条记录再求一次和否则翻倍另外只有状态是数值且带单位的实体才会生成统计unavailable不会算进去。没有数据或查得很慢按这个顺序排查 先排除配置问题再谈性能统计报表为空先确认该实体状态是纯数字且带单位再看有没有被 recorder 的 exclude 排除最后看数据是否早于purge_keep_days保留窗口。历史 API 查着查着超时把单次查询跨度压到 30 天以内优先按filter_entity_id过滤别拉全站实体。写库变慢SQLite 单实例够用打开 WAL 模式即可实体上千、多设备并发写入时再换 MariaDB。动手清单在 configuration.yaml 加上面那段 recorder 配置按需要调purge_keep_days用历史数据 API 拉一条 30 天曲线画成图放进仪表盘跑一遍 CSV 导出脚本确认sum列和电费账单对得上深入细节可以查项目自带的官方文档和讨论区recorder 与 statistics 的完整参数都在 homeassistant/components/recorder/ 的strings.json和const.py里。【免费下载链接】core:house_with_garden: Open source home automation that puts local control and privacy first.项目地址: https://gitcode.com/GitHub_Trending/co/core创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表