项目作者: LoverITer

项目描述 :
基于DLT645-2007/DLT645-1997协议的智能电表数据采集系统。借助于高性能的网络编程框架Netty开发,系统可以和智能电表交互并把设备传上来的数据实时写进数据库(目前只支持MySQL)。
高级语言: Java
项目地址: git://github.com/LoverITer/energy-management-sys_communication-sub-sys.git


EnergyManagementSys_CommunicationSubSys

本系统是一个基于Netty开发的远程抄表系统,系统的主要功能有:远程抄表和数据持久化到DB(目前仅支持MySQL),目前的主要开发服务对象是智能电表,智能电表在行业内的远程抄表使用的是DLT/645-1997协议或DLT/645-2007协议,本系统面向后者开发。

如何使用?

调用cn.edu.xust.communication.remote.AmmeterRemoteReader或者cn.edu.xust.communication.AmmeterAutoReader类中的方法即可,下面是一个使用示例:

  1. package cn.edu.xust.controller;
  2. import cn.edu.xust.bean.AmmeterParameter;
  3. import cn.edu.xust.communication.remote.AmmeterRemoteReader;
  4. import cn.edu.xust.mapper.AmmeterParameterMapper;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.PathVariable;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.ResponseBody;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. /**
  13. * @author :huangxin
  14. * @modified :
  15. * @since :2020/03/28 17:25
  16. */
  17. @Controller
  18. public class AmmeterController {
  19. @Autowired
  20. private AmmeterParameterMapper ammeterParameterMapper;
  21. @Autowired
  22. private AmmeterRemoteReader ammeterRemoteReader;
  23. @ResponseBody
  24. @RequestMapping(value = "/test/{ammeterId}")
  25. public List<AmmeterParameter> controller(@PathVariable(value = "ammeterId") String ammeterId){
  26. List<String> list = new ArrayList<>();
  27. list.add(ammeterId);
  28. return ammeterRemoteReader.realTelemetry(list);
  29. }
  30. }

功能演示

在启动SpringBoot项目的时候,此通信系统也会跟随自动启动并默认监听9000端口,端口可以在配置文件中通过netty.server.port进行配置,启动成功后会打印Netty Server启动成功的信息

基于示例中的代码,在浏览器地址栏http://127.0.0.1:8080/test/398192000337

(1)可以正常解析DLT/645-2007协议数据(下面是解析了A相电压数据):

(2)解析完成后自动将数据更新到数据库,如下是更新过程打印的日志:

(3)浏览器最终响应结果: