suchen
HeimBackend-EntwicklungPython-TutorialWie Entwickler die Kommunikation von Ladegeräten für Elektrofahrzeuge mit mobilen Apps ermöglichen

In der Welt der Elektrofahrzeuge (EVs) ist es für einen Elektrofahrzeugfahrer eines der magischsten Erlebnisse, in seiner mobilen App auf „Start“ zu tippen und zu beobachten, wie das Ladegerät zum Leben erwacht.

Aber wie entsteht diese Magie?

Lassen Sie uns einen Blick hinter die Kulissen werfen und erfahren, wie Ladegeräte für Elektrofahrzeuge und mobile Apps kommunizieren.

Die Spieler im Spiel

  1. Mobile App: Hier initiiert der Benutzer Aktionen, wie das Starten oder Stoppen des Ladevorgangs.
  2. Backend-Server: Der Kopf hinter dem Betrieb, der die Kommunikation zwischen der App und dem Ladegerät koordiniert.
  3. EV-Ladegerät: Die Hardware, die den Saft an Ihr Elektrofahrzeug liefert.

Die Kommunikation zwischen diesen Spielern folgt einem standardisierten Protokoll namens OCPP (Open Charge Point Protocol). Insbesondere verwenden die meisten Systeme OCPP über WebSocket, was eine zuverlässige Kommunikation in Echtzeit gewährleistet.

Image description

Ladevorgang starten

Schritt 1: Der Benutzer klickt in der App auf „Start“.

Der Vorgang beginnt, wenn ein Benutzer auf die Schaltfläche „Start“ tippt. Der Backend-Server bereitet einen RemoteStartTransaction-Befehl mit den folgenden Details vor:

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

Dieser Befehl wird über das Backend per RPC-Aufruf an das Ladegerät gesendet:

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

Schritt 2: Ladegerät antwortet

Das Ladegerät quittiert den Befehl mit einer Antwort:

{"status": "Accepted"}

Dies zeigt an, dass das Ladegerät bereit ist, mit der Transaktion zu beginnen.

Schritt 3: Charger sendet StartTransaction

Wenn das Ladegerät vollständig vorbereitet ist, sendet es eine StartTransaction-Nachricht zurück an das Backend:

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

Überwachung der Ladesitzung

Während des Ladevorgangs sendet das Ladegerät regelmäßig MeterValues-Updates, die Messwerte wie Spannung, Strom und gelieferte Energie enthalten. Diese Aktualisierungen können so konfiguriert werden, dass sie alle 30 Sekunden oder in einem anderen Intervall erfolgen:

{
  "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" }
      ]
    }
  ]
}

Stoppen des Ladevorgangs

Schritt 1: Der Benutzer klickt in der App auf „Stopp“.

Wenn der Benutzer auf „Stopp“ tippt, sendet das Backend einen RemoteStopTransaction-Befehl an das Ladegerät:

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

Schritt 2: Ladegerät antwortet

Das Ladegerät quittiert mit:

{"status": "Accepted"}

Schritt 3: Charger sendet StopTransaction

Nach Abschluss des Herunterfahrens sendet das Ladegerät eine StopTransaction-Nachricht mit Details wie der insgesamt gelieferten Energie:

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

Was ist ein Connector?

So wie eine Zapfsäule verschiedene Zapfpistolen für Diesel oder Benzin haben kann, können Ladegeräte für Elektrofahrzeuge mehrere Anschlüsse haben. Zu den gängigen Typen gehören:

  • CCS2: Beliebt in Europa und Nordamerika.
  • CHAdeMO: In Japan häufig.
  • Mennekes (Typ 2): In Europa weit verbreitet.

Jeder Anschluss funktioniert unabhängig, sodass ein Ladegerät mehrere Fahrzeuge versorgen kann.

Image description

OCPP

OCPP (Open Charge Point Protocol) ist ein offener Kommunikationsstandard, der für die Interaktion zwischen Ladestationen (Ladepunkten) für Elektrofahrzeuge (EV) und zentralen Managementsystemen (oft als Backend-Systeme oder Ladepunkt-Managementsysteme bezeichnet) entwickelt wurde.

Es ermöglicht die Interoperabilität zwischen Ladeinfrastruktur verschiedener Hersteller und Softwareanbieter.

Versionen von OCPP:

  • OCPP 1.5: Frühe Version, wird in einigen älteren Systemen noch verwendet.
  • OCPP 1.6: Weit verbreitet, unterstützt sowohl SOAP- als auch WebSocket-Kommunikation.
  • OCPP 2.0 & 2.0.1: Erweiterte Versionen mit mehr Funktionen wie verbesserter Sicherheit (TLS), Unterstützung für intelligentes Laden, bessere Diagnose und Firmware-Verwaltung.

Wichtige Anwendungsfälle:

  1. Ladestationsverwaltung: Fernüberwachung, Fehlerbehebung und Firmware-Updates für Ladestationen.
  2. Intelligentes Laden: Ermöglicht Lastausgleich, Planung/Vorreservierung und Integration in Energienetze.
  3. Zahlungsintegration: Ermöglicht Ladestationen die Interaktion mit Zahlungsgateways und die Verwaltung von Benutzerkonten.
  4. Analysen und Berichte: Hilft Betreibern, Nutzungsmuster zu analysieren und Abläufe zu optimieren.

So funktioniert OCPP:

OCPP definiert Nachrichtenstrukturen und Kommunikationsprotokolle zwischen der Ladestation und dem zentralen System. Zum Beispiel:

  • Eine Ladestation sendet Nachrichten über ihren Status, Energieverbrauch oder Fehler.
  • Das zentrale System kann Befehle senden, um den Ladevorgang zu starten/stoppen, die Firmware zu aktualisieren oder Diagnosen durchzuführen.

OCPP wird von der Open Charge Alliance (OCA) verwaltet, die das Protokoll weiterentwickelt und fördert.

Pakete

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

Zum Abschluss

Jedes Mal, wenn Sie den Ladevorgang über Ihre App starten oder stoppen, werden eine Reihe präziser Echtzeitnachrichten zwischen Ihrer App, dem Backend und dem Ladegerät übertragen.

Das OCPP-Protokoll macht es möglich und stellt sicher, dass Ladegeräte und Apps verschiedener Hersteller nahtlos zusammenarbeiten können.

Wenn Sie also das nächste Mal Ihr Elektrofahrzeug anschließen und auf „Start“ tippen, erfahren Sie etwas mehr über die Magie hinter den Kulissen!


Ich habe an einem äußerst praktischen Tool namens LiveAPI gearbeitet.

Es wurde entwickelt, um die API-Dokumentation für Entwickler mühelos zu gestalten.

Mit LiveAPI können Sie schnell eine interaktive API-Dokumentation erstellen, die es Benutzern ermöglicht, APIs direkt über den Browser auszuführen.

Image description

Wenn Sie es satt haben, manuell Dokumente für Ihre APIs zu erstellen, könnte Ihnen dieses Tool das Leben erleichtern.

Wie Entwickler die Kommunikation von Ladegeräten für Elektrofahrzeuge mit mobilen Apps ermöglichen

Von Lama2 zu LiveAPI: Erstellen einer äußerst praktischen API-Dokumentation (Teil II)

Athreya alias Maneshwar für Wie Entwickler die Kommunikation von Ladegeräten für Elektrofahrzeuge mit mobilen Apps ermöglichen ・ 14. Dezember 2024

#webdev #javascript #Programmierung #Anfänger

Das obige ist der detaillierte Inhalt vonWie Entwickler die Kommunikation von Ladegeräten für Elektrofahrzeuge mit mobilen Apps ermöglichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Welche Datentypen können in einem Python -Array gespeichert werden?Welche Datentypen können in einem Python -Array gespeichert werden?Apr 27, 2025 am 12:11 AM

PythonlistscanstoreanyDatatype, ArrayModulearraysStoreOnetype und NumpyarraysarefornumericalComputations.1) listet dieArversatile-memory-effizient.2) Arraymodulenarraysalememory-effizientforhomogeneData.3) Numpharraysareoptional-EffictionhomogenInData.3) nummodulenarraysoptionalinformanceIntata.3) nummodulearraysoptionalinformanceIntata.3) NumpharraysareoPresopplowancalinScesDataa.3) NumpharraysoePerformance

Was passiert, wenn Sie versuchen, einen Wert des falschen Datentyps in einem Python -Array zu speichern?Was passiert, wenn Sie versuchen, einen Wert des falschen Datentyps in einem Python -Array zu speichern?Apr 27, 2025 am 12:10 AM

Wenn SietostoreavalueOfThewrongdatatypeinapythonarray, touencounteratypeerror.Thissisdustuetothearraymodules -SstrictTypeNeen -Forcortion, welche

Welches ist Teil der Python Standard Library: Listen oder Arrays?Welches ist Teil der Python Standard Library: Listen oder Arrays?Apr 27, 2025 am 12:03 AM

PythonlistsarePartThestandardlibrary, whilearraysarenot.listarebuilt-in, vielseitig und UNDUSEDFORSPORINGECollections, während dieArrayRay-thearrayModulei und loses und loses und losesaluseduetolimitedFunctionality.

Was sollten Sie überprüfen, ob das Skript mit der falschen Python -Version ausgeführt wird?Was sollten Sie überprüfen, ob das Skript mit der falschen Python -Version ausgeführt wird?Apr 27, 2025 am 12:01 AM

ThescriptisrunningwithTheWrongPythonversionDuetoincorrectDefaultinterpretersettings.tofixthis: 1) checkHedEfaultpythonversionusingPython-Versionorpython3-Version.2) Verwenden von VirtualenVirmentsByCreatingonewithpython3.9-mvenvmyenv, und -Averifikation und -Averifikation

Was sind einige gängige Operationen, die an Python -Arrays ausgeführt werden können?Was sind einige gängige Operationen, die an Python -Arrays ausgeführt werden können?Apr 26, 2025 am 12:22 AM

PythonarraysSupportvariousoperationen: 1) SlicicingExtractsSubsets, 2) Anhang/Erweiterungen, 3) Einfügen von PlaceSelementsatspezifischePositionen, 4) Entfernen von Delettel, 5) Sortieren/ReversingChangesorder und 6) compredewlistenwlists basierte basierte, basierte Zonexistin

In welchen Anwendungsarten werden häufig Numpy -Arrays verwendet?In welchen Anwendungsarten werden häufig Numpy -Arrays verwendet?Apr 26, 2025 am 12:13 AM

NumpyarraysaresessentialForApplicationsRequeeFoughnumericalComputations und Datamanipulation

Wann würden Sie ein Array über eine Liste in Python verwenden?Wann würden Sie ein Array über eine Liste in Python verwenden?Apr 26, 2025 am 12:12 AM

UseanArray.ArrayoveralistinpythonwhendealingwithhomogenousData, Performance-CriticalCode, OrInterfacingwithCcode.1) HomogenousData: ArraysSavemoryWithtypedElements.2) Performance-CriticalCode: ArraySaveMoryWithtypedElements.2) Performance-CriticalCode: ArraysFerbetterPerPterPerProrMtorChorescomeChormericalcoricalomancomeChormericalicalomentorMentumscritorcorements.3) Interf

Werden alle Listenoperationen von Arrays unterstützt und umgekehrt? Warum oder warum nicht?Werden alle Listenoperationen von Arrays unterstützt und umgekehrt? Warum oder warum nicht?Apr 26, 2025 am 12:05 AM

Nein, NOTALLLISTOPERATIONSARESURDEDBYARAYS UNDVICEVERSA.1) ArraysDonotsupportdynamicoperationslikeAppendorinStResizing, die impactSperformance.2) listsDonotguaranteConstantTimeComplexityfordirectAccesslikearraysDo.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool