Pas mal.
Je fais la même chose sans blueprint.
Et pas de verif toutes les X min, c’est en temps réel.
J’ai créé des groupes de toutes les catégories que je souhaites surveiller :
- plantes
- cameras
- zigbee
- lumieres
- interrupteurs
- aspirateurs
- lave-vaisselle
et tellement d’autres !
J’ai créé des compteurs HS, et des sensor HS, exemple pour les aspis :
compteur_aspi:
friendly_name: Compteur aspi
value_template: >-
{%- set entities = expand('group.aspis') | selectattr('state', 'eq', 'cleaning') | map(attribute='name') | list -%}
{{ entities | count }}
aspi_hs:
friendly_name: aspi indisponible
value_template: >-
{%- set entities = expand('group.aspis') | selectattr('state', 'in', ['unavailable', 'unknown']) | map(attribute='name') | list -%}
{{ entities | join(', ') }}
Puis j’ai fait un petit sensor template :
systeme_avertissement:
friendly_name: Surveillance système
value_template: >-
{%- set messages = [] -%}
{%- set compteur = states('sensor.compteur_serrures_hs') | int(0) -%}
{%- set sensor = states('sensor.serrures_hs') -%}
{% set current_time = as_timestamp(now()) %}
{% set last_changed = as_timestamp(states.sensor.compteur_serrures_hs.last_changed) %}
{%- if compteur > 1 and (current_time - last_changed > 600) -%}
{%- set messages = messages + [compteur ~ ' Serrures : ' ~ sensor] -%}
{%- elif compteur == 1 and (current_time - last_changed > 600) -%}
{%- set messages = messages + ['Serrure : ' ~ sensor] -%}
{%- endif -%}
{%- if states('sensor.pronote_hs') and is_state('binary_sensor.vacances_scolaires_aujourdhui', 'off')%}
{%- set messages = messages + ['Pronote : ' ~ states.sensor.pronote_hs.state] -%}
{%- else -%}
{%- endif -%}
{%- set compteur = states('sensor.compteur_plante_hs') | int(0) -%}
{%- set sensor = states('sensor.plante_hs') -%}
{%- if compteur > 1 -%}
{%- set messages = messages + [compteur ~ ' Plantes : ' ~ sensor] -%}
{%- elif compteur == 1 -%}
{%- set messages = messages + ['Plante : ' ~ sensor] -%}
{%- endif -%}
{%- set compteur = states('sensor.compteur_lumieres_hs') | int(0) -%}
{%- set sensor = states('sensor.lumiere_hs') -%}
{%- if compteur > 1 -%}
{%- set messages = messages + [compteur ~ ' Lumières : ' ~ sensor] -%}
{%- elif compteur == 1 -%}
{%- set messages = messages + ['Lumière : ' ~ sensor] -%}
{%- endif -%}
{%- if is_state('input_boolean.noel', 'off') %}
{%- else -%}
{%- if not states('sensor.noel_hs') -%}
{%- else -%}
{%- set messages = messages + ['Noël : ' ~ states.sensor.noel_hs.state] -%}
{%- endif -%}
{%- endif -%}
{%- set compteur = states('sensor.compteur_porte_hs') | int(0) -%}
{%- set sensor = states('sensor.porte_hs') -%}
{%- if compteur > 1 -%}
{%- set messages = messages + [compteur ~ ' Portes : ' ~ sensor] -%}
{%- elif compteur == 1 -%}
{%- set messages = messages + ['Porte : ' ~ sensor] -%}
{%- endif -%}
{%- set compteur = states('sensor.compteur_mouv_hs') | int(0) -%}
{%- set sensor = states('sensor.mouv_hs') -%}
{%- if compteur > 1 -%}
{%- set messages = messages + [compteur ~ ' Mouvements : ' ~ sensor] -%}
{%- elif compteur == 1 -%}
{%- set messages = messages + ['Mouvement : ' ~ sensor] -%}
{%- endif -%}
{%- if not states('sensor.tv_hs') %}
{%- else -%}
{%- set messages = messages + ['TV : ' ~ states.sensor.tv_hs.state] -%}
{%- endif -%}
{%- if not states('sensor.apple_tv_hs') %}
{%- else -%}
{%- set messages = messages + ['Apple TV : ' ~ states.sensor.apple_tv_hs.state] -%}
{%- endif -%}
{%- if not states('sensor.moustique_hs') %}
{%- else -%}
{%- set messages = messages + ['Anti-moustiques : ' ~ states.sensor.moustique_hs.state] -%}
{%- endif -%}
{%- if not states('sensor.zigbee_hs') %}
{%- else -%}
{%- set messages = messages + ['Zigbee : ' ~ states.sensor.zigbee_hs.state] -%}
{%- endif -%}
{%- set compteur = states('sensor.compteur_echo_hs') | int(0) -%}
{%- set sensor = states('sensor.echo_hs') -%}
{%- if compteur > 1 -%}
{%- set messages = messages + [compteur ~ ' Echos : ' ~ sensor] -%}
{%- elif compteur == 1 -%}
{%- set messages = messages + ['Echo : ' ~ sensor] -%}
{%- endif -%}
{%- set compteur = states('sensor.compteur_thermo_hs') | int(0) -%}
{%- set sensor = states('sensor.thermo_hs') -%}
{%- if compteur > 1 -%}
{%- set messages = messages + [compteur ~ ' Thermos : ' ~ sensor] -%}
{%- elif compteur == 1 -%}
{%- set messages = messages + ['Thermo : ' ~ sensor] -%}
{%- endif -%}
{%- set compteur = states('sensor.compteur_aspi_hs') | int(0) -%}
{%- set sensor = states('sensor.aspi_hs') -%}
{%- if compteur > 1 -%}
{%- set messages = messages + [compteur ~ ' Aspis : ' ~ sensor] -%}
{%- elif compteur == 1 -%}
{%- set messages = messages + ['Aspi : ' ~ sensor] -%}
{%- endif -%}
{%- set compteur = states('sensor.compteur_inter_hs') | int(0) -%}
{%- set sensor = states('sensor.inter_hs') -%}
{%- if compteur > 1 -%}
{%- set messages = messages + [compteur ~ ' Interrupteurs : ' ~ sensor] -%}
{%- elif compteur == 1 -%}
{%- set messages = messages + ['Interrupteur : ' ~ sensor] -%}
{%- endif -%}
{%- if is_state('binary_sensor.presence_sejour_fp2', 'unavailable') -%}
{%- set messages = messages + ['Présence FP2'] -%}
{%- endif -%}
{%- if is_state('device_tracker.arlo_sonnette', 'not_home') -%}
{%- set messages = messages + ['Sonnette'] -%}
{%- endif -%}
{%- if states('switch.lave_vaisselle_power') == 'unavailable' or
states('binary_sensor.lave_vaisselle_door') == 'unavailable' -%}
{%- set messages = messages + ['Lave-vaisselle'] -%}
{%- endif -%}
{%- if messages %}
{{ messages | join('<br>') }}
{%- else %}
OK
{%- endif %}
Et une automatisation qui envoie cette notif si ce sensor n’est pas état « OK » pendant 1min (car parfois des bricoles passent unavailable
quelques secondes, ca evite d’etre embêté trop souvent pour rien :
- service: notify.mobile_app_iphone_aurel
data:
title: ‼️ Appareils(s) HS
message: |-
{{ states('sensor.systeme_avertissement') | replace('<br>', '
') }}
data:
tag: hs
actions:
- action: RESTART_PONT
title: Redémarrer le pont
destructive: true
- action: RESTART_HA
title: ⚠️ Redémarrer HA
destructive: true
- action: RIEN
title: Non
J’en n’ai pas sous la main mais la notif a le titre ‼️ Appareils(s) HS
donc je l’ouvre sans trop tarder, puis chaque catégorie apparait avec un retour a la ligne donc la lecture est propre, sous la forme :
Appareils(s) HS
Zigbee HS : Prise xxx
Lumière HS : Lampe du bureau, Véranda
Aspirateur : Wall-E
EDIT:
Peut-etre long a mettre en place la première fois, mais efficacité sans faille.