Script pour notification et customapp dynamique sur awtrix

Salut,

Petit déterrage de post. Ce matin, j’ai repris le script de zéro pour en faire une V2 (v2.1.18).

L’idée principale derrière cette refonte : que le script en fasse un maximum tout seul avec le moins d’efforts possible lors de l’appel, tout en gardant la liberté de modifier ce qu’on veut via des overrides.

:hammer_and_wrench: Ce qui change concrètement :

  • :brain: Moteur de Presets : J’ai intégré la logique métier directement dans le script. Pour l’instant, il y a 3 modes (Générique, Thermomètre, Multimédia). Le script formate le texte, choisit l’icône et gère les couleurs tout seul.
  • :satellite_antenna: Modularisation : La détection des matrices est déportée dans un Sensor Template. C’est plus propre et ça allège le script.
  • :vertical_traffic_light: Gestion intelligente de l’état : Le script vérifie l’état de vos matrices et n’envoie les données que si l’écran est allumé.
  • :shuffle_tracks_button: Mode Parallèle : Le script gère maintenant jusqu’à 10 instances simultanées (multi-écrans / multi-flux).
  • :shield: Anti-Collision : Chaque source peut avoir sa propre « App » personnalisée (via l’option suffixe_auto).

:warning: Work In Progress

C’est une base de travail. Pour l’instant, je n’ai intégré que les 3 presets de base, mais l’architecture permet d’en ajouter d’autres facilement.

:camera_with_flash: Aperçu de l’interface (UI-Ready)

Voici à quoi ressemble le moteur une fois installé dans Home Assistant. Tout est paramétrable via l’interface :



:thermometer: Preset : Thermomètre Intelligent

:brain: Logique de Traitement

  • Analyse d’Unité : Le moteur récupère automatiquement l’unité définie dans Home Assistant (°C ou °F).
  • Formatage : Arrondi automatique à 1 décimale pour une lisibilité optimale sur matrice LED.
  • Colorimétrie par défaut :
    • :blue_circle: Bleu (#0000FF) : Température ≤ 19°C.
    • :green_circle: Vert (#2E8B57) : Zone de confort (19°C - 23°C).
    • :red_circle: Rouge (#FF0000) : Température ≥ 23°C.

:artist_palette: Personnalisation des Seuils

Si vous souhaitez modifier les seuils (ex: Rose si < 17°C), utilisez un template dans le champ couleur_perso de votre automatisation :

couleur_perso: >
  {% set val = states(trigger.entity_id) | float %}
  {% if val < 17 %} #ff00ff
  {% elif val > 25 %} #ff0000
  {% else %} #2e8b57
  {% endif %}

:musical_note: Preset : Multimédia

:brain: Intelligence de Parsing & Formatage

Le moteur traite dynamiquement les attributs pour éviter les valeurs None et garantir un affichage propre :

  • Séries TV :
    • Format : Nom Série S01E08 - Titre Episode.
    • Zéro-Padding : Ajoute automatiquement le « 0 » devant les saisons/épisodes < 10.
    • Icône : Utilise l’icône animée tv_movie.
  • Musique :
    • Format : Artiste - Titre.
    • Icône : Utilise l’icône music.
  • Films :
    • Format : Titre du film.
    • Icône : Movie (ou plex via override).

:broom: Gestion Anti-Idle

L’application multimédia suit strictement l’état du lecteur :

  1. Lecture (playing) : L’app est diffusée normalement.
  2. Autre état (pause, idle, off) : Le script envoie un payload vide {} qui supprime instantanément l’application de la matrice, gardant votre boucle d’affichage propre.

:package: ACCÈS AUX CODES & DOCUMENTATION

Pour éviter de polluer le forum avec des blocs de code qui bougent souvent, j’ai tout centralisé sur GitHub. Vous y trouverez le sensor de discovery, le script moteur et des exemples d’automatisations.

:link: Awtrix Omni-Logique (v2.1.18)

Le README sur le dépôt explique en détail comment installer chaque composant.

N’hésitez pas si vous avez des bugs ou si vous voyez des types d’entités qu’il faudrait ajouter dans les presets !