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

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

相关推荐
绿蕉3 小时前
从连接到智联:2026物联网新政下的产业重构与机遇
物联网
i-阿松!4 小时前
ESP32-PCB已经通了
物联网·flutter·esp32·go语言
搜佛说4 小时前
03-第3章-基础CRUD操作
数据库·物联网·边缘计算·iot·嵌入式实时数据库
三万棵雪松4 小时前
【Linux 物联网网关主控系统-Web部分(四)】
linux·前端·物联网·嵌入式linux
EmbeddedCore4 小时前
物联网通讯协议怎么选?MQTT、TCP、UDP、HTTP、HTTPS全面解析
物联网·tcp/ip·http
拾光向日葵4 小时前
天府新区通用航空职业学院2026年全新开设宠物医疗技术专业
大数据·人工智能·物联网
搜佛说13 小时前
02-第2章-核心概念与架构
数据库·物联网·微服务·架构·边缘计算·iot
RFID科技的魅力13 小时前
CP300R触屏RFID打印机实测:稳定输出超可靠
大数据·物联网·rfid
李永奉15 小时前
杰理芯片SDK-详细讲解AC695N/AC696N芯片SDK中APP模式流程
单片机·嵌入式硬件·物联网·语音识别