Releve des cellules sur le Synology .17 + garde anti-blocage

Le releve tournait sur le PC portable (deploy/releve-cellules/lancer.sh) : ferme,
il ne releve plus, et le 20/09 son @reboot a refuse de relancer sur un faux
positif du garde anti-doublon -> 4 jours de trou dans la table cellule, Grafana
"No data". Le portable n'a pas vocation a rester allume.

Deplacement vers le Synology .17 (ARCHIVE3, DS920+), toujours allume :
- compose.yaml : conteneur node:20 en uid 1026:100 (le montage NFS peut ecraser
  root ; le dossier CSV est g+w pour users), device /dev/ttyUSB0 mappe, depot
  monte en /depot. Ecrit les CSV comme avant ; le service d'historisation du .22
  les ingere sans changement. restart:unless-stopped remplace la boucle lancer.sh.
- charger-pilotes.sh : DSM embarque usbserial.ko + ftdi_sio.ko mais ne les charge
  pas d'office. Script root (Planificateur DSM au boot) qui insmod les deux et
  ouvre les droits de /dev/ttyUSB0.
- README.md : deploiement, bascule depuis le portable, verification.

Garde anti-blocage dans pylontech-console.mjs (--suivi) : lireJusqua resout au
timeout au lieu de rejeter, donc un port fige renvoie du vide en boucle sans
jamais crasher -- exactement le hang du 20/09. Un controle du mtime du CSV force
process.exit(1) apres 3x le pas sans ecriture, pour que le superviseur (conteneur
ou lancer.sh) rouvre le port.

Menage : modified/*.bak-* (rollbacks locaux) ignores comme prepush-* ; ajout des
relevés de mesure batterie des sessions 16-20/09.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
Tallagrand Thierry
2026-09-24 12:24:06 +02:00
parent 6ec72c2424
commit ca90ce1e28
35 changed files with 4015 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
# Releve continu des cellules Pylontech, hote = Synology .17 (ARCHIVE3, DS920+),
# allume en permanence. Remplace la boucle lancer.sh du PC portable, qui mourait
# a chaque fermeture du portable et n'a pas survecu au reboot du 20/09.
#
# CE QUE FAIT CE CONTENEUR : il lit le cable console Pylontech branche en USB sur
# le NAS et ecrit un CSV dans docs/mesures/batteries/ du depot partage. Il NE
# touche PAS a la base : le service d'historisation sur le .22 ingere ces CSV
# comme avant (ingererCellules, tools/historise-evcs.mjs). Chaine inchangee en
# aval, seul le LECTEUR serie change d'hote.
#
# PREALABLE HOTE (root, au boot) : le pilote USB-serie existe sur DSM mais n'est
# pas charge d'office. Voir charger-pilotes.sh + le README. Sans /dev/ttyUSB0,
# ce conteneur ne demarre pas.
#
# LANCEMENT (TMZF5455 est dans le groupe docker -> pas de sudo) :
# cd /volume1/homes/TMZF5455/projects/EVCS/EVCS/deploy/releve-cellules
# /usr/local/bin/docker compose up -d
# /usr/local/bin/docker compose logs -f
services:
releve-cellules:
image: node:20-bookworm-slim
container_name: evcs-releve-cellules
restart: unless-stopped
# uid 1026 = TMZF5455, gid 100 = users. Le dossier docs/mesures/batteries
# est en g+w pour users ; le device est rendu accessible (chmod 666) par
# charger-pilotes.sh. On NE tourne PAS en root : le montage NFS du depot
# (depuis le .22) peut ecraser root (root_squash) et refuser l'ecriture.
user: "1026:100"
working_dir: /depot
volumes:
# Le depot est monte sur le .17 depuis le .22 :
# 10.10.10.22:/volume2/projects -> /volume1/homes/TMZF5455/projects
- /volume1/homes/TMZF5455/projects/EVCS/EVCS:/depot
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
# ⚠️ Le pack 2 compte CINQ US2000 (adresses 1..5). Verifier cette liste
# apres toute intervention physique sur la chaine.
command:
- node
- tools/pylontech-console.mjs
- --port
- /dev/ttyUSB0
- --suivi
- "600"
- --modules
- "1,2,3,4,5"