Aller au contenu

Mode démo

Pourquoi ce mode existe

L'installation complète (voir installation.md) suppose que vous avez déjà Home Assistant avec une intégration météo, Google Calendar, une entité climatisation, des capteurs BLE plantes... Beaucoup de travail juste pour voir si le tableau de bord vaut le coup.

Le firmware est push-only (ADR-0001) : il ne demande jamais rien à Home Assistant, il réagit seulement aux appels de l'API native ESPHome. N'importe quel client qui parle ce protocole peut donc piloter l'écran — y compris un petit script qui n'est pas du tout Home Assistant.

tools/demo/demo_pusher.py fait exactement ça : il se connecte à votre Tab5 flashé via aioesphomeapi (la même librairie que l'intégration ESPHome de Home Assistant) et pousse des scènes synthétiques qui tournent — météo, prévisions, clim, planning, humidité des plantes, alertes météo. Aucune installation Home Assistant, aucun mappage d'entités, aucun compte créé nulle part. Arrêtez le script avec Ctrl+C et il ne reste rien à nettoyer à part l'appareil flashé lui-même.

Ce que ça ne touche pas

Rien dans Tab5/paquets/*.yaml, le C++ de Tab5/socle|ecran|jeux/, Tab5/user_entities.yaml ou HomeAssistant_Config/ n'est modifié par le mode démo. C'est un script autonome qui parle la même API que les vraies automations — purement additif.

Étapes

  1. Flashez normalement, mais laissez Tab5/user_entities.example.yaml tel quel (copiez-le vers Tab5/user_entities.yaml sans le modifier — pas besoin de vraies entités Home Assistant derrière ces IDs placeholder pour la démo). Il vous faut quand même la clé de signature et le Wi-Fi des étapes 3 et 5 d'installation.md.
  2. Notez l'IP de l'appareil une fois connecté au Wi-Fi (votre routeur, ou la page de « Tab5 Fallback AP » juste après le choix du réseau).
  3. Installez l'unique dépendance et lancez le script depuis votre PC (même réseau Wi-Fi que l'appareil) :
    pip install -r tools/demo/requirements.txt
    python tools/demo/demo_pusher.py --host <ip-appareil>
    
    Clé de chiffrement (3.0, ADR-0020) : une tablette jamais ajoutée à Home Assistant n'a pas encore de clé. Le script lui en donne une, comme HA le ferait, dans les 30 minutes qui suivent son démarrage (sinon redémarrez-la), et la garde dans tools/demo/cle_demo.txt (gitignoré) : c'est la clé à donner à Home Assistant quand vous y ajouterez la tablette. Sur une tablette que HA connaît déjà, passez la clé de HA : --cle, la variable TAB5_CLE_API, ou --config-ha <dossier de configuration de HA> pour la lire là où HA la garde.
  4. Regardez l'écran. Toutes les ~20 secondes, il alterne entre trois scènes (journée ensoleillée, jour de pluie avec alerte météo, jour de repos avec une plante à arroser), qui pilotent neuf services de push du dashboard, la réponse des zones optionnelles (tab5_maj_zones) et les emplacements de la maison (tab5_maj_emplacements : lumières, températures, PC, TV, téléphone, plantes), comme le ferait le blueprint Home Assistant (lot 6a) — et, avec un firmware 3.2, les pièces des tuiles du bas (tab5_maj_tuiles, voir Pièces), et l'installation solaire du popup Énergie (tab5_maj_energie et tab5_maj_energie_historique, ADR-0028 ; tab5_maj_energie_soleil et tab5_maj_energie_bilan, ADR-0058), et un serveur de LLM local pour le popup Serveur IA (tab5_maj_serveur_ia, un serveur par scène, ADR-0059). Les services restants sont hors périmètre par choix : ils relèvent de fonctions qu'une démo ne peut pas simuler (tab5_maj_reponse_vocale / tab5_assist_reponse demandent un pipeline vocal, tab5_maj_calendrier_mois / _jour et tab5_maj_rdv_prochains un vrai calendrier, tab5_maj_alertes_ha_bulk des entités HA vivantes, tab5_maj_alertes_historique la mémoire des alertes de Home Assistant, tab5_maj_lecteur de vrais lecteurs multimédias, tab5_maj_musique_pieces / tab5_maj_musique_liste les lecteurs et la bibliothèque de Music Assistant, tab5_maj_cameras de vraies caméras, tab5_maj_suivi les statistiques de vrais capteurs, tab5_maj_froid celles de vrais thermomètres de réfrigérateur et de congélateur), et tab5_maj_planning est obsolète depuis le 08/09/2026 (la tablette dérive le bandeau planning des prévisions journalières ; gardé pour compatibilité, il sera retiré dans une future version majeure).
  5. Arrêtez avec Ctrl+C. Rien ne persiste en dehors de l'appareil, sauf tools/demo/cle_demo.txt pour une tablette à qui la démo a donné sa clé.

Pour vérifier, sans matériel ni dépendance du tout, que chaque appel a exactement les variables déclarées par le firmware (lues dans Tab5/paquets/tab5-api-logic.yaml) et chaque payload son format (il les affiche, et échoue sur un écart) :

python tools/demo/demo_pusher.py --dry-run

Maison minimale (zones optionnelles)

Une zone dont l'entité Home Assistant n'existe pas disparaît de l'écran (ADR-0018). Pour voir à quoi ressemble une maison plus petite :

python tools/demo/demo_pusher.py --host <ip-appareil> --maison-minimale
Le script se comporte alors comme un Home Assistant sans clim, TV, téléphone, troisième lumière, capteur de serre, pots 3 à 5, volet ni agenda de travail : - il ne pousse rien pour ces emplacements ; - il répond à la demande esphome.tab5_zones de la tablette avec leurs clés ; - il ne pousse rien pour la clim ni le volet.

Il reste le PC, deux lumières, la température du salon et deux pots. À la place de la serre, une icône de carrousel : son tap change toujours la zone à gauche de l'horloge. Avec un firmware 3.2, il ne reste qu'une pièce, sans nom (« Pièce 1 » à l'écran) : le PC et les deux lampes, à leur place de la 3.x.

Redémarrez la tablette en passant d'une démo complète à celle-ci : une zone qui a déjà reçu une donnée reste à l'écran (la donnée l'emporte). Dans l'autre sens, rien à faire : une démo complète répond « rien ne manque » dès sa connexion.

Pièces (firmware 3.2)

Depuis la 3.2 (ADR-0023), chaque page des cinq tuiles du bas est une pièce de cinq appareils au plus, que Home Assistant décrit. Quand la tablette a l'action tab5_maj_tuiles, la démo pousse sa propre maison, comme le blueprint : les définitions (nom, type, icône, options de chaque tuile), puis les états, à la suite des emplacements dans tab5_maj_emplacements (clés tRT|état|valeur|couleur).

Pièce Page (atteinte depuis l'accueil par) Appareils
Salon l'accueil, jours 0-4 TV (éteinte ; appui long : télécommande), volet qui s'ouvre, lampe couleur orange à variateur, plafonnier, une scène
Entrée jours 5-9 (glisser à gauche) porte d'entrée (fermée), mouvement du couloir (détecté), une applique en lecture seule, un script qui demande un second appui, une prise hors ligne
Chambre d'amis à l'étage jours 10-14 (deux fois à gauche) chevet, la clim (même mode et même température que la carte clim de la scène), présence (absent) : trois tuiles espacées, côte à côte en mode HA. Le nom dépasse les 24 octets que garde la tablette
Bureau 5 prochaines heures (glisser à droite) le PC (allumé, jamais éteint depuis l'écran) et la production solaire (1,45 kW ; au toucher : le popup Énergie) : deux tuiles, centrées en mode HA
Jardin heures 5-9 (deux fois à droite) store ouvert à 60 %, humidité du sol, une enceinte en lecture, une guirlande indigo foncé (son nom est coupé), température extérieure

À regarder : en mode météo, chaque page montre les appareils de sa pièce dans les « épaules » de ses tuiles ; le bouton HA montre les cartes de la pièce, et un glissement passe de pièce en pièce. Avec un firmware 3.x (sans tab5_maj_tuiles), la démo ne pousse que les emplacements 3.x, et l'écran garde ses cinq tuiles fixes.

Mode interactif (boutons lumière/clim)

Par défaut, le script loggue aussi quand vous appuyez sur un contrôle lumière/clim/volet à l'écran (confirme que le tactile fonctionne), via le hook subscribe_home_assistant_states_and_services d'ESPHome. Avec un firmware 3.2, la commande d'une tuile est journalisée avec sa pièce et son nom, par exemple t02 (Salon › Lampe d'ambiance, lum) : basculer. Désactivez avec --no-interactive.

Limitation connue : le popup lumière cible id(current_light_slot), un global interne au firmware réglé par un appui long sur une carte — invisible depuis le protocole natif. Le script loggue l'appui (preuve que le tactile fonctionne) mais ne simule pas de changement d'état à l'écran. C'est une limite de périmètre assumée, pas un bug.

Référence : ce qui est poussé

Service Comportement démo
tab5_maj_meteo_actuelle, _probabilites, _previsions_heures_bulk, _previsions_jours_bulk Prévisions complètes 15h / 15 jours par scène
tab5_maj_alerte_meteo_france Payload vigilance à 11 champs ; la scène pluie déclenche une bannière d'alerte Orange
tab5_maj_pluie_1h_bulk Graphe de pluie court terme à 9 barres, un seul appel (idx|intensité;…)
tab5_maj_clim, _volet_etat, _info_texte Cartes clim et volet, bandeau info (_info_texte prend 3 arguments : texte, couleur, meteo_id). Pluie et bandeau passent par les codes du lot 4c (@niveau,début, @ha|…) : la tablette les écrit dans sa langue. Le bandeau planning est dérivé par la tablette de la poussée des jours, comme avec Home Assistant
tab5_maj_zones Zones optionnelles : réponse vide (maison complète), ou les clés de la maison minimale avec --maison-minimale
tab5_maj_emplacements (lot 6a) Les emplacements de la maison, comme le blueprint les pousse : lumières, temp/humidité de la pièce, batterie du téléphone, PC, TV, 5 pots avec leurs détails (un volontairement bas, pour montrer le tri dynamique). Avec un firmware 3.2, suivis des états des tuiles des pièces (clés tRT). Les commandes de l'écran (esphome.tab5_action) sont seulement journalisées
tab5_maj_tuiles (3.2, ADR-0023) Les pièces : 5 pièces, 20 tuiles (une pièce de 3 avec --maison-minimale), instantané complet envoyé avant les états. Seulement si la tablette a cette action
tab5_maj_energie, _energie_historique (ADR-0028) Une installation solaire : 1,45 kW produits, 620 W pour la maison, 430 W vendus, batterie à 64 % qui charge ; production par heure (aujourd'hui), par jour (30 jours) et par mois (12 mois), poussée à chaque scène et à chaque demande de la tablette (esphome.tab5_energie). Seulement si la tablette a ces actions
tab5_maj_energie_soleil, _energie_bilan (ADR-0058) La même installation pour les pages « Aujourd'hui » et « Bilan » : lever 08:13, midi solaire 13:52, coucher 19:31, 17,8 kWh prévus aujourd'hui et 12,1 demain (courbe apprise × météo), meilleur créneau 12 h-15 h, les 24 heures de la prévision et de la courbe « ciel clair » ; le bilan en kWh (ADR-0062) d'une maison qui n'a que ses compteurs de production et de consommation (achat et vente estimés heure par heure, sans prix) : les heures du jour, les jours de juin (mois en avance sur le réseau, quelques jours en retard), les mois de l'année. Seulement si la tablette a ces actions
tab5_maj_historique (ADR-0032) Le popup Température : la courbe de la pièce (autour de 21 °C) ou de la serre (jusqu'à 28 °C l'après-midi) sur 24 h, 7 jours ou 30 jours, finie sur la valeur de l'accueil, et, pour la serre, la prévision de dehors. Seulement à la demande de la tablette (esphome.tab5_historique, un appui long sur une température) : le popup ignore une réponse qu'il n'a pas demandée. Seulement si la tablette a cette action

Source du contrat exact des payloads : Tab5/paquets/tab5-api-logic.yaml et Tab5/ecran/tab5_services.cpp / tab5_forecast.cpp (règles de parsing, nombre de champs, limites de buffer) — voir les commentaires de tools/demo/scenarios.py pour le détail.