选中内容(绿色)时除了会搜索文章名,还会搜索文章内容
点击结果中的文章名进入文章界面后可以按Ctrl+F在页面内搜索
  • 版权:CC BY-SA 4.0
  • 创建:2025-03-24
  • 更新:2025-03-24


homeassistant 官方不支持直接添加历史数据(2025.03.25),所以要想添加需要其它方法,有点麻烦。

使用场景

homeassistant添加数据的时间都是自动生成的,不是手动设置的,有些情况比如有些数据不方便实时上传,想过一段时间导入一次。

或者导入一些历史的书记,比如股票、金价等。

方法

使用集成: https://github.com/klausj1/homeassistant-statistics
按照其 README 使用说明使用即可,详细阅读,下面简要介绍一下大概的步骤,实际以README为准:

  • 复制 custom_components 下的文件夹到 ~/.homeassistant/custom_components,
  • 然后在~/.homeassistant/automations.yaml 加上import_statistics:
  • 重启 hass 服务,可以在web点击重启,也可以sudo systemctl restart hass

  • 准备数据,可以用\t(tab)隔开(注意不是空格),或者建议用|避免tab空格混淆,比如这里金价生成tsv脚本:

    1. def gen_tsv_table(id, unit, values, tsv_path):
    2. '''
    3. values: e.g. [[944524800000, 74.3297], [946425600000, 77.4334], [946598400000, 77.2623]]
    4. '''
    5. content = "statistic_id unit start min max mean\n"
    6. final_values = {}
    7. for t, v in values:
    8. if v is None:
    9. continue
    10. t_str = datetime.fromtimestamp(t/1000).strftime("%d-%m-%Y %H:00")
    11. if t_str in final_values:
    12. final_values[t_str]["min"] = min(final_values[t_str]["min"], v)
    13. final_values[t_str]["max"] = min(final_values[t_str]["max"], v)
    14. final_values[t_str]["values"].append(v)
    15. final_values[t_str]["mean"] = round(sum(final_values[t_str]["values"]) / len(final_values[t_str]["values"]), 3)
    16. else:
    17. final_values[t_str] = {
    18. "min": v,
    19. "max": v,
    20. "values": [v],
    21. "mean": v
    22. }
    23. for t, v in final_values.items():
    24. content += f"{id} {unit} {t} {v["min"]} {v["max"]} {v["mean"]}\n"
    25. with open(tsv_path, "w", encoding="utf-8") as f:
    26. f.write(content)

    data

  • 将数据 csv/tsv 放到~/.homeassistant/目录下

  • web界面开发者工具 -> 动作(action)导入,如下图:
    action

  • 然后就能在传感器中看到了,需要手动选一下日期区间才能看到老的数据
    gold_price

另外好像遇到了提示说导入数据后传感器没有状态类,不知道啥问题,重启保证log没报错(sudo journalctl -u hass),选择删除重新导入一次就好了,可能重复导入导致的?暂时没细究
state_class

文章有误?有想法想讨论?查看或者发起勘误/讨论 主题
(发起评论需要先登录 github)

/wallpaper/wallhaven-g8g6re.png