Chien de garde EVCS : remise en etat sur quand le controleur se tait

Le controleur pilote depuis cette nuit la consigne de puissance reseau.
S il meurt en pleine session, elle reste haute et le reseau reprend la
place du solaire toute la journee. Ce chien de garde repare ce risque.

Signal de vie : l API d executions n8n, pas un helper HA. Verifie que HA
ne rafraichit pas l horodatage d un input_text reecrit a l identique --
surplus_state paraissait fige depuis 40 min alors que tout tournait.

Il agit en MQTT direct sur le GX Venus, troisieme machine independante
des deux NAS, jamais via HA ni via le cloud Tuya. Il ne decide rien : il
remet la consigne au repos, arrete la borne, et se tait. Une seule
action par panne, verrou jusqu au retour du controleur.

Tests : controleur vivant, panne simulee, et verrou sur 5 cycles.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
Tallagrand Thierry
2026-09-01 02:59:56 +02:00
parent 807ae45b7f
commit ccd764beb9
8 changed files with 943 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
# Chien de garde EVCS — à déployer sur le SECOND Synology (10.10.10.22).
#
# Il surveille le contrôleur qui tourne sur 10.10.10.17 et, s'il se tait,
# remet la consigne de puissance réseau de l'ESS à sa valeur de repos et
# arrête la borne — en MQTT direct sur le GX Venus (10.10.10.9), donc sans
# passer par Home Assistant ni par le cloud Tuya.
#
# ⚠️ NE JAMAIS le lancer sur 10.10.10.17 : un chien de garde hébergé par la
# machine qu'il surveille meurt avec elle.
#
# Mise en service :
# cd /volume2/projects/EVCS/EVCS/deploy/watchdog
# cp watchdog.env.exemple watchdog.env puis y coller la clé API n8n
# docker compose up -d
# docker compose logs -f
#
# Vérification sans risque, avant de le laisser en service :
# docker compose run --rm evcs-watchdog node tools/watchdog-evcs.mjs --once
# docker compose run --rm evcs-watchdog node tools/watchdog-evcs.mjs --once --dry-run --simulate-dead
services:
evcs-watchdog:
image: node:22-alpine
container_name: evcs-watchdog
restart: always
working_dir: /app
network_mode: bridge
volumes:
# Le dépôt en LECTURE SEULE : le chien de garde n'a aucune raison
# d'écrire dans le code qu'il exécute.
- /volume2/projects/EVCS/EVCS:/app:ro
# Son journal, seul point d'écriture, hors du dépôt.
- ./logs:/var/log/evcs-watchdog:rw
env_file:
- watchdog.env
environment:
- TZ=Europe/Paris
- WATCHDOG_LOG=/var/log/evcs-watchdog/watchdog-evcs.log
command: ["node", "tools/watchdog-evcs.mjs"]
healthcheck:
test: ["CMD", "node", "-e", "process.exit(0)"]
interval: 5m