diff --git a/deploy/releve-cellules/README.md b/deploy/releve-cellules/README.md index 959fd3d..46771c6 100644 --- a/deploy/releve-cellules/README.md +++ b/deploy/releve-cellules/README.md @@ -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 hors surveillance cellule jusqu'a un 2e cable. La courbe de capacite et le SOC, 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 /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. diff --git a/deploy/releve-cellules/surveiller-port.sh b/deploy/releve-cellules/surveiller-port.sh new file mode 100644 index 0000000..b3e76e5 --- /dev/null +++ b/deploy/releve-cellules/surveiller-port.sh @@ -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