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
125 lines
4.4 KiB
YAML
125 lines
4.4 KiB
YAML
# Mémoire de mesures EVCS — à déployer sur le SECOND Synology (10.10.10.22).
|
|
#
|
|
# Deux bases, deux rôles distincts, décidés le 04/09/2026 :
|
|
#
|
|
# postgres (proposition A) — ce que n8n CALCULE : sorties du bilan,
|
|
# décisions du contrôleur, prévision telle qu'elle a été publiée.
|
|
# Relationnel, donc capable de stocker un vecteur de 24 valeurs,
|
|
# une raison en texte, un événement daté — et de les JOINDRE.
|
|
#
|
|
# influxdb (proposition B) — ce que Home Assistant OBSERVE : chaque
|
|
# changement d'état, à la résolution native, y compris les entités
|
|
# auxquelles personne n'a encore pensé. C'est ce qui a manqué le
|
|
# 03/09, quand les modes des chargeurs MPPT se sont révélés être le
|
|
# bon signal alors que personne ne les enregistrait.
|
|
#
|
|
# ⚠️ NE PAS héberger sur 10.10.10.17 : cette machine porte déjà Home Assistant,
|
|
# n8n, openclaw et open-webui. Une mémoire qui meurt avec la machine qu'elle
|
|
# documente ne sert à rien (cf. HANDOFF §32).
|
|
#
|
|
# Mise en service :
|
|
# cd /volume2/projects/EVCS/EVCS/deploy/historisation
|
|
# cp historisation.env.exemple historisation.env puis y mettre les mots de passe
|
|
# docker compose up -d
|
|
# docker compose logs -f
|
|
#
|
|
# Vérification :
|
|
# docker compose exec postgres psql -U evcs -d evcs -c '\dt'
|
|
# curl -s http://10.10.10.22:8086/health
|
|
#
|
|
# Volumes NOMMÉS et non bind-mounts : le démon Docker de DSM refuse un
|
|
# bind-mount dont le dossier hôte est absent, et une base de données sur un
|
|
# partage réseau est une mauvaise idée (verrouillage, latence, fsync).
|
|
|
|
services:
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: evcs-postgres
|
|
restart: always
|
|
network_mode: bridge
|
|
ports:
|
|
# Ouvert au réseau local : n8n tourne sur 10.10.10.17 et doit écrire ici.
|
|
- "5432:5432"
|
|
env_file:
|
|
- historisation.env
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- POSTGRES_USER=evcs
|
|
- POSTGRES_DB=evcs
|
|
# POSTGRES_PASSWORD vient de historisation.env
|
|
- PGDATA=/var/lib/postgresql/data/pgdata
|
|
volumes:
|
|
- evcs-pgdata:/var/lib/postgresql/data
|
|
# Appliqué UNE SEULE FOIS, à la création de la base. Pour faire évoluer
|
|
# le schéma ensuite, écrire une migration et la passer à psql.
|
|
- ./schema.sql:/docker-entrypoint-initdb.d/10-schema.sql:ro
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U evcs -d evcs"]
|
|
interval: 1m
|
|
timeout: 10s
|
|
retries: 5
|
|
|
|
influxdb:
|
|
image: influxdb:2.7-alpine
|
|
container_name: evcs-influxdb
|
|
restart: always
|
|
network_mode: bridge
|
|
ports:
|
|
# Home Assistant, sur 10.10.10.17, écrit ici.
|
|
- "8086:8086"
|
|
env_file:
|
|
- historisation.env
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- DOCKER_INFLUXDB_INIT_MODE=setup
|
|
- DOCKER_INFLUXDB_INIT_ORG=airtria
|
|
- DOCKER_INFLUXDB_INIT_BUCKET=evcs
|
|
# Rétention 0 = illimitée sur le seau brut. Le sous-échantillonnage se
|
|
# fait par tâches (voir README), pas en jetant la donnée d'entrée.
|
|
- DOCKER_INFLUXDB_INIT_RETENTION=0
|
|
# DOCKER_INFLUXDB_INIT_USERNAME / _PASSWORD / _ADMIN_TOKEN : env file
|
|
volumes:
|
|
- evcs-influx-data:/var/lib/influxdb2
|
|
- evcs-influx-config:/etc/influxdb2
|
|
healthcheck:
|
|
test: ["CMD", "influx", "ping"]
|
|
interval: 1m
|
|
timeout: 10s
|
|
retries: 5
|
|
|
|
# Alimentation de PostgreSQL depuis Home Assistant. Volontairement PAS
|
|
# depuis n8n : tout ce que n8n calcule, il le publie deja dans des helpers HA
|
|
# — les lire ici donne la meme information sans toucher aux trois workflows
|
|
# de production ni creer d'identifiant dans n8n.
|
|
historisation:
|
|
image: node:22-alpine
|
|
container_name: evcs-historisation
|
|
restart: always
|
|
working_dir: /app
|
|
network_mode: bridge
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
volumes:
|
|
# Depot en LECTURE SEULE : ce service n'ecrit que dans la base.
|
|
- /volume2/projects/EVCS/EVCS:/app:ro
|
|
env_file:
|
|
- historisation.env
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- HA_URL=http://10.10.10.17:8123
|
|
- PGHOST=10.10.10.22
|
|
- PGPORT=5432
|
|
- PGUSER=evcs
|
|
- PGDATABASE=evcs
|
|
# PGPASSWORD doit valoir POSTGRES_PASSWORD : les deux sont dans le
|
|
# fichier d'environnement, tenus egaux a la main.
|
|
- HISTORISE_INTERVAL_S=60
|
|
command: ["node", "tools/historise-evcs.mjs"]
|
|
|
|
volumes:
|
|
evcs-pgdata:
|
|
evcs-influx-data:
|
|
evcs-influx-config:
|