specs: record acceptance criteria status and remaining gaps
This commit is contained in:
parent
6290a6cf7b
commit
ceb358c89a
@ -359,20 +359,62 @@ confirmation humaine au moment de l'implémentation.
|
|||||||
|
|
||||||
## Tableau de statut
|
## Tableau de statut
|
||||||
|
|
||||||
|
Suite : `sunspec/tests/`, **38 tests, 38 verts**.
|
||||||
|
|
||||||
|
Build : `qmake6 NYMEA_SUNSPEC_PATH=<sysroot> sunspec/tests/tests.pro && make check`.
|
||||||
|
Sans `NYMEA_SUNSPEC_PATH`, `sunspec.pri` résout `libnymea-sunspec` par
|
||||||
|
`pkg-config`, ce qui suppose `libnymea-sunspec-dev` installé système.
|
||||||
|
|
||||||
| AC | Objet | Test | Statut |
|
| AC | Objet | Test | Statut |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| AC-1 | plage −100…+100 | `test_AC_1_*` | à renseigner |
|
| AC-1 | plage −100…+100 | `test_AC_1_*` | vert |
|
||||||
| AC-2 | lecture `inWRte`/`outWRte` | `test_AC_2_*` | à renseigner |
|
| AC-2 | lecture `inWRte`/`outWRte` | `test_AC_2_*` | vert |
|
||||||
| AC-3 | `enableDischarging` relu | `test_AC_3_*` | à renseigner |
|
| AC-3 | `enableDischarging` relu | `test_AC_3_*` | vert |
|
||||||
| AC-4 | `RvrtTms` écrit en dernier | `test_AC_4_*` | à renseigner |
|
| AC-4 | `RvrtTms` écrit en dernier | `test_AC_4_*` | vert |
|
||||||
| AC-5 | filtre fabricant | `test_AC_5_*` | à renseigner |
|
| AC-5 | filtre fabricant | `test_AC_5_*` | vert |
|
||||||
| AC-6 | little-endian | `test_AC_6_*` | à renseigner |
|
| AC-6 | little-endian | `test_AC_6_*` | vert — mais c'est une **inférence** (H-3), pas une mesure |
|
||||||
| AC-7 | paramètres `froniusConnection` | `test_AC_7_*` | à renseigner |
|
| AC-7 | paramètres `froniusConnection` | `test_AC_7_*` | vert |
|
||||||
| AC-8 | plancher 7 s | `test_AC_8_*` | à renseigner |
|
| AC-8 | plancher 7 s | `test_AC_8_*` | vert, avec réserve ci-dessous |
|
||||||
| AC-9 | registres interdits | `test_AC_9_*` | à renseigner |
|
| AC-9 | registres interdits | `test_AC_9_*` | vert |
|
||||||
| AC-10 | `revertTime` 300 s | `test_AC_10_*` | à renseigner |
|
| AC-10 | `revertTime` 300 s | `test_AC_10_*` | vert |
|
||||||
| AC-11 | table mode → registres | `test_AC_11_*` | à renseigner |
|
| AC-11 | table mode → registres | `test_AC_11_*` | vert au niveau du plan ; **aucune action n'expose encore les six modes** |
|
||||||
| AC-12 | relecture du SF | `test_AC_12_*` | à renseigner |
|
| AC-12 | relecture du SF | `test_AC_12_*` | vert |
|
||||||
| AC-13 | relecture + `controlHealthy` | `test_AC_13_*` | à renseigner |
|
| AC-13 | relecture + `controlHealthy` | `test_AC_13_*` | vert |
|
||||||
| AC-14 | classement par `IDStr` | `test_AC_14_*` | à renseigner |
|
| AC-14 | classement par `IDStr` | `test_AC_14_*` | vert ; **non branché** — modèle 160 toujours absent du `switch` (anomalie A5, hors périmètre) |
|
||||||
| AC-15 | agrégats modèle 160 | `test_AC_15_*` | à renseigner |
|
| AC-15 | agrégats modèle 160 | `test_AC_15_*` | idem AC-14 |
|
||||||
|
|
||||||
|
### Réserves à lever
|
||||||
|
|
||||||
|
- **AC-8** — le minuteur d'interrogation de nymea est **global au plugin**, pas
|
||||||
|
par connexion. Le plancher est donc appliqué à l'échelle du plugin dès qu'une
|
||||||
|
connexion `fronius` est configurée : c'est plus strict que l'AC, jamais moins.
|
||||||
|
Le paramètre `updateInterval` par thing a été **retiré** de
|
||||||
|
`froniusConnection` : l'architecture du plugin ne peut pas l'honorer par
|
||||||
|
connexion, et un réglage sans effet serait pire que son absence.
|
||||||
|
- **AC-11** — la fonction `FroniusRules::planBatteryMode()` produit exactement
|
||||||
|
la table du contrat, et le plan est exécutable par
|
||||||
|
`IntegrationPluginSunSpec::executeSetpointPlan()`. Il manque l'action nymea
|
||||||
|
qui l'appelle : le nommage de cette action et de ses paramètres n'est pas
|
||||||
|
tranché par le contrat.
|
||||||
|
- **AC-14 / AC-15** — les fonctions de classement et d'agrégation sont écrites
|
||||||
|
et testées, mais aucun thing du modèle 160 n'est créé tant que l'anomalie A5
|
||||||
|
(`ModelIdMppt` absent du `switch` de `processDiscoveryResult()`) n'est pas
|
||||||
|
corrigée. A5 est hors du périmètre des quatre correctifs demandés.
|
||||||
|
- **AC-15.4** — respecté par construction : aucun calcul de production PV par
|
||||||
|
différence n'a été ajouté.
|
||||||
|
|
||||||
|
### Multi-unit-ID (H-1)
|
||||||
|
|
||||||
|
**Non implémenté.** `froniusConnection` porte bien le paramètre `meterSlaveId`
|
||||||
|
(AC-7, vert), mais le plugin n'instancie encore qu'une seule `SunSpecConnection`
|
||||||
|
par thing. Le passage à deux connexions internes touche `m_sunSpecConnections`,
|
||||||
|
`createConnection()`, `setupThing()`, `processDiscoveryResult()`,
|
||||||
|
`thingRemoved()`, `postSetupThing()` et `onRefreshTimer()`.
|
||||||
|
|
||||||
|
Deux raisons de ne pas l'avoir fait dans la foulée : la décision D1 n'est pas
|
||||||
|
validée, et le brief demande explicitement de traiter ce lot **isolément**,
|
||||||
|
après que le reste soit fonctionnel sur l'onduleur seul. S'y ajoute H-4 : rien
|
||||||
|
ne dit que l'onduleur accepte deux connexions TCP simultanées, et le
|
||||||
|
constructeur recommande des requêtes séquentielles. Ce point se mesure au banc ;
|
||||||
|
le supposer serait exactement le mode de défaillance que le contrat cherche à
|
||||||
|
éviter.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user