Maison >développement back-end >Tutoriel Python >Comment les développeurs permettent aux chargeurs de véhicules électriques de communiquer avec les applications mobiles

Comment les développeurs permettent aux chargeurs de véhicules électriques de communiquer avec les applications mobiles

Susan Sarandon
Susan Sarandonoriginal
2025-01-16 14:09:59513parcourir

Dans le monde des véhicules électriques (VE), l'une des expériences les plus magiques pour un conducteur de VE consiste à appuyer sur « Démarrer » sur son application mobile et à regarder le chargeur prendre vie.

Mais comment cette magie se produit-elle ?

Plongeons dans les coulisses de la communication entre les chargeurs de véhicules électriques et les applications mobiles.

Les acteurs du jeu

  1. Application mobile : c'est ici que l'utilisateur initie des actions, comme démarrer ou arrêter la session de recharge.
  2. Serveur backend : le cerveau derrière l'opération, coordonnant la communication entre l'application et le chargeur.
  3. EV Charger : Le matériel qui fournit le jus à votre EV.

La communication entre ces acteurs suit un protocole standardisé appelé OCPP (Open Charge Point Protocol). Plus précisément, la plupart des systèmes utilisent OCPP sur WebSocket, qui garantit une communication fiable et en temps réel.

Image description

Démarrage du processus de chargement

Étape 1 : L'utilisateur clique sur « Démarrer » dans l'application

Le processus commence lorsqu'un utilisateur appuie sur le bouton « Démarrer ». Le serveur backend prépare une commande RemoteStartTransaction avec les détails suivants :

{
  "connectorId": 1,
  "idTag": "remote-11902",
  "chargingProfile": {
    "transactionId": 11902,
    "chargingProfileId": 1,
    "stackLevel": 1,
    "chargingProfilePurpose": "TxProfile",
    "chargingProfileKind": "Relative",
    "chargingSchedule": {
      "chargingRateUnit": "A",
      "chargingSchedulePeriod": [ ... ]
    }
  }
}

Cette commande est envoyée au chargeur via le backend à l'aide d'un appel RPC :

await client.call(
  'RemoteStartTransaction',
  remoteStartTransactionBody
);

Étape 2 : le chargeur répond

Le chargeur accuse réception de la commande avec une réponse :

{"status": "Accepted"}

Cela indique que le chargeur est prêt à commencer la transaction.

Étape 3 : Le chargeur envoie StartTransaction

Lorsque le chargeur est entièrement préparé, il renvoie un message StartTransaction au backend :

{
  "connectorId": 1,
  "idTag": "remote-11902",
  "meterStart": 0,
  "timestamp": "2025-01-15T02:09:54.000Z"
}

Surveillance de la session de recharge

Tout au long de la session de charge, le chargeur envoie périodiquement des mises à jour MeterValues, qui incluent des mesures telles que la tension, le courant et l'énergie fournie. Ces mises à jour peuvent être configurées pour se produire toutes les 30 secondes ou à un intervalle différent :

{
  "connectorId": 1,
  "transactionId": 11902,
  "meterValue": [
    {
      "timestamp": "2025-01-15T02:09:54.000Z",
      "sampledValue": [
        { "value": "241.10", "measurand": "Voltage", "unit": "V" },
        { "value": "0.00", "measurand": "Current.Import", "unit": "A" },
        { "value": "0", "measurand": "Power.Active.Import", "unit": "W" },
        { "value": "32", "measurand": "Current.Offered", "unit": "A" }
      ]
    }
  ]
}

Arrêt du processus de chargement

Étape 1 : L'utilisateur clique sur « Stop » dans l'application

Lorsque l'utilisateur appuie sur « Stop », le backend envoie une commande RemoteStopTransaction au chargeur :

await client.call(
  'RemoteStopTransaction',
  { transactionId: 11902 }
);

Étape 2 : le chargeur répond

Le chargeur accuse réception avec :

{"status": "Accepted"}

Étape 3 : le chargeur envoie StopTransaction

Une fois l'arrêt terminé, le chargeur envoie un message StopTransaction avec des détails tels que l'énergie totale fournie :

{
  "connectorId": 1,
  "idTag": "remote-11902",
  "chargingProfile": {
    "transactionId": 11902,
    "chargingProfileId": 1,
    "stackLevel": 1,
    "chargingProfilePurpose": "TxProfile",
    "chargingProfileKind": "Relative",
    "chargingSchedule": {
      "chargingRateUnit": "A",
      "chargingSchedulePeriod": [ ... ]
    }
  }
}

Qu'est-ce qu'un connecteur ?

Tout comme une pompe à essence peut avoir différentes buses pour le diesel ou l'essence, les chargeurs de véhicules électriques peuvent avoir plusieurs connecteurs. Les types courants incluent :

  • CCS2 : Populaire en Europe et en Amérique du Nord.
  • CHAdeMO : Commun au Japon.
  • Mennekes (Type 2) : Largement utilisé en Europe.

Chaque connecteur fonctionne indépendamment, permettant à un chargeur de desservir plusieurs véhicules.

Image description

OCPP

OCPP (Open Charge Point Protocol) est une norme de communication ouverte conçue pour l'interaction entre les bornes de recharge pour véhicules électriques (VE) (points de recharge) et les systèmes de gestion centraux (souvent appelés systèmes backend ou systèmes de gestion des points de charge).

Il permet l'interopérabilité entre les infrastructures de recharge de différents fabricants et fournisseurs de logiciels.

Versions d'OCPP :

  • OCPP 1.5 : version antérieure, toujours utilisée dans certains systèmes plus anciens.
  • OCPP 1.6 : Largement adopté, prend en charge la communication SOAP et WebSocket.
  • OCPP 2.0 et 2.0.1 : versions améliorées avec plus de fonctionnalités telles qu'une sécurité améliorée (TLS), la prise en charge de la charge intelligente, de meilleurs diagnostics et une gestion du micrologiciel.

Cas d'utilisation clés :

  1. Gestion des bornes de recharge : surveillance à distance, dépannage et mises à jour du micrologiciel pour les bornes de recharge.
  2. Smart Charging : permet l'équilibrage de charge, la planification/pré-réservation et l'intégration aux réseaux énergétiques.
  3. Intégration des paiements : permet aux bornes de recharge d'interagir avec les passerelles de paiement et de gérer les comptes des utilisateurs.
  4. Analyses et rapports : aide les opérateurs à analyser les modèles d'utilisation et à optimiser les opérations.

Comment fonctionne l'OCPP :

OCPP définit les structures de messages et les protocoles de communication entre la borne de recharge et le système central. Par exemple :

  • Une borne de recharge envoie des messages sur son état, sa consommation d'énergie ou ses erreurs.
  • Le système central peut envoyer des commandes pour démarrer/arrêter la charge, mettre à jour le micrologiciel ou effectuer des diagnostics.

OCPP est géré par l'Open Charge Alliance (OCA), qui continue de développer et de promouvoir le protocole.

Forfaits

  1. Python : Mobilityhouse/ocpp
  2. Javascript : mikuso/ocpp-rpc

Envelopper le tout

Chaque fois que vous démarrez ou arrêtez la charge depuis votre application, une série de messages précis en temps réel circulent entre votre application, le backend et le chargeur.

Le protocole OCPP rend tout cela possible, en garantissant que les chargeurs et les applications de différents fabricants peuvent fonctionner ensemble de manière transparente.

Donc, la prochaine fois que vous branchez votre véhicule électrique et appuyez sur « Démarrer », vous en saurez un peu plus sur la magie qui se cache derrière les coulisses !


Je travaille sur un outil très pratique appelé LiveAPI.

Il est conçu pour faciliter la documentation des API pour les développeurs.

Avec LiveAPI, vous pouvez générer rapidement une documentation interactive sur les API qui permet aux utilisateurs d'exécuter des API directement depuis le navigateur.

Image description

Si vous en avez assez de créer manuellement des documents pour vos API, cet outil pourrait bien vous faciliter la vie.

Comment les développeurs permettent aux chargeurs de véhicules électriques de communiquer avec les applications mobiles

De Lama2 à LiveAPI : création d'une documentation API super pratique (partie II)

Athreya alias Maneshwar pour Comment les développeurs permettent aux chargeurs de véhicules électriques de communiquer avec les applications mobiles ・ 14 décembre 24

#webdev #javascript #programmation #débutants

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn