etm-powersync-app/test/fixtures/loadtelemetry_hems_etm69.json
Patrick Schurig fb5b0e7165 feat(accueil): carte « En ce moment » sur la télémétrie, plus de marque ni de démo
Consigne app §G (décision Patrick du 2026-10-16) et motifs etm70 (§H).

G — la carte « Héos pilote en ce moment » affichait des décisions
inventées (HeosDecision.demo : voiture 3,6 kW, batterie en charge sur un
banc sans batterie). Remplacée par EnCeMomentCard : une ligne par charge
de GetLoadTelemetry — libellé de la configuration, decision.code + params
rendus par decisionText, puissance MESURÉE seulement (jamais l'allocation
à sa place). Titre en clé l10n. Rien sur « optimiseur actif » tant que
l'objet de capacités n'existe pas.
Marque retirée des identifiants (HeosDecisionCard, HeosDecision,
HeosAction, _HeosChip, _HeosBadgeSmall, heosActive → pilotageActif…), des
fichiers (heos_decision_card.dart, dashboard_models.dart supprimés), des
textes affichés (hub du flux, écran A/C) et des commentaires :
grep -ri héos/heos vide sur lib/, test/, assets/ et les .arb.

H — contre INTERFACE.md local de la branche moteur, etm70 pas encore sur
le banc :
- motifs éco publiés à la racine (R7, part majoritaire) rendus en clair ;
  ventilation des niveaux affichée (« 83 W éco + 0 W confort », vu sur
  la trame réelle etm69) ;
- ECO_FLOOR_MISSED retenu par charge (publié un seul cycle), y compris
  pour une charge sortie de loads[] ; « manque non chiffrable » quand
  missingWh est absent, jamais 0 Wh ;
- PRICE_SLOT et OPTIMIZER_DECISION en FR / DE / EN (app_en.arb et
  app_de.arb créés pour ces seules clés ; le reste retombe sur le
  français, listé dans l10n_untranslated.json). Code inconnu : repli
  générique avec le code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 21:26:16 +02:00

141 lines
2.7 KiB
JSON

{
"_source": "dump réel banc hems 10.42.60.21, NymeaEnergy.GetLoadTelemetry, 2026-10-16, moteur 1.15.2+etm69",
"telemetry": {
"budget": {
"allocatedW": 1200,
"evReservedW": 0,
"recreditedW": 1200,
"remainingW": -949.3777465820312,
"surplusW": -949.3777465820312
},
"degradedMode": false,
"draw": {
"authorisedW": 6261.473164558411,
"binding": "connection",
"bindingPhase": "C",
"committedW": 83.33333333333333,
"perPhaseBound": true,
"remainingW": 6178.139831225078
},
"loads": [
{
"allocatedW": 83.33333333333333,
"available": true,
"decision": {
"code": "SURPLUS_INSUFFICIENT",
"level": "comfort",
"params": {
"budgetW": -949
}
},
"levels": [
{
"counts": {
"draw.committedW": 83.33333333333333
},
"decision": {
"code": "ECO_FLOOR_GRID",
"params": {
"atMaximum": false,
"gridW": 83,
"regime": "unmeasurable",
"remainingS": 53039,
"remainingWh": 2000,
"targetWh": 2000
}
},
"funding": "grid",
"level": "eco",
"progress": {
"purchasedWh": 764.9768518518601,
"regime": "unmeasurable",
"targetWh": 2000
},
"targetW": 83.33333333333333
},
{
"counts": {
"budget.allocatedW": 0
},
"decision": {
"code": "SURPLUS_INSUFFICIENT",
"params": {
"budgetW": -949
}
},
"funding": "surplus",
"level": "comfort",
"targetW": 0
}
],
"loadId": "chauffe-eau",
"measurement": {
"source": "none"
},
"mechanism": {
"kind": "relay",
"maxStageW": 3500,
"stageW": 0,
"stagesW": [
0,
500,
1000,
1500,
2000,
2500,
3000,
3500
]
}
},
{
"allocatedW": 1200,
"available": true,
"command": {
"divergent": true,
"expectedW": 1200,
"observedW": 0,
"since": "2026-10-15T06:12:00Z"
},
"decision": {
"code": "BELOW_MIN_POWER",
"level": "comfort",
"params": {
"budgetW": 251,
"minPowerW": 1500,
"state": 3
}
},
"levels": [
{
"counts": {
"budget.allocatedW": 1200
},
"decision": {
"code": "BELOW_MIN_POWER",
"params": {
"budgetW": 251,
"minPowerW": 1500,
"state": 3
}
},
"funding": "surplus",
"level": "comfort",
"targetW": 1200
}
],
"loadId": "pac-terrain",
"measurement": {
"powerW": 0,
"source": "meter"
},
"mechanism": {
"estimatedPowerW": 1200,
"kind": "sgReady",
"state": 2
}
}
],
"timestamp": "2026-10-16T19:16:00Z"
}
}