Releve cellules : garde contre les debranchements (timer 5 min sur le .17)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011uJ47NxgfpGnuuMr3f2n7Z
This commit is contained in:
Tallagrand Thierry
2026-09-25 16:47:23 +02:00
parent e4c6af555e
commit 5ba52023fd
2 changed files with 71 additions and 0 deletions

View File

@@ -90,3 +90,32 @@ Le panneau Grafana « Sante des modules » ne montre que les modules vus dans le
Le cable est sur le **pack 2** (5x US2000C). Le **pack 1** (4x US5000) reste 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, hors surveillance cellule jusqu'a un 2e cable. La courbe de capacite et le SOC,
eux, couvrent tout le parc (agregat du Cerbo). eux, couvrent tout le parc (agregat du Cerbo).
## Garde contre les debranchements (25/09/2026)
Debrancher puis rebrancher le cable recree `/dev/ttyUSB0` accessible a root
seul : le conteneur (uid 1026) meurt (« EIO: i/o error ») et ne repart pas.
`surveiller-port.sh` corrige cela toutes les 5 minutes, en root : pilotes
recharges si absents, droits du port rouverts, conteneur relance s'il est
arrete. Il ne fait rien si le cable est debranche, et ne journalise (tag
`evcs-releve`, `journalctl -t evcs-releve`) que lorsqu'il agit.
Pose en timer systemd (le Planificateur DSM n'a pas d'ajout en ligne de
commande ; meme choix que `openclaw-session-rotate.timer`) :
/etc/systemd/system/evcs-releve-port.service # ExecStart=/bin/sh <depot>/deploy/releve-cellules/surveiller-port.sh
/etc/systemd/system/evcs-releve-port.timer # OnBootSec=3min, OnUnitActiveSec=5min
⚠️ Pour ARRETER volontairement le releve, arreter d'abord le timer, sinon il
relance le conteneur dans les 5 minutes :
sudo systemctl stop evcs-releve-port.timer && sudo systemctl disable evcs-releve-port.timer
⚠️ Une mise a jour majeure de DSM peut effacer ces fichiers (elle a deja
efface le sudo NOPASSWD, voir plus haut) : reverifier
`systemctl list-timers | grep evcs` apres chaque MAJ.
⚠️ Seuls les cables a puce **FTDI** fonctionnent sur ce NAS : DSM (noyau 4.4)
n'embarque pas de pilote Prolific PL2303, et le modele `067b:23a3` n'est de
toute facon reconnu que par des noyaux recents (verifie sur la Spark et le PC
maison, noyaux 7.0). Essai du 25/09 : cable PL2303 illisible, retire.

View File

@@ -0,0 +1,42 @@
#!/bin/sh
# Garde du releve des cellules sur le Synology .17 (ARCHIVE3). A LANCER EN ROOT,
# toutes les 5 minutes (timer systemd evcs-releve-port.timer, voir README).
#
# Pourquoi (25/09/2026) : debrancher puis rebrancher le cable FTDI recree
# /dev/ttyUSB0 en crw------- root. Le conteneur, qui tourne en uid 1026, ne
# peut plus l'ouvrir : il meurt (« EIO: i/o error ») et ne repart pas seul.
# charger-pilotes.sh ne tourne qu'au demarrage du NAS, donc sans cette garde
# chaque debranchement coupait le releve jusqu'a une intervention manuelle.
#
# Ce script ne fait RIEN quand tout va bien, et n'ecrit une ligne dans le
# journal systeme (tag evcs-releve) que lorsqu'il agit. Idempotent.
PORT=/dev/ttyUSB0
CONTENEUR=evcs-releve-cellules
DOCKER=/usr/local/bin/docker
DIR=$(dirname "$0")
dire() { logger -t evcs-releve "$*"; echo "$*"; }
# Pilotes decharges (ne devrait arriver qu'apres une MAJ DSM) : on les recharge.
if ! /sbin/lsmod | grep -q "^ftdi_sio "; then
dire "ftdi_sio absent : rechargement des pilotes"
/bin/sh "$DIR/charger-pilotes.sh" >/dev/null 2>&1
fi
# Cable debranche : rien a faire, le conteneur ne peut de toute facon pas
# demarrer sans son device. On attend le rebranchement.
[ -e "$PORT" ] || exit 0
# Droits perdus au rebranchement : on les rouvre.
if [ "$(stat -c %a "$PORT")" != "666" ]; then
chmod 666 "$PORT"
dire "droits de $PORT rouverts (cable rebranche ?)"
fi
# Conteneur arrete : on le relance.
etat=$("$DOCKER" inspect -f '{{.State.Running}}' "$CONTENEUR" 2>/dev/null)
if [ "$etat" != "true" ]; then
"$DOCKER" start "$CONTENEUR" >/dev/null 2>&1 \
&& dire "$CONTENEUR relance" \
|| dire "$CONTENEUR : echec de la relance"
fi