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的状态

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

相关推荐
IT大白鼠2 小时前
2026年9月至今重大安全漏洞专题报告——物联网与能源设备高危漏洞深度解析
物联网·能源
右手吉他2 小时前
高通平台IA APN问题分析之一
android·物联网
rtu遥测终端机3 小时前
四信助力无人车远程接管与遥操作,低时延通信是安全底线
物联网·自动驾驶
MuMuMu12235 小时前
越华环保集团碳惠小屋:物联网 + 区块链,构建碳普惠终端数据可信与隐私保护体系
物联网·区块链
杰克说5 小时前
物联网消息协议MQTT详解
物联网·mqtt·信息与通信·通信协议
数字新视界6 小时前
空调双机切换器AIRC1000红外控制原理解析
大数据·物联网·信息可视化·信息与通信·一体化机柜
杰克说说说20 小时前
物联网消息协议MQTT详解
物联网
Steelenwang21 小时前
基于XT960的泵站监控方案
嵌入式硬件·物联网·硬件工程·智慧城市·智能硬件
华普微HOPERF1 天前
BLE信道探测方案,开启物联网设备的“距离感知”时代
人工智能·物联网
芯岭技术1 天前
XL2400T收发芯片,2.4G无线荧光棒控光解决方案,+PA距离可达700M
单片机·嵌入式硬件·物联网