Deux gestes que le relevé du banc a tranchés, dans les deux sens.
1. THING_MISSING — MESURÉ, la réserve tombe
GetLoadTelemetry sur .75, 2026-08-28 10:29 UTC : la Terra AC supprimée est publiée
available=false · faultCode=THING_MISSING · decision=LOAD_UNAVAILABLE{frozenW:0} ·
mechanism.kind=evcharger. Le code SORT. Le test de rendu ne repose plus sur une trame
composée mais sur cette capture (test/fixtures/loadtelemetry_hems75_thingmissing.json).
Le masquage relevé mardi (etmvariableloadadapter.cpp:148-150, m_faulted testé avant que
THING_MISSING ne puisse s'exprimer) concerne l'adaptateur des charges VARIABLES — relais
et SG-Ready. L'adaptateur evcharger n'a pas ce chemin, d'où la différence. Il n'est donc
pas corrigé, seulement contourné par le hasard du chemin de code : remonté au brief
moteur avec la trame, parce que les deux codes envoient le client faire deux gestes
différents — « écriture échouée » fait démonter un coffret, « appareil absent » fait
rouvrir nymea.
2. EVChargingCard — elle part, et la monter aurait publié de la fiction
Trois des grandeurs qu'elle affiche ne sont JAMAIS lues sur la box : chargingMode,
chargingPower (3,6 kW) et solarSourcePercent (82 %) sont des valeurs par défaut de
EnergyData — _updateEnergyData ne les touche pas, et le mode n'est écrit qu'en optimiste
après une commande, jamais relu par GetChargingInfos. Sa feuille « Paramètres de charge »
proposait en plus un courant minimum, qui n'existe dans aucun contrat, et son bouton
« Enregistrer » ne faisait que Navigator.pop : rien n'était écrit. Ce n'était pas du code
mort à ranimer, c'était un écran à réécrire depuis le modèle.
⚠️ Et la surface vivante est pire que la morte : _EVWidget (favorites_screen.dart:419)
affiche les MÊMES valeurs par défaut comme si elles étaient mesurées — « 3600 W »,
« 82 % solaire », « Mode PV » — et écrit le mode sur des pastilles de 7 à 10 px sans
restituer un refus. Entrée 🔴 au TODO, avec ce qu'une carte de recharge peut dire
aujourd'hui : le mode lu par GetChargingInfos, la puissance mesurée du Thing, l'échéance
comme intention saisie. Ni SOC (n'existe pas), ni chargeEnergy (remis à zéro à chaque
interruption), ni courant minimum, ni phaseCount.
146 tests passent. flutter analyze : 27 remarques, deux de moins qu'avant — les deux
étaient dans le fichier supprimé.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SQbZKrWqsMFP1Lh2jjjd9f
85 lines
2.2 KiB
JSON
85 lines
2.2 KiB
JSON
{
|
|
"_note": "Capturé pour éprouver le RENDU de THING_MISSING sur une charge réelle. La Terra AC Charger (TCP) a été supprimée de nymea le 2026-08-26 ; son entrée LoadConfig survit au rang 4, et la télémétrie la publie available=false / faultCode=THING_MISSING / decision=LOAD_UNAVAILABLE{frozenW:0}, mechanism.kind=evcharger. ⚠️ Le masquage relevé mardi (etmvariableloadadapter.cpp:148-150, m_faulted testé avant THING_MISSING) concerne l'adaptateur des charges VARIABLES : sur l'adaptateur evcharger, le code sort tel quel. Les deux autres bornes (Simulated wallbox, V2C Trydan) sont absentes de loads[] — aucun véhicule branché, comportement +etm24.",
|
|
"_source": "dump réel HEMS 192.168.1.75, NymeaEnergy.GetLoadTelemetry, 2026-08-28 10:29 UTC — plugin 1.15.2+etm24.",
|
|
"telemetry": {
|
|
"budget": {
|
|
"allocatedW": 5000,
|
|
"evReservedW": 0,
|
|
"recreditedW": 5000,
|
|
"remainingW": 5741.7001953125,
|
|
"surplusW": 5741.7001953125
|
|
},
|
|
"degradedMode": false,
|
|
"loads": [
|
|
{
|
|
"allocatedW": 3500,
|
|
"available": true,
|
|
"decision": {
|
|
"code": "SURPLUS_SETPOINT",
|
|
"params": {
|
|
"budgetW": 9242,
|
|
"setpointW": 3500,
|
|
"stepped": true
|
|
}
|
|
},
|
|
"funding": "surplus",
|
|
"loadId": "chauffe-eau",
|
|
"measuredW": 1500,
|
|
"mechanism": {
|
|
"kind": "relay",
|
|
"maxStageW": 3500,
|
|
"stageW": 3500,
|
|
"stagesW": [
|
|
0,
|
|
500,
|
|
1000,
|
|
1500,
|
|
2000,
|
|
2500,
|
|
3000,
|
|
3500
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"allocatedW": 1500,
|
|
"available": true,
|
|
"decision": {
|
|
"code": "LOCK_MIN_STATE_HOLD",
|
|
"params": {
|
|
"state": 3
|
|
}
|
|
},
|
|
"funding": "surplus",
|
|
"loadId": "pac-terrain",
|
|
"lock": {
|
|
"kind": "minStateHold",
|
|
"remainingS": 60
|
|
},
|
|
"measuredW": 800,
|
|
"mechanism": {
|
|
"estimatedPowerW": 1500,
|
|
"kind": "sgReady",
|
|
"state": 3
|
|
}
|
|
},
|
|
{
|
|
"allocatedW": 0,
|
|
"available": false,
|
|
"decision": {
|
|
"code": "LOAD_UNAVAILABLE",
|
|
"params": {
|
|
"frozenW": 0
|
|
}
|
|
},
|
|
"faultCode": "THING_MISSING",
|
|
"funding": "surplus",
|
|
"loadId": "{88160e45-7df2-48cc-9639-f0d15ae6e382}",
|
|
"mechanism": {
|
|
"kind": "evcharger"
|
|
}
|
|
}
|
|
],
|
|
"timestamp": "2026-08-28T10:29:00Z"
|
|
}
|
|
} |