# TODO — ETM PowerSync App ## En cours / priorité haute - [ ] **TariffProvider — connexion RPC réelle** - `load()` appelle encore un `Future.delayed` fictif - Brancher sur nymea JSON-RPC pour récupérer les prix live (ENTSO-E, Tibber, etc.) - [ ] **EnergySetupProvider — persistance** - Les assignations de rôles (EV, PAC, batterie…) ne survivent pas au redémarrage - Sérialiser en SharedPreferences ou JSON local - [ ] **SchedulerProvider — exécution réelle** - `forceRecalc()` ne fait rien pour l'instant - Brancher sur l'API nymea Energy Scheduler (si disponible) ## Screens à implémenter - [ ] **DeveloperScreen** — logs, introspection JSON-RPC, test ping nymea - [ ] **AboutScreen** — version app, version nymea, licences - [ ] **SystemSettingsScreen** — adresse serveur nymea, port, transport (TCP/WS) ## Amélioration UX - [ ] **Timeline** — remplacer la simulation bell-curve par les vraies créneaux du scheduler nymea - [ ] **RoleConfigFlow Step 3** — test de connexion sur RPC réel au lieu du délai simulé - [ ] **InstallerModeProvider** — persister le hash PIN dans SharedPreferences (actuellement en mémoire) - [ ] **AppSettingsProvider** — persister les préférences (thème, densité, écrans actifs) dans SharedPreferences ## Intégration nymea live - [ ] Mapping `EmsRole → nymea thingClass` pour les installations réelles - [ ] Vérifier les interfaces nymea sur serveur réel (comparer avec `docs/nymea_integrations.md`) - [ ] `Energy.GetSchedule` / `Energy.SetSchedule` si l'API le supporte ## Technique / dette - [ ] Ajouter des tests unitaires pour `TariffProvider` et `EnergySetupProvider` - [ ] Gérer le cas où `NymeaService.thingClasses` est vide en mode live (classes non chargées) - [ ] Revoir `_Step1ThingList` : passer en `context.watch` pour réactivité si les things changent