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

 找回密码
 立即注册
查看: 1883|回复: 4

[基础教程] selectattr函数使用,常规用途统计设备在线数

[复制链接]

3

主题

60

帖子

330

积分

中级会员

Rank: 3Rank: 3

积分
330
金钱
270
HASS币
0
发表于 2023-7-7 15:43:08 | 显示全部楼层 |阅读模式
selectattr函数是Jinja2模板引擎提供的一个过滤器,用于在模板中对对象列表进行属性选择和筛选。
selectattr函数可以使用的属性包括:
  • 'eq':等于指定的属性值
  • 'ne':不等于指定的属性值
  • 'lt':小于指定的属性值
  • 'gt':大于指定的属性值
  • 'le':小于或等于指定的属性值
  • 'ge':大于或等于指定的属性值
  • 'contains':属性包含指定的子字符串
  • 'search':属性匹配指定的正则表达式
  • 比如我需要得到我房间里面的开启的空调有几台
  • 在配置文件中新增这段代码,意思是新增一个sensor的实体
  • sensor:  - platform: template    sensors:      number_climates_on:        friendly_name: 开启空调数量        value_template: "{{ states.climate| selectattr('state','ne','off')| selectattr('attributes.home_room','search', '金沙')| selectattr('attributes.friendly_name','search', '空调') | list| count}}"
    这个函数用于在Home Assistant中计算符合条件的传感器实体数量。具体解释如下:

    • states.climate:引用了所有的climate(空调)实体。
    • selectattr('state','ne','off'):从上一步的实体列表中,选择state属性不等于"off"的实体。
    • selectattr('attributes.home_room','search', '金沙'):从上一步的实体列表中,选择attributes.home_room属性包含"金沙"的实体。
    • selectattr('attributes.friendly_name','search', '空调'):从上一步的实体列表中,选择attributes.friendly_name属性包含"空调"的实体。
    • list:将选择的实体转换为列表形式。
    • count:计算列表中元素的数量。
    最终,这个函数会返回满足以上条件的传感器实体数量。
    微信图片_20230707154343.png
    现在有chatgpt所以玩智能家居也会有很多的可能性,以上分享给和我一样的小白学习!


评分

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

查看全部评分

回复

使用道具 举报

8

主题

690

帖子

4556

积分

论坛元老

Rank: 8Rank: 8

积分
4556
金钱
3861
HASS币
0
QQ
发表于 2023-7-7 16:15:55 | 显示全部楼层
学习了,谢谢分享
回复

使用道具 举报

3

主题

86

帖子

712

积分

高级会员

Rank: 4

积分
712
金钱
626
HASS币
0
发表于 2024-4-20 09:26:15 | 显示全部楼层
现在就去试试。
回复

使用道具 举报

1

主题

17

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
173
HASS币
0
发表于 2024-8-26 10:40:06 | 显示全部楼层
感谢感谢!非常有用
回复

使用道具 举报

1

主题

17

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
173
HASS币
0
发表于 2024-8-26 10:56:41 | 显示全部楼层
还有一个比较实用的函数 rejectattr()
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 04:56 , Processed in 0.102271 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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