# SunSpec Connect nymea to SunSpec devices over Modbus TCP ## Supported Things * SunSpec Inverter * Model ID 101 & 111 Single phase inverter * Model ID 102 & 112 Split phase inverter * Model ID 103 & 113 Three phase inverter * SunSpec Meter * Model ID 201 & 211 Single phase meter * Model ID 202 & 212 Split phase meter * Model ID 203 & 213 Three phase meter * SunSpec Storage * Model ID 124 (state of charge, status, setpoints) * Model ID 160 (instantaneous power, `StCha` / `StDisCha` blocks) * Model ID 120 (rated capacity, `WHRtg`) ## Tested connections * SolarEdge (with custom battery) ## Requirements * The package 'nymea-plugin-sunspec' must be installed. * The SunSpec device must support SunSpec over modbus TCP ## More https://sunspec.org --- ## Exploitation — batterie visible mais non mesurable Depuis `1.15.2+etm10`, la thingClass `SunSpec Storage` déclare l'interface **`energystorage`**. C'est ce qui la rend visible au bilan de puissance de nymea (`currentPowerStorage`), à la réserve de recharge du véhicule, et à la réserve du waterfall. Avant, elle ne déclarait que `battery` et **aucun des trois ne la trouvait**. L'état `currentPower` se lit dans le **modèle 160**, pas dans le modèle 124 qui n'a aucun registre de puissance. Conséquence à connaître avant de diagnostiquer une batterie « à zéro » : > **Un onduleur SunSpec qui publie le modèle 124 sans modèle 160 porte > l'interface `energystorage` avec un `currentPower` qui ne bougera jamais de > zéro.** C'est le cas des appareils SunSpec génériques. La batterie apparaît > alors dans le bilan, comptée pour 0 W — ce qui se lit « ni charge ni > décharge », et non « je ne sais pas ». Ce cas est **annoncé une fois par thing** dans le journal de `nymead`, au démarrage ou au premier relevé qui suit la découverte. Deux formulations, selon la cause : ``` W | SunSpec: Storage "" has no model 160 on its connection: currentPower has no register to read and will stay at 0. This storage is visible to the energy balance but not measurable. W | SunSpec: Storage "" has a model 160 but no StCha/StDisCha block: currentPower has nothing to read and will stay at 0. ``` La seconde forme est le cas d'un onduleur hybride **sans batterie câblée** : il publie `N = 2` (les deux strings PV) et aucun bloc batterie. À vérifier en premier sur un site où `currentPowerStorage` reste à zéro : ```bash journalctl -u nymead | grep -i "will stay at 0" ``` Si la ligne est là, le défaut est dans ce que l'appareil publie, pas dans nymea. Si elle est absente, la batterie est mesurée et le zéro est une vraie mesure. L'état `capacity` (kWh) vient de `WHRtg` du modèle 120. Quand la plaque signalétique ne l'implémente pas, l'état est **laissé tel quel** plutôt que remis à zéro : un zéro se lirait comme une mesure. Aucune règle du moteur ne lit `capacity` à ce jour. Détail du raisonnement, de la mesure du signe et de l'écart assumé : `DIVERGENCES.md`, entrée **D-9**.