la différence se situe avec le nombre de lignes vides qui vont être générés par ton code.
Les tirets servent à indiquer qu’on est dans un même bloc.
ci-dessous tu vas trouver tout d’abord le résultat avec les tirets et encore en dessous sans les tirets.
Les fenêtres suivantes sont ouverts : dsSalonFenetre, dsSdB Porte
Les fenêtres suivantes sont ouverts : dsSalonFenetre, dsSdB Porte
N’hésite pas à me dire si je n’ai pas été assez clair
1 « J'aime »
Kriss
Août 4, 2024, 12:04
22
J’utilise un groupe pour certaines fonctions mais sinon voici mon code pour avoir la liste des fenêtres ouvertes et leur nombre :
##### Opened windows number ##################################
- name: "Opened windows number"
unique_id: a50f776c-4d99-495e-89f4-29a252844e27
icon: mdi:window-open-variant
state: >
{%- set ns = namespace(doorsensors=[]) -%}
{%- set ns.doorsensors = states.binary_sensor
| selectattr('attributes.device_class', 'defined')
| selectattr('attributes.device_class', '==', 'window')
| selectattr('state', 'eq', 'on')
| map(attribute='name') | list -%}
{{ ns.doorsensors | count }}
##### Opened windows list ##################################
- name: "Opened windows list"
unique_id: 45469f44-7a14-48ac-9209-92699560a9be
icon: mdi:window-open-variant
state: >
{%- set ns = namespace(doorsensors=[]) -%}
{%- set ns.doorsensors = states.binary_sensor
| selectattr('attributes.device_class', 'defined')
| selectattr('attributes.device_class', '==', 'window')
| selectattr('name', 'contains', 'Fenêtre')
| selectattr('state', 'eq', 'on')
| map(attribute='name') | list -%}
{%- if (ns.doorsensors | count > 0) -%}
{{ ns.doorsensors | list | join('\n')}}
{%- else -%}
Toutes les fenêtres sont fermées
{%- endif %}
A insérer dans Templates.yaml
Pour l’utilisation, j’ai un bouton qui change d’état suivant le nombre de fenêtres ouvertes. Voici son code :
type: custom:button-card
entity: sensor.opened_windows
show_icon: true
size: 40%
icon: |
[[[
var nb = (states['sensor.opened_windows'].state);
if (nb == 0) return 'mdi:window-closed-variant';
if (nb <= 2) return 'mdi:window-open-variant';
else return 'mdi:weather-windy';
]]]
color: var(--primary-color)
name: Fenêtres
show_name: true
show_state: false
show_label: false
label: |
[[[
var nb = (states['sensor.opened_windows'].state);
var result = nb + ' ouverte';
if (nb > 1) result += 's';
if (nb == 0) return 'Fermées';
else return result;
]]]
state:
- value: 0
color: var(--disabled-text-color)
styles:
name:
- font-size: 14px
label:
- font-size: 12px
Et une carte conditionnelle pour afficher la liste des fenêtres ouvertes :
- type: conditional
conditions:
- condition: numeric_state
entity: sensor.opened_windows
above: 0
card:
type: markdown
content: '{{states(''sensor.opened_windows_list'')}}'
title: ''
Voici le résultat :
Je t’invite aussi à aller jeter un oeil du côté de la chaine YouTube de SmartHomeJunkie, il a des tutos pour le code et a fait des vidéos d’exemples appliqués…
1 « J'aime »