Contexte et problématique
Si vous utilisez un ou plusieurs appareils Awtrix dans votre installation Home Assistant, vous avez probablement rencontré les mêmes difficultés que moi. Avec la multiplication des automatisations, la gestion des notifications et des applications personnalisées devient rapidement complexe:
-
Il faut répéter les mêmes configurations dans chaque automatisation
-
On doit spécifier manuellement chaque appareil Awtrix à chaque fois
-
Quand on ajoute un nouvel appareil, il faut mettre à jour toutes les automatisations existantes
-
Les paramètres de configuration (couleur, durée, icône, etc.) sont dispersés partout
J’ai donc voulu essayer de simplifier, j’ai tenté l’approche d’un script unique qui centralise et simplifie la gestion des appareils Awtrix. Plus besoin de créer une automatisation par appareil ou par type de notification!
Fonctionnalités
-
Détection automatique de tous vos appareils Awtrix dans votre installation
-
Envoi simultané de messages à tous vos appareils Awtrix
-
Deux modes de fonctionnement:
-
Mode notification: pour afficher un message temporaire
-
Mode application personnalisée: pour créer ou mettre à jour une app personnalisée
-
Personnalisation complète de l’affichage (textes, icônes, couleurs, effets, etc.)
-
Possibilité de supprimer facilement une application personnalisée
Prérequis
-
Home Assistant avec l’intégration MQTT configurée
-
Un ou plusieurs appareils Awtrix flasher avec awtrix3
-
Les topics MQTT de vos appareils Awtrix, de ce que j’ai put constater, contiennent « device_topic » dans leur entity_id
Installation
Il suffit de créer un script dans Home Assistant à partir du YAML ci-dessous:
sequence:
# Première étape: Définition des variables
- variables:
# Cette variable récupère tous les topics MQTT des appareils Awtrix disponibles
awtrix_topic_states: |
{% set awtrix_topic = namespace(states=[]) %} {% for state in states %}
{% if 'device_topic' in state.entity_id %}
{% set awtrix_topic.states = awtrix_topic.states + [state.state] %}
{% endif %}
{% endfor %} {{ awtrix_topic.states }}
# Cette variable détermine si on envoie vers une customapp ou une notification
# /custom/[nom_app] pour une customapp, /notify pour une notification standard
end_topic: "{{ '/custom/' + customapp if customapp else '/notify' }}"
# Deuxième étape: Boucle pour envoyer le message à tous les appareils Awtrix
- repeat:
sequence:
# On stocke le topic courant dans une variable pour chaque itération
- variables:
current_topic: "{{ repeat.item }}"
# Publication du message MQTT vers l'appareil courant
- data:
qos: 0
retain: false
topic: "{{current_topic}}{{ end_topic }}"
payload: |
{% if message %}
{
"text": "{{ message }}",
"icon": "{{ icone }}",
"pushIcon": 0,
"scrollSpeed": "{{ scrollspeed }}",
"gradient": "{{ degrade }}",
"rainbow": {{ rainbow }},
"color": "{{ color }}",
"duration": "{{ duree }}"
}
{% else %}
{}
{% endif %}
action: mqtt.publish
enabled: true
# Boucle pour chaque topic Awtrix trouvé dans les états
for_each: "{{ awtrix_topic_states }}"
# Configuration générale de l'automatisation
alias: awtrix dynamique customapp notify
# Définition des champs pour l'interface utilisateur
fields:
# Champ pour spécifier le nom de la customapp (optionnel)
customapp:
selector:
text: null
name: customapp
description: nom de la customapp, laisser vide pour faire une notification
required: false
# Champ pour le message à afficher
message:
selector:
text: null
name: message
description: message, laisser avec un "espace" pour effacer la customapp
required: false
# Champ pour l'icône
icone:
selector:
text: null
name: icone
description: icone, le nom ou son numero dans l'awtrix
required: false
default: warning
# Activation du mode arc-en-ciel
rainbow:
selector:
text: null
name: rainbow
description: rainbow true/false
default: "false"
required: true
# Vitesse de défilement du texte
scrollspeed:
selector:
text: null
name: scrollSpeed
description: vitesse de defillement
default: "50"
required: true
# Configuration du dégradé de couleurs
degrade:
selector:
text: null
name: degradé
description: "degradé (2 couleurs #hexa ou rgb)"
# Couleur du texte
color:
selector:
text: null
name: color
description: >-
couleur du texte string ou array "#FFFFFF" or [255,255,0], seagreen par
defaut
default: "#2e8b57"
# Durée d'affichage de l'application ou de la notification
duree:
selector:
text: null
name: duree
description: durée d'affichage de l'app ou de la notif
default: "25"
required: true
description: >-
Cette automatisation permet d'envoyer des messages et des notifications à tous les appareils
Awtrix disponibles dans votre système Home Assistant. Elle offre deux modes de fonctionnement:
1. Mode Notification: Envoi d'une notification temporaire (sans remplir le champ "customapp")
2. Mode Application Personnalisée: Création ou mise à jour d'une application personnalisée sur
vos appareils Awtrix (en spécifiant un nom dans le champ "customapp")
Le script détecte automatiquement tous les topics MQTT des appareils Awtrix et envoie le message
à chacun d'entre eux. Vous pouvez personnaliser entièrement l'apparence du message (texte, icône,
couleur, effets, vitesse de défilement, etc.).
Pour supprimer une application personnalisée, spécifiez son nom dans le champ "customapp" et
mettez simplement un espace dans le champ "message".
Détails des paramètres du payload MQTT:
- text: Texte à afficher sur l'Awtrix
- icon: Icône à afficher (nom ou numéro)
- pushIcon: Position de l'icône (0 = gauche, 1 = droite)
- scrollSpeed: Vitesse de défilement du texte
- gradient: Dégradé de couleurs (format spécifique)
- rainbow: Mode arc-en-ciel (true/false)
- color: Couleur du texte (hex ou RGB)
- duration: Durée d'affichage en secondes
Utilisation
Une fois le script installé, vous pouvez l’appeler depuis:
-
L’interface utilisateur de Home Assistant
-
D’autres automatisations
-
Des scripts
-
Des appels de service
Pour envoyer une notification simple
Remplissez les champs sans spécifier de « customapp ». Le message s’affichera sur tous vos appareils Awtrix pendant la durée spécifiée.
Pour créer ou mettre à jour une application personnalisée
Renseignez le champ « customapp » avec le nom de votre choix, puis configurez les autres paramètres. L’application sera créée ou mise à jour sur tous vos appareils Awtrix.
Pour supprimer une application personnalisée
Renseignez le champ « customapp » avec le nom de l’application à supprimer, et mettez simplement un espace dans le champ « message ».
Avantages de cette approche centralisée
Cette solution offre plusieurs avantages concrets:
-
Maintenance simplifiée: Un seul script à mettre à jour au lieu de dizaines d’automatisations individuelles
-
Découverte automatique: Quand vous ajoutez un nouvel appareil Awtrix, il est automatiquement détecté et intégré
-
Configuration unifiée: Tous les paramètres sont centralisés dans un seul endroit
-
Interface utilisateur intuitive: Les champs sont décrits et documentés dans l’interface
-
Flexibilité maximale: Compatible avec les notifications simples et les applications personnalisées
Mes exemples d’utilisation
Voici quelques façons dont j’utilise personnellement ce script dans mon installation:
Exemple :
J’ai créé une automatisation qui surveille le capteur de température de ma chambre et met à jour une application personnalisée sur mes appareils Awtrix à chaque changement de valeur. La couleur du texte change automatiquement selon la température:
- Bleu si moins de 19°C
- Vert entre 19°C et 23°C
- Rouge si plus de 23°C
alias: customapp temp_cham
description: ""
triggers:
- entity_id:
- sensor.temperature_chambre
id: tempcham
trigger: state
conditions: []
actions:
- variables:
temp_cham: |
{{ "Chambre" + " " + states('sensor.temperature_chambre') + "°C" }}
color: |
{% set state = states('sensor.temperature_chambre') %}
{% if state >= '23' %}
#FF0000
{% elif state >= '19' %}
#2e8b57
{% else %}
#0000ff
{% endif %}
- action: script.awtrix_dynamique_customapp_dupliquer
data:
icone: temp_ch
rainbow: "false"
scrollspeed: "50"
color: "{{ color }}"
duree: "25"
customapp: temp_cham
message: "{{ temp_cham }}"
mode: single
Cette automatisation se déclenche à chaque changement de température et met à jour l’application « temp_cham » sur tous mes appareils Awtrix. Le message affiché inclut le mot « Chambre » suivi de la température actuelle. L’icône utilisée est « temp_ch » (que j’ai ajoutée dans ma bibliothèque d’icônes Awtrix).
Si vous avez des questions ou des suggestions d’amélioration, n’hésitez pas.