快速给ThingsPanel开发一个自定义接入协议——通过案例讲解
发布日期:
有些设备的通信协议是非标准的,这就给接入带来了困难,这个时候我们就需要使用ThingsPanel的自定义协议开发功能,便能快速的接入平台。使非标设备接入简单快速实现。整体能节省原来60%的开发时间。
例子:要接入的设备
这是一个自定义TCP协议,协议的规范是自定义的。
通信方式也是请求应答模式的
解决方案
针对这个协议,我们使用ThingsPanel开源平台的协议插件开发模板,位置在 https://gitee.com/ThingsPanel/protocol-plugin-template ,这个模板基本的结构已经搭建好了。只需要按照协议插件模板的文档就可以进行。
基本的开发思路按照:
- 官方插件开发说明文档
http://thingspanel.io/zh-Hans/docs/system-development/eveloping-plug-in/customProtocol
开发思路
协议插件和其他系统组件是如何交互的
按照开发文档完成开发后,协议插件就完成基本的功能,包括:
- 实现插件表单配置接口;平台通过这个接口获取信息生成界面供用户填写设备配置信息。
- 编写设备链接服务;设备与协议插件链接成功后,我们就可以得到设备的认证信息,使用认证信息通过平台提供的接口就能得到用户填写的设备配置信息;
- 开启线程/纤程保持与设备的连接;
- 保存设备的配置信息以及线程/纤程到缓存或者内存中;
- 接收设备消息;根据设备的配置转换消息发送给平台;
- 接收平台消息;根据设备的配置转换平台消息发给设备;
- 实现其他接口;
- 插件与平台通信的实现;参考下面交换数据相关内容。
插件的代码结构
说明:
化其他模块。
●mqtt/mqtt_client.go:负责与MQTT代理进行通信,包括发布和订阅消息。
●http/http_client.go:用于发送HTTP请求到外部服务。
●http/http_server.go:用于接收来自用户或外部服务的HTTP请求。
●services/service.go:启动并管理服务。
●MQTT Broker:MQTT消息代理,用于MQTT通信。
●modbus/modbus_client.go:处理来自MQTT客户端的消息,并与Modbus设备进行通信。
●External Services:外部服务,可能是提供API的服务器。
●Users or External Services:用户或外部服务,发送请求到HTTP服务器。
●Modbus Devices:Modbus设备,与modbus客户端进行通信。
开发好插件之后的配置表单
设备接入配置表单,供解析数据,由协议插件提供的配置表单