主页
手机版
扫描查看手机站
所在位置:首页 → 手游攻略 → 基于surging的木舟平台如何分布式接入设备

基于surging的木舟平台如何分布式接入设备

发布: 更新时间:2024-12-02 09:54:44

一、概述

上篇文章介绍了木舟通过
基于木舟平台浅谈surging 的热点KEY的解决方法
,那么此篇文章将介绍基于surging的木舟平台如何分布式接入设备.

木舟 (Kayak) 是什么?

木舟(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行开发的, 平台包含了微服务和物联网平台。支持异步和响应式编程开发,功能包含了物模型,设备,产品,网络组件的统一管理和微服务平台下的注册中心,服务路由,模块,中间服务等管理。还有多协议适配(TCP,MQTT,UDP,CoAP,HTTP,Grpc,websocket,rtmp,httpflv,webservice,等),通过灵活多样的配置适配能够接入不同厂家不同协议等设备。并且通过设备告警,消息通知,数据可视化等功能。能够让你能快速建立起微服务物联网平台系统。

那么下面就为大家介绍如何从创建组件、协议、设备网关,设备到设备网关接入,再到设备数据上报,把整个流程通过此篇文章进行阐述。

木舟kayal 平台开源地址:
https://github.com/microsurging/

surging 微服务引擎开源地址:
https://github.com/fanliang11/surging
(后面surging 会移动到
microsurging
进行维护)

二、网络组件

1.编辑创建Tcp协议的网络组件,可以选择独立配置(独立配置是集群模式). 下图是解析方式选择了自定义脚本进行解码操作。

选择了独立配置后(共享配置不会进行注册路由),如果架设了新的网关实例,就会在注册中心networkroute/tcp路径下添加服务节点,以consul注册中心为例,打开:http://127.0.0.1:8500

三、自定义协议

  • 如何创建自定义协议模块

如果是网络编程开发,必然会涉及到协议报文的编码解码处理,那么对于平台也是做到了灵活处理,首先是协议模块创建,通过以下代码看出协议模块可以添加协议说明md文档, 身份鉴权处理,消息编解码,元数据配置。下面一一介绍如何进行编写

1. 添加协议说明文档如代码:

support.AddDocument(MessageTransport.Tcp,

"

Document/document-tcp.md

"

);,文档仅支持


markdown文件,如下所示






2. 添加身份鉴权如代码:





support.AddAuthenticator(MessageTransport.Http, new Demo5Authenticator()) ,自定义身份鉴权





Demo5Authenticator 代码如下:









3.添加消息编解码代码



support.AddMessageCodecSupport(MessageTransport.Tcp, () => Observable.Return(new ScriptDeviceMessageCodec(support.Script)));, 可以自定义编解码,






ScriptDeviceMessageCodec代码如下:








4.添加元数据配置代码


support.AddConfigMetadata(MessageTransport.Tcp, _tcpConfig);



_tcpConfig代码如下:




  • 如何加载协议模块,协议模块包含了协议模块支持自定义脚本、添加引用、上传热部署加载。

自定义脚本,选择了自定义脚本解析,如果本地有设置消息编解码,会进行覆盖

引用加载模块

上传热部署协议模块

首先利用以下命令发布模块:

然后打包上传协议模块

四、设备网关

创建TCP设备网关

五、产品管理

以下是添加产品。

设备接入

六、设备管理

添加设备

Tcp认证配置

添加告警阈值

事件定义

七、测试

利用测试工具进行Tcp测试,以调用


tcp://127.0.0.1:993为例,

测试设备上线

字符串: 293\0\0{"MessageType":2,"Headers":{"token":"123456"},"DeviceId":"scro-34","Timestamp":1726540220311}

说明:第一个字符表示类型,第二个表示消息内容长度

16进制:32393300007b224d65737361676554797065223a322c2248656164657273223a7b22746f6b656e223a22313233343536227d2c224465766963654964223a227363726f2d3334222c2254696d657374616d70223a313732363534303232303331317d

结果如下:

测试上报属性

字符串:195\0\0{"MessageType":1,"Properties":{"temp":"38.24"},"DeviceId":"scro-34","Timestamp":1726560007339}

16进制:31393500007b224d65737361676554797065223a312c2250726f70657274696573223a7b2274656d70223a2233382e3234227d2c224465766963654964223a227363726f2d3334222c2254696d657374616d70223a313732363536303030373333397d

结果如下:

测试事件

字符串:8307\0{"MessageType":8,"Data":{"deviceId":"scro-34","level":"alarm","alarmTime":"2024-11-07 19:47:00","from":"device","alarmType":"设备告警","coordinate":"33.345,566.33","createTime":"2024-11-07 19:47:00","desc":"温度超过阈值"},"DeviceId":"scro-34","EventId":"alarm","Timestamp":1726540220311}

16进制:38333037007b224d65737361676554797065223a382c2244617461223a7b226465766963654964223a227363726f2d3334222c226c6576656c223a22616c61726d222c22616c61726d54696d65223a22323032342d31312d30372031393a34373a3030222c2266726f6d223a22646576696365222c22616c61726d54797065223a22e8aebee5a487e5918ae8ada6222c22636f6f7264696e617465223a2233332e3334352c3536362e3333222c2263726561746554696d65223a22323032342d31312d30372031393a34373a3030222c2264657363223a22e6b8a9e5baa6e8b685e8bf87e99888e580bc227d2c224465766963654964223a227363726f2d3334222c224576656e744964223a22616c61726d222c2254696d657374616d70223a313732363534303232303331317d

结果如下:

可以在平台界面看到上报的数据

以下是基于http接入设备的测试

以下是基于mqtt接入设备测试

八、总结

以上是基于介绍如何分布式接入设备, 等完成mqtt和国标28181设备接入,会搭建官方网站和DEMO,敬请期待,预计明年3月前完成,会搭建官方网站和DEMO,敬请期待。

软件上新 查看更多