Question du proprietaire : HA_TOKEN il l a, mais les mots de passe PostgreSQL
et InfluxDB, il les invente ? Non — ils se generent. Les deux bases n existent
pas encore, c est ce fichier qui decide de leurs identifiants, et personne ne
les tape jamais : les conteneurs les lisent dans .env et Home Assistant lit le
jeton dans son propre secrets.yaml.
preparer-env.sh les tire avec openssl rand, reprend HA_TOKEN du .env a la
racine plutot que d en creer un nouveau, pose les droits a 600, et affiche la
ligne a recopier dans secrets.yaml. Il refuse d ecraser un .env existant :
regenerer les mots de passe d une base deja creee la rendrait inaccessible.
Corrige au passage un piege laisse dans l exemple : POSTGRES_PASSWORD et
PGPASSWORD etaient deux variables a tenir egales a la main. Le fichier s appelle
desormais .env, donc compose l utilise aussi pour la substitution, et le service
d historisation reprend le mot de passe par substitution. Un seul secret
PostgreSQL desormais.
Generateur essaye dans un bac a sable : fichier conforme, refus de regeneration
verifie. Fichiers d echange des editeurs ajoutes au gitignore.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
Le proprietaire a tranche : on met les deux en service et on decidera a l usage
s il faut garder les deux. Elles ne repondent pas a la meme question.
PostgreSQL garde ce que n8n CALCULE — sorties du bilan, decisions du
controleur, prevision telle qu elle a ete publiee — parce que ce ne sont pas des
capteurs, donc qu aucune statistique Home Assistant ne les retient, et parce que
ce sont des vecteurs, du texte et des jointures. Cinq tables, une vue de confort
qui repond a la question restee sans reponse le 03/09 : ce que le bilan exigeait
contre le SOC reellement atteint, heure par heure.
InfluxDB garde ce que Home Assistant OBSERVE, a la resolution native et sur tout
le perimetre energie, y compris les entites auxquelles personne n a encore
pense. C est exactement ce qui a manque le 03/09, quand les modes des chargeurs
MPPT se sont reveles etre le bon signal alors que personne ne les enregistrait.
Les deux sur 10.10.10.22 : cette machine ne porte qu un service, quand
10.10.10.17 en porte quatre. Le volume n est pas l argument, les deux Synology
ont des teraoctets libres.
L alimentation de PostgreSQL ne passe volontairement PAS par n8n. Tout ce que
n8n calcule, il le publie deja dans des helpers Home Assistant : les lire donne
la meme information sans toucher aux trois workflows de production stabilises
hier soir ni creer d identifiant dans n8n. L horodatage retenu est celui de Home
Assistant et non celui du sondage, si bien qu une valeur inchangee porte la meme
clef primaire et n est pas reecrite : on enregistre quand la grandeur bouge, pas
quand on regarde.
Essai a blanc verifie sur l installation reelle : 15 mesures, 1 ligne de bilan,
1 decision, 2 previsions, avec les bonnes dates. Le mode blanc comptait d abord
les lignes ecrites, donc zero par construction — corrige pour compter ce qu il
ecrirait, sans quoi il ne verifiait rien.
Le branchement de Home Assistant sur InfluxDB demande un redemarrage et n est
donc PAS applique : le fichier de configuration est pret, a poser en milieu de
matinee, jamais entre 01:24 et 07:24.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
Docker de Synology refuse un bind-mount dont le dossier hote est absent,
la ou Docker standard le creerait. deploy/watchdog/logs est desormais
versionne vide, et le compose le dit.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
Le controleur pilote depuis cette nuit la consigne de puissance reseau.
S il meurt en pleine session, elle reste haute et le reseau reprend la
place du solaire toute la journee. Ce chien de garde repare ce risque.
Signal de vie : l API d executions n8n, pas un helper HA. Verifie que HA
ne rafraichit pas l horodatage d un input_text reecrit a l identique --
surplus_state paraissait fige depuis 40 min alors que tout tournait.
Il agit en MQTT direct sur le GX Venus, troisieme machine independante
des deux NAS, jamais via HA ni via le cloud Tuya. Il ne decide rien : il
remet la consigne au repos, arrete la borne, et se tait. Une seule
action par panne, verrou jusqu au retour du controleur.
Tests : controleur vivant, panne simulee, et verrou sur 5 cycles.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
tools/ha-service.mjs comble le trou des MCP disponibles : ha-get-state lit un
etat, ha-set-helper ecrit un helper, mais aucun n'appelle un service. Or
homeassistant.check_config et homeassistant.restart sont indispensables apres
une modification de configuration.yaml (le recorder n'est pas rechargeable a
chaud). Meme schema que tools/n8n-push.mjs : fetch, jamais curl, jeton lu dans
.env, jamais en dur. Les services destructifs exigent --yes explicite.
.env ajoute a .gitignore : il contenait HA_TOKEN et n'etait pas exclu, un
git add -A l'aurait pousse sur le remote (le fichier n'etait pas encore suivi).
Note : configuration.yaml (hors depot, sur le NAS) recoit
recorder.purge_keep_days = 90 pour pouvoir rejouer un incident plusieurs
semaines apres coup. Sauvegarde dans SAVE_CONFIG/.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
Ajout de la configuration MCP (5 serveurs n8n) et du CLAUDE.md qui charge
AGENTS.md/HANDOFF.md/MEMORY.md/docs/MANUEL_COMPLET.md, ainsi que les skills
n8n de référence (.claude/skills/*, docs uniquement, pas de code exécuté).
.claude/settings.local.json reste ignoré (déjà dans .gitignore).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- src/nodes/*.js (6 nodes + template snapshot) = source de vérité unique.
- n8n-push.mjs reconstruit le JSON depuis src/ avant syntaxe+golden+PUT
(src gagne toujours; n8n-extract.mjs pour resynchroniser si édition UI).
- n8n-build.mjs --check pour vérifier la synchro.
- Copies historiques déplacées dans archive/ (mortes, dérivées de la prod).
- .gitignore: backups locaux de rollback.
- AGENTS.md: règle R2 pour toutes les futures sessions (dont Qwen local).
- Validé: idempotence, mutation/restauration, pipeline push complet en réel.