首頁 >後端開發 >Python教學 >開發人員如何使電動車充電器能夠與行動應用程式通信

開發人員如何使電動車充電器能夠與行動應用程式通信

Susan Sarandon
Susan Sarandon原創
2025-01-16 14:09:59508瀏覽

在電動車 (EV) 世界中,電動車駕駛員最神奇的體驗之一就是在行動應用程式上點擊「開始」並看到充電器開始工作。

但是這個魔法是如何發生的呢?

讓我們深入了解電動車充電器和行動應用程式如何通訊的幕後旅程。

遊戲中的玩家

  1. 行動應用程式:這是使用者啟動操作的地方,例如開始或停止充電會話。
  2. 後端伺服器:操作背後的大腦,協調應用程式和充電器之間的通訊。
  3. 電動車充電器:為您的電動車提供電力的硬體。

這些玩家之間的通訊遵循名為OCPP(開放充電點協定)的標準化協定。具體來說,大多數系統都使用 基於 WebSocket 的 OCPP,這可確保即時、可靠的通訊。

Image description

開始充電過程

第 1 步:用戶在應用程式中點擊“開始”

當使用者點擊「開始」按鈕時,流程開始。後端伺服器準備一個 RemoteStartTransaction 命令,其中包含以下詳細資訊:

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

此指令透過後端使用 RPC 呼叫傳送到充電器:

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

第 2 步:充電器響應

充電器透過回應確認指令:

{"status": "Accepted"}

這表示充電器已準備好開始交易。

第三步:充電器發送StartTransaction

當充電器完全準備好後,它會向後端發送StartTransaction訊息:

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

監控充電會話

在整個充電過程中,充電器會定期發送MeterValues更新,其中包括電壓、電流和傳遞的能量等指標。這些更新可以配置為每 30 秒或以不同的時間間隔進行:

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

停止充電過程

第 1 步:用戶在應用程式中點擊“停止”

當使用者點選「停止」時,後端會傳送RemoteStopTransaction指令:

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

第 2 步:充電器響應

充電器確認:

{"status": "Accepted"}

步驟3:充電器發送StopTransaction

完成關閉後,充電器會發送一條StopTransaction訊息,其中包含傳輸的總能量等詳細資訊:

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

什麼是連接器?

就像汽油幫浦可能有不同的柴油或汽油噴嘴一樣,電動車充電器可以有多個連接器。常見類型包括:

  • CCS2:風靡歐洲和北美。
  • CHAdeMO:常見於日本。
  • Mennekes(2 型):在歐洲廣泛使用。

每個連接器獨立運行,允許一個充電器為多輛車提供服務。

Image description

OCPP

OCPP(開放充電點協定)是一種開放式通訊標準,專為電動車(EV)充電站(充電點)和中央管理系統(通常稱為後端系統或充電點管理系統)之間的互動而設計。

它實現了不同製造商和軟體供應商的充電基礎設施之間的互通性。

OCPP 版:

  • OCPP 1.5:早期版本,仍在一些舊系統中使用。
  • OCPP 1.6:廣泛採用,支援 SOAP 和 WebSocket 通訊。
  • OCPP 2.0 和 2.0.1:增強版本,具有更多功能,如改進的安全性 (TLS)、支援智慧充電、更好的診斷和韌體管理。

關鍵用例:

  1. 充電站管理:充電站的遠端監控、故障排除和韌體更新。
  2. 智慧型充電:實現負載平衡、調度/預訂以及與電網整合。
  3. 支付整合:允許充電站與支付網關互動並管理使用者帳戶。
  4. 分析與報告:幫助業者分析使用模式並最佳化營運。

OCPP 的工作原理:

OCPP 定義了充電點和中央系統之間的訊息結構和通訊協定。例如:

  • 充電點會發送有關其狀態、能耗或錯誤的訊息。
  • 中央系統可以發送命令來啟動/停止充電、更新韌體或執行診斷。

OCPP 由開放收費聯盟 (OCA) 管理,該聯盟持續開發和推廣該協議。

包裹

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

總結一下

每次您從應用程式開始或停止充電時,一系列精確的即時訊息都會在您的應用程式、後端和充電器之間流動。

OCPP 協議使這一切成為可能,確保不同製造商的充電器和應用程式可以無縫協作。

所以,下次您插入電動車並點擊「開始」時,您會更了解幕後的魔力!


我一直在開發一個超方便的工具,叫做 LiveAPI。

它旨在讓開發人員輕鬆編寫 API 文件。

使用LiveAPI,您可以快速產生互動式API文檔,允許使用者直接從瀏覽器執行API。

Image description

如果您厭倦了為 API 手動建立文檔,這個工具可能會讓您的生活變得更輕鬆。

開發人員如何使電動車充電器能夠與行動應用程式通信

從 Lama2 到 LiveAPI:建立超級便利的 API 文件(第二部分)

開發人員如何使電動車充電器能夠與行動應用程式通信 的 Athreya 又名 Maneshwar ・ 2024 年 12 月 14 日

#webdev #javascript #程式設計 #初學者

以上是開發人員如何使電動車充電器能夠與行動應用程式通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn