Ce qui rapporte de l'argent sur un réseau de recharge, ce n'est pas l'énergie elle-même, mais des sessions de recharge correctement enregistrées. En OCPP 1.6J, le moment où une session a commencé, qui l'a lancée, combien d'énergie a été transférée et pourquoi elle s'est terminée sont enregistrés par deux messages fondamentaux : StartTransaction et StopTransaction. Mal interpréter un seul champ de ces messages peut provoquer des écarts importants sur une facture.
StartTransaction : le début de la session
Une fois l'utilisateur autorisé et le câble branché, la borne envoie StartTransaction juste avant de commencer à délivrer de l'énergie. Le message contient :
- connectorId : le connecteur sur lequel la session a démarré.
- idTag : le badge ou l'identifiant qui a lancé la session.
- meterStart : l'index du compteur au départ (Wh).
- timestamp : l'heure de début.
- reservationId : l'identifiant de réservation, le cas échéant.
Le CSMS répond avec deux éléments : le statut de l'identifiant (idTagInfo) et un transactionId. Cet identifiant est utilisé dans chaque message MeterValues envoyé pendant la session et dans StopTransaction.
Exemple :
[2, "4001", "StartTransaction", {"connectorId": 1, "idTag": "04A2B3C4", "meterStart": 125430, "timestamp": "2026-10-02T08:10:00Z"}] [3, "4001", {"transactionId": 58211, "idTagInfo": {"status": "Accepted"}}]
StopTransaction : la fin de la session
À la fin de la session, la borne envoie StopTransaction :
- transactionId : l'identifiant reçu au départ.
- meterStop : l'index du compteur à la fin (Wh).
- timestamp : l'heure de fin.
- idTag : l'identifiant ayant arrêté la session (facultatif).
- reason : le motif de l'arrêt.
- transactionData : les relevés collectés pendant la session (facultatif).
L'énergie transférée est simplement meterStop - meterStart. Dans l'exemple ci-dessus, si meterStop vaut 147930, la session a transféré 22 500 Wh, soit 22,5 kWh.
Les motifs d'arrêt
Les motifs standard en OCPP 1.6J sont :
- Local : l'utilisateur a arrêté la recharge à la borne (badge, bouton).
- Remote : le CSMS a envoyé une commande d'arrêt à distance.
- EVDisconnected : le câble a été débranché côté véhicule.
- EmergencyStop : le bouton d'arrêt d'urgence a été actionné.
- HardReset / SoftReset : la borne a redémarré.
- PowerLoss : coupure de courant.
- DeAuthorized : l'identifiant est devenu invalide pendant la session.
- UnlockCommand : une commande de déverrouillage à distance a mis fin à la session.
- Reboot, Other : autres cas.
Si aucun motif n'est indiqué, « Local » est retenu par défaut. Suivre les motifs d'arrêt est très utile pour comprendre pourquoi les utilisateurs interrompent leurs sessions ou à quelle fréquence les bornes redémarrent.
Erreurs fréquentes
Lire le compteur comme s'il partait de zéro
meterStart n'est pas un compteur propre à la session, mais l'index cumulé de la borne. Calculez toujours la consommation par différence.
Confondre wattheures et kilowattheures
En OCPP 1.6J, meterStart et meterStop sont exprimés en Wh. Les utiliser comme des kWh sans diviser par 1 000 multiplie la facture par mille.
Perdre les sessions hors ligne
Si la borne a démarré une session pendant une coupure internet, elle envoie StartTransaction lorsque la connexion revient. Le CSMS doit traiter ces messages différés avec les bons horodatages. Voir notre article sur les transactions hors ligne.
Les sessions qui ne se ferment jamais
Si StopTransaction n'arrive jamais, la session reste ouverte dans le tableau de bord. Une borne envoie généralement le StopTransaction manquant lorsqu'elle redémarre ; sinon, la session doit être clôturée de façon contrôlée.
Qu'est-ce qui a changé en OCPP 2.0.1 et 2.1 ?
Dans les nouvelles versions, ces deux messages sont remplacés par TransactionEvent. Le début, les mises à jour intermédiaires et la fin sont transmis avec le même type de message (Started, Updated, Ended), et l'identifiant de transaction est généré par la borne. Voir notre article sur TransactionEvent en OCPP 2.0.1.
Facturation et rapports
Une session correctement enregistrée est la source unique pour savoir qui a consommé combien d'énergie, où et quand. Le logiciel OCPP d'Üreticy conserve chaque session avec le conducteur, le véhicule, la station et la date ; il permet d'exporter les rapports énergétiques en Excel et PDF et de maîtriser la consommation avec des limites kWh.
Lire une session exemple
Supposons que les journaux indiquent : StartTransaction reçu à 08:10 avec meterStart 125430 Wh, et StopTransaction reçu à 09:05 avec meterStop 147930 Wh et le motif « EVDisconnected ». Cette session a duré 55 minutes, a transféré 22,5 kWh, et le conducteur l'a terminée en débranchant le câble du véhicule. La puissance moyenne était d'environ 24,5 kW. Ce calcul simple garantit que le récapitulatif envoyé au conducteur, la facture et le rapport du site proviennent de la même source.
Conclusion
StartTransaction ouvre la session et fournit le transactionId ; StopTransaction enregistre l'énergie totale et le motif d'arrêt. Se rappeler que les relevés sont en Wh, que la consommation se calcule par différence et que les sessions hors ligne peuvent arriver en retard évite la plupart des erreurs de facturation.
