1.8 KiB
CLAUDE.md — etm-powersync-energy-plugin-etm
Rôle
Energy manager nymea : rule-based surplus (Community) + load-management + connecteur vers l'optimiseur (Auto/Predict).
Source de vérité
etm-powersync-docs / ARCHITECTURE.md.
Structure (héritée de l'amont)
EnergyPluginNymea est une coquille (IID "io.nymea.EnergyPlugin", un init()). La logique vit dans des managers instanciés dans init() : SmartChargingManager, spotmarket/, RootMeter, EvCharger, nymeaenergyjsonhandler (API JSON-RPC).
Frontière de licence (impérative)
GPL-3. Ne jamais coder ici : MPC, prévision, Perez, masque d'ombrage, arbitrage. Ça appartient à etm-powersync-optimizer.
Travail attendu
- Community : ajuster le rule-based existant (surplus, hystérésis, priorités). Pas de réécriture from scratch — l'amont fournit la base.
- OptimizerManager (nouveau manager, à côté des autres) : collecte l'état (RootMeter + things) →
POST /optimize→ applique lessetpointsvia le chemin de contrôle existant (EvCharger). Transport pur, zéro maths. - Précédence : optimiseur sain + planning frais → il pilote ; sinon → rule-based local. Le plugin fonctionne toujours seul.
Règle de sécurité (non négociable)
Le load-management est prioritaire absolu : toute consigne (y compris de l'optimiseur) qui ferait dépasser ISOUSC est écrêtée localement après réception. C'est une contrainte appliquée par le plugin, pas une suggestion envoyée à l'optimiseur.
Contrat
OptimizerManager implémente interfaces/optimize.md.