# GwMqtt **Repository Path**: ganweicloud/gw-mqtt ## Basic Information - **Project Name**: GwMqtt - **Description**: 项目实现Mqtt数据推送以及Mqtt接收客户端,使用前请认真阅读仓库中的开源声明。 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-12 - **Last Updated**: 2024-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #GWMQTT 本项目实现Mqtt数据推送以及Mqtt接收客户端 - GWMqttPublisher -- Mqtt数据推送服务 - GWMqtt.NET -- Mqtt数据接收设备动态库 - GWMqtt.Shared -- 数据传输对象定义 ## GWMqttPublisher 使用方法 这是一个`IoTCenter`扩展插件,在`GWExProc`表中配置使用 | 字段 | 说明 | 示例 | | ----------- | ------------------------------------------ | ---------------------------------------------- | | Proc_Code | 扩展插件编号,保证唯一即可 | 13 | | Proc_Module | 使用的插件库名称,与生成的类库名称保持一致 | GWMqttPublisher.dll | | Proc_name | 插件名称,用于识别插件 | MQTT数据发布模块 | | Proc_parm | Mqtt插件使用到的参数,以json格式填写 | {"BrokerIp":"192.168.0.163","BrokerPort":1883} | 参数详解 ```json { "BrokerIp":"192.168.0.163", //borker ip地址 "BrokerPort":1883, //borker 端口 "DeviceRanges":"0-1000", //可选参数,设置指定发送范围内的设备数据,默认发送所有设备 "IsCredentials":true, //可选参数,是否使用用户名密码验证 "UserName":"",//可选参数,是否使用用户名密码验证 "Password":"",//可选参数,是否使用用户名密码验证 } ``` #### 支持多Broker方案 单个broker可能会存在性能瓶颈,当单个broker达到性能瓶颈的时候,我们配置多个`IoTCenter`扩展模块,即在`GWExproc`表中配置多条`GWMqttPublisher.dll`模块的记录,配置不同的`BrokerIp`地址,通过`DeviceRanges`字段分配每个broker发送不同段的设备区间,达到数据分流的效果 ## GWMqtt.NET使用方法 这是一个`AlarmCenter`设备动态库插件,通过`equip`表配置可以实现获取远程`GWMqttPublisher`推送的设备数据,配置方法与常规的设备配置大同小异,这是只是描述针对改动态库使用到的配置字段 设备表(equip) | 字段 | 说明 | 示例 | | ------------------------ | --------------------------------------- | ------------------ | | local_addr | borker的ip地址和端口 | 192.168.0.163:1883 | | equip_addr | 远程端IoTCenrer的目标设备号 | 1 | | communication_time_param | 数据刷新周期(毫秒)/数据超时时间(秒) | 300/120 | | communication_param | 用户名密码,格式username:password | ganwei:ganwei.123 | > local_addr 在我们系统中还有个作用是线程管理,系统会根据这个字段是否相同来给设备分配线程,local_addr一样的设备会处于同一个线程通讯 > > 这里有个技巧,可以利用本身参数配置的特点来达到设备线程管理,比如:192.168.0.163:1883:1 ,192.168.0.163:1883:2 我们在原来的基础上加多一个冒号和不同的数字,那么这两个设备就会存于不同的线程中,这样可以大大提高设备数据的刷新效率。 > > communication_time_param的数据刷新周期表示单个设备读取完设备数据之后所等待的时间,如果多个设备串行,这个数值设置越大,那么设备刷新就会成倍增加,变得非常慢。 > > local_addr结合communication_time_param设置,就能控制设备的刷新效率。 遥测表(ycp)、遥信表(yxp) | 字段 | 说明 | 示例 | | ---------------- | ------------------------------ | ---- | | main_instruction | 远程端指定设备的遥测或者遥信号 | 1 | *如果填写遥测表对应的就是远程端的遥测号,如果填写遥信表对应的就是远程端的遥信号* 设置表(SetParm) | 字段 | 说明 | 示例 | | ----------------- | --------------------- | ------ | | main_instruction | 设置号;远程端操作命令 | 1;open | | minor_instruction | 远程端操作参数 | s | | value | 远程端value | 123 |