Tableau de bord de Scénario Studio
Projet Technologie

Domodrive — Scénario Studio

Un atelier de scénarios domotiques pour Home Assistant : on dessine des plannings de volets et d'éclairages, l'application les traduit en automatisations, les déploie sur une plage de dates — puis les retire sans laisser de trace.

Conception, développement et exploitation 2026 11 août 2026 19 vues
Domodrive est un atelier de scénarios domotiques pour Home Assistant, développé sous le nom de Scénario Studio. On y dessine à la souris des plannings horaires d'actions sur les volets et les éclairages, on les valide, on les traduit en automatisations Home Assistant, on les déploie sur une plage de dates, puis on les retire proprement. Le cas d'usage fondateur tient en une phrase : partir deux semaines en vacances avec une simulation de présence crédible, déployée en un clic et retirée sans résidu au retour.

Dessiner plutôt que programmer

Placer une action dans une grille de quinze minutes doit suffire à décrire une journée. L'utilisateur raisonne en volets, en pièces et en horaires — jamais en YAML ni en syntaxe d'automatisation.

Ne jamais piloter la maison directement

L'application n'allume aucune lumière et ne bouge aucun volet : elle écrit des automatisations, c'est Home Assistant qui exécute. Une règle vérifiable, pas une intention — le client ne sait émettre que trois appels de service, tous du domaine automation.

Des scénarios autonomes

Les bornes de dates vivent dans la condition de l'automatisation, pas dans un ordonnanceur applicatif. Conséquence directe : l'application peut être éteinte pendant les deux semaines d'absence, le scénario tient tout seul.

Un retrait propre, garanti

Tout ce qui est écrit dans la maison porte une marque de fabrique. L'application ne touche jamais une automatisation qu'elle n'a pas créée, et sait retirer l'intégralité de la sienne — un écran dédié traque même les résidus d'un déploiement interrompu.

Contexte & Problématique

Le projet naît d'un besoin domestique très concret — simuler une présence pendant les vacances — et d'une contrainte matérielle qui a façonné l'ensemble des choix : les volets de la maison ne sont pas calibrés, un défaut connu de leurs modules radio.

Simuler une présence, de façon crédible

Une maison inhabitée se repère : volets figés, aucune lumière, horaires trop réguliers. Il fallait des horaires variables, des journées différentes en semaine et le week-end, et un aléa qui évite l'effet mécanique.

Des volets non calibrés

Impossible de demander « ferme à 40 % » : le pilotage par position est banni de tout le projet. Une fermeture partielle s'exprime en fermeture, attente, arrêt — une contrainte qui remonte jusqu'au modèle de données.

Cohabiter avec une installation existante

Home Assistant héberge déjà des automatisations écrites à la main. L'outil devait pouvoir y ajouter les siennes sans jamais risquer d'en modifier ou d'en supprimer une autre.

Concevoir n'est pas déployer

Préparer un scénario et l'écrire réellement dans la maison sont deux gestes de portée différente. Cette frontière est devenue une séparation de rôles dans l'application.

Réalisation

Le parcours d'un scénario suit toujours le même chemin, du miroir des équipements jusqu'au retrait après les vacances. Chaque étape a son écran.
  1. 1. Synchroniser les équipements

    L'application lit les entités de Home Assistant : leurs états par l'API REST, les pièces et appareils par l'API WebSocket — les registres ne sont accessibles que là. Rien n'est jamais supprimé du miroir local : une entité disparue est marquée indisponible, pour que le problème se voie au lieu qu'une ligne de planning s'évapore.

  2. 2. Rattacher les équipements au métier

    Un identifiant technique devient « Volet cuisine », avec sa nature et sa pièce. Le rattachement se fait en lot. Les capteurs, eux, ne se rattachent pas : ils ne sont jamais pilotés.

  3. 3. Dessiner un planning

    Un planning est un jeu de jours-types — semaine, week-end — affectés aux jours de la semaine. Dans chacun, on place des étapes à l'heure voulue en cliquant dans une grille de quinze minutes ; chaque étape porte une ou plusieurs actions.

  4. 4. Ajouter des routines de contrôle

    Une bibliothèque de routines déclenchées par une situation — trop de soleil, trop de chaleur — plutôt que par une heure. On les place dans le planning, pour tous les jours ou pour un jour-type.

  5. 5. Valider et relire

    Quatorze règles de cohérence tournent à chaque enregistrement : volet laissé ouvert la nuit, étapes trop rapprochées pour l'aléa demandé, capteur indisponible, routines contradictoires. Les erreurs bloquent le déploiement, pas les avertissements.

  6. 6. Déployer sur une période

    Un planning appliqué du 15 au 29 août. Avant l'envoi, l'aperçu montre le YAML tel qu'il sera écrit, avec le différentiel par rapport au dernier déploiement réussi. Rien ne part sans un clic explicite.

  7. 7. Retirer, et vérifier qu'il ne reste rien

    Au retour, tout ce qui a été écrit est supprimé ; la période est conservée et peut être redéployée. Un écran « orphelins » liste les automatisations présentes dans la maison mais absentes de la base — le filet en cas de déploiement interrompu.

Stack technique

Cœur applicatif

Python 3.12 FastAPI Uvicorn Pydantic 2 SQLAlchemy 2 (asyncio) Alembic

Données

SQLite (aiosqlite) PostgreSQL (asyncpg) 16 tables migrations Alembic en mode batch

Interface, sans étape de build

Jinja2 HTMX Alpine.js Tailwind aucun paquet npm

Dialogue Home Assistant

httpx (REST) websockets (registres) PyYAML simulateur d'instance complet

Sécurité

Authlib (OpenID Connect PKCE) cryptography (HKDF + Fernet) scrypt autorisation fermée par défaut

Qualité

pytest pytest-asyncio ruff mypy 1014 tests sans instance ni base préexistante

Résultats & Impact

L'application est utilisée en conditions réelles : des plannings de vacances déployés dans la maison, puis retirés au retour, sans intervention manuelle dans Home Assistant et sans résidu.
1014
tests, exécutables sans Home Assistant
14
règles de validation avant déploiement
0
automatisation étrangère touchée

Le scénario survit à l'application

Les bornes de dates étant portées par les automatisations elles-mêmes, la maison continue de jouer le scénario même si le serveur applicatif est arrêté.

Un garde-fou prouvé, pas promis

Toute écriture et toute suppression passent par un contrôle de marquage ; un test démontre qu'une suppression visant un identifiant non marqué échoue.

Tester sans toucher aux volets

Un mode développement capture les équipements réels en lecture seule, puis débranche la maison : un simulateur répond en REST et en WebSocket, ce qui permet d'éprouver un déploiement complet sans conséquence physique.

Une suite de tests autonome

Aucune instance domotique, aucune base préexistante, aucun fichier de configuration n'est nécessaire pour lancer les 1014 tests — condition d'une reprise sereine du projet.

Galerie

Retour au portfolio