Le message d echec ne tenait pas dans son helper, et HA n etait pas en panne

Deux rectifications au diagnostic d hier soir, faites en deployant.

HA n etait PAS injoignable. J avais lu « le noeud d ecriture rend 0 item »
comme un echec ; c est la sortie normale d un input_text.set_value reussi. Le
service d historisation, qui interroge HA depuis l autre NAS, a enregistre 300 a
414 mesures par heure sans interruption de 22 h a 06 h, et le controleur EVCS
n a eu aucune erreur. Seul l acces Internet du workflow etait touche. Le .17 n a
ni redemarre (49 jours d uptime) ni perdu son reseau physique.

Et le mecanisme d alerte existant n a jamais fonctionne : zero message d echec
publie en quatre jours. Le helper evcs_balance_forecast_updated etait declare
max: 32 alors que « échec : réponse illisible ou sans résultat » fait 43
caracteres — Home Assistant rejetait la valeur, et le slice(0, 250) du code ne
pouvait pas le savoir. Reproduit puis corrige : a 32 refuse, a 128 accepte.

Un helper input_text susceptible de recevoir un message d erreur doit etre
dimensionne pour le message le plus long, pas pour la valeur nominale : ici 11
caracteres contre 43.

Deploiement verifie en production : forecast_day0 = 2026-09-08, statut ok.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
Tallagrand Thierry
2026-09-08 09:34:27 +02:00
parent 8d40e0d446
commit cea4a91e20

View File

@@ -5675,7 +5675,50 @@ et chaque scenario ayant la sienne : decalage non corrige · cas decale non
reconnu · retour a la garde d'age (3 scenarios) · courbe perimee utilisee quand reconnu · retour a la garde d'age (3 scenarios) · courbe perimee utilisee quand
meme. meme.
### A FAIRE AVANT QUE LE CORRECTIF AGISSE ### Deploye le 08/09 a 09:25 — et deux rectifications sur le diagnostic
Helper cree, `input_text.reload`, les deux workflows pousses (48/48 avant
chaque PUT). Verifie en production : `evcs_balance_forecast_day0` = `2026-09-08`,
statut du bilan `ok`.
⚠️ **RECTIFICATION 1 — Home Assistant n'etait PAS injoignable.** J'avais
interprete « le noeud d'ecriture rend 0 item » comme un echec. C'est faux :
`[[]]` est la sortie NORMALE d'un `input_text.set_value` reussi. Preuves que HA
tournait : le service d'historisation, qui interroge HA depuis l'autre NAS, a
enregistre **300 a 414 mesures par heure sans interruption** de 22 h a 06 h, et
le controleur EVCS n'a eu aucune erreur. La panne ne concernait que l'acces
**Internet** du workflow (`socket hang up` vers Forecast.Solar).
Le .17 n'a par ailleurs ni redemarre (**49 jours** d'uptime) ni perdu son
reseau physique (rien dans `dmesg` depuis le 2 septembre). La cause de
l'indisponibilite Internet reste **non etablie** ; deux autres workflows a appel
sortant ont eu des erreurs dans la meme fenetre, une seule occurrence en quatre
jours.
### ⚠️ RECTIFICATION 2 — le mecanisme d'alerte existant n'a JAMAIS fonctionne
En cherchant pourquoi 4 h 45 de panne n'avaient laisse aucune trace,
constat : **zero message d'echec dans
`input_text.evcs_balance_forecast_updated` en quatre jours**, alors que
`BUILD_HA_CALLS_FORECAST` en publie un a chaque echec depuis toujours.
Cause : le helper etait declare **`max: 32`**, et
« échec : réponse illisible ou sans résultat » fait **43 caracteres**. Home
Assistant rejetait la valeur. Le `slice(0, 250)` du code ne pouvait pas le
savoir. Reproduit puis corrige en direct : a 32 le message est refuse, a 128 il
passe (verifie par ecriture puis restauration de la valeur legitime).
`max` porte a **128** (sauvegarde `SAVE/evcs_energy_balance.yaml.bak2.*`).
⚠️ **Regle a retenir** : un helper `input_text` qui peut recevoir un message
d'erreur doit etre dimensionne pour le message le plus long, pas pour la valeur
nominale. Ici la valeur nominale fait 11 caracteres et le message 43.
### Ce qui reste ouvert
La cause de l'indisponibilite Internet de la nuit du 07 au 08/09. Une seule
occurrence ; a instruire si elle se reproduit — le rapport de nuit la signalera
desormais.
### Historique : ce qu'il fallait faire pour deployer
1. Creer le helper `input_text.evcs_balance_forecast_day0` dans 1. Creer le helper `input_text.evcs_balance_forecast_day0` dans
`/mnt/ARCH3/docker/HA/packages/evcs_energy_balance.yaml`, a cote de `/mnt/ARCH3/docker/HA/packages/evcs_energy_balance.yaml`, a cote de
`evcs_balance_forecast_today`, puis `input_text.reload` — aucun redemarrage. `evcs_balance_forecast_today`, puis `input_text.reload` — aucun redemarrage.