輕量實現 OCPP 1.6 JSON 協議(歐洲版)的充電樁調試平臺

1 項目概覽

1.1 目標與適用場景

1.1.1 簡介

本文介紹的開源項目 ocpp_charge,是一個 自研輕量實現 OCPP 1.6 JSON 協議(歐洲版) 的充電樁調試平臺。
它沒有依賴官方 OCPP 1.6J 庫,而是從零實現協議解析與會話管理,適合快速驗證樁與平臺的互通。

1.1.1.1 讀者對象
  • 充電樁廠商研發人員:快速驗證樁側 OCPP 報文是否符合標準。
  • 平臺開發人員:快速接入調試樁,便于協議聯調。
  • 二次開發工程師:在現有輕量框架上擴展更多業務邏輯。

2 快速上手(教程)

2.1 環境與依賴

2.1.1 基本要求

  • Java JDK 1.8
  • Maven 3.6+
  • 建議內存 ≥ 512MB
2.1.1.1 獲取倉庫(示例)
git clone https://github.com/qyhua0/ocpp_charge.git
cd ocpp_charge

2.1.2 構建與運行

2.1.2.1 構建
mvn clean package -DskipTests
2.1.2.2 啟動
java -jar target/ocpp-server-1.0.0.jar
  • 默認端口:8080

  • WebSocket 地址:

    ws://<server-ip>:8080/ocpp/{chargePointId}
    

2.2 使用 Web 管理界面

2.2.1 訪問

瀏覽器打開:

http://<server-ip>:8080/web

即可查看當前接入的樁、實時報文日志,并能點擊按鈕啟動/停止充電。

2.2.1.1 REST API 示例
  • 遠程啟動充電:
curl "http://<server-ip>:8080/api/ocpp/remoteStart/{cpId}?idTag=ID123&connectorId=1"
  • 遠程停止充電:
curl "http://<server-ip>:8080/api/ocpp/remoteStop/{cpId}?transactionId=1001"
  • 查詢連接狀態:
curl "http://<server-ip>:8080/api/ocpp/connections"

3 OCPP 報文與調試

3.1 BootNotification 報文示例

3.1.1 樁上報的 BootNotification

[2, "uuid", "BootNotification", {"chargePointVendor": "XQ","chargePointModel": "ocpp_ac_7kw","chargePointSerialNumber": "ks0117100000008","firmwareVersion": "250722"
}]
3.1.1.1 字段說明
  • chargePointVendor 廠商標識
  • chargePointModel 型號
  • serialNumber 樁序列號
  • firmwareVersion 固件版本

3.2 使用 Node.js 模擬樁連接

3.2.1 示例代碼

const WebSocket = require('ws');
const ws = new WebSocket('ws://127.0.0.1:8080/ocpp/CP_TEST');ws.on('open', () => {const boot = [2, "req-1", "BootNotification", {chargePointVendor: "XQ",chargePointModel: "ocpp_ac_7kw"}];ws.send(JSON.stringify(boot));console.log('BootNotification sent');
});ws.on('message', (msg) => {console.log('recv:', msg.toString());
});

3.3 常見交互流程

  1. 建立 WebSocket 連接
  2. 樁發送 BootNotification
  3. 樁周期性發送 Heartbeat / MeterValues
  4. 平臺下發 RemoteStart / RemoteStop
  5. 所有報文在 Web 界面實時顯示

4 二次開發實戰

4.1 項目結構速覽

4.1.1 核心包

src/main/java├── ws      # WebSocket 服務├── service # 報文處理├── model   # 設備/會話對象├── api     # REST 控制器└── util    # 報文工具
4.1.1.1 特點
  • 框架簡單,邏輯清晰
  • 支持快速擴展自定義 Action

4.2 新增自定義 Action

4.2.1 修改 OcppService

OcppService.handleCall 中新增分支:

case "MyCustomAction":JSONObject result = new JSONObject();result.put("status", "Accepted");String resp = OcppMessageUtil.buildCallResult(requestId, result);session.sendMessage(resp);break;
4.2.1.1 調試建議
  • 利用 Web UI 日志觀察報文
  • 使用 Node.js 或 Python 客戶端模擬樁
  • 保證自定義字段符合 JSON 規范

5 部署與運維

5.1 測試到生產

5.1.1 建議

  • 使用 WSS + HTTPS
  • 增加認證/鑒權
  • 使用 Redis 管理會話,便于擴展
5.1.1.1 日志與監控
  • 建議接入 ELK 或 Prometheus
  • 對交易相關報文做好冪等校驗

6 常見問題

6.1 無法建立 WebSocket

  • 確認 URL 正確:/ocpp/{chargePointId}
  • 檢查端口是否開放

6.2 遠程命令無響應

  • 確認樁在線
  • 查看報文日志是否下發成功

6.3 BootNotification 解析失敗

  • 檢查字段拼寫是否符合協議

7 結語與貢獻

7.1 許可與參與

本項目采用 MIT License,歡迎提交 Issue 與 PR。
項目地址:https://github.com/qyhua0/ocpp_charge

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95082.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95082.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95082.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu 搭建 Solana 區塊鏈開發環境 + Anchor 智能合約完整教程

文章目錄簡介特征核心概念Solana 的工作原理&#xff08;簡單版&#xff09;為什么人們選擇 Solana開發環境準備Solana 官網Solana 文檔Anchor 文檔GithubRust SDK快速安裝 Solana&#xff08;推薦&#xff09;單獨安裝 Solana安裝依賴項安裝 Solana CLI安裝 Anchor CLI安裝 AV…

curl 介紹及使用教程

文章目錄 什么是 curl? 1. 解析用戶輸入與初始化 2. 建立網絡連接 3. 構建并發送請求 4. 接收并處理響應 5. 清理資源 核心特點總結 基本語法 常用功能及示例 1. 基本 HTTP 請求 2. 發送 GET 請求 3. 發送 POST 請求 4. 設置請求頭 5. 處理認證 6. 斷點續傳 7. 跟隨重定向 8. …

【第十一章】Python 隊列全方位解析:從基礎到實戰

Python 隊列全方位解析&#xff1a;從基礎到實戰 本文將從基礎概念到高級應用&#xff0c;用 “文字解釋 代碼示例 圖表對比 實戰案例” 的方式&#xff0c;全面覆蓋 Python 隊列知識&#xff0c;零基礎也能輕松掌握。 文章目錄Python 隊列全方位解析&#xff1a;從基礎到實…

跨平臺開發框架實測:React Native vs Flutter vs Kotlin Multiplatform

本文聚焦 React Native、Flutter 和 Kotlin Multiplatform 三大跨平臺開發框架&#xff0c;從性能表現、開發效率、生態系統、跨平臺一致性及學習成本五個關鍵維度展開實測對比。通過具體場景的測試數據與實際開發體驗&#xff0c;剖析各框架的優勢與短板&#xff0c;為開發者在…

【網弧軟著正版】2025最強軟著材料AI生成系統,基于GPT5.0

軟著材料AI一鍵生成系統 網址&#xff1a;AI軟著材料生成平臺 | 一鍵生成全套軟著文檔 - 網絡弧線 產品簡介&#xff1a; 專業的軟件著作權材料AI生成平臺&#xff0c;基于GPT-5模型開發&#xff0c;自2022年運營至今已服務數萬用戶成功獲得軟著證書。輸入軟件名稱即可自動生成…

存儲掉電強制拉庫引起ORA-01555和ORA-01189/ORA-01190故障處理---惜分飛

機房存儲突然掉電導致Oracle數據庫訪問存儲異常,數據庫報出大量的ORA-27072: File I/O error,Linux-x86_64 Error: 5: Input/output error,ORA-15081: failed to submit an I/O operation to a disk等錯誤,實例直接crash Wed Aug 27 07:11:53 2025 Errors in file /u01/app/ora…

R3:適用于 .NET 的新一代響應式擴展庫,事件訂閱流

R3&#xff1a;適用于 .NET 的新一代響應式擴展庫 R3 是 dotnet/reactive&#xff08;.NET 官方響應式擴展&#xff09;與 UniRx&#xff08;適用于 Unity 的響應式擴展&#xff09;的新一代替代方案&#xff0c;支持多種平臺&#xff0c;包括 Unity、Godot、Avalonia、WPF、W…

Android Framework打電話禁止播放運營商視頻彩鈴

文章目錄定位Android電話的源碼及UI禁止打電話時播放運營商廣告視頻彩鈴運營商視頻彩鈴framework禁止播放視頻彩鈴需求&#xff1a;打電話時&#xff0c;對方未接聽&#xff0c;這個時候可能會播放運營商的視頻彩鈴&#xff0c;需求是屏蔽彩鈴播放。測試平臺&#xff1a;展銳。…

WebIDEPLOY 賦能數字校園建設:智慧管理系統的效能升級與實踐路徑 —— 以校園資源協同優化構建高效教育生態的探索

一、教育數字化轉型中的現實困境&#xff1a;從 "管理孤島" 到 "效率瓶頸"教育數字化轉型的加速推進&#xff0c;讓智慧校園建設成為高校提升核心競爭力的關鍵抓手。但當前校園物聯網應用中&#xff0c;一系列痛點逐漸凸顯&#xff1a;設備管理呈現 "…

開源AI大模型AI智能名片S2B2C商城小程序賦能下的“信息找人“:人工智能驅動的線下零售精準化革命

摘要&#xff1a;在人工智能技術深度滲透零售行業的背景下&#xff0c;線下零售場景正經歷從"人找信息"到"信息找人"的范式轉變。本文聚焦開源AI大模型、AI智能名片與S2B2C商城小程序的技術融合&#xff0c;系統分析其在客戶定位、行為分析、精準營銷等環節…

【第三方網站運行環境測試:服務器配置(如Nginx/Apache)的WEB安全測試重點】

服務器配置安全測試是WEB安全評估的關鍵&#xff0c;一般關注信息泄露、傳輸安全、訪問控制及資源防護等方面。信息泄露控制 檢查服務器響應頭是否暴露敏感信息。Server頭應去除Nginx/Apache詳細版本號&#xff0c;防止攻擊者針對特定版本漏洞進行利用。錯誤頁面需自定義&#…

【Hot100】15.三數之和

解法&#xff1a;排序 雙指針首先對數組排序&#xff0c;便于后面處理重復元素。第一層循環遍歷數組中的每一個元素&#xff0c;作為三元組中的第一個元素 nums[i] &#xff0c;并跳過重復的元素。對于每個 i &#xff0c;使用雙指針 l &#xff08;初始為 i1&#xff09;和 r…

Flutter 本地持久化存儲:Hive 與 SharedPreferences 實戰對比

在移動應用開發中&#xff0c;本地持久化存儲是必不可少的功能。無論是保存用戶登錄狀態、應用配置&#xff0c;還是緩存數據&#xff0c;合理選擇存儲方案都能提高應用的性能與用戶體驗。在 Flutter 中&#xff0c;常用的本地存儲方式主要有兩種&#xff1a;SharedPreferences…

Lombok 實用注解深度解析!

目錄一、AllArgsConstructor&#xff1a;全參數構造函數生成器1. 基本概念2. 使用示例3. 高級特性4. 注意事項二、RequiredArgsConstructor&#xff1a;必需參數構造函數生成器1. 基本概念2. 使用示例3. 高級特性4. 注意事項三、SneakyThrows&#xff1a;異常處理"偷懶&qu…

Go+Gdal 完成高性能GIS數據空間分析

概要 環境準備 技術流程 一、在golang中如何調用gdal 二、讀取數據 三、執行空間分析 四、性能提升 小結 概要 Gdal庫可以說是所有gis軟件的基礎&#xff0c;基本上現在所有的工業gis軟件都是基于gdal開發的&#xff0c;其主要包括了柵格處理、矢量處理、坐標系處理所涉及的各類…

【python】python進階——Lambda 函數

目錄 引言 一、簡介 1.1 基本語法 1.2 優勢 1.3 局限性 二、基本用法 2.1 無參數lambda 函數 2.2 多參數 lambda 函數 三、常見使用場景 3.1 與高階函數配合使用 3.2 作為排序鍵 3.3 在 GUI 編程中作為回調函數 3.4 在 Pandas 中的應用 四、高級技巧 4.1 條件表…

基于單片機電動車充電樁/充電車棚環境監測設計

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 隨著電動車普及&#xff0c;充電樁的環境安全監測成為重要課題。基于單片機的電動車充電樁環境檢…

Linux初始——編譯器gcc

編譯器gcc編譯器編譯器自舉動靜態庫動靜態庫的差異gcc編譯器 眾所周知&#xff0c;代碼運行的前提是經過四個步驟的 預處理&#xff0c;其進行宏替換&#xff0c;去注釋&#xff0c;條件編譯&#xff0c;頭文件展開的工作&#xff0c;在gcc的選項中對應gcc -E&#xff0c;其就…

Three.js + AI預測:在數字孿生中實現數據可視化智能決策

某智慧工廠的數字孿生系統曾陷入尷尬&#xff1a;3D 模型里的生產線數據實時跳動&#xff0c;卻沒人能預判 “2 小時后哪臺機器會停機”。這就像有了高清監控&#xff0c;卻不會分析監控畫面 ——Three.js 做出的可視化是 “眼睛”&#xff0c;AI 預測才是 “大腦”。不少團隊用…

刀客doc:亞馬遜持續猛攻程序化廣告

文/刀客doc(頭條深一度精選作者)一7月的尾聲和8月的開端&#xff0c;廣告市場見證了兩場截然不同的場面。7月31日&#xff0c;亞馬遜公布了截至6月30日的2025年第二季度財報。廣告業務表現尤為亮眼&#xff1a;單季收入達到157億美元&#xff0c;同比增長約22%&#xff0c;成為…