# PORTING_STATUS — etm-powersync-plugins-modbus

État des plugins Modbus ETM pour bornes de recharge.

**Statuts :** `partiel` · `beta` · `supporté` · `todo`

| Charger | Protocole | Statut | Origin | Plugin / Notes |
|---|---|---|---|---|
| V2C Trydan | Modbus TCP | **partiel** | etm | `v2c` — Étape 1 TCP implémentée, **non testée sur borne réelle** (192.168.1.127). Voir ci-dessous. |
| ABB Terra AC | Modbus TCP + RTU | supporté | nymea | `abbterra` (upstream nymea) |
| Eastron SDM | Modbus RTU | supporté | etm (tested) | `eastron` |

---

## V2C Trydan — détail Étape 1 (Modbus TCP)

**Sources de la carte registres (juin 2026) :**
- Lib officielle : `github.com/V2Charge/Trydan_Modbus_TCP`, `src/v2ctrydan/modbus.py`
  → décodage float32 Big/Big, FC3 2 registres par valeur, FC6 écriture uint16
- Carte officielle TCP & RTU (Google Sheet) : adresses identiques pour les deux transports
- Implémentation evcc de référence : `charger/trydan.go`
  → sémantique ChargeState 0/1/2 (A/B/C), conflit Dynamic/PauseDynamic, Lock miroir

**Spécificité firmware — à valider sur borne réelle :**
1. **MaxIntensity (0x0BD2 / 0x1782)** : des versions firmware V2C antérieures avaient un
   bug sur ce registre (corrections mentionnées dans les changelogs V2C). À vérifier :
   - La valeur lue en 0x0BD2 correspond-elle bien à la limite physique configurée ?
   - L'écriture en 0x1782 est-elle effectivement prise en compte ?
   - Documenter la version firmware minimale validée (affichée dans l'app V2C).

2. **ChargeEnergy (0x0BC4)** : evcc a retiré son `ChargeRater` pour la Trydan
   (issue #28047 : énergie session peu fiable). Ce plugin expose `chargeEnergy` en
   **état diagnostique uniquement** — pas câblé en `sessionEnergy`.
   À valider : la valeur reset-elle correctement à chaque nouvelle session ?

3. **PauseDynamic (0x1783)** : comportement non documenté officiellement.
   À valider : l'écriture 1 suspend-elle bien le PID interne sans interrompre
   la remontée de ChargePower ?

4. **Chevauchement registres** : les adresses 0x0BC2..0x0BD5 sont consécutives mais
   chaque valeur occupe 2 registres (float32). La lecture individuelle (une transaction
   par valeur) doit être préservée — tester qu'un block read corrompt effectivement
   les valeurs (pour confirmer la contrainte firmware).

**UUID plugin (V2C vendor — nouveau, non présent dans les autres plugins du repo) :**
- vendorId : `56c3e7bb-2db8-4002-b799-9e21530e6fb9`
- pluginId  : `f0692725-650a-47c3-a673-172f077768f1`

**Statut beta :** NON — plugin en statut Partiel jusqu'à validation terrain.
Ne pas inclure dans la matrice beta avant test sur borne réelle.
