sktyou 发表于 2023-7-7 15:43:08

selectattr函数使用,常规用途统计设备在线数

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:计算列表中元素的数量。
最终,这个函数会返回满足以上条件的传感器实体数量。
现在有chatgpt所以玩智能家居也会有很多的可能性,以上分享给和我一样的小白学习!

QQ617250210 发表于 2023-7-7 16:15:55

学习了,谢谢分享

sandra602 发表于 2024-4-20 09:26:15

:lol 现在就去试试。
页: [1]
查看完整版本: selectattr函数使用,常规用途统计设备在线数