L'arrivée de la V2C sur .75 a révélé deux défauts que le banc ne pouvait pas montrer avant, plus deux pièges de contrat à documenter. 1. ⚠️ isNotGrouped ÉTAIT CALCULÉ ET AFFICHÉ NULLE PART. GroupedOrder détecte depuis le premier jour qu'un ordre n'est pas groupé par domaine, le provider l'expose, et aucune vue ne le lisait — le cas ne s'était jamais produit, chaque domaine du banc ayant ses charges d'un seul tenant. Il se produit maintenant : la V2C, créée d'office au rang 1 que le chauffe-eau occupait déjà, donne l'ordre à plat « ecs · ev · heating · ev · ev ». Le domaine ev est coupé en deux par le chauffage. Ce n'était pas un détail d'affichage. L'écran groupe pour afficher, donc ce qu'on voit n'est plus l'ordre réel de la box — et le premier enregistrement réaplatit EN GROUPANT, ce qui change l'arbitrage sans que personne ne l'ait demandé. Chiffré par test sur la configuration réelle : la PAC passerait du rang 2 au rang 5. C'est exactement ce que le commentaire de GroupedOrder interdit depuis le début ; le garde-fou existait, il n'était pas branché. 2. « L'APPAREIL N'EXISTE PLUS » N'EST PAS UN DÉFAUT À LEVER. La Terra AC a été supprimée de nymea ; son entrée LoadConfig survit, occupe le rang 4, et s'affiche en THING_MISSING avec un bouton « Lever le défaut ». ClearLoadFault y répondrait EnergyErrorNoError sans rien changer, et le défaut reviendrait au cycle suivant — un bouton qui ne peut pas tenir sa promesse fait douter de la box au lieu de désigner la cause. Le bouton disparaît sur ce code, remplacé par ce qu'il faut faire : réinstaller l'appareil, ou retirer la charge. Et le libellé cesse de se lire « votre configuration est cassée » : le cas normal est un appareil remplacé, le plugin crée d'office une entrée par borne détectée mais ne la retire pas quand le Thing s'en va. 3. Deux pièges du Thing V2C, documentés là où quelqu'un serait tenté de les câbler : chargeEnergy est EXACT pendant la charge — sa croissance recoupe currentPower à mieux d'un pour cent — et REMIS À ZÉRO à l'arrêt de la charge, pas au débranchement. Mesuré : 0,3456 kWh → 0 dès que charging passe à faux, 119 secondes avant que le câble ne bouge. Sur du pilotage par surplus il repartirait de zéro à chaque nuage, et après coup une nuit entière vaudrait 0 — soit « rien livré » affiché là où la vérité est « pas mesurable ». Le plugin publiera un sessionEnergy construit ; rien n'est bâti en attendant, et surtout aucune accumulation côté app. powerL1/L2/L3 sont des ampères mal nommés, renommage currentL* en cours côté plugin. Ni affichage, ni conversion : une conversion écrite ici survivrait au correctif et le contredirait. Fixture ajoutée : la configuration réelle à cinq entrées, avec ses deux enseignements de terrain — deux rangs à 1, et une entrée orpheline qui consomme un rang. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016vrTVifar2GN5rtUh89Wkq
161 lines
4.1 KiB
JSON
161 lines
4.1 KiB
JSON
{
|
|
"_source": "NymeaEnergy.GetLoadConfig sur 192.168.1.75, 2026-08-28 — après remplacement de la ABB Terra AC par une V2C Trydan",
|
|
"_note": "CINQ entrées. Deux enseignements du terrain : (1) DEUX charges partagent le rang 1 — chauffe-eau et la V2C créée d'office, dont le rang par défaut « le plus petit moins un, borné à 1 » a dégénéré en égalité ; (2) l'entrée de la Terra AC SURVIT à la suppression de son Thing et occupe encore le rang 4 — le plugin crée d'office une entrée par borne détectée mais ne la retire pas.",
|
|
"loadConfigs": [
|
|
{
|
|
"adapter": "relay-router",
|
|
"domain": "ecs",
|
|
"enabled": true,
|
|
"id": "chauffe-eau",
|
|
"label": "chauffe-eau",
|
|
"maxPowerW": 0,
|
|
"meterThingId": "4938b26a-d862-437f-b681-aaff7bce23ff",
|
|
"minOffS": 60,
|
|
"minOnS": 60,
|
|
"minPowerW": 0,
|
|
"mode": "fixed",
|
|
"needs": {
|
|
"dailyDeadline": "",
|
|
"minEnergyWhPerDay": 0
|
|
},
|
|
"powerLevels": [],
|
|
"priority": 1,
|
|
"relays": [
|
|
{
|
|
"powerW": 500,
|
|
"thingId": "{8538782f-2c8c-4a30-bfce-c8140f791c9b}"
|
|
},
|
|
{
|
|
"powerW": 1000,
|
|
"thingId": "{2ebe6bef-829b-4695-9d11-ddb4c16c5448}"
|
|
},
|
|
{
|
|
"powerW": 2000,
|
|
"thingId": "b033b212-1adb-4df0-ba2b-8fa477de52a2"
|
|
}
|
|
],
|
|
"sensorThingId": "",
|
|
"sgReady": {}
|
|
},
|
|
{
|
|
"adapter": "sg-ready",
|
|
"domain": "heating",
|
|
"enabled": true,
|
|
"id": "pac-terrain",
|
|
"label": "PAC banc",
|
|
"maxPowerW": 0,
|
|
"meterThingId": "e37be924-c5c5-4858-ad0c-c82650b96db0",
|
|
"minOffS": 0,
|
|
"minOnS": 0,
|
|
"minPowerW": 0,
|
|
"mode": "fixed",
|
|
"needs": {
|
|
"dailyDeadline": "",
|
|
"minEnergyWhPerDay": 0
|
|
},
|
|
"powerLevels": [],
|
|
"priority": 2,
|
|
"relays": [],
|
|
"sensorThingId": "",
|
|
"sgReady": {
|
|
"minStateHoldS": 300,
|
|
"states": [
|
|
{
|
|
"estimatedPowerW": 0,
|
|
"relays": [
|
|
"{beaf92e1-aedc-4b84-9ce4-e423648638cc}"
|
|
],
|
|
"state": 1
|
|
},
|
|
{
|
|
"estimatedPowerW": 1200,
|
|
"relays": [],
|
|
"state": 2
|
|
},
|
|
{
|
|
"estimatedPowerW": 1500,
|
|
"relays": [
|
|
"{bf236e64-5ae7-4bf1-82a6-4ede03de75a6}"
|
|
],
|
|
"state": 3
|
|
},
|
|
{
|
|
"estimatedPowerW": 3000,
|
|
"relays": [
|
|
"{beaf92e1-aedc-4b84-9ce4-e423648638cc}",
|
|
"{bf236e64-5ae7-4bf1-82a6-4ede03de75a6}"
|
|
],
|
|
"state": 4
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"adapter": "evcharger",
|
|
"domain": "ev",
|
|
"enabled": true,
|
|
"id": "{09e520fd-d472-47c4-8887-6e7759372889}",
|
|
"label": "Simulated wallbox",
|
|
"maxPowerW": 0,
|
|
"meterThingId": "",
|
|
"minOffS": 0,
|
|
"minOnS": 0,
|
|
"minPowerW": 0,
|
|
"mode": "dynamic",
|
|
"needs": {
|
|
"dailyDeadline": "",
|
|
"minEnergyWhPerDay": 0
|
|
},
|
|
"powerLevels": [],
|
|
"priority": 3,
|
|
"relays": [],
|
|
"sensorThingId": "",
|
|
"sgReady": {}
|
|
},
|
|
{
|
|
"adapter": "evcharger",
|
|
"domain": "ev",
|
|
"enabled": true,
|
|
"id": "{88160e45-7df2-48cc-9639-f0d15ae6e382}",
|
|
"label": "Terra AC Charger (TCP)",
|
|
"maxPowerW": 0,
|
|
"meterThingId": "",
|
|
"minOffS": 0,
|
|
"minOnS": 0,
|
|
"minPowerW": 0,
|
|
"mode": "dynamic",
|
|
"needs": {
|
|
"dailyDeadline": "",
|
|
"minEnergyWhPerDay": 0
|
|
},
|
|
"powerLevels": [],
|
|
"priority": 4,
|
|
"relays": [],
|
|
"sensorThingId": "",
|
|
"sgReady": {}
|
|
},
|
|
{
|
|
"adapter": "evcharger",
|
|
"domain": "ev",
|
|
"enabled": true,
|
|
"id": "{4d1adafd-cafc-4813-93b1-ca8933ce71ab}",
|
|
"label": "V2C Trydan",
|
|
"maxPowerW": 0,
|
|
"meterThingId": "",
|
|
"minOffS": 0,
|
|
"minOnS": 0,
|
|
"minPowerW": 0,
|
|
"mode": "dynamic",
|
|
"needs": {
|
|
"dailyDeadline": "",
|
|
"minEnergyWhPerDay": 0
|
|
},
|
|
"powerLevels": [],
|
|
"priority": 1,
|
|
"relays": [],
|
|
"sensorThingId": "",
|
|
"sgReady": {}
|
|
}
|
|
]
|
|
}
|