Merci @WarC0zes
Le récap du coup …
1 - J’ai créé un groupe des shellys que je souhaitais surveiller (paramètres/ Entrées) puis créer une Entrée. Sélectionner Groupe, dans mon cas c’est Groupe d’interrupteurs. Il suffit d’ajouter les éléments que vous souhaitez
2 - La création des templates sensor…ces derniers permettent de créer des entités personnalisées en fonction de ses besoins…ici il m’en faut 2, le nombre et la liste des noms des shelly indisponibles et la liste
Pour cela dans mon fichier templates.yaml, déclaré dans configuration.yaml avec la ligne
- sensor:
- name: "Nbre Shellys indisponibles"
unique_id: nombre_shellys_indisponibles
state: >
{%- set entities = expand('switch.shelly_a_surveiller') | selectattr('state', 'in', ['unavailable', 'unknown']) | map(attribute='name') | list -%}
{{ entities | count }}
- name: "Liste Shellys indisponibles"
unique_id: liste_shellys_indisponibles
state: >
{%- set entities = expand('switch.shelly_a_surveiller') | selectattr('state', 'in', ['unavailable', 'unknown']) | map(attribute='name') | list -%}
{{ entities | join(', ') }}
- name: "EDF Tempo Prix Actuel"
unique_id: "current"
device_class: 'monetary'
unit_of_measurement: "c€/kWh"
icon: 'mdi:cash-check'
availability: >
{{ not 'unavailable' in
[
states('sensor.rte_tempo_couleur_actuelle'),
states('binary_sensor.rte_tempo_heures_creuses'),
] and not 'unknown' in
[
states('sensor.rte_tempo_couleur_actuelle'),
states('binary_sensor.rte_tempo_heures_creuses'),
states('input_number.tarif_edf_tempo_bleu_hp'),
states('input_number.tarif_edf_tempo_bleu_hc'),
states('input_number.tarif_edf_tempo_blanc_hp'),
states('input_number.tarif_edf_tempo_blanc_hc'),
states('input_number.tarif_edf_tempo_rouge_hp'),
states('input_number.tarif_edf_tempo_rouge_hc')
]
}}
state: >
{%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
{%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
{{ states('input_number.tarif_edf_tempo_bleu_hp') | float * 100 }}
{%- else %}
{{ states('input_number.tarif_edf_tempo_bleu_hc') | float * 100 }}
{%- endif %}
{%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Blanc") %}
{%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
{{ states('input_number.tarif_edf_tempo_blanc_hp') | float * 100 }}
{%- else %}
{{ states('input_number.tarif_edf_tempo_blanc_hc') | float * 100 }}
{%- endif %}
{%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Rouge") %}
{%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
{{ states('input_number.tarif_edf_tempo_rouge_hp') | float * 100 }}
{%- else %}
{{ states('input_number.tarif_edf_tempo_rouge_hc') | float * 100 }}
{%- endif %}
{%- else %}
0
{%- endif %}
- name: "EDF Tempo Prochain Prix"
unique_id: "next"
device_class: 'monetary'
unit_of_measurement: "c€/kWh"
icon: 'mdi:cash-clock'
availability: >
{{ not 'unavailable' in
[
states('sensor.rte_tempo_couleur_actuelle'),
states('sensor.rte_tempo_prochaine_couleur'),
states('binary_sensor.rte_tempo_heures_creuses'),
] and not 'unknown' in
[
states('sensor.rte_tempo_couleur_actuelle'),
states('sensor.rte_tempo_prochaine_couleur'),
states('binary_sensor.rte_tempo_heures_creuses'),
states('input_number.tarif_edf_tempo_bleu_hp'),
states('input_number.tarif_edf_tempo_bleu_hc'),
states('input_number.tarif_edf_tempo_blanc_hp'),
states('input_number.tarif_edf_tempo_blanc_hc'),
states('input_number.tarif_edf_tempo_rouge_hp'),
states('input_number.tarif_edf_tempo_rouge_hc')
]
}}
state: >
{%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'on') %}
{%- if is_state('sensor.rte_tempo_prochaine_couleur', "Bleu") %}
{{ states('input_number.tarif_edf_tempo_bleu_hp') | float * 100 }}
{%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Blanc") %}
{{ states('input_number.tarif_edf_tempo_blanc_hp') | float * 100 }}
{%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Rouge") %}
{{ states('input_number.tarif_edf_tempo_rouge_hp') | float * 100 }}
{%- else %}
0
{%- endif %}
{%- else %}
{%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
{{ states('input_number.tarif_edf_tempo_bleu_hc') | float * 100 }}
{%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Blanc") %}
{{ states('input_number.tarif_edf_tempo_blanc_hc') | float * 100 }}
{%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Rouge") %}
{{ states('input_number.tarif_edf_tempo_rouge_hc') | float * 100 }}
{%- else %}
0
{%- endif %}
{%- endif %}
3- l’automatisation, j’ai opté pour un contrôle periodique
alias: Vérification Group Shelly
description: ""
trigger:
- platform: time_pattern
minutes: /10
condition:
- condition: numeric_state
entity_id: sensor.nbre_shellys_indisponibles
above: 0
action:
- action: notify.mobile_app_sm_a546b
metadata: {}
data:
message: >-
Des shellys sont indisponibles : <br>
{{states('sensor.liste_shellys_indisponibles') | replace('<br>','') }}
mode: single