『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 2601|回复: 11

[经验分享] 用history_Stats集成统计实体特定状态的持续时间的方法

[复制链接]

3

主题

28

帖子

141

积分

注册会员

Rank: 2

积分
141
金钱
113
HASS币
0
发表于 2022-2-21 15:15:11 | 显示全部楼层 |阅读模式
本帖最后由 macliang 于 2022-2-21 15:16 编辑

前段时间想统计一下HA中的开关实体开了多少时间,关了多少时间,在论坛中咨询了一下,yuyuye朋友给出了一个直接用history_Stats集成的解决方案,试了一下,发现很是方便,特共享一下方法给大家。history_Stats集成是HA的一个内置集成,其数据来源于history集成,可以统计实体的特定状态的持续累计时间,比如从特定时间开始某个灯一共亮了多长时间等。
history_Stats集成在configuration.yaml中定义一个sensor,然后在面板中进行调用,一般定义用法如下:
sensor:
  - platform: history_stats
    name: Lamp_on_Chufang    #定义该传感器名称,在面板中用这个名称进行调用显示
    entity_id: switch.haa_4f97c3     #定义要统计的实体id,我这里是一个开关
    state: "on"    #定义要统计的状态,我这里要统计开灯的总时间,所以状态值为“on”
    type: time    #定义统计类型,可以是time:时间,ratio:百分比,count:次数
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"    #定义统计的起点时间,这里定义的是当天的零时,后面距离几个用法
    end: "{{ now() }}"    #定义统计的截止时间,这里是当前实时时间
统计的时间窗可以用起止时间定义,也可以用持续时间定义,举几个例子如下:
#从早上6点开始,持续1天12个半小时
start: "{{ now().replace(hour=6, minute=0, second=0) }}"
duration:
  # supports seconds, minutes, hours, days
    days: 1
    hours: 2
    minutes: 30
#从本周零时开始到现在
start: "{{ as_timestamp( now().replace(hour=0, minute=0, second=0) ) - now().weekday() * 86400 }}"
end: "{{ now() }}"
最后再面板中调用定义好的history_stats实体sensor.lamp_on_chufang即可显示这个厨房灯当天开的总时间了。
下面是在面板中的调用实例和整体显示效果,灯开关的下面显示的就是每个灯当天开的总时间。


面板中调用实体

面板中调用实体

整体显示效果

整体显示效果

评分

参与人数 1金钱 +16 收起 理由
sorrypqa + 16 感谢楼主分享!

查看全部评分

回复

使用道具 举报

7

主题

314

帖子

2757

积分

金牌会员

Rank: 6Rank: 6

积分
2757
金钱
2443
HASS币
0
发表于 2022-2-21 16:41:04 | 显示全部楼层
very nice,感谢楼主分享
回复

使用道具 举报

5

主题

322

帖子

1345

积分

金牌会员

Rank: 6Rank: 6

积分
1345
金钱
1023
HASS币
0
发表于 2022-2-21 16:56:07 | 显示全部楼层
进来学习下!!!用好历史信息很有用呀!
回复

使用道具 举报

41

主题

1295

帖子

5328

积分

论坛元老

Rank: 8Rank: 8

积分
5328
金钱
4028
HASS币
20
发表于 2022-2-21 18:19:41 | 显示全部楼层
论坛有你更精彩·
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

15

主题

636

帖子

2179

积分

金牌会员

Rank: 6Rank: 6

积分
2179
金钱
1543
HASS币
0
发表于 2022-2-21 18:33:40 | 显示全部楼层
感谢楼主分享,很实用。

我最近发现nodered里的get history节点也很好用,可以调取某一时刻到另一时刻之间,这个实体所有发生过的事件,发现智能门锁原来有好多种状态,方便做trigger了。有些瞬间的状态,在ha的历史界面根本看不出来。。。。

当然,我也不知道在ha里如何能调取某个实体的原本事件的完整列表。。。
回复

使用道具 举报

3

主题

28

帖子

141

积分

注册会员

Rank: 2

积分
141
金钱
113
HASS币
0
 楼主| 发表于 2022-2-21 22:51:18 | 显示全部楼层
telanx 发表于 2022-2-21 18:33
感谢楼主分享,很实用。

我最近发现nodered里的get history节点也很好用,可以调取某一时刻到另一时刻之间 ...

Node-red还在学习中,我现在想的是怎么把一个周期的统计结果在特定时间写到数据库中去 :D
回复

使用道具 举报

1

主题

106

帖子

992

积分

高级会员

Rank: 4

积分
992
金钱
886
HASS币
0
发表于 2022-2-22 00:44:04 | 显示全部楼层
QQ拼音截图未命名.png 我用来监测下雨次数,下雨大于一次就不开启自动浇水
回复

使用道具 举报

3

主题

28

帖子

141

积分

注册会员

Rank: 2

积分
141
金钱
113
HASS币
0
 楼主| 发表于 2022-2-25 23:51:51 | 显示全部楼层
小伙子 发表于 2022-2-22 00:44
我用来监测下雨次数,下雨大于一次就不开启自动浇水

这个应用点不错 :D
回复

使用道具 举报

1

主题

28

帖子

361

积分

中级会员

Rank: 3Rank: 3

积分
361
金钱
333
HASS币
0
发表于 2022-2-26 20:46:09 来自手机 | 显示全部楼层
牛逼,一学就会
回复

使用道具 举报

5

主题

85

帖子

951

积分

论坛DIY达人

积分
951
金钱
846
HASS币
80
发表于 2022-2-27 11:53:29 | 显示全部楼层
又学到了,感谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-28 20:49 , Processed in 0.056988 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表