james 6eb960c41a 1、添加能耗服务模块,并新增推送数据到能耗平台逻辑; 1 일 전
..
service-ems-api 6eb960c41a 1、添加能耗服务模块,并新增推送数据到能耗平台逻辑; 1 일 전
service-ems-biz 6eb960c41a 1、添加能耗服务模块,并新增推送数据到能耗平台逻辑; 1 일 전
README.md 6eb960c41a 1、添加能耗服务模块,并新增推送数据到能耗平台逻辑; 1 일 전
pom.xml 6eb960c41a 1、添加能耗服务模块,并新增推送数据到能耗平台逻辑; 1 일 전

README.md

能耗数据上传服务

功能说明

本服务用于实现能耗数据上传功能,通过TCP协议与能耗监管系统进行通信,按照XML数据通讯协议规范进行数据传输。

主要功能

  1. TCP连接管理:建立和维护与能耗监管系统的TCP连接
  2. 身份认证:使用MD5算法进行身份验证
  3. 数据加密:使用AES加密算法对能耗数据进行加密传输
  4. 定时推送:每10分钟自动生成并推送能耗数据XML报文
  5. 心跳机制:定期发送心跳包保持连接

配置说明

应用配置(application-dev.yml)

在Nacos配置中心或本地配置文件中添加以下配置:

# 能耗服务配置
energy:
  # 服务端配置
  server:
    host: 183.192.66.5
    port: 9006
  # 认证配置
  auth:
    key: 529f3d2bf15d4d5d  # 128bit密钥
  # 建筑信息
  building:
    id: PT310107BZ4054
  # 网关配置(多个网关用逗号分隔)
  gateway:
    ids: gateway1,gateway2
  # 定时任务配置
  push:
    cron: "0 */10 * * * ?"  # 每10分钟执行一次
  # TDengine配置
  tdengine:
    enabled: true
    url: jdbc:TAOS://localhost:6030/
    user: root
    password: taosdata
    super-table: super_715_332

数据库配置

服务需要访问MySQL数据库查询设备信息,配置在Nacos配置中心的共享配置中。

使用说明

1. 网关配置

在配置文件中设置要推送数据的网关ID列表,多个网关用逗号分隔:

energy:
  gateway:
    ids: gateway1,gateway2

2. 启动服务

启动服务后,定时任务会自动执行,每10分钟为每个配置的网关生成并推送XML报文。

3. 手动推送

也可以通过API接口手动触发推送:

@Autowired
private EnergyDataService energyDataService;

// 推送指定网关的数据
energyDataService.generateAndPushEnergyData("gatewayId");

数据流程

  1. 根据网关ID查询网关设备信息(dmp_device表,category_type=2
  2. 根据网关UUID查询所有子设备(dmp_device表,gateway_uuid匹配,category_type=3
  3. 从TDengine时序数据库查询每个设备的最新数据(super_715_332超级表)
  4. 构建XML报文(包含分项数据和仪表数据)
  5. 建立TCP连接并进行身份认证
  6. 使用AES加密XML数据
  7. 发送加密后的数据包
  8. 接收服务端响应

协议说明

网络层数据包格式

  • Head: 2字节,固定值0x1F1F
  • Type: 1字节,消息类型(0x01=身份认证,0x02=心跳,0x03=能耗数据)
  • Length: 4字节,Data长度(网络字节序)
  • Data: 变长,XML数据(UTF-8编码,能耗数据需AES加密)

身份认证流程

  1. 客户端发送身份认证请求
  2. 服务端返回随机序列
  3. 客户端计算MD5(密钥+随机序列)并发送
  4. 服务端验证MD5并返回认证结果

数据加密

  • 算法:AES
  • 模式:CBC
  • 填充:PKCS7/PKCS5
  • 密钥:128bit,与认证密钥相同
  • 向量:与密钥相同

注意事项

  1. 确保TDengine数据源配置正确
  2. 确保网关ID在数据库中存在且为网关设备(category_type=2
  3. 确保网关下有电表子设备(category_type=3
  4. 确保TDengine超级表中存在对应设备的数据
  5. 网络连接异常时会自动重连