如何使用PHP的Curl向steVe OCPP服务器添加ChargePoint
用PHP Curl向steVe OCPP服务器添加ChargePoint的实现方法
1. 确认steVe的接口信息
steVe的ChargePoint添加可通过两种主流方式实现:模拟后台管理页面的表单提交(无需额外配置steVe)、调用官方REST API(需在steVe中启用REST模块)。以下是两种方式的具体实现:
2. 模拟后台表单提交实现
步骤1:登录后台获取会话Cookie
steVe后台登录需先提交凭证获取有效会话,后续添加请求需携带此会话:
<?php // 配置steVe地址和登录信息 $steve_base_url = 'http://你的steVe服务器地址'; $login_params = [ 'username' => 'admin', // 后台用户名 'password' => 'admin' // 后台密码 ]; // 初始化Curl $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $steve_base_url . '/login'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($login_params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEJAR, 'steve_cookies.txt'); // 保存Cookie到本地 curl_setopt($ch, CURLOPT_COOKIEFILE, 'steve_cookies.txt'); // 读取Cookie // 执行登录请求 $login_result = curl_exec($ch); if (curl_errno($ch)) { die('登录失败: ' . curl_error($ch)); } ?>
步骤2:提交ChargePoint信息
登录成功后,携带会话提交ChargePoint参数:
<?php // 配置ChargePoint信息 $cp_params = [ 'chargeBoxId' => 'CP_TEST_001', // 唯一ID,必填 'description' => '办公室测试充电桩', 'location' => '一楼大厅', 'ocppVersion' => 'OCPP1.6', // 可选版本:OCPP1.2/OCPP1.5/OCPP1.6/OCPP2.0.1 'chargePointVendor' => 'TestVendor', 'chargePointModel' => 'TestModel' ]; // 设置添加请求 curl_setopt($ch, CURLOPT_URL, $steve_base_url . '/manage/chargepoints/add'); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($cp_params)); // 执行添加请求 $add_result = curl_exec($ch); if (curl_errno($ch)) { die('添加失败: ' . curl_error($ch)); } // 验证添加结果(steVe成功后会跳转回充电桩列表页) if (strpos($add_result, '/manage/chargepoints') !== false) { echo 'ChargePoint添加成功'; } else { echo '添加失败,请检查参数或登录凭证'; } // 关闭Curl curl_close($ch); ?>
3. REST API方式实现(需启用steVe REST模块)
若已在steVe配置中开启REST API,可直接调用接口提交JSON格式参数:
<?php $steve_base_url = 'http://你的steVe服务器地址'; $rest_url = $steve_base_url . '/api/chargepoints'; // 配置请求头和参数 $headers = [ 'Content-Type: application/json', 'Authorization: Basic ' . base64_encode('admin:admin') // Basic Auth凭证 ]; $cp_data = json_encode([ 'chargeBoxId' => 'CP_REST_001', 'description' => 'REST API测试充电桩', 'ocppVersion' => 'OCPP1.6' ]); // 初始化Curl $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $rest_url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, $cp_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行请求 $response = curl_exec($ch); $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 验证结果 if ($status_code === 201) { echo 'REST API方式添加成功'; } else { echo "添加失败,响应码:{$status_code},内容:{$response}"; } curl_close($ch); ?>
4. 注意事项
- 确保
steve_cookies.txt文件具备读写权限,否则会话无法保存 chargeBoxId必须唯一,steVe不允许重复ID- 若steVe启用HTTPS,测试环境可添加
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);跳过证书验证,生产环境需配置合法SSL证书
内容的提问来源于stack exchange,提问作者user21117874
相关产品推荐
相关产品推荐

