OCPP客户端与服务端测试

近期参与ISO15118充电协议的开发,主要涉及车与桩的PLC通信。但是桩与平台端却是使用OCPP,本人对OCPP知之甚少。故而网上找了些开源项目,运行起来看看OCPP的样子,揭开OCPP的神秘面纱。


运行环境:Ubuntu 22.04 虚拟机

OCPP客户端:MicroOcpp. 项目地址:

OCPP服务端:SteVe. 项目地址:


  1. 先下载需要用到的库以及编译依赖:
bash 复制代码
# 安装 git
sudo apt install git -y
# 安装 OpenJDK 21 和 Maven
sudo apt install openjdk-21-jdk maven -y
# 安装 MySQL 服务器
sudo apt install mysql-server -y
# 安装编译工具
sudo apt install cmake libssl-dev build-essential

# 检查安装的版本
java --version
mvn --version
mysql --version

  1. 下载代码
bash 复制代码
# 下载MicroOcpp
git clone --recurse-submodules https://github.com/matth-x/MicroOcppSimulator
cd MicroOcppSimulator

# 下载SteVe
git clone https://github.com/steve-community/steve.git

  1. 编译
  • 编译MicroOcpp
bash 复制代码
cmake -S . -B ./build
cmake --build ./build -j 16 --target mo_simulator
  • 编译SteVe
bash 复制代码
# 登录 MySQL 
sudo mysql -u root -p

登陆数据库后,执行以下命令

bash 复制代码
-- 创建数据库,使用 utf8 字符集
CREATE DATABASE stevedb CHARACTER SET utf8 COLLATE utf8_unicode_ci;

-- 创建本地用户 steve,并设置密码
CREATE USER 'steve'@'localhost' IDENTIFIED BY 'xxxx';

-- 授予用户对 stevedb 数据库的所有权限
GRANT ALL PRIVILEGES ON stevedb.* TO 'steve'@'localhost';

-- 使权限生效
FLUSH PRIVILEGES;

-- 退出 MySQL
EXIT;

修改src/main/resources/application-prod.properties 连接数据库

bash 复制代码
# Database configuration
#
db.ip = localhost
db.port = 3306
db.schema = stevedb
db.user = steve
db.password = xxxx

最后编译

bash 复制代码
# 使用项目自带的 Maven 包装器进行编译
./mvnw clean package
  1. 运行
bash 复制代码
# 运行steve生成的 jar 文件
java -jar target/steve.war

# 运行MicroOcpp生成的bin 文件
./build/mo_simulator

然后就可以通过浏览器打开页面查看控制台了。

MicroOcpp: http://127.0.0.1:8000

Steve: http://127.0.0.1:8080/steve/

登录密码为src/main/resources/application-prod.properties配置项里

  1. 运行配置

对于ocpp服务端steve而言,需要新建充电站点。登录后依次点击DATA MANAGENT/CHARGE POINTS,点击Add New进行添加,注意密码设置为16~20个字符;

这样steve端就设置好了,然后需要将ocpp服务端URI设置到ocpp客户端。

这样就可以在steve上看到桩的信息了。

接着需要在steve端创建ID Tag,这个操作类似于先将ID卡录入平台,然后桩和车插好电后,然后刷卡,卡信息进入平台比对。如果验证通过则开始充电。操作过程如下:登录steve后,DATA MANAGENT/OCPP TAGS,点击Add New进行添加

这样就完成了。

  1. 启动充电

点击Connectors,然后进入Connector 1控制台,打开EVSE Options,然后修改状态为Ready,最后点击Update EVSE就可以了。也可以在点击页面上的Fetch All就可以看到状态更新了。

然后在Transaction Options页面输入我们刚创建的ID Tag,最后点击Update Transaction,就看到开始充电了。

  1. 最后刷新一下MicroOcpp与Steve的状态

至此,完成充电交互模拟。接下来再进行抓包分析吧。

相关推荐
MEIXIFU19 小时前
便利店实际经营面积怎么选最合适
大数据·人工智能·物联网·生活·迭代加深
数据猿视觉12 小时前
告别参数内卷:科技数码行业步入高质量 “长跑期”
大数据·人工智能·物联网
2601_9539880713 小时前
Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
前端·后端·物联网·tcp/ip·数学建模·前端框架
TDengine (老段)14 小时前
TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark
大数据·数据库·物联网·flink·kafka·时序数据库·tdengine
LCG元1 天前
STM32+ESP8266+MQTT 物联网气象站:从零搭建温湿度远程监测系统(附完整源码)
stm32·物联网·struts
殷忆枫1 天前
基于K210与STM32的智能垃圾分类与物联网监管系统
stm32·物联网·分类
老孙讲技术1 天前
【4G IPC 上云】临时点位怎么免布线上云?listDeviceDetailsByPage + 辅码流预览|智慧工地实战
后端·物联网
华普微HOPERF1 天前
物联之“芯”,链通万物,华普微邀您共赴IOTE 2026
物联网·展会
数字新视界1 天前
信创动环监控厂家深入剖析智能机房环境监控技术应用与挑战
服务器·数据库·物联网·芯片·动环监控系统
笨鸟先飞,勤能补拙2 天前
AI Agent应用领域深度解析:从概念到落地的全维度审视
大数据·人工智能·python·物联网·安全·网络安全·github