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

在電動車 (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
了解差異:用於循環和python中的循環了解差異:用於循環和python中的循環May 16, 2025 am 12:17 AM

theDifferenceBetweewneaforoopandawhileLoopInpythonisthataThataThataThataThataThataThataNumberoFiterationSiskNownInAdvance,而leleawhileLoopisusedWhenaconDitionNeedneedneedneedNeedStobeCheckedStobeCheckedStobeCheckedStobeCheckedStobeceDrepeTysepectients.peatsiveSectlyStheStobeCeptellyWithnumberofiterations.1)forloopsareAceareIdealForitoringercortersence

Python循環控制:對於vs -a -a比較Python循環控制:對於vs -a -a比較May 16, 2025 am 12:16 AM

在Python中,for循環適用於已知迭代次數的情況,而while循環適合未知迭代次數且需要更多控制的情況。 1)for循環適用於遍歷序列,如列表、字符串等,代碼簡潔且Pythonic。 2)while循環在需要根據條件控制循環或等待用戶輸入時更合適,但需注意避免無限循環。 3)性能上,for循環略快,但差異通常不大。選擇合適的循環類型可以提高代碼的效率和可讀性。

如何在Python中結合兩個列表:5種簡單的方法如何在Python中結合兩個列表:5種簡單的方法May 16, 2025 am 12:16 AM

在Python中,可以通過五種方法合併列表:1)使用 運算符,簡單直觀,適用於小列表;2)使用extend()方法,直接修改原列表,適用於需要頻繁更新的列表;3)使用列表解析式,簡潔且可對元素進行操作;4)使用itertools.chain()函數,內存高效,適合大數據集;5)使用*運算符和zip()函數,適用於需要配對元素的場景。每種方法都有其特定用途和優缺點,選擇時應考慮項目需求和性能。

循環時循環:python語法,用例和示例循環時循環:python語法,用例和示例May 16, 2025 am 12:14 AM

foroopsare whenthenemberofiterationsisknown,而whileLoopsareUseduntilacTitionismet.1)ForloopSareIdealForeSequencesLikeLists,UsingSyntaxLike'forfruitinFruitinFruitinFruitIts:print(fruit)'。 2)'

python串聯列表列表python串聯列表列表May 16, 2025 am 12:08 AM

toConcateNateAlistofListsInpython,useextend,listComprehensions,itertools.Chain,orrecursiveFunctions.1)ExtendMethodStraightForwardButverBose.2)listComprechencomprechensionsareconconconciseandemandeconeandefforlargerdatasets.3)

Python中的合併列表:選擇正確的方法Python中的合併列表:選擇正確的方法May 14, 2025 am 12:11 AM

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

如何在Python 3中加入兩個列表?如何在Python 3中加入兩個列表?May 14, 2025 am 12:09 AM

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

Python串聯列表字符串Python串聯列表字符串May 14, 2025 am 12:08 AM

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中