讲师中心 微信公众号
AI工具推荐 视频效率加速

开发人员如何使电动汽车充电器能够与移动应用程序通信

梦涛小哥_1522

梦涛小哥_1522

发布时间:2025-01-16 14:32:20

|

850人浏览过

|

来源于dev.to

转载

在电动汽车 (ev) 世界中,电动汽车驾驶员最神奇的体验之一就是在移动应用程序上点击“开始”并看到充电器开始工作。

但是这个魔法是如何发生的呢?

让我们深入了解电动汽车充电器和移动应用程序如何通信的幕后旅程。

游戏中的玩家

  1. 移动应用程序:这是用户发起操作的地方,例如开始或停止充电会话。
  2. 后端服务器:操作背后的大脑,协调应用程序和充电器之间的通信。
  3. 电动汽车充电器:为您的电动汽车提供电力的硬件。

这些玩家之间的通信遵循名为ocpp(开放充电点协议)的标准化协议。具体来说,大多数系统都使用 基于 websocket 的 ocpp,这可确保实时、可靠的通信。

image description

开始充电过程

第 1 步:用户在应用程序中点击“开始”

当用户点击“开始”按钮时,该过程开始。后端服务器准备一个 remotestarttransaction 命令,其中包含以下详细信息:

{
  "connectorid": 1,
  "idtag": "remote-11902",
  "chargingprofile": {
    "transactionid": 11902,
    "chargingprofileid": 1,
    "stacklevel": 1,
    "chargingprofilepurpose": "txprofile",
    "chargingprofilekind": "relative",
    "chargingschedule": {
      "chargingrateunit": "a",
      "chargingscheduleperiod": [ ... ]
    }
  }
}

此命令通过后端使用 rpc 调用发送到充电器:

await client.call(
  'remotestarttransaction',
  remotestarttransactionbody
);

第 2 步:充电器响应

充电器通过响应确认命令:

{"status": "accepted"}

这表明充电器已准备好开始交易。

第三步:充电器发送starttransaction

当充电器完全准备好后,它会向后端发送starttransaction消息:

{
  "connectorid": 1,
  "idtag": "remote-11902",
  "meterstart": 0,
  "timestamp": "2025-01-15t02:09:54.000z"
}

监控充电会话

在整个充电过程中,充电器会定期发送metervalues更新,其中包括电压、电流和传递的能量等指标。这些更新可以配置为每 30 秒或以不同的时间间隔进行:

{
  "connectorid": 1,
  "transactionid": 11902,
  "metervalue": [
    {
      "timestamp": "2025-01-15t02:09:54.000z",
      "sampledvalue": [
        { "value": "241.10", "measurand": "voltage", "unit": "v" },
        { "value": "0.00", "measurand": "current.import", "unit": "a" },
        { "value": "0", "measurand": "power.active.import", "unit": "w" },
        { "value": "32", "measurand": "current.offered", "unit": "a" }
      ]
    }
  ]
}

停止充电过程

第 1 步:用户在应用程序中点击“停止”

当用户点击“停止”时,后端会向充电器发送remotestoptransaction命令:

await client.call(
  'remotestoptransaction',
  { transactionid: 11902 }
);

第 2 步:充电器响应

充电器确认:

{"status": "accepted"}

步骤3:充电器发送stoptransaction

完成关闭后,充电器会发送一条stoptransaction消息,其中包含传输的总能量等详细信息:

{
  "idTag": "remote-11902",
  "timestamp": "2025-01-15T02:40:49",
  "meterStop": 6379,
  "reason": "EVDisconnected",
  "transactionId": 11902,
  "transactionData": [
    {
      "timestamp": "2025-01-15T02:40:49",
      "sampledValue": [
        { "value": "6379.259277", "measurand": "Energy.Active.Import.Register", "unit": "Wh" }
      ]
    }
  ]
}

什么是连接器?

就像汽油泵可能有不同的柴油或汽油喷嘴一样,电动汽车充电器可以有多个连接器。常见类型包括:

Forge — Python Developer
Forge — Python Developer

Python开发助手 — 自动化脚本、API封装、命令行工具、数据管道、网页爬虫。经过测试的代码,包含错误处理和文档。当你需要...

下载
  • ccs2:风靡欧洲和北美。
  • chademo:常见于日本。
  • mennekes(2 型):在欧洲广泛使用。

每个连接器独立运行,允许一个充电器为多辆车提供服务。

image description

ocpp

ocpp(开放充电点协议)是一种开放式通信标准,专为电动汽车(ev)充电站(充电点)和中央管理系统(通常称为后端系统或充电点管理系统)之间的交互而设计。

它实现了不同制造商和软件提供商的充电基础设施之间的互操作性。

ocpp 版本:

  • ocpp 1.5:早期版本,仍在一些旧系统中使用。
  • ocpp 1.6:广泛采用,支持 soap 和 websocket 通信。
  • ocpp 2.0 和 2.0.1:增强版本,具有更多功能,如改进的安全性 (tls)、支持智能充电、更好的诊断和固件管理。

关键用例:

  1. 充电站管理:充电站的远程监控、故障排除和固件更新。
  2. 智能充电:实现负载平衡、调度/预订以及与电网集成。
  3. 支付集成:允许充电站与支付网关交互并管理用户帐户。
  4. 分析和报告:帮助运营商分析使用模式并优化运营。

ocpp 的工作原理:

ocpp 定义了充电点和中央系统之间的消息结构和通信协议。例如:

  • 充电点发送有关其状态、能耗或错误的消息。
  • 中央系统可以发送命令来启动/停止充电、更新固件或执行诊断。

ocpp 由开放收费联盟 (oca) 管理,该联盟持续开发和推广该协议。

包裹

  1. python:mobilityhouse/ocpp
  2. javascript:mikuso/ocpp-rpc

总结一下

每次您从应用程序开始或停止充电时,一系列精确的实时消息都会在您的应用程序、后端和充电器之间流动。

ocpp 协议使这一切成为可能,确保不同制造商的充电器和应用程序可以无缝协作。

所以,下次您插入电动汽车并点击“开始”时,您就会更多地了解幕后的魔力!


我一直在开发一个超级方便的工具,叫做 liveapi。

它旨在让开发人员轻松编写 api 文档。

使用liveapi,您可以快速生成交互式api文档,允许用户直接从浏览器执行api。

image description

如果您厌倦了为 api 手动创建文档,这个工具可能会让您的生活变得更轻松。

热门AI工具

更多
VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
Golang WebSocket与实时通信开发
Golang WebSocket与实时通信开发

本专题系统讲解 Golang 在 WebSocket 开发中的应用,涵盖 WebSocket 协议、连接管理、消息推送、心跳机制、群聊功能与广播系统的实现。通过构建实际的聊天应用或实时数据推送系统,帮助开发者掌握 如何使用 Golang 构建高效、可靠的实时通信系统,提高并发处理与系统的可扩展性。

175

2025.12.22

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

416

2026.01.19

Python WebSocket实时通信与异步服务开发实践
Python WebSocket实时通信与异步服务开发实践

本专题聚焦 Python 在实时通信场景中的开发实践,系统讲解 WebSocket 协议原理、长连接管理、消息推送机制以及异步服务架构设计。内容包括客户端与服务端通信实现、连接稳定性优化、消息队列集成及高并发处理策略。通过完整案例,帮助开发者构建高效稳定的实时通信系统,适用于聊天应用、实时数据推送等场景。

915

2026.03.18

WebSocket 前端开发与实战技巧
WebSocket 前端开发与实战技巧

聚焦 WebSocket 在前端项目中的工程化实践,涵盖原生 JavaScript WebSocket 连接的封装与状态管理、Vue 3 中 WebSocket 的 Composable 封装(useWebSocket)、React 中自定义 Hook 管理连接生命周期、心跳检测(Ping/Pong 定时器)与自动断线重连的实现策略、指数退避重连算法、消息序列化协议(JSON / Protobuf / MessagePack)的选型与性

448

2026.05.25

WebSocket发送和接收数据教程合集
WebSocket发送和接收数据教程合集

本专题整合了WebSocket发送与接收数据教程合集,阅读专题下面的文章了解更多详细内容。

321

2026.05.25

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

20

2026.10.16

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

20

2026.10.16

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

0

2026.10.16

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

20

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn