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¶
- Flashez normalement, mais laissez
Tab5/user_entities.example.yamltel quel (copiez-le versTab5/user_entities.yamlsans 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. - 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).
- Installez l'unique dépendance et lancez le script depuis votre PC (même réseau Wi-Fi que l'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
pip install -r tools/demo/requirements.txt python tools/demo/demo_pusher.py --host <ip-appareil>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 variableTAB5_CLE_API, ou--config-ha <dossier de configuration de HA>pour la lire là où HA la garde. - 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_energieettab5_maj_energie_historique, ADR-0028 ;tab5_maj_energie_soleilettab5_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_reponsedemandent un pipeline vocal,tab5_maj_calendrier_mois/_jourettab5_maj_rdv_prochainsun vrai calendrier,tab5_maj_alertes_ha_bulkdes entités HA vivantes,tab5_maj_alertes_historiquela mémoire des alertes de Home Assistant,tab5_maj_lecteurde vrais lecteurs multimédias,tab5_maj_musique_pieces/tab5_maj_musique_listeles lecteurs et la bibliothèque de Music Assistant,tab5_maj_camerasde vraies caméras,tab5_maj_suiviles statistiques de vrais capteurs,tab5_maj_froidcelles de vrais thermomètres de réfrigérateur et de congélateur), ettab5_maj_planningest 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). - Arrêtez avec
Ctrl+C. Rien ne persiste en dehors de l'appareil, sauftools/demo/cle_demo.txtpour 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
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.