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

 找回密码
 立即注册
查看: 1090|回复: 8

[已解决] 用ha提高自律,但如何计量一个实体的状态时常?

[复制链接]

30

主题

276

帖子

1641

积分

金牌会员

Rank: 6Rank: 6

积分
1641
金钱
1365
HASS币
0
发表于 2022-6-10 13:35:56 | 显示全部楼层 |阅读模式
30金钱
本帖最后由 justion 于 2022-12-16 21:55 编辑

https://www.bilibili.com/video/BV1oZ4y1b77T?vd_source=ff444efba1c630299b3b34a1cfd11c0e今天看到一个B站的视频,讲的是自律方面的,感觉思路还不错,用积分方式管理自律,想着拿到HA里来实现一下遇到了困难。
Snipaste_2022-06-10_13-23-14.png
我创建了两个实体计数器,一个是每日自律积分,实现功能:
1.每天读书、学习的时候会打开台灯,计数台灯打开的时常,1小时记录1分,最好能实现更小的数值划分,比如1分钟或者5分钟记录1分【这个我不知道怎么样去实现好】
2.我有一个锻炼规划和提醒,如果23点前没有完成会提醒我完成,如果提早完成了我会关闭当天的提醒,也就是说ha检测到我关闭了这个提醒会自动记录1分【这个很容易实现了】
Snipaste_2022-06-10_13-27-34.png
3.检测到我打开了电脑,会根据电脑打开的时常来扣分【这条其实和第一条是一样的,只是改成了扣分】
4.每天00:00清零【这个也是简单的】
5.23:00的时候如果积分<0,会自动给我女朋友/父母发一条微信,内容比如XXX,>0则没有通知。【感觉有自虐倾向】

还有一个是合计的自律积分,区别其实就是不会清零,一直积累下去。

其中的关键就是怎么样统计使用时常来转换为计数器中的分值,请大佬们指导。

回复

使用道具 举报

30

主题

276

帖子

1641

积分

金牌会员

Rank: 6Rank: 6

积分
1641
金钱
1365
HASS币
0
 楼主| 发表于 2022-6-10 15:31:44 | 显示全部楼层
Snipaste_2022-06-10_15-30-28.png
我的表述可能不是特别清楚,画了一张图可能会更加直白一些,深棕色的是我不知道怎么样去实现的地方。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

发表于 2022-6-10 15:43:37 来自手机 | 显示全部楼层
不难呀,自动化的trigger可以设置持续时长,应该能解决你说的问题呀
回复

使用道具 举报

30

主题

276

帖子

1641

积分

金牌会员

Rank: 6Rank: 6

积分
1641
金钱
1365
HASS币
0
 楼主| 发表于 2022-6-10 15:45:48 | 显示全部楼层
XCray 发表于 2022-6-10 15:43
不难呀,自动化的trigger可以设置持续时长,应该能解决你说的问题呀

我不是要主动设置时长呢,是想根据时长来给计数器增加或减少相应的数值。
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

发表于 2022-6-10 15:55:53 | 显示全部楼层
justion 发表于 2022-6-10 15:45
我不是要主动设置时长呢,是想根据时长来给计数器增加或减少相应的数值。 ...

刚才没展开说,你再多想一步就行了,比如:
xx打开y分钟zz数值+0.02。。。。。。

另外,statistics平台的虚拟传感器也可以用用,应该比自动化更符合处女座审美
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2022-6-10 16:13:05 | 显示全部楼层
justion 发表于 2022-6-10 15:31
我的表述可能不是特别清楚,画了一张图可能会更加直白一些,深棕色的是我不知道怎么样去实现的地方。 ...

我可能变成打开台灯看电视哈哈哈哈。
Nero
回复

使用道具 举报

30

主题

276

帖子

1641

积分

金牌会员

Rank: 6Rank: 6

积分
1641
金钱
1365
HASS币
0
 楼主| 发表于 2022-6-10 17:33:33 | 显示全部楼层
XCray 发表于 2022-6-10 15:55
刚才没展开说,你再多想一步就行了,比如:
xx打开y分钟zz数值+0.02。。。。。。

Snipaste_2022-06-10_17-27-17.png
Snipaste_2022-06-10_17-27-42.png
唉,我太垃圾了,都拿到这样的数值了,基本的语法不会写,搜索了半天还是写不好。{{states("sensor.dian_nao_shi_chang") - states("sensor.tai_deng_shi_chang") }} 是不是因为是时间数值不能直接相减?



回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11445
金钱
8514
HASS币
460

教程狂人突出贡献

发表于 2022-6-10 18:10:17 | 显示全部楼层
justion 发表于 2022-6-10 17:33
唉,我太垃圾了,都拿到这样的数值了,基本的语法不会写,搜索了半天还是写不好。{{states("sensor. ...

错误提示已经说了,这是字符串,当然不能直接相减了。要先把字符串转换成数值,方法就是后面加上过滤器(比如整数):
|int


上面有两个重要的文档链接,建议经常反复仔细查阅
回复

使用道具 举报

30

主题

276

帖子

1641

积分

金牌会员

Rank: 6Rank: 6

积分
1641
金钱
1365
HASS币
0
 楼主| 发表于 2022-12-16 21:54:48 | 显示全部楼层
本帖最后由 justion 于 2022-12-16 21:56 编辑

各位大佬给了很多建议,但是我最后还是使用了history的工具,类似:
sensor:      
  - platform: history_stats
    name: 电脑时长
    entity_id: switch.pc
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-29 12:39 , Processed in 0.058751 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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