Je souhaite être alerté via une notification lorsque l’état d’un sensor fait parmi d’une liste.
Ma configuration
J’ai créé des sensors pour suivre le status de ma tondeuse via MQTT.
Ce status peut avoir plus de 76 valeurs différentes et parmi ces 76 valeurs certaines sont connues pour être des erreurs et d’autres un fonctionnement normal.
Je vais me baser sur un code que j’avais déjà qui me notifie toutes les 10 minutes si la charge de la tablette est inférieure à 30 et qu’elle n’est ni en charge, ni inconnu et ni inaccessible, voici le code revu pour mon besoin actuel :
#
# Notification lors d'une erreur sur Caroline
# Une notification est envoyée toutes les 10 minutes
# tant que Caroline n'est pas revenue dans un état de bon fonctionnement
#
- mode: single
alias: "Notification sur erreur de Caroline"
description: "Notification sur erreur de Caroline"
trigger:
- platform: state
entity_id: sensor.automower_status
condition: []
action:
- choose:
- conditions:
- <le status fait partie d'une liste définie d'erreur>
sequence:
- repeat:
while:
- <le status fait partie d'une liste définie>
sequence:
- service: script.notify_mon_phone
data: <le message Caroline est plantée !>
- delay:
hours: 0
minutes: 10
seconds: 0
milliseconds: 0
- condition: not
conditions:
- <le status fait partie d'une liste définie d'état correct>
default: []
Comment faire pour rédiger la condition : <le status fait partie d'une liste définie d'erreur> ?
P.S. Ah oui, ma tondeuse s’appelle Caroline (rapport à la tortue de Boule & Bill)
#
# Condition : Caroline en erreur avec Notif
#
alias: "Caroline en erreur avec Notif"
condition: template
entity_id: sensor.automower_status
state: |-
{% set codeNotif = [
'-' ,
'6' ,
'8' ,
'12' ,
'14' ,
'16' ,
'18' ,
'26' ,
'28' ,
'30' ,
'34' ,
'38' ,
'42' ,
'52' ,
'54' ,
'56' ,
'58' ,
'1038' ,
'1052' ,
'1056' ,
'1062' ,
'1066'
]
%}
{% set state = value %}
{{ state in codeNotif }}
automations/messages/automower_in_error.yaml
#
# Message : Caroline en erreur
#
title: 'Caroline en erreur'
message: >-
⚠️ Caroline en erreur !
automations/conditions/automower_in_correct.yaml
#
# Condition : Caroline en fonctionnement normal
#
alias: "Caroline en fonctionnement normal"
condition: template
entity_id: sensor.automower_status
state: |-
{% set codeNormal = [
'NULL' ,
'null' ,
'1' ,
'24' ,
'1000' ,
'1002' ,
'1006' ,
'1008' ,
'1012' ,
'1014' ,
'1016' ,
'1024' ,
'1036' ,
'1040' ,
'1042' ,
'1044' ,
'1048' ,
'1050' ,
'1058' ,
'1060' ,
'1064' ,
'1070' ,
'1072'
]
%}
{% set state = value %}
{{ state in codeNormal }}
automations/list/automower_error_notify.yaml
#
# Notification lors d'une erreur sur Caroline
# Une notification est envoyée toutes les 10 minutes
# tant que Caroline n'est pas revenue dans un état de bon fonctionnement
#
- mode: single
alias: "Notification sur erreur de Caroline"
description: "Notification sur erreur de Caroline"
trigger:
- !include ../triggers/state_automower.yaml
condition: []
action:
- choose:
- conditions:
- !include ../conditions/automower_in_error_with_notif.yaml
sequence:
- repeat:
while:
- !include ../conditions/automower_in_error_with_notif.yaml
sequence:
- service: script.notify_sm_a530f_sg
data: !include ../messages/automower_in_error.yaml
- delay:
hours: 0
minutes: 10
seconds: 0
milliseconds: 0
- condition: not
conditions:
- !include ../conditions/automower_in_correct.yaml
default: []
Mais je n’arrive pas à résoudre cet erreur :
Logger: homeassistant.config
Source: config.py:454
First occurred: 07:42:01 (1 occurrences)
Last logged: 07:42:01
Invalid config for [automation]: [entity_id] is an invalid option for [automation]. Check: automation->action->0->choose->0->conditions->0->entity_id. (See ?, line ?).
Logger: homeassistant.config
Source: config.py:454
First occurred: 12:10:45 (1 occurrences)
Last logged: 12:10:45
Invalid config for [automation]: [state] is an invalid option for [automation]. Check: automation->action->0->choose->0->conditions->0->state. (See ?, line ?).
Ote moi d’un doute, t’as essayé en remplaçant le « state » par « value_template » ?
Parce qu’en gros c’est « La » différence entre ce que tu as fait et ce que nous te suggérons avec @OmiTech et ce qui fait aussi qu’on modifie la template derrière
C’est vraiment top, maintenant, je sais j’abuse, comme je reçois une notification, j’aimerais y glisser le code erreur.
Comment connaitre les attributs d’un trigger, par exemple trigger.to_state.xxx.
J’ai modifié mon code pour y insérer le code erreur mais dans le message il n’affiche rien :
#
# Notification lors d'une erreur sur Caroline
# Une notification est envoyée toutes les 10 minutes
# tant que Caroline n'est pas revenue dans un état de bon fonctionnement
#
- mode: single
alias: "Notification sur erreur de Caroline"
description: "Notification sur erreur de Caroline"
trigger:
- platform: state
entity_id: sensor.automower_status
condition: []
action:
- choose:
- conditions:
- !include ../conditions/automower_in_mode_alert.yaml
sequence:
- repeat:
while:
- !include ../conditions/automower_in_mode_alert.yaml
sequence:
- service: notify.mobile_mon_phone
data:
message: >-
⚠️ Caroline en erreur code : {{ trigger.to_state.value }} !
- delay:
hours: 0
minutes: 10
seconds: 0
milliseconds: 0
- condition: not
conditions:
- !include ../conditions/automower_in_mode_normal.yaml
default: []
Le trigger étant d’une platformstate, je me suis dit que trigger.to_state.value pourrait me renvoyer la valeur du trigger mais nada , c’est pas ça…
Une idée ?
P.S. Je vous fais grace des 2 fichiers recensant tous les codes (sauf si vous en avez besoin).
Edit :
Je me répond à moi-même après avoir trouvé la solution en tâtonnant …
#
# Notification lors d'une erreur sur Caroline
# Une notification est envoyée toutes les 10 minutes
# tant que Caroline n'est pas revenue dans un état de bon fonctionnement
#
- mode: single
alias: "Notification sur erreur de Caroline"
description: "Notification sur erreur de Caroline"
trigger:
- platform: state
entity_id: sensor.automower_status
condition: []
action:
- choose:
- conditions:
- !include ../conditions/automower_in_mode_alert.yaml
sequence:
- repeat:
while:
- !include ../conditions/automower_in_mode_alert.yaml
sequence:
- service: notify.mobile_mon_phone
data:
message: >-
⚠️ Caroline en erreur code : {{ trigger.to_state.state }} !
- delay:
hours: 0
minutes: 10
seconds: 0
milliseconds: 0
- condition: not
conditions:
- !include ../conditions/automower_in_mode_normal.yaml
default: []
Ça pourra aider certains !
Après si quelqu’un pouvait m’indiquer une doc où l’on peut trouver les différents attributs des triggers, ça m’arrangerait que tâtonner …