Refonte complete de zero. Architecture rigoureuse, entites 100% tracables, documentation embarquee. Energie - Chauffage - Eclairage - Presence.
19 ampoules x 4 cycles (annuel, mensuel, hebdo, quotidien). Chaque ampoule a son propre compteur kWh avec template relais et moyenne Watts. Granularite maximale.
Chaque entite porte un unique_id norme et documente. Du firmware Hue jusqu'a la vignette L2C3, la chaine est versionnee dans DEPENDANCES_GLOBALES.md.
Energie, Chauffage, Prises, Eclairage, Presence. Jamais melanges dans un meme fichier YAML. Chaque pole a sa propre arborescence et ses propres prefixes.
454 fichiers YAML, Markdown et JSON indexes dans AnythingLLM. La config entiere est interrogeable en langage naturel. Backup Git automatique depuis HA vers GitHub.
* RAG non actif - necessite un modele 27B minimum pour des recherches pertinentes.
* RAG non actif actuellement — necessite un modele 27B minimum pour des recherches pertinentes.
Ce que produit concrètement l'architecture décrite sur cette page.
18 vignettes temps réel, organisées en 6 lignes × 3 colonnes.
Chaque vignette affiche des valeurs synthétiques — un clic ouvre la page correspondante
avec le détail des valeurs et les commandes associées.
Chaque fichier a sa place, son rôle, son cycle de vie. On ne mélange pas.
DOCS/01_docs_config_system/ → H:\Docs\DOCS/03_docs_automations/ → H:\Docs\
Chaque automation : un .yaml (code) + un .md (doc).
DOCS/02_docs_dashboard/ → H:\Docs\Sensors · Templates · UMDOCS/01_docs_config_system/ → H:\Docs\
Claude a un accès direct aux fichiers .yaml sous /config sur le serveur HA : à chaque modification, c'est lui qui récupère le fichier changé et qui le stocke individuellement dans DOCS/01_docs_config_system/config_system_YAML/{pole}/, une fois validé par le créateur. Pour les automations (regroupées dans un seul automations.yaml), l'injection se fait toujours à la main dans l'UI HA ; une fois la modification validée, Claude ne fait que récupérer le bloc changé et le stocke individuellement. Le dashboard, lui, n'est pas un fichier .yaml accessible de la même façon — limitation technique qui oblige le créateur à le récupérer à la main.
Stats 24h qualite air (PM2.5 · tCOV) · meteo · foudre Blitzortung · min/max/avg P0 · DUT history_stats P1 · integration W→kWh (firmware relais cuisine sans cumul natif).
!include_dir_merge_listCalcule les couts, les ratios HP/HC, les etats textuels, les labels Jinja2. Rien de brut ici - uniquement du derive.
!include_dir_merge_listRemet a zero automatiquement : Annuel / Mensuel / Hebdo / Quotidien. Chaque compteur = une cle nommee (dict), pas une liste.
!include_dir_merge_named100% eclate - zero fichier monolithique. Chaque fichier = 1 responsabilite, 1 pole, 1 dossier.
/config/ ├── configuration.yaml ← point d'entree (includes, integrations) ├── automations.yaml ← toutes les automations (UI editeur) │ ├── sensors/ │ ├── P0_Energie_total_*/ ← kWh cumulatif + mini/maxi + Genelec │ ├── P1_clim_chauffage/ ← DUT history_stats + integration W→kWh (cuisine) │ ├── P2_prise/ ← kWh prises, veilles, mini-pc │ ├── P3_eclairage/ ← kWh ampoules (unite / zone / total) │ └── Air_quality/ meteo/ ← stats PM2.5, tCOV, Blitzortung │ ├── templates/ │ ├── P0_Energie_total_diag/ ← couts HP/HC, ratios, Linky, diag │ ├── P1_clim_chauffage/ ← ★ mode heat/off/cool, courbe cible │ ├── P2_prise/ ← AVG veilles, all_standby │ ├── P3_eclairage/ ← ★ labels eclairage, AVG W, ui_dashboard │ ├── P4_groupe_presence/ ← Absent / Seul / Tous les deux │ ├── Stores/ Inter_BP_Virtuel/ ← volets motorises, soufflant SdB │ └── meteo/ utilitaires/ ← alertes, vent, tendances, MAJ HA │ └── utility_meter/ ├── P0_Energie_total/ ← index kWh + HP/HC Linky ├── P1_clim_chauffage/ ← 6 equip. x 4 cycles = 24 UM ├── P2_prise/ ← 19 prises x 4 cycles = 76 UM └── P3_eclairage/ ← 19 lampes x 4 cycles = 76 UM
# --- sensor --- sensor: !include_dir_merge_list sensors/ #sensor: !include sensors.yaml # --- template --- template: !include_dir_merge_list templates/ #template: !include templates.yaml # --- utility_meter --- utility_meter: !include_dir_merge_named utility_meter/ #utility_meter: !include utility_meter.yaml # --- command_line --- command_line: !include_dir_merge_list command_line/ #command_line: !include command_line.yaml # --- shell_command --- shell_command: !include_dir_merge_named shell_command/ #shell_command: !include shell_command.yaml # --- camera (DESACTIVE - obsolete) --- #camera: !include camera.yaml #camera: !include_dir_merge_list camera/ # --- input_button --- input_button: !include input_button.yaml #input_button: !include_dir_merge_list input_button/ # renvoi au repertoire groups/ group: !include_dir_merge_named groups/ #group: !include groups.yaml # renvoi au fichier sql.yaml sql: !include sql.yaml # renvoi au fichier input_select.yaml input_select: !include input_select.yaml # --- input_boolean --- input_boolean: !include_dir_merge_named input_booleans/ # --- input_number --- input_number: !include_dir_merge_named input_number/ # --- input_datetime --- input_datetime: !include input_datetime.yaml
!include_dir_merge_list fusionne tous les fichiers du dossier en une seule liste — parfait pour sensor: et template:.!include_dir_merge_named est obligatoire pour utility_meter: dont chaque compteur est une cle nommee (dict), pas un item de liste.
Les règles que chaque fichier YAML doit respecter. Sans exception.
5 pôles, préfixés P0 à P4. Chaque fichier YAML appartient à un seul pôle — jamais deux pôles dans le même fichier.
Chaque fichier YAML ne fait qu'une seule chose : mesurer, compter, calculer, ou afficher. On ne mélange jamais les pôles dans un même fichier. Une prise connectée ne cohabite pas avec un radiateur. L'approche monolithique est interdite.
Index fixe de 1 à 9 pour chaque pièce. Cet index précède le nom dans tous les titres secondaires de chaque fichier YAML, quel que soit le pôle.
Exemple : la boite ┌ 4. SALON ┐ dans un fichier P1 signifie "ce bloc appartient au pôle Chauffage, pièce SALON (index 4)". La numérotation garantit l'ordre et l'unicité dans tout le projet.
Toutes les abréviations utilisées dans les noms de fichiers et les unique_id. Organisées par rôle dans la chaine de traitement. Hors de cette liste = interdit.
sensors/ — capteur statistique, Riemann, commande shell retournant une valeur. Merge : !include_dir_merge_listutility_meter/ — compteur a remise a zero automatique par cycle — consomme _energy et génère des _um. Merge : !include_dir_merge_namedtemplates/ — entité calculée par formule Jinja2, aucun hardware direct. Merge : !include_dir_merge_listcommand_line/ — sensor via script bash ; le résultat texte/JSON est interprété par HA comme valeur d'entitéinput_booleans/ — stockage d'état on/off pour les BV. Chaque IB est appairé a un SW template. Pas utilisé seul.shell_command/ - commandes shell déclenchées par HA (boutons, automations). Execution pure, pas de valeur retournée. (pas d'abréviation dans les noms de fichiers)groups/ — groupes d'entités par constructeur (batteries Hue, IKEA, Sonoff). Ex : GRP_01_batteries_hue.yaml_power — puissance instantanée en W, lue en temps réel via Z2M ou Shelly. Ne s'accumule pas. Sert de source aux calculs AVG et aux totaux de puissance._energy Z2M — énergie cumulée en kWh, index qui ne fait qu'augmenter. Source directe des Utility Meters. Périmètre : P0 (Nodon pince générale), P1 (prises NOUS chauffage), P2 (prises NOUS/IKEA). ⛔ Ne pas confondre avec la variante PowerCalc ci-dessous._energy PowerCalc (P3) — énergie estimée générée par PowerCalc pour les ampoules Hue (bridge Zigbee, aucun kWh natif). Même suffixe _energy que les natifs Z2M, mais la source est l'état on/off multiplié par un wattage connu — pas une mesure réelle. Exception : relais_lumiere_sdb_sonoff (ZBMINIR2) → 10W fixe. ⛔ PowerCalc interdit sur P0/P1/P2 (monitoring natif Z2M présent)._energy natif. Cas exceptionnel. Pattern fichier : {P}_kWh_{description}.yaml. Voir la section "Spécial Riemann" ci-dessous._um_kwh_tpl en P3, directement depuis _um en P0/P1/P2. Permet d'évaluer la puissance réelle moyenne consommée._AMHQ si le fichier couvre les 4 cycles._hp et _hc dans les unique_id.P0_MINI_MAXI_AVG_Genelec_appart.yaml.unique_id : forme complète (annuel, mensuel, hebdomadaire, quotidien), jamais l'abréviation.input_booleans/. Pattern : {P}_BV_IB_{description}.yaml. Sans IB, le template switch n'a nulle part où persister son état.templates/Inter_BP_Virtuel/. Pattern : {P}_BV_IB_SW_{description}.yaml.P1_ACS_IB_01_arret_clim_securises.yaml. Écrit par les automations P1 clim, lu par (A)/(B) comme condition de blocage.{P}_ui_dashboard.yaml. Ex: P3_etats_status.yaml retourne l'état d'allumage combiné quand plusieurs points d'éclairage coexistent — sert la vignette et la page commandes éclairage (L3C1), pas les vignettes conso.templates/utilitaires/ — sous-répertoire fourre-tout pour templates transversaux sans pôle : données simples (jour/nuit, nb fenêtres ouvertes, MAJ HA). Valeurs binaires ou compteurs basiques.P{n} pour les fichiers sans pôle énergieM_04_tendances_th_ext_card.yaml.A_01_AIR_QUALITY.yaml.S_01_STORES.yaml.#MP_01_monitor_temp.sh.# dans .scripts/ (script actif sur Raspberry Pi, nommé #...# pour que HA l'ignore). ⛔ Ne pas renommer._energy natifHA intègre la puissance (W) dans le temps via la méthode des trapèzes pour reconstituer un kWh estimé. Moins précis qu'un compteur natif, mais fonctionnel quand le hardware ne fournit pas d'index cumulatif. Actuellement 2 fichiers en prod :
P1_kWh_clim_chauffage.yaml — sensors/ — Riemann sur les clims/soufflants (source : prises NOUS P1, _power W)P1_kWh_riemann_cuisine.yaml — templates/ — Riemann sur radiateur cuisine (Shelly 1PM Gen4, bug firmware : kWh natif non fonctionnel)Le suffixe du unique_id documente la dernière transformation subie. Chaque étape ajoute sa marque dans le nom.
_um_ — total appart uniquementTout sensor sorti d'un UM finit par _um. Template kWh (lampe ou zone) : _um_kwh_tpl.
_kwh_tpl (sans _um_) = réservé au total appart entier. Ne jamais l'utiliser à un autre niveau.
P3 : AVG calculé depuis _um_kwh_tpl — pas depuis _um directement. Suffixe : _avg_watts_{cycle}.
P0 + P1 + P2 : AVG calculé directement depuis _um — pas de _um_kwh_tpl intermédiaire.
Pattern general : {POLE}_{TYPE}[_AMHQ][_{VARIANTE}].yaml — pour la definition de chaque TYPE, voir section 3.
| TYPE | Pattern complet | Exemple |
|---|---|---|
| UM | {P}_UM_AMHQ[_{variante}].yaml | P1_UM_AMHQ.yaml |
| TPL | {P}_TPL_AMHQ_{niveau}.yaml | P3_TPL_AMHQ_1_UNITE.yaml |
| AVG | {P}_AVG_AMHQ[_{variante}].yaml | P2_AVG_AMHQ_prises.yaml |
| TOTAL | {P}_TOTAL_AMHQ.yaml | P1_TOTAL_AMHQ.yaml |
| kWh | {P}_kWh_{description}.yaml | P1_kWh_clim_chauffage.yaml |
| DUT | {P}_DUT_{description}.yaml | P1_DUT_clim_chauffage.yaml |
| DIAG | {P}_DIAG_{description}_{cycle}.yaml | P0_DIAG_conso_hebdomadaire.yaml |
| POWER | {P}_POWER_{niveau}.yaml | P3_POWER_3_TOTAL_ZONE.yaml |
| BV_IB | {P}_BV_IB_{description}.yaml | P3_BV_IB_inter_smorig_salon.yaml |
| BV_IB_SW | {P}_BV_IB_SW_{description}.yaml | P3_BV_IB_SW_inter_smorig_salon.yaml |
| MINI_MAXI_AVG | {P}_MINI_MAXI_AVG_{description}.yaml | P0_MINI_MAXI_AVG_Genelec_appart.yaml |
| ui_dashboard | {P}_ui_dashboard.yaml | P3_ui_dashboard.yaml |
_AMHQ : present si le fichier couvre les 4 cycles (Annuel/Mensuel/Hebdo/Quotidien)_VARIANTE : discriminant si plusieurs fichiers du meme TYPE dans le meme pole — nom fonctionnel minuscules (prises, mini_pc) ou niveau numéroté (1_UNITE, 2_ZONE, 3_TOTAL){LETTRE}_{index}_{description}.yaml — ex: M_04_tendances_th_ext_card.yamlGRP_{index}_{description}.yamlui_dashboard : templates d'affichage uniquement — jamais de calculs kWh/W/DUTP0_total_pour_les_7_postes.yaml agrège les 7 postes (chauffage/hygiène/multimédia...) sur 4 cycles — devrait s'appeler P0_TOTAL_AMHQ.yaml mais nom d'origine conservéP2_current_all_standby.yaml — puissance totale veilles, TYPE non encore formaliséS'applique aux fichiers 01 · Config YAML — Sensors · Templates · Utility Meter deployés dans /homeassistant/. Les 4 sections qui suivent détaillent ce que doit contenir chaque fichier, dans cet ordre.
Chaque fichier YAML commence par une boîte ASCII. Deux niveaux : titre principal du fichier, titre secondaire par pièce.
Caractères : ╭─╮ / ╰─╯
Largeur : 78 caractères
Texte : MAJUSCULES
Si le texte dépasse 74 car. : élargir la boîte (76, 80+).
Ne jamais supprimer les références techniques du titre.
Caractères : ┌─┐ / └─┘
Largeur : 37 caractères
Texte : MAJUSCULES, numérotation officielle 1-9
Un titre secondaire par pièce dans le fichier.
Juste sous la boîte ASCII principale, dans cet ordre exact. Toujours les 5 — même si une section est vide.
[calculé]source: ou entity_id:unique_id exact de l'entité produite par ce fichierP1_UM.yaml → L2C2Commentaire repère positionné juste au-dessus de chaque bloc d'entité. Doit être l'image exacte du unique_id qui suit - ni plus, ni moins.
# --- unique_id_exact ---
Position : juste au-dessus de chaque bloc d'entité individuel.
Le slug est l'image exacte du unique_id - pas de variation, pas de raccourci.
Un slug par entrée de cycle : annuel, mensuel, hebdomadaire, quotidien.
Interdit : un slug groupé pour les 4 cycles.
Toujours en paire. Même sens, deux formats. Cohérence croisée obligatoire : ils doivent décrire exactement la même chose.
Format : "Préfixe Nom Lisible Période"
Majuscules initiales sur chaque mot.
Préfixe pôle obligatoire en premier mot.
Période ou cycle lisible à la fin si applicable.
Format : prefixe_nom_lisible_periode
Tout en minuscules, séparateurs underscores.
Doit décrire la même chose que name.
Aucune abréviation inventée hors liste officielle.
# UTILITY_METER — P3_UM_AMHQ_1_UNITE.yaml # --- hue_white_lamp_entree_annuel_um --- hue_white_lamp_entree_annuel_um: source: sensor.hue_white_lamp_entree_energy <- créé par PowerCalc name: "Hue White Lamp Entree Annuel UM" unique_id: hue_white_lamp_entree_annuel_um # --- hue_white_lamp_entree_quotidien_um --- hue_white_lamp_entree_quotidien_um: source: sensor.hue_white_lamp_entree_energy <- créé par PowerCalc name: "Hue White Lamp Entree Quotidien UM" unique_id: hue_white_lamp_entree_quotidien_um cycle: daily # TEMPLATE — P3_TPL_AMHQ_1_UNITE.yaml # --- hue_white_lamp_entree_annuel_um_kwh_tpl --- - name: "Hue White Lamp Entree Annuel Um Kwh Tpl" unique_id: hue_white_lamp_entree_annuel_um_kwh_tpl source: sensor.hue_white_lamp_entree_annuel_um <- Depuis utility meter # --- hue_white_lamp_entree_quotidien_um_kwh_tpl --- - name: "Hue White Lamp Entree Quotidien Um Kwh Tpl" unique_id: hue_white_lamp_entree_quotidien_um_kwh_tpl source: sensor.hue_white_lamp_entree_quotidien_um <- Depuis utility meter
sensor.*_energy (kWh) pour les appareils sans monitoring natif — notamment les ampoules Hue qui n'exposent pas de capteur de consommation direct. Il calcule l'énergie par modele de puissance fixe (ex: 10W) ou par profil constructeur. Sans PowerCalc, ces ampoules n'auraient aucune entité source pour le Utility Meter.
Aucun input_boolean, input_number ou input_select pour la logique metier. Tout est en YAML — versionnable, auditable, rollbackable sur Git.
input_number.seuil_cool: 26.5 — modifiable librement dans l'UI HAvalue_template: — dans le fichier YAMLt >= 26.5 → t >= 27 — intention claireDOCS/01_docs_config_system/config_system_YAML/ — auditable sans HARègles de codage, standards de notification et canaux actifs en prod.
YAML + documentationDOCS/03_docs_automations/ → H:\Docs\
Ces règles s'appliquent à chaque fichier automation dans DOCS/03_docs_automations/docs_automations_YAML/. Jamais de modification directe d'automations.yaml — passer par l'UI HA, un par un.
-" devant le premier alias — bloc objet, pas liste.id: au niveau global — laisser HA le gérer.alias en MAJUSCULES pour chaque sous-bloc (trigger, condition, action).id: autorisé UNIQUEMENT à l'intérieur des déclencheurs (ciblage d'actions).# "[L...] modif" + bloc # annotations_log: en fin.Cible : Tel. portable UserE (ecran carre, emojis limites).
title:
Max 21 caractères.
MAJUSCULES recommandées.
Ex: SDB : ARRET (11 car.)
message:
Texte pur ASCII de préférence.
Éviter les emojis → ! / [ ] / OK / >>.
Info critique dans les 20 premiers caractères.
| Canal | Service | Usage |
|---|---|---|
| Mobile UserE | notify.mobile_app_userE | 22 automations + 5 scripts |
| Fichiers log | notify.send_message → entité File | 3 automations (logs .txt) |
Plateforme notify.file interdite en YAML. Les cibles fichier passent par l'intégration File créée dans l'UI, appelée via notify.send_message.
49 automations en prod (relevé 2026-07-18). 25 avec notify. 24 sans notify.
Côté HA, tout vit dans un seul fichier automations.yaml — c'est lui que l'UI HA lit et réécrit. Mais on ne versionne jamais ce fichier entier : l'injection d'une modification se fait toujours à la main dans l'UI HA, automation par automation. Une fois validée, c'est Claude qui récupère uniquement le bloc YAML qui vient de changer et qui le stocke individuellement dans docs_automations_YAML/{Pole}/ — un fichier = une automation. Chaque fichier a sa doc miroir dans docs_automations_MD/{POLE}/.
| Pole | Automation | Titre notify | Note |
|---|---|---|---|
| Backup | [00] Alerte si KO 15 min | BACKUP KO | Alerte mobile si KO > 15 min |
| [01] Git hourly H+10 | - | Shell → ha_git_backup.sh (horaire) | |
| [02] Git daily (03:00) | - | Shell → ha_git_backup.sh (daily) | |
| [03] Git weekly (dim 01h30) | BACKUP WEEKLY | Hebdo OK + tag GitHub | |
| [04] Git push manuel | - | Shell → ha_git_backup.sh "Manuel" | |
| [05] Git push weekly manuel | - | Shell → ha_git_backup.sh weekly | |
| [06] Git au demarrage HA | - | Trigger homeassistant.start | |
| Bouton Virtuel P3 Salon |
Bouton IKEA INTER SALON (4) | - | MQTT → light.salon ON/OFF |
| Bouton IKEA SOMRIG — msg ON/OFF | - | MQTT → light.salon ON/OFF | |
| Stores | Store Bureau (optimise) | - | Gestion optimisée soleil/vent |
| Store Salon (matin/soir) | - | Gestion horaire simple | |
| MariaDB VSCode |
DB Purge MariaDB + Repack | - | Purge + repack hebdo |
| Économie VS Code CPU/Inactivité | ALERTE VSC CPU / INAC / ARRETE | CPU >10% 10min ou inactif 15min | |
| Météo | Alerte cartes MF actualisation | - | update_entity cameras MF |
| Dernier impact foudre (MàJ) | - | Set input_datetime.dernier_eclair | |
| Notification foudre | /!\ Attention foudre /!\ | Distance, direction, impacts | |
| Update previous humidity | - | Set input_number humidity prev. | |
| Update previous temperature | - | Set input_number temperature prev. | |
| P0 Énergie | DIAG Enregistrement journalier | (log fichier) | notify.file_diag_log_file |
| Log écart Linky vs Nodon | (log fichier) | notify.log_ecart_energie | |
| Basculement Tarif HC/HP | - | Gestion tarif EDF HP/HC | |
| P1 Clim | (A) Clim Jour 7h30-21h | [AJ] ... | Via script — préfixe [AJ] + présence / erreur |
Script p1_master_gestion_clim — prefix [AJ] si jour, [AN] si nuit — titres : [AX] ATTENTE CAPTEURS / [AX] CLIM JOUR/NUIT COUPÉE / [AX] sensor.presence
|
|||
| (B) Clim Nuit 21h-7h30 | [AN] ... | Via script — préfixe [AN] + présence / erreur | |
| (C) Notif. Jour 7h30-21h | [Automa. Notif. Jrs] | Relai sensor message clim | |
| (D) Notif. Nuit 21h-7h30 | [Automa. Notif. Nuit] | Relai sensor message clim | |
| (E) Fermeture fenêtres | Fermeture en cours | Par fenêtre + global | |
| (F) Arrêt Clim | ARRÊT CLIM | Map sur climate.clim_* | |
| (G) Changement Eté/Hiver | CHANGEMENT DE MODE | sensor.mode_ete_hiver_etat | |
| (H) DEBUG Force Mode / Sécurité | SÉCURITÉ CLIM / CORRECTION MODE | Force retour OFF / bon mode | |
(H) = watchdog — interdit la remise en marche si input_boolean.clim_*_arret_securise_en_cours = on ou prise OFF. Corrige aussi le mauvais mode saison.
|
|||
| (I) Synchro prise coupée | CLIM COUPÉE | Prise ext. éteinte | |
| (J) DEBUG Notif. message clim (désactivé) | Notif. Mobile debug | Watchdog msg clim | |
| P1 Cuisine | A - Chauffage Cuisine (planification) | (sans titre) | ON/OFF selon T° + horaires |
| B - Chauffage Cuisine Vacances | (sans titre) | ON/OFF selon T° + horaires | |
| P1 SDB | A - Gestion Intelligente Soufflant | - | Régulation T° + auto-off 60 min |
| D - Watchdog Sécurité Radiateur | ⚠️ Watchdog SDB | Dérive thermique | |
| E - Minuterie Sèche-Serv. (2h) | Sèche-Serv. OFF | Timer absolu 2h | |
| P2 Prises | ECO Prises Dynamique | ECO PRISES: {{ g | upper }} | 7 prises — absent_only sur TV/PC |
| Gestion PC Bureau | Veille détectée | Scène de fin PC bureau | |
| Gestion TV Chambre | Veille détectée | Scène de fin TV chambre | |
| P3 Éclairage | Bureau - Activation ecran synchro | - | Sync écran PC bureau |
| Bureau - Bouton Rodret toggle blanches | - | MQTT → hue_white_bureau 1+2 | |
| Bureau - Forcer Play ON si PC tourne | - | Play si PC actif | |
| Bureau - Watchdog sync lampes blanches | - | Watchdog lampes blanches bureau | |
| Entree - Allumage lumiere | - | Contact → lumière entrée | |
| SDB - Sync miroir lampe et relais | - | Sync hue SDB + relais Sonoff | |
| P4 Présence | P4 Log Zones Eric | (log fichier) | notify.zone_eric |
| Système | Watchdog Piles | 🪫 Alerte Pile Faible (<10%) | Liste appareils + % restant |
| Z2M last_seen | ⚠️ Problème capteur Zigbee | Zigbee silencieux | |
| Veille GitHub nouvelle release | RELEASE GITHUB / ! BREAKING CHANGE ! | Breaking change détecté | |
| Pole | Automation | Automation YAML | Config YAML associé |
|---|---|---|---|
| Backup GitHub |
[00] Alerte si KO 15 min | 00_backup_alerte_si_ko_15_min.yaml | github_maintenance.yaml |
| [01] Git hourly H+10 | 01_backup_git_hourly_h_10.yaml | backup_github.yaml · ha_git_backup.sh | |
| [02] Git daily (03:00) | 02_backup_git_daily_03_00.yaml | backup_github.yaml · ha_git_backup.sh | |
| [03] Git weekly (dim 01:30) | 03_backup_git_weekly_dim_01_30.yaml | backup_github.yaml · ha_git_backup.sh | |
| [04] Git push manuel | 04_backup_git_push_manuel.yaml | backup_github.yaml · ha_git_backup.sh | |
| [05] Git push weekly manuel | 05_backup_git_push_weekly_manuel.yaml | backup_github.yaml · ha_git_backup.sh | |
| [06] Git au demarrage HA | git_push_au_demarrage_ha.yaml | backup_github.yaml · ha_git_backup.sh | |
| Bouton Virtuel P3 Salon |
Bouton IKEA INTER SALON (4) | p3_salon_bouton_ikea_inter_salon.yaml | - |
| Bouton IKEA SOMRIG — msg ON/OFF | p3_salon_bouton_ikea_somrig.yaml | - | |
| Stores | Store Bureau (optimise) | gestion_optimisee_du_store_bureau.yaml | - |
| Store Salon (matin/soir) | gestion_simple_du_store_salon_matin_soir.yaml | - | |
| MariaDB VSCode |
DB Purge MariaDB + Repack | db_purge_mariadb_repack.yaml | - |
| Economie Energie VS Code | systeme_economie_energie_vs_code.yaml | - | |
| Météo | Alerte cartes MF actualisation | alerte_meteo_france_actualisation_des_cartes.yaml | carte_meteo_france.yaml |
| Dernier impact foudre (MàJ) | mettre_a_jour_le_temps_du_dernier_impact_de_foudre.yaml | - | |
| Notification foudre | notification_de_la_foudre.yaml | M_meteo_sensors_blitzortung.yaml | |
| Update previous humidity | update_previous_humidity.yaml | input_number/input_number.yaml | |
| Update previous temperature | update_previous_temperature.yaml | input_number/input_number.yaml | |
| P0 Energie | DIAG Enregistrement journalier (7 postes + DUT) | diag_enregistrement_journalier.yaml | - |
| Log ecart Linky vs Nodon | log_ecart_linky_vs_nodon.yaml | - | |
| Basculement Tarif HC/HP Genelec Appart | auto_energie_basculement_tarif_hc_hp_genelec_appart.yaml | - | |
| P1 Clim | (A) Clim Jour | a_0_2026_01_11_automatisation_clim_jour_07h30_21h00.yaml | scripts.yaml · P1_01_clim_logique_system_autom.yaml |
| (B) Clim Nuit | b_0_2026_01_11_automatisation_clim_nuit_21h00_07h30.yaml | scripts.yaml · P1_01_clim_logique_system_autom.yaml | |
| (C) Notif. Jour | c_notification_temperature_up_ou_down_7h30_21h00.yaml | P1_02_automation_message_clim_7h30_21h.yaml | |
| (D) Notif. Nuit | d_notification_temperature_up_ou_down_21h00_7h30.yaml | P1_03_automation_message_clim_21h_7h30.yaml | |
| (E) Fermeture fenetres | e_clim_notification_de_fermeture_des_fenetres.yaml | nb_fenetre_ouvert_ferme_autom.yaml | |
| (F) Arret Clim | f_clim_automatisation_arret_clim_notification.yaml | - | |
| (G) Changement mode | g_clim_notification_de_changement_de_mode_ete_fan_hiver.yaml | P1_01_clim_logique_system_autom.yaml | |
| (H) Watchdog securite | h_clim_debug_force_mode_correct_securite.yaml | P1_01_clim_logique_system_autom.yaml · P1_ACS_IB_01_arret_clim_securises.yaml | |
| (I) Synchro prise | i_synchro_notif_clim_si_prise_coupee.yaml | - | |
| (J) DEBUG | j_debug_notifier_les_changements_de_message_clim_mobile.yaml | P1_02_automation_message_clim_7h30_21h.yaml | |
| P1 Cuisine | A - Chauffage Cuisine (planification) | a_chauffage_cuisine_entre_4h45_7h_lmmj_ou_5_45h_8h_vsd_avec_t_19_9.yaml | - |
| B - Chauffage Cuisine Vacances | b_chauffage_cuisine_vacances.yaml | - | |
| P1 SDB | A - Gestion Intelligente Soufflant | a_2026_02_01_salle_de_bain_gestion_intelligente_soufflant.yaml | P1_BV_01_SW_inter_souflant_sdb.yaml · input_select.yaml |
| D - Watchdog Securite Radiateur | d_salle_de_bain_watchdog_securite_radiateur.yaml | - | |
| E - Minuterie Seche Serviettes (2h) | e_minuterie_seche_serviettes_salle_de_bain_timer_absolu_2h.yaml | - | |
| P2 Prises | ECO Prises Dynamique | eco_prises_dinamique_by_presence_groupe.yaml | P2_eco_prises_config.yaml · P4_groupe_presence.yaml |
| Gestion PC Bureau | gestion_pc_bureau_scene_de_fin_notif.yaml | - | |
| Gestion TV Chambre | gestion_tv_chambre_scene_de_fin_notif.yaml | - | |
| P3 Eclairage | Bureau - Activation ecran synchro | p3_bureau_activation_ecran_synchro.yaml | - |
| Bureau - Bouton Rodret toggle blanches | p3_bureau_bouton_rodret_toggle_blanches.yaml | - | |
| Bureau - Forcer Play ON si PC tourne | p3_bureau_forcer_play_on_si_pc_tourne.yaml | - | |
| Bureau - Watchdog sync lampes blanches | p3_bureau_watchdog_synchronisation_lampes_blanches.yaml | - | |
| Entree - Allumage lumiere | p3_entree_allumage_lumiere.yaml | - | |
| SDB - Sync miroir lampe et relais | p3_sdb_sync_miroir_lampe_et_relais_sdb.yaml | - | |
| P4 Presence | [P4] Eric - Log Zones | P4_log_zones_eric.yaml | - |
| Système | Watchdog Piles (HUE / IKEA / SONOFF) | systeme_watchdog_piles_hue_ikea_sonoff.yaml | - |
| Z2M last_seen | z2m_last_seen.yaml | - | |
| Veille GitHub - Nouvelle release | veille_github_nouvelle_release_detectee.yaml | - |
Versioning, nommage et inventaire réel des 18 vignettes + 2 pages hors-matrice.
Vignettes · Pages · CompletDOCS/02_docs_dashboard/ → H:\Docs\
Même principe que pour les automations, à une différence près : côté dashboard, il n'y a pas d'extraction automatique. C'est moi qui récupère à la main, dans l'UI HA (Paramètres → Tableau de bord → Modifier en YAML), le code de chaque vignette ou page modifiée. Claude vérifie ensuite le fichier, l'horodate (nom de version), le stocke dans DOCS/02_docs_dashboard/dashboard_docs_YAML/L{x}C{x}_.../, et supprime la version la plus ancienne des 3 — après validation.
Un sous-dossier par vignette (L{ligne}C{colonne}_{index}_{Nom}/) — jamais plus de 3 versions par type de fichier.
| Type | Pattern | Conservation |
|---|---|---|
| Dashboard complet | Dashboard_COMPLET/Dashboard_YYYY_MM_DD.yaml | Illimitée (16 versions à ce jour, 2026-03-16 → 2026-08-01) |
| Vignette | L{x}C{x}_.../vignette_L{x}C{x}_{nom}_YYYY-MM-DD.yaml | Max 3 versions |
| Page | L{x}C{x}_.../page_L{x}C{x}_{nom}_YYYY-MM-DD.yaml | Max 3 versions |
| Carte isolée | L{x}C{x}_.../card_{nom}_YYYY-MM-DD.yaml | Sous-composant réutilisé dans une page |
Un fichier .bak oublié dans L1C2_02_Temperatures/ : page_L1C2_temperatures_2026-05-22.yaml.bak — résidu d'édition, à supprimer (hors convention de nommage).
3 fichiers md5_compare_*.txt à la racine de dashboard_docs_YAML/ (md5_compare_2026-05-23.txt, md5_compare_2026-05-31.txt, md5_compare_TREECORRIGE_2026-05-24.txt) — rapports d'audit MD5 oubliés hors du dossier prévu, ne suivent aucun des 4 patterns ci-dessus.
Relevé direct du dossier local (2026-08-02). Dernière vignette/page par emplacement.
L5C3_15_MariaDB/Script sh/ (script bash) et les deux sous-dossiers d'assets de PAGE_Home/ (Météo/, www_meteocons/) ne suivent pas la convention .yaml — présents mais hors périmètre des règles de nommage.
PAGE_RASPI a son propre dossier côté YAML (PAGE_RASPI/) mais côté MD, sa doc est colocalisée dans L4C2_MINI_PC/ — pas de dossier dédié. Asymétrie à connaître si tu cherches ce fichier.
| Matrice | Nom | Dernière vignette | Dernière page | Note |
|---|---|---|---|---|
| L0C0 | PAGE_Home | - | - | Page d'accueil — 7 card_* individuelles (foudre, lave-linge, presence...) |
| L1C1 | Météo | 2026-05-16 | 2026-06-13 | + card_duree_du_jour |
| L1C2 | Températures | 2026-05-12 | 2026-07-14 | ⚠️ .bak résiduel présent |
| L1C3 | Commandes Clim | 2026-07-18 | 2026-07-18 | + 6 card_prog_* (par appareil) |
| L2C1 | Énergie Générale | 2026-06-18 | 2026-06-18 | 3 pages (mensuel/principale/temps réel) |
| L2C2 | Énergie Clim | 2026-05-13 | 2026-07-14 | - |
| L2C3 | Énergie Éclairage | 2026-05-13 | 2026-05-13 | 1 seule version de chaque (récent) |
| L3C1 | Commandes Éclairage | 2026-05-13 | 2026-05-22 | 2 pages (gauche/droite) |
| L3C2 | Commandes Prises | 2026-05-14 | 2026-05-14 | - |
| L3C3 | Stores + Fenêtres | 2026-05-14 | 2026-06-02 | - |
| L4C1 | Proxmox (PVE) | 2026-06-18 | 2026-06-18 | + card_services_ha_z2m_mariadb |
| L4C2 | Mini PC (NUC) | 2026-06-18 | 2026-06-18 | + card_popup_memory |
| L4C3 | Mises à jour HA | 2026-05-14 | 2026-06-15 | 2 pages legacy (gauche/droite) + 1 fusionnée |
| L5C1 | Piles / Batteries | 2026-05-14 | 2026-05-14 | - |
| L5C2 | Batteries Portables | 2026-05-12 | 2026-05-12 | 2 pages (gauche/droite) |
| L5C3 | MariaDB | 2026-05-10 | 2026-06-15 | + 4 card_audit_* + page_systeme_reserve |
| L6C1 | Qualité Air | 2026-05-14 | 2026-05-23 | - |
| L6C2 | Pollution / Pollen | 2026-05-14 | 2026-06-13 | - |
| L6C3 | Vigilance Eau | 2026-05-14 | 2026-05-14 | - |
| — | PAGE_RASPI | - | 2026-05-03 | Hors-matrice — page unique, pas de pattern L{x}C{x} |
Le code, c'est la partie visible. Voila ce qui verifie, deploie et garde une trace du reste.
Home Assistant (prod live) est la reference absolue. GitHub home_assistant_re-build en est le reflet, pousse automatiquement depuis HA a chaque changement. Le local ReBuild/ est le poste de travail : il doit converger vers prod, jamais l'inverse.
| Perimetre | Comparaison | Criticite |
|---|---|---|
| Config YAML (sensors/templates/UM/command_line) | GitHub vs Local | Critique |
| Automations (alias automations.yaml) | GitHub vs Local | Critique |
| Dashboard YAML | Local vs H:\Docs\ | Secondaire |
Audit complet 1x/semaine minimum, et avant toute session de travail majeure. MD5 different sur un meme nom = conflit, HA fait foi.
7 commandes utilitaires, plus une qui merite sa propre place.
/sync_index et DEPENDANCES_GLOBALES.mdLa "memoire interne" qui dit ou retrouver quoi quand ca foire. A chaque modif YAML qui touche une vignette, une page ou une automation, /sync_index met a jour la chaine de dependances (entite -> fichier source -> vignette dashboard, automation) et passe le statut de 🔲 a ✅. Sans cette mise a jour, un fichier peut etre "valide" alors que sa doc de dependance est perimee -- et dans ce cas la tache n'est jamais consideree terminee.
/fix_fileAnalyse une erreur HA, retourne uniquement le bloc YAML corrige./statusResume l'avancement du projet en 3 points./histoJournal de bord compact, sauvegarde dans historique/. (a faire a la fin de chaque session)/ha_new_yamlGenere un squelette YAML conforme (bordures, headers, slug, unique_id)./ha_push_yamlPousse un fichier YAML valide vers la prod H:\./ha_push_docsSynchronise les docs locales DOCS/ vers H:\Docs\./ha_resync_treeResynchronise le local depuis GitHub, audit MD5 a l'appui.A chaque ouverture de session, une question avant tout travail : "As-tu fait des modifications depuis la derniere session (autre outil, etc.) ?" Si oui, l'audit MD5 complet se lance avant toute autre tache.
Le backlog vit dans un seul fichier texte versionne, jamais dans la memoire d'une conversation. Ce qui n'est pas ecrit la est perdu a la fermeture de la session.
Des templates qui decident, calculent et s'adaptent — pas de simples conversions d'unites.
heat / off / coolLa T° exterieure pilote le mode via deux sensors de seuil — pas de valeurs hardcodees. seuil_non_chauffage (18°C) et seuil_non_clim (27°C) sont des sensors HA modifiables sans toucher au template. Le fallback -999 detecte une sonde hors ligne et retourne unknown au lieu de forcer un mode errone.
sensor.mode_ete_hiver — un seul point de verite. Modifier le seuil = changer la valeur d'un sensor, le template suit automatiquement.La cible confort n'est pas un template unique. C'est une chaine de 6 sensors qui se lisent les uns les autres. Chaque etape a un role clair et un unique_id propre — auditable et debuggable individuellement. Les paliers utilisent des sensors delta (delta_1...delta_7) au lieu de valeurs hardcodees.
mode_ete_hiver → consigne_de_base → temperature_differentielle → temperature_cible → temperature_confort_jour → temperature_confort_nuitLe template lit des groupes Hue natifs (light.salon, light.table), pas les ampoules une a une. 4 etats propres : Allume / Salon / Table / Eteint. Pour le bureau : 3 sensors imbriquest (lumiere_bureau_etat, lumiere_ecran_etat, bureau_etat) avec 6+ etats selon la combinaison PC / Hue Sync / lampes.
La carte Ecran (Hue Play) disparait du dashboard quand switch.ecran_p_c_3_play_hue = off. Ce switch est coupe par une automation d'absence declenchee depuis binary_sensor.presence_maison (P4). La carte Tetes de Lit + son heading entier disparaissent de la meme facon via switch.prise_tete_de_lit_chambre.
P3 et P4 restent dans des fichiers YAML strictement separes — c'est uniquement la conditional card du dashboard qui croise les poles.
P4 presence_maison = Absent → automation → switch OFF → conditional card → carte masquee. En parallele : sensor.lumiere_ecran_etat passe a Eco. dans le badge Bureau.Meme logique de sensors corriges que la chaine confort, mais pour le mode absence. temperature_eco_hiver_corrige part d'une base de 17°C et remonte a 18°C si T°ext < 12°C, 19°C si T°ext < 8°C. temperature_eco_ete_corrige fait l'inverse en ete. Ces deux sensors sont lus par le script p1_master_gestion_clim.yaml quand sensor.groupe vaut groupe_1 — personne a la maison.
sensor.groupe = groupe_1 (Absent) → script lit temperature_eco_hiver_corrige / _eco_ete_corrige → consigne eco appliquee aux climatiseurs, pas besoin d'automation dediee en plus.