设备是mqtt以外的协议除了可以从规则引擎接入,也可以开发协议插件服务接入到ThingsPanel
手动注册
和SQL导入
二选一
- 点击
应用管理
->接入协议
->注册插件
- 填入插件信息
名称:创建设备时,会显示在选择协议下拉框中
设备类型:必填,选网关
接入地址:插件服务的ip地址和端口(设备对接,作为平台中的提示信息,没有实际意义)
HTTP服务地址:插件服务的ip地址和端口(必填,供平台后端调用;如果modbus协议插件是用快速安装部署,这里要填插件协议容器的ip:172.19.0.8)
插件订阅主题前缀: (必填)名称 设备类型 协议类型 接入地址 HTTP服务地址 插件订阅主题前缀 MODBUS_TCP协议 网关设备 MODBUS_TCP 服务ip:502 127.0.0.1:503 plugin/modbus/ MODBUS_RTU协议 网关设备 MODBUS_RTU 服务ip:502 127.0.0.1:503 plugin/modbus/
在数据库执行以下sql
INSERT INTO public.tp_protocol_plugin
(id, "name", protocol_type, access_address, http_address, sub_topic_prefix, created_at, description, device_type)
VALUES('c8a13166-e010-24e4-0565-e87feea162bb', 'MODBUS_TCP协议', 'MODBUS_TCP', '服务ip:502', '127.0.0.1:503', 'plugin/modbus/', 1668759820, '请参考文档对接设备', '2');
INSERT INTO public.tp_protocol_plugin
(id, "name", protocol_type, access_address, http_address, sub_topic_prefix, created_at, description, device_type)
VALUES('2a95000c-9c29-7aae-58b0-5202daf1546a', 'MODBUS_RTU协议', 'MODBUS_RTU', '服务ip:502', '127.0.0.1:503', 'plugin/modbus/', 1668759841, '请参考文档对接设备', '2');
INSERT INTO public.tp_dict
(id, dict_code, dict_value, "describe", created_at)
VALUES('8881ffe7-7c2b-43c2-13f3-7227dafa46bv', 'GATEWAY_PROTOCOL', 'MODBUS_TCP', 'MODBUS_TCP协议', 1669281289);
INSERT INTO public.tp_dict
(id, dict_code, dict_value, "describe", created_at)
VALUES('8881ffe7-7c2b-43c2-13f3-7227dafa46bs', 'GATEWAY_PROTOCOL', 'MODBUS_RTU', 'MODBUS_RTU协议', 1669281289);
您需要开发一个服务程序,不管您以什么编程语言进行开发,实现以下规范内容就可以跟ThingsPanel平台对接
go语言有sdk包封装了下面两部分以及mqtt交互部分;包地址:https://github.com/ThingsPanel/tp-protocol-sdk-go
接口 | 接口描述 | 接口链接 |
---|---|---|
/api/form/config | 获取插件表单配置 | 传送 |
/api/device/config/update | 修改子设备配置 | 传送 |
/api/device/config/add | 新增子设备配置 | 传送 |
/api/device/config/delete | 删除子设备配置 | 传送 |
接口 | 接口描述 | 接口链接 |
---|---|---|
/api/plugin/device/config | 设备连接时送来密钥,根据密钥获取插件相关设备的信息,"SubDevice"的属性时插件表单中定义的属性 | 传送 |
./form_config.json
(表单规则详情请参考modbus-protocol-plugin案例)
ThingsPanel前端通过/api/form/config
接口获取表单配置,生成子设备的表单,用户填写的表单数据会出现在ThingsPanel提供的/api/plugin/device/config
接口返回的数据中的"SubDevice"属性中。