Je me rend compte que je n’ai jamais documenté vraiment cette petite feature de mon dashboard:
Il s’agit d’un coin de mon dashboard où je publie des petits messages façon log.
Du style: lessive à vider / extinction auto des lumières / alerte, etc…
Un espèce de doublon purement dashboard des autres notifications (alexa ou smartphone).
Ceci est basé sur des input_text: perso j’en ai 6 (donc maxi 6 lignes de log…):
Je m’appuie ensuite sur deux scripts:
- Un pour publier un message:
script ECAM-publish
alias: ECAM-publish
description: Décale 5->6, 4->5, 3->4, 2->3 et 1->2 et met le nouveau message en 1
icon: mdi:alert-outline
sequence:
- action: input_text.set_value
metadata: {}
data:
value: "{{states('input_text.ecam5')}}"
target:
entity_id: input_text.ecam6
- action: input_text.set_value
metadata: {}
data:
value: "{{states('input_text.ecam4')}}"
target:
entity_id: input_text.ecam5
- action: input_text.set_value
metadata: {}
data:
value: "{{states('input_text.ecam3')}}"
target:
entity_id: input_text.ecam4
- action: input_text.set_value
metadata: {}
data:
value: "{{states('input_text.ecam2')}}"
target:
entity_id: input_text.ecam3
- action: input_text.set_value
metadata: {}
data:
value: "{{states('input_text.ecam1')}}"
target:
entity_id: input_text.ecam2
- action: input_text.set_value
metadata: {}
data:
value: "{{message}} - {{ now().hour }}:{{ now().minute }}"
target:
entity_id: input_text.ecam1
fields:
message:
selector:
text: null
required: true
description: message a stocker
default: pas de message
On peut bien sur le tester avec les outils de dev:
- l’autre pour tout effacer:
script ecam-clear-all
alias: ecam-clear-all
description: écrit "pas de message" dans tous les input text ECAM
icon: mdi:alert-outline
sequence:
- action: input_text.set_value
metadata: {}
data:
value: pas de message
target:
entity_id:
- input_text.ecam1
- input_text.ecam2
- input_text.ecam3
- input_text.ecam4
- input_text.ecam5
- input_text.ecam6
J’ai ensuite une petite section de dashboard affichant le contenu des input_text de façon conditionnelle suivant la présence ou non de message pertinent, ainsi que le bouton permettant d’effacer les messages s’il y en a :
YAML de la section
type: grid
cards:
- type: heading
heading: Effacer les messages
heading_style: subtitle
tap_action:
action: perform-action
perform_action: script.ecam_clear_all
target: {}
visibility:
- condition: state
entity: input_text.ecam1
state_not: pas de message
- type: heading
heading: Pas de messages
heading_style: subtitle
visibility:
- condition: state
entity: input_text.ecam1
state: pas de message
- type: heading
heading_style: subtitle
badges:
- type: entity
show_state: true
show_icon: false
entity: input_text.ecam1
visibility:
- condition: state
entity: input_text.ecam1
state_not: pas de message
- type: heading
icon: ""
heading_style: subtitle
badges:
- type: entity
show_state: true
show_icon: false
entity: input_text.ecam2
visibility:
- condition: state
entity: input_text.ecam2
state_not: pas de message
- type: heading
icon: ""
heading_style: subtitle
badges:
- type: entity
show_state: true
show_icon: false
entity: input_text.ecam3
visibility:
- condition: state
entity: input_text.ecam3
state_not: pas de message
- type: heading
icon: ""
heading_style: subtitle
badges:
- type: entity
show_state: true
show_icon: false
entity: input_text.ecam4
visibility:
- condition: state
entity: input_text.ecam4
state_not: pas de message
- type: heading
icon: ""
heading_style: subtitle
badges:
- type: entity
show_state: true
show_icon: false
entity: input_text.ecam5
visibility:
- condition: state
entity: input_text.ecam5
state_not: pas de message
- type: heading
icon: ""
heading_style: subtitle
badges:
- type: entity
show_state: true
show_icon: false
entity: input_text.ecam6
visibility:
- condition: state
entity: input_text.ecam6
state_not: pas de message
Un clic sur « effacer les messages » lance le script d’effacement et donne l’affichage suivant:
Il suffit d’appeler le premier script dans les automatisations pour avoir une nouvelle ligne de log dans le dashboard (en parallèle d’une notification smartphone par exemple, ou a la place suivant ce qu’on veut).
Si une ligne est déjà écrite, tout se décale vers le bas (et éventuellement la dernière ligne est perdue)
Exemple avec l'automatisation de fin de lave vaisselle :
Pas de notification Alexa ou smartphone pour le fin du lave vaisselle, souvent lancé de nuit…
alias: MACHINES - vaisselle terminé
description: désactive le booléen vaisselle en cours et notifie un ECAM
triggers:
- type: power
device_id: 9ea0390c2f2d68e24e2fc2e47c2c2dd6
entity_id: 901649d7e5160c61d3b2e1c37d1a2fe8
domain: sensor
below: 5
for:
hours: 0
minutes: 30
seconds: 0
trigger: device
conditions:
- condition: state
entity_id: input_boolean.vaisselle_en_cours
state: "on"
actions:
- data: {}
target:
entity_id:
- input_boolean.vaisselle_en_cours
action: input_boolean.turn_off
- action: script.ecam_publish
data:
message: Fin lave Vaisselle
mode: single
On aura alors l’affichage suivant:
C’est bien sûr perfectible:
- j’aurai pu mettre une boucle dans mon script de publication
- je n’arrive pas à extraire proprement l’heure (cf 16:04 au dessus qui s’affiche 16:4) [edit: solution donnée 2 posts au dessous par @Tochy pour les intéressés]
Mais ça fait le job pour des log perso de certaines actions qu’on veut pouvoir monitorer sans pour autant avoir une notification sur smartphone…
Pour du debug, il est tout à fait possible de passer un argument à écrire dans le script…
Bonus: dans l’interface des automatisations, j’ajoute des tags « ecam » / « alexa-media » / « notification » pour pouvoir filtrer quelles automatisations utilisent quel moyen de notif:





