Une période applique un planning sur une plage de dates. C'est elle qu'on
déploie dans Home Assistant, jamais le planning seul.

Brouillon ──déployer──▶ Déployée ──désactiver──▶ Désactivée
▲ │ ◀───activer─── │
│ │ │
└──── redéployer ──── Archivée ◀──── retirer ──┘
| État | Ce qu'il y a dans Home Assistant |
|---|---|
| Brouillon | rien |
| Déployée | les automatisations, actives |
| Désactivée | les automatisations, écrites mais éteintes |
| Archivée | rien — elles ont été supprimées |
La différence entre Désactivée et Archivée est celle entre « je coupe
maintenant » et « je nettoie ». Une période désactivée se réactive
instantanément ; une période archivée se redéploie.
Périodes → Nouvelle période : un planning, un intitulé facultatif, une date
de début et une date de fin. Les dates sont inclusives : du 15 au 28
septembre fait 14 jours.
Aperçu du YAML. Le contenu est affiché tel qu'il sera écrit, avec le diff
par rapport au dernier déploiement réussi.

L'écran le dit lui-même : « Cet écran ne touche pas à Home Assistant. Il montre
ce qui serait écrit. » Rien ne part sans un clic explicite sur Déployer.
C'est aussi ici que le validateur bloque : une erreur de cohérence rend le
bouton Déployer inactif, avec un lien direct vers l'éditeur pour corriger.
Le tableau du haut liste les automatisations qui seront écrites : heure,
jour-type, intitulé, amplitude de l'aléa, et l'identifiant déterministe
scnstudio_… de chacune.
Ce que fait l'application, dans cet ordre :
automation.reload) ;Les étapes 2 et 5 encadrent tout le reste pour une raison précise : un appel
échoué n'écrase pas le déploiement précédent dans l'historique. On sait
toujours ce qui est réellement en place.
Une seule période à la fois. L'invariant est tenu par un index unique
partiel au niveau de la base, pas seulement par le code. L'écran l'annonce
avant l'action : il nomme la période qui occupe la place, et la confirmation
dit laquelle sera retirée d'abord. L'appliquer sans le dire serait une
surprise, sur l'opération la plus délicate de l'application.
Une fois déployé, le scénario tient tout seul : les bornes de dates sont dans
la condition de chaque automatisation. L'application peut être éteinte pendant
les deux semaines d'absence.
Périodes → Calendrier et exceptions.

Le calendrier montre le jour-type réellement appliqué à chaque date de la
période. Cliquer sur le libellé d'une case force un autre jour-type ce jour-là —
utile pendant les vacances scolaires, par exemple pour appliquer le motif
« MERCREDI » à un lundi.
La légende signale aussi les changements d'heure tombant dans la période. Ils
ne changent rien aux plannings : 22:30 reste 22:30 à la pendule, avant comme
après. Le repère est là parce que la question se pose.
Modifier les exceptions après un déploiement demande un redéploiement pour
que Home Assistant en tienne compte.
Périodes → Historique liste chaque tentative : date, résultat, nombre
d'automatisations, message d'erreur le cas échéant, et l'instantané YAML
exact qui avait été produit.

C'est ce qui permet de répondre à « qu'est-ce qui tournait la semaine
dernière ? » sans reconstituer.
Trois gestes, du plus doux au plus définitif.
Depuis le tableau de bord. Les automatisations restent écrites mais sont
éteintes immédiatement (automation.turn_off). C'est le bouton à chercher si
vous rentrez plus tôt que prévu : un clic, effet immédiat, rien de perdu.
Depuis la liste des périodes ou depuis l'aperçu. Les automatisations sont
supprimées, la période passe en Archivée, l'opération est journalisée.
Le retrait vise à la fois ce qui a été déployé et ce que le planning
produirait aujourd'hui, au cas où il aurait changé entre-temps.
La période, elle, est conservée : le bouton Redéployer apparaît, ce qui
permet de la remettre en place plus tard sans rien resaisir.
Efface la période de l'application. Refusé tant qu'elle a encore des
automatisations dans Home Assistant : il faut retirer d'abord.
Orphelins liste les automatisations scnstudio_ présentes dans Home
Assistant mais absentes de la base.

C'est le filet de sécurité : déploiement interrompu, base restaurée à un état
antérieur, manipulation manuelle. Un bouton les nettoie.
Si l'application n'est plus disponible, tout se retire depuis Home Assistant.
Tout ce qu'elle écrit est marqué, et c'est le seul critère qu'elle utilise pour
s'autoriser à écrire ou à supprimer :
scnstudio_ ;[SCN] ;Méthode 1 — l'interface de Home Assistant. Paramètres → Automatisations et
scènes, filtrer sur [SCN], tout sélectionner, supprimer. Les automatisations
générées sont autonomes : les supprimer suffit, il n'y a aucun autre objet à
nettoyer — ni helper, ni script, ni entrée de registre.
Méthode 2 — le fichier. Éditer automations.yaml, retirer les blocs dont
l'id commence par scnstudio_, puis Outils de développement → YAML →
Recharger les automatisations.
Aucune autre trace n'est laissée dans Home Assistant. En particulier,
l'application ne modifie jamais configuration.yaml.
Documentation Domodrive 1.0.0 — copie conforme du répertoire docs/ du dépôt gitlab.ev1.fr/ev1/domodrive (dépôt privé).