[Article] Vos entités sous surveillance

Bonjour,

J’ai fait une recherche sur Search results for 'unavailable' - Home Assistant Community il y a pas mal de sujet, mais même avec la traduction google, j’ai un peu de mal à tout comprendre …
Je progresse lentement.

Tout doit être bon maintenant.

En effet, merci et bonne journée

Merci beaucoup @Argonaute ça fonctionne parfaitement.
Je cherchait une solution simple, la voilà.
Bonne journée.

1 « J'aime »

Super merci @Argonaute …c’est génial …
une petit précision pour les bleus comme moi, j’ai cherché 3 heures avant de trouver.
J’avais un probleme avec {{entities}} … à chaque fois que j’enregistrais, il s’effaçait .
. parce que je le faisais pas au bon endroit !!!


.
.
.
il faud faire la modif avec l’edition yaml avec les 3 petits points au niveaux de" appeler le service" …

.
.

Voilà …
@+

Oh désolé, effectivement.

Dans l’article, tu as du passer à côté de la précision suivante :

Il est conseillé de passe le champ en mode YAML (cliquer sur les 3 points à droite du champ pour le menu) comme ci-dessous, et vérifier que le message est le même que ci-dessous.

Heu non , tu n’as pas a étre désolé , … , c’est plutôt a mois de l’étre !!
, … j’ai lu 3x même , sauf que pour moi les 3 point c’est a droite mais en haut !!! :roll_eyes:
N’empêche que j’étais en rogne ( contre moi) de mettre autant de temps a trouver …
Comme qui dis l’autre … c’est le métier qui rentre …
( même si je suis à 1000 lieux d’en faire mon métier) :smiley:

1 « J'aime »

Salut,

Merci pour le tutoriel mais j’ai une question. En effet la solution proposée est d’envoyer une notification et de mon coté je souhaiterais avoir une page de maintenance qui me liste tous les sensors indisponibles. En effet une fois la notification fermée on n’a plus le capteur indisponible et pas forcément le temps de traiter le pb directement. Pour le moment j’ai utilisé la carte « entity-filter » en affichant le capteur si son état est « indisponible », mais cela oblige de lister manuellement tous les capteurs. Est-ce qu’il y aurait moyen de rendre ca plus simple? Par exemple dès qu’un capteur passe en indisponible il est affiché dans une carte sur le dashboard.

Merci

Salut,
Oui ce serait à priori possible, mais je n’ai pas testé.
Il faudrait essayer de reprendre le code du code jinja2 contenu dans le blueprint, légèrement l’adapter et le mettre dans une carte markdown.

@herveaurel

Si c’est pas déjà fait, je pense que tu pourrai améliorer tes automatisations, et d’utiliser la notion de context.id dans tes actions de ton service notify, voir la doc officielle :
image

1 « J'aime »

Il faut que je teste ca !
J’ai une soif infinie d’apprendre.
Merci.

1 « J'aime »

En soit, ton automatisation fonctionne mais en suivant la logique de leur doc, c’est pas déconnant :slight_smile:

Including an id in the action allows us to identify this script run and not accidentally trigger for other notification actions

1 « J'aime »

Salut

@Adrien_1 J’utilise ça pour afficher les équipements indisponibles :

type: markdown
content: |
  {%- set ns = namespace(sensors=[])  -%}
  {%- for state in states.sensor
      | selectattr('attributes.device_class', 'defined')
      | selectattr('state', '==', 'unavailable')  -%}
      {%- set ns.sensors = ns.sensors + [dict(name = state.name, state = state.attributes.device_class)] -%}
  {%- endfor -%}
  {%- for state in states.binary_sensor
      | selectattr('attributes.device_class', 'defined')
      | selectattr('state', '==', 'Undefined')  -%}
      {%- set ns.sensors = ns.sensors + [dict(name = state.name, state = state.attributes.device_class)] -%}
  {%- endfor -%}
  {%- set unav = ns.sensors | sort(attribute='state') -%}
  {%- set ns = namespace(unav='') -%}
  {%- for state in unav -%}
      {%- set ns.unav = ns.unav + (state.name ~ ' (' ~ state.state ~ ')' ~ "\n")  -%}
  {%- endfor -%}
  {%- if ns.unav -%}
    {{ ns.unav }}
  {%- else -%}
    {{ 'none' }}
  {%- endif -%}
title: Equipements indisponibles

Salut @Adrien_1

Bon j’ai testé. Si tu utilises la méthode 1 du tuto (utilisation des labels), il est bien possible de créer très facilement une carte qui te donne les indisponibilités des devices et qui se met à jour quand tu la consultes.

Voila le résultat si il y a des entités indisponibles (et sans les ‹ s › quand il n’y en a qu’une):
image

Et si il n’y en a pas :
image

Pour cela, il faut aller dans le dashboard en édition et créer une markdown card

Copier le code jinja2 suivant dans le champs contenu :

{% set selector = 'check' %}
{% set result = namespace(entities=[]) %}
{% set entity_list = label_entities(selector)%}

{% for item in entity_list %}
  {% for state in states | selectattr('state','match', 'unavailable') | selectattr('entity_id', 'match', item)%}
    {% set result.entities = result.entities + [state.name] %}
  {% endfor %}
{% endfor %}

{% if result.entities | length == 0 %}
  **Aucun device indisponible.**
{% else %}
  {% if result.entities | length == 1 %}
    **Device indisponible :**
  {% else %}
    **Devices indisponibles :**
  {% endif %}
  {{ '\r\n - ' ~ result.entities|unique|join('\r\n - ')}}
{% endif %}


Change le label dans la première ligne si tu en utilises un autre (check utilisé dans le code).

Pourrais tu tester cela et me dire si cela convient ? Si oui, je rajouterai un petit chapitre dans l’article.
Merci d’avance.

2 « J'aime »

Salut,

Au top, ca fonctionne. C’est exactement ce que je cherchais. Merci beaucoup pour le tuto :slight_smile:

1 « J'aime »

wahou !! flushed
.
.
.TROP FORT @ARGONAUTE !!
Génial …

smile

Merci :grinning:
J’ai rajouté la carte dans l’article du coup…
Excellent we

2 « J'aime »

Bjr à tous. Je suis surpris du nombre de personne qui repondent à ce tuto. En effet si tous le monde trouve se tuto super , cela veut dire que beaucoup de personne , ont des entités qui passent indisponible…
Hors une entités si l’on s’en sert dans une automatisation , c’est que l’on en a besoin, donc elle n’a pas à passer en indisponible…( sauf si c’est un capteur sur pile , ou oui là le capteur pourrait passer en indisponible… )
Un exemple concret , j’ai une lumière qui est simple commandée par un capteur de présence. Hier, elle a ete enclenché à 0h00 mais l’entité est passée en indisponible donc elle ne s’est jamais éteinte de la nuit. Ce tuto m’aurait informer que le capteur était indisponible, il aurait fallut que je prenne escabeau, réapparaîré le capteur etc etc…
Donc oui , ce tuto est super pour savoir ce qui indisponible, mais ne repond pas à la problématique de ne plus avoir d’entités indisponible…

D’où ma question qui suis: Comment faire pour ne plus avoir d’entité qui passe en indisponible sans raison apparente sous zigbee2mqtt ?? Car la est pour moi le vrai pb…
Martial

Si on compare à une voiture, nous proposons l’équivalent des voyants de défaut du tableau de bord.
Après, la question posée est comment faire pour que sa voiture ne tombe jamais en panne… Compliqué de répondre :scream:

1 « J'aime »

Bonjour à toi @Argonaute et en grand merci pour le partage. J’avais installé ton automatisation avec la méthode des étiquettes ou label mais je l’avais assez rapidement désactivée car recevoir une notification 4 fois par jour pour me dire "équipements non disponibles: « rien », çà m’a vite agacé. Comme on dit, trop d’informations tue l’information.
J’ai vu ton récent post avec la carte markdown et de fait j’ai trouvé l’idée très intéressante et j’ai réactivé l’automatisation. Du coup, est il possible d’avoir une notification via mobile_app ou telegram uniquement lorsque des entités sont indisponibles??
j’ai copié collé le code jinja posté plus haut (pour la carte markdown) dans le corps du message mais cela ne fonctionne pas…
avant j’avais çà:

data:
  message: |
    ‼ Attention, équipements non disponibles:
    {{entities}}
  title: Surveillance système de Home Assistant
enabled: true
action: notify.telegram_maison

cà marche mais çà polue un peu

après :

data:
  message: |
    {% set selector = 'check' %}
{% set result = namespace(entities=[]) %}
{% set entity_list = label_entities(selector)%}

{% for item in entity_list %}
  {% for state in states | selectattr('state','match', 'unavailable') | selectattr('entity_id', 'match', item)%}
    {% set result.entities = result.entities + [state.name] %}
  {% endfor %}
{% endfor %}

{% if result.entities | length == 0 %}
  **Aucun device indisponible.**
{% else %}
  {% if result.entities | length == 1 %}
    **Device indisponible :**
  {% else %}
    **Devices indisponibles :**
  {% endif %}
  {{ '\r\n - ' ~ result.entities|unique|join('\r\n - ')}}
{% endif %}
  title: Surveillance système de Home Assistant
enabled: true
action: notify.telegram_maison

et çà marche pas… mais je pense que je dois aussi recevoir une notif qd tout va bien…
une idée ??
d’avance mlerci pour le temps que tu y consacreras.