【OCPP】ocpp1.6协议第4.2章节BootNotification的介绍及翻译

目录

4.2、BootNotification-概述

Boot Notification 消息

BootNotification 请求消息

BootNotification 响应消息

使用场景

触发 BootNotification 的条件

实现示例

构建请求消息

发送请求并处理响应

小结

4.2、BootNotification-原文译文

4.2.1、被中央系统接受之前的交易


4.2、BootNotification-概述

OCPP 1.6 协议的第 4.2 章 “Boot Notification” 主要讲述了充电站启动时向中央系统(Central System)发送启动通知(Boot Notification)进行注册和初始化的过程。这是充电站与中央系统建立通信和进行后续操作的第一步。

Boot Notification 消息

BootNotification 是充电站启动时发送给中央系统的一个消息,用于报告充电站的状态和基本信息。此消息用于通知中央系统充电站已经启动,并请求进行初始化和注册。

BootNotification 请求消息

请求消息包含充电站的基本信息,如供应商、电站型号、固件版本等。典型的消息格式如下:

{ "chargePointVendor": "string", "chargePointModel": "string", "chargePointSerialNumber": "string", "chargeBoxSerialNumber": "string", "firmwareVersion": "string", "iccid": "string", "imsi": "string", "meterType": "string", "meterSerialNumber": "string" }
  • chargePointVendor: 供应商名称。

  • chargePointModel: 充电站型号。

  • chargePointSerialNumber: 充电站的序列号。

  • chargeBoxSerialNumber: 充电箱的序列号(如果适用)。

  • firmwareVersion: 固件版本。

  • iccid: 集成电路卡识别码(ICCID),用于标识 SIM 卡。

  • imsi: 国际移动用户识别码(IMSI),用于标识移动用户。

  • meterType: 电表类型。

  • meterSerialNumber: 电表序列号。

BootNotification 响应消息

中央系统在收到 BootNotification 消息后,会返回一个响应消息,确认接收到启动通知并向充电站提供配置参数。响应消息的典型格式如下:

{ "status": "string", "currentTime": "string", "interval": 300 }
  • status: 注册状态,可能值包括:

    • Accepted: 充电站注册成功,中央系统接受该充电站。

    • Pending: 充电站需要等待,注册请求待处理。

    • Rejected: 充电站注册失败,中央系统拒绝该充电站。

  • currentTime: 中央系统的当前时间(ISO 8601 格式)。

  • interval: 充电站应在下一次进行心跳请求的时间间隔(秒为单位)。

使用场景

  1. 充电站启动

当充电站首次启动或重新启动时,会立即向中央系统发送 BootNotification 消息。这有助于中央系统了解充电设备已经上线并准备好进行操作。

  1. 网络连接恢复

如果充电站由于网络问题与中央系统失去连接,当网络连接恢复时,充电站应重新发送 BootNotification 消息,以重新注册并同步状态。

触发 BootNotification 的条件

  • 首次启动:充电站首次启动时。

  • 重启后:充电站重新启动后。

  • 网络恢复:修复网络连接问题后。

实现示例

以下是使用 JavaScript 实现的示例,展示了如何构建和发送 BootNotification 请求,并处理响应。

构建请求消息
const bootNotificationRequest = { chargePointVendor: "VendorName", chargePointModel: "Model123", chargePointSerialNumber: "SN12345678", chargeBoxSerialNumber: "CBSN12345678", firmwareVersion: "1.0.0", iccid: "8912345678901234567", imsi: "123456789012345", meterType: "MeterType1", meterSerialNumber: "MSN12345678" };
发送请求并处理响应
// 假设 websocket 已经连接至中央系统 webSocket.send(JSON.stringify({ action: "BootNotification", payload: bootNotificationRequest })); webSocket.onmessage = (event) => { const response = JSON.parse(event.data); if (response.action === "BootNotification") { const { status, currentTime, interval } = response.payload; if (status === "Accepted") { console.log(`BootNotification Accepted. Server time: ${currentTime}. Next heartbeat interval: ${interval} seconds.`); // 设置心跳间隔定时器 setInterval(sendHeartbeat, interval * 1000); } else if (status === "Pending") { console.log("BootNotification Pending. Waiting for further instructions."); } else { console.error("BootNotification Rejected. Please check configurations."); } } }; function sendHeartbeat() { webSocket.send(JSON.stringify({ action: "Heartbeat" })); }

小结

OCPP 1.6 协议的第 4.2 章 "Boot Notification" 详细描述了充电站启动时如何向中央系统发送启动通知。通过 BootNotification 消息,充电站可以向中央系统报告其状态和基本信息,并接收初始化参数。这一步确保了充电站与中央系统之间的通信正常,使得后续的操作和管理得以顺利进行。

4.2、BootNotification-原文译文

启动后,充电桩应向中央系统发送请求,其中包含有关其配置的信息(例如版本、供应商等)。 中央系统应做出响应,表明它是否会接受充电桩。

充电桩应在每次启动或重新启动时发送 BootNotification.req PDU。在物理开机/重启和成功完成 BootNotification 之间(中央系统返回“已接受”或“待定”),充电桩不得向中央系统发送任何其他请求。这包括之前仍存在于充电桩中的缓存消息。

当中央系统以“Accepted”状态响应 BootNotification.conf 时,充电桩将根据响应 PDU 的间隔调整心跳间隔,并且建议将其内部时钟与所提供的中央系统的当前时间同步。如果中央系统返回 Accepted 以外的内容,则间隔字段的值指示发送下一个 BootNotification 请求之前的最短等待时间。如果该间隔值为零,则充电桩会自行选择等待间隔,以避免请求淹没中央系统。充电桩不应提前发送 BootNotification.req,除非使用 TriggerMessage.req 请求这样做。

如果中央系统返回“Rejected”状态,则在上述重试间隔到期之前,充电桩不得向中央系统发送任何 OCPP 消息。在此期间,中央系统可能无法再访问充电桩。例如,它可以关闭其通信通道或关闭其通信硬件。中央系统也可以关闭通信通道,例如以释放系统资源。当被拒绝时,充电桩不得响应任何中央系统发起的消息。中央系统不应该启动任何

中央系统还可以返回Pending注册状态,以表明它希望在中央系统接受充电桩之前检索或设置有关充电桩的某些信息。如果中央系统返回Pending状态,则充电桩或中央系统不应关闭通信通道。中央系统可以发送请求消息以从充电桩检索信息或更改其配置。充电桩应该响应这些消息。充电桩不得向中央系统发送请求消息,除非中央系统通过 TriggerMessage.req 请求指示它这样做。

当处于Pending状态时,不允许以下中央系统启动的消息:RemoteStartTransaction.req 和 RemoteStopTransaction.req

4.2.1、被中央系统接受之前的交易

充电桩运营商可以选择配置充电桩以在充电桩被中央系统接受之前接受交易。想要实施这种行为的各方应该意识到,这些交易是否可以交付到中央系统是不确定的。

重新启动后(例如由于远程重置命令、断电、固件更新、软件错误等),充电桩必须再次联系中央系统并应发送 BootNotification 请求。如果充电桩无法从中央系统接收 BootNotification.conf,并且没有已正确预设的内置非易失性实时时钟硬件,则充电桩可能没有有效的日期/时间设置,从而导致以后无法确定交易的日期/时间。

也可能出现这样的情况(例如,由于配置错误),中央系统在较长一段时间内或无限期地指示“Accepted”以外的状态。

如果充电桩之前从未被中央系统接受(使用当前的连接设置、URL 等),通常建议拒绝该充电桩的所有充电服务,因为用户无法通过身份验证,并且运行的事务可能与配置冲突流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/340880.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios v品会 api-sign算法

vip品会 api-sign算法还原 ios入门案例 视频系列 IOS逆向合集-前言哔哩哔哩bilibili 一、ios难度与安卓对比 这里直接复制 杨如画大佬的文章的内容: ios难度与安卓对比 很多人说ios逆向比安卓简单,有以下几个原因 1 首先就是闭源,安卓开源…

无人售货机零售业务成功指南:从市场分析到创新策略

在科技驱动的零售新时代,无人售货机作为一种便捷购物解决方案,正逐步兴起,它不仅优化了消费者体验,还显著降低了人力成本,提升了运营效能。开展这项业务前,深入的市场剖析不可或缺,需聚焦消费者…

ch4网络层---计算机网络期末复习(持续更新中)

网络层概述 将分组从发送方主机传送到接收方主机 发送方将运输层数据段封装成分组 接收方将分组解封装后将数据段递交给运输层网络层协议存在于每台主机和路由器上 路由器检查所有经过它的IP分组的分组头 注意路由器只有3层(网络层、链路层、物理层) 网络层提供的服务 一…

discuz如何添加主导航

大家好,今天教大家怎么样给discuz添加主导航。方法其实很简单,大家跟着我操作既可。一个网站的导航栏是非常重要的,一般用户进入网站的第一印象就是看网站的导航栏。如果大家想看效果的话可以搜索下网创有方,或者直接点击查看效果…

SpringCloud Feign用法

1.在目标应用的启动类上添加开启远程fein调用注解: 2.添加一个feign调用的interface FeignClient("gulimall-coupon") public interface CouponFeignService {PostMapping("/coupon/spubounds/save")R save(RequestBody SpuBondTo spuBounds);…

C++语言学习(七)—— 继承、派生与多态(一)

目录 一、派生类的概念 1.1 定义派生类的语法格式 1.1.1 定义单继承派生类 1.1.2 定义多继承派生类 1.2 继承方式 二、公有继承 三、派生类的构造和析构 四、保护成员的引入 五、改造基类的成员函数 六、派生类与基类同名成员的访问方式 七、私有继承和保护继承 7.…

zdppy_api 中间件请求原理详解

单个中间件的逻辑 整体执行流程: 1、客户端发起请求2、中间件拦截请求,在请求开始之前执行业务逻辑3、API服务接收到中间件处理之后的请求,和数据库交互,请求数据4、数据库返回数据5、API处理数据库的数据,然后给客户…

探索数据结构:快速排序与归并排序的实现与优化

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 快速排序 1.1. 算法思想 **快速排序(Quick Sort)**是Hoare于1962年…

【数据结构】穿梭在二叉树的时间隧道:顺序存储的实现

专栏引入 哈喽大家好,我是野生的编程萌新,首先感谢大家的观看。数据结构的学习者大多有这样的想法:数据结构很重要,一定要学好,但数据结构比较抽象,有些算法理解起来很困难,学的很累。我想让大家…

AI程序员来了,大批码农要失业

根据GitHub发布的《Octoverse 2021年度报告》,2021年中国有755万程序员,排名全球第二。 ChatGPT的出现,堪比在全球互联网行业点燃了一枚“核弹”,很多人都会担心“自己的工作会不会被AI取代”。 而2024年的AI进展速度如火箭般&am…

getway整合sentinel流控降级

3. 启动sentinel控制台增加流控规则: 根据API分组进行流控: 1.设置API分组: 2.根据API分组进行流控: 自定义统一异常处理: nginx负载配置:

vue-router 源码分析——2. router-link 组件是如何实现导航的

这是对vue-router 3 版本的源码分析。 本次分析会按以下方法进行: 按官网的使用文档顺序,围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码,更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升,甚至面试时…

德人合科技——@天锐绿盾 | -文档透明加密系统

天锐绿盾文档透明加密系统是一种先进的数据安全解决方案,旨在保护企业和组织的敏感信息,防止未经授权的访问和泄漏。 PC地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是该系统的一些关键特点和功…

【读书笔记】曼陀罗思考法

目录 1 起源2 路径示例——人生规划设计 3 分类3.1 扩展型“扩展型”曼陀罗——使用方法 3.2 围绕型 4 注意事项 1 起源 曼陀罗在梵文中意味着“圣地”,象征着宇宙的秩序和内心的神圣结构。 “曼陀罗思考法”,是由日本学者今泉浩晃发明的方法&#xff…

【计算机毕设】基于SpringBoot的中小企业设备管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 在中小企业中,设备管理是确保生产和运营效率的重要环节。传统的设备管理通常依赖于手工记录和人工管理,容易导致数据不准确、…

LLM的基础模型4:初识Embeddings

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提…

12-学生们参加各科测试的次数(高频 SQL 50 题基础版)

12-学生们参加各科测试的次数 -- 学生表中,id是唯一的,将他作为主表 -- CROSS JOIN产生了一个结果集,该结果集是两个关联表的行的乘积 -- 2行表,与3行表使用cross join,得到2*36行数据 select st.student_id, st.student_name,su.subject_na…

【软件测试】自动化测试如何管理测试数据

前言 在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。 随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高&#…

【Transformer(7)】Transformer架构解析

一、Transformer结构图 从上图可以看到: Transformer结构主要由编码和解码两大部分组成: (1)输入- position embedding - patch embedding (2)编码器 多头注意力机制 Add & NormMLP Add & Norm &…

爪哇,我初窥门径

2017年3月,我大二下学期了。 虽说一直在学习,持续在解决学习中遇到的问题,但迷茫依旧。 对着黑框编程,还是不知道Java在现实工作中是用来干什么的。 说实话,真的挺枯燥无趣的。 逐渐,我开始意识到&#…