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

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

相关推荐
TDengine (老段)4 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
智购科技自动贩卖机7 小时前
自动售货机嵌入式状态机设计实战:从45个事件源到层次型状态机的工程重构
大数据·人工智能·stm32·物联网·重构·硬件架构
SL-staff12 小时前
工业物联网中网关子设备数据通信盲区的排查与解决方法
大数据·物联网·工业物联网·数据映射·网关配置·规则联动·通信盲区
数字新视界13 小时前
国产化动环技术赋能数据中心智能监控新模式
物联网·数据中心·动环监控系统·动力与环境监控系统·机房动环监控
wtblszn14 小时前
恒压供水泵站远程监控物联网系统案例解析
物联网
jianqiang.xue15 小时前
ESP-IDF保姆级入门19|低功耗模式全解与工程化设计:分级休眠/唤醒源配置/功耗调优/外设适配,实现工业级功耗性能平衡
stm32·单片机·物联网·架构·esp32
2501_9139817815 小时前
物联网赋能智慧公用事业:水电气表数字化改造行业报告
物联网·智能水表改造·智能气表改造·智能电表改造
longxingiot15 小时前
物联网主机在智慧园区环境综合治理中的应用
物联网
Quanqiucard16 小时前
监控球机联网总掉线?问题可能出在物联网卡上!
网络·物联网
D_codingXuChu16 小时前
2026物联网应用开发服务商:D-coding系统建设
物联网·开发经验·d-coding