Constate au reboot + update DSM 7.3.2 -> 7.4.1 : le sudo passwordless de TMZF5455 a ete supprime, donc l'auto-elevation du script ne marche plus et la tache de boot (owner 1026) n'a pas charge les pilotes -> device absent, conteneur Exited. Les .ko existent toujours en 7.4.1. Le fix durable est une tache Planificateur en utilisateur root, qui ne depend d'aucun sudo. Note aussi que les updates majeurs peuvent desactiver les taches declenchees. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
Releve continu des cellules Pylontech
Lit le cable console Pylontech (adaptateur FTDI USB-serie) et depose un CSV par
tour dans docs/mesures/batteries/. Le service d'historisation sur le .22
ingere ces CSV (ingererCellules, tools/historise-evcs.mjs) et remplit la
table cellule, que Grafana lit. Le lecteur serie ne touche jamais la base.
Deux hotes possibles
| hote | supervision | fichier |
|---|---|---|
| Synology .17 (recommande, toujours allume) | restart: unless-stopped du conteneur |
compose.yaml |
| PC portable | boucle while |
lancer.sh (@reboot crontab) |
Le portable a montre sa limite le 20/09 : ferme, il ne releve plus, et son
@reboot a refuse de relancer sur un faux positif du garde anti-doublon — 4
jours de trou. Le NAS supprime ce mode de panne.
Dans les deux cas, un garde anti-blocage integre a pylontech-console.mjs
(--suivi) force la sortie du processus si le CSV cesse de grossir pendant plus
de 3x le pas (mini 180 s) : le port serie peut se figer en renvoyant du vide
sans jamais lever d'erreur, et sans ce garde le releve reste muet sans crasher.
La sortie fait rouvrir le port par le superviseur.
Deploiement sur le Synology .17
1. Pilote USB-serie (root, une fois + a chaque reboot)
DSM embarque usbserial.ko et ftdi_sio.ko mais ne les charge pas d'office.
charger-pilotes.sh les charge et ouvre les droits de /dev/ttyUSB0.
Automatiser via Planificateur de taches DSM -> tache declenchee « Au demarrage », utilisateur = root (onglet General, PAS un compte simple), commande :
/volume1/homes/TMZF5455/projects/EVCS/EVCS/deploy/releve-cellules/charger-pilotes.sh
⚠️ La tache DOIT tourner en root. insmod exige root, et une mise a jour
DSM MAJEURE efface le sudo passwordless : constate le 24/09, DSM 7.3.2 -> 7.4.1 a
supprime NOPASSWD pour TMZF5455, et une tache en compte simple n'a alors plus
aucun moyen de s'elever. Le script tente bien sudo -n en secours, mais ce
secours disparait au premier update majeur. Une tache root, elle, ne depend de
rien et survit aux updates.
Apres un update DSM majeur, verifier aussi que la tache n'a pas ete DESACTIVEE (les updates majeurs desactivent souvent les taches declenchees).
A relancer manuellement apres avoir rebranche le cable : DSM -> selectionner la
tache -> « Executer » (elle tourne en root), ou en terminal sudo charger-pilotes.sh
avec le mot de passe.
2. Le conteneur (TMZF5455, membre du groupe docker -> sans 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
Le conteneur tourne en uid 1026:gid 100 (ni root, a cause du root_squash NFS,
ni un compte sans droit d'ecriture sur le depot). Il redemarre seul apres un
crash, un reboot du NAS, ou une sortie du garde anti-blocage.
3. Basculer depuis le portable
Sur le portable, arreter la boucle et desactiver le @reboot pour eviter deux
lecteurs sur deux cables (ou un cable deplace) :
pkill -f 'pylontech-console.mjs --port'
crontab -e # commenter la ligne @reboot .../lancer.sh
Ne JAMAIS avoir deux relevés actifs sur la meme chaine : leurs lectures s'entrelacent et produisent des valeurs fausses sans que rien ne le signale.
Verifier que ca tourne
# cote NAS
/usr/local/bin/docker logs --tail 20 evcs-releve-cellules
# cote base (.22)
ssh tmzf5455@10.10.10.22 "sudo /usr/local/bin/docker exec -i evcs-postgres \
psql -U evcs -d evcs -c \"SELECT module, max(ts) FROM cellule GROUP BY module ORDER BY 2 DESC LIMIT 6;\""
Le panneau Grafana « Sante des modules » ne montre que les modules vus dans les 2 dernieres heures : s'il est vide, le releve est arrete.
Limite connue
Le cable est sur le pack 2 (5x US2000C). Le pack 1 (4x US5000) reste hors surveillance cellule jusqu'a un 2e cable. La courbe de capacite et le SOC, eux, couvrent tout le parc (agregat du Cerbo).