猿创征文|【设备云】FlexManager和阿里云MQTT通讯实例详解


前言

上几篇都介绍了很多关于FlexManager方面的知识和应用实例,相信大家都有看了。本篇开始,将就设备入云的FlexManager与阿里物联网平台的MQTT通讯的方法步骤逐一介绍。当然,设备入云得基本掌握一点设备流程图、PLC自动化的一些相关知识,同学们如果有兴趣可以到我PLC编程学习资料的专栏里边去学习一波,此处不做重点讲述。本文重点讲述的是FlexManager与阿里物联网平台MQTT通讯的通讯参数和数据通道具体部署操作。


提示:以下是本篇文章正文内容,下面案例可供参考

一、阿里云物联网平台

1、平台介绍

阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。

2、通讯流程

物联网平台与设备、服务端、客户端的消息通信流程如下。

在这里插入图片描述
使用物联网平台实现设备完整的通信链接,需要您自行完成设备端的设备开发、云端服务器的开发(云端SDK的配置)、数据库的创建、手机App的开发。在设备和服务器开发中,您需完成设备消息的定义和处理逻辑。

3、通信链路

上行通信

设备通过MQTT协议与物联网平台建立长连接,上报数据(通过Publish发布Topic和Payload)到物联网平台。
通过AMQP消费组,将设备消息流转到您的业务服务器上。
通过物联网平台的云产品流转功能,处理设备上报数据,将处理后的数据转发到RDS、表格存储、函数计算、TSDB、企业版实例内的时序数据存储、DataHub、消息队列RocketMQ等云产品中,进行存储和处理。

下行指令

通过业务应用下发指令,使业务服务器调用基于HTTPS协议的API接口Pub,给Topic发送指令,将数据发送到物联网平台。
物联网平台通过MQTT协议,使用Publish发送数据(指定Topic和Payload)到设备端。

二、产品和设备的创建

阿里物联网平台产品和设备的创建过程如下。

1、总操作流程

接入设备→数据流转→日志排查→监控配置→OTC升级
在这里插入图片描述

2、设备接入操作流程

设备接入阿里云物联网平台分几步走:
创建产品→创建设备→创建云网关→配置物模型→管理消息通信Topic→下载设备端SDK→开发设备接入。
产品是设备的集合,通常是一组具有相同功能定义的设备集合。例如,产品指同一个型号的产品,设备就是该型号下的某个设备。使用物联网平台接入设备前,您需在物联网平台控制台创建产品。本文介绍创建产品的具体操作。

创建产品

操作步骤如下:
1、打开https://www.aliyun.com,登录物联网平台控制台。
在这里插入图片描述
2、在实例概览页面,找到对应的实例,单击实例进入实例详情页面。
在这里插入图片描述/3、在设备管路中点击产品,如图所示:
在这里插入图片描述
4、在产品界面点击创建产品,如图所示:
在这里插入图片描述5、然后根据实际需求直接创建产品,在新建产品页签,按照页面提示填写信息,然后单击确认,如图所示:
在这里插入图片描述
这里的各参数解释如下:
产品名称
为产品命名。产品名称在账号内具有唯一性。例如,可以填写为产品型号。支持中文、英文字母、日文、数字、下划线(_)、短划线(-)、at(@)和英文圆括号(()),长度限制4~30个字符,一个中文或日文占2个字符。

所属品类
相当于产品模板。
标准品类:物联网平台已为标准品类预定义了功能模板。
例如,能源管理 > 电表品类已预定义用电量、电压、电流、总累积量等电表标准功能。选择该品类,创建的产品具有预定义的功能。您可以在该产品的产品详情页功能定义页签下,编辑、修改、新增功能。
单击所属品类右侧帮助按钮帮助,可了解标准品类更多信息,或申请新品类。
自定义品类:产品创建成功后,需根据实际需要,自定义物模型。

节点类型
直连设备:具有IP地址,可直接连接物联网平台,且不能挂载子设备,但可作为子设备挂载到网关下的设备。
网关子设备:不直接连接物联网平台,而是通过网关设备接入物联网平台的设备。网关与子设备说明,请参见网关与子设备。
网关设备:可以挂载子设备的直连设备。网关具有子设备管理模块,可以维持子设备的拓扑关系,将与子设备的拓扑关系同步到云端。

接入网关协议
自定义:表示子设备和网关之间是其它标准或私有协议。
Modbus:表示子设备和网关之间的通讯协议是Modbus。
OPC UA:表示子设备和网关之间的通讯协议是OPC UA。
ZigBee:表示子设备和网关之间的通讯协议是ZigBee。
BLE:表示子设备和网关之间的通讯协议是BLE。

连网方式
Wi-Fi
蜂窝(2G/3G/4G/5G)
以太网
LoRaWAN
仅公共实例和开启了Link WAN的企业版实例,支持该连网方式。基础型实例不支持该连网方式。

数据格式
ICA标准数据格式(Alink JSON):是物联网平台为开发者提供的设备与云端的数据交换协议,采用JSON格式。
透传/自定义:如果您希望使用自定义的串口数据格式,可以选择为透传/自定义。
您需在控制台提交数据解析脚本,将上行的自定义格式的数据转换为Alink JSON格式;将下行的Alink JSON格式数据解析为设备自定义格式,设备才能与云端进行通信。

最后创建产品成功后,如图所示:
在这里插入图片描述
6、创建好后,查看产品的ProductSecret,如图所示:
在这里插入图片描述7、查看物模型通讯Topic,如图所示:
在这里插入图片描述

创建设备

步骤如下:
1、在产品列表界面点击管理设备来添加设备,如图所示:
在这里插入图片描述
2、添加设备,如图所示:
在这里插入图片描述
在这里插入图片描述
3、查看设备详情,如图所示:
在这里插入图片描述
4、查看设备MQTT连接参数,如图所示:
在这里插入图片描述
在这里插入图片描述
5、查看DeviceSecret,如图所示:
在这里插入图片描述
到此,阿里云物联网产品和设备通讯参数部署完毕,下面去部署FlexManager上的MQTT通讯。

三、FlexManager 实现MQTT通讯

FlexManager支持通过MQTT 推送第三方服务器接口,第三方服务器需符合FlexManager定义的MQTT协议文档接口。

1.FlexManager MQTT创建

在FlexManager平台软件中打开数据转发:
在这里插入图片描述
在配置连接列表中点击右上角加号添加MQTT连接:
在这里插入图片描述
在弹出的连接配置对话框中,配置文件名称自定义一个名字,代理平台这里我们要通讯的是阿里云物联网平台,所以选阿里。区域选项中我们设备在什么区域就先什么区域,没有的采取就近原则。注意这里的产品密钥、设备名称、设备密钥一定要跟阿里云物联网平台上创建的设备产品密钥、设备名称、设备密钥完全一直。通讯加密方式一般是默认采用hmacsha1,交互方式为物模型。常规配置中,MQTT版本协议一般采用3.0版本以上,keepAlive默认60,推送方式一般用周期推送,推送周期5s足够了。

在这里插入图片描述
连接模式选TCP连接
在这里插入图片描述
其他配置里面,离线缓存打钩,存储方式选择本地
在这里插入图片描述
获取连接参数一般都是前面设置无误后自动生成,到此点击确定,FlexManager的MQTT通讯参数就创建好了。
在这里插入图片描述

2.FlexManager MQTT通讯配置数据列表

1、添加数据列表
在这里插入图片描述
在弹出的对话框中,数据配置描述自定义一个名称即可,功能类别首选属性上报,功能设置为发布监控点数据。在json数据关连中分有发布主题的topic和订阅主题的topic。
在这里插入图片描述
在这里插入图片描述
在变量列表中,一般选择批量导入
在这里插入图片描述
在批量导入对话框中,监控点勾选选择全部,然后点击搜索图标,即可将这一套设备的所有数据点位传给阿里云物联网平台。
在这里插入图片描述
然后把所有数据点勾选,组合方式选择onenet,然后勾选默认生成MQTT变量名称,最后点击确定。
在这里插入图片描述
到此,点击确定后,数据点列表即创建完毕
在这里插入图片描述
然后,点击数据列表配置同步
在这里插入图片描述
最后点击下拉键,选择启用和发布该MQTT通讯
在这里插入图片描述
当圆点变绿时即表示发布启用此MQTT通讯成功
在这里插入图片描述

四、FlexManager和阿里物联网平台MQTT通讯结果

FlexManager端数据一览:
在这里插入图片描述
阿里物联网平台启动信息监控:

在这里插入图片描述
阿里物联网平台收到的信息:
{“Status”:“false”,“clientId”:“null”,“RequestId”:“null”,“InstanceId”:“iot-06z00csldjyqqon”,“Params”:“{“设备自动”:{“value”:1},“EDI产水流量”:{“value”:220.67},“设备手动”:{“value”:0},“超滤进水压力”:{“value”:0.28},“超滤进水温度”:{“value”:26.4},“一级膜前压力1”:{“value”:-0.01},“一级产水流量”:{“value”:0.0},“一级膜前压力2”:{“value”:-0.01},“EDI水箱液位”:{“value”:124},“输送回水电阻”:{“value”:1.52},“一级浓水流量”:{“value”:0.0},“EDI进水压力”:{“value”:0.05},“一级产水电导”:{“value”:3.7},“EDI产水温度”:{“value”:28.6},“输送压力”:{“value”:0.43},“超滤产水流量”:{“value”:0.0},“原水电导”:{“value”:60.0},“手动状态”:{“value”:0},“自动状态”:{“value”:1},“EDI产水电阻”:{“value”:2.2}}”,“Time”:“2022-08-28 16:04:43.385”,“Operation”:“Check”,“Code”:“6332”,“Reason”:“tsl parse failed”,“UtcTime”:“2022-08-28T16:04:43.385+0800”,“IotId”:“Q40j87XQF149n1qTgutggfki00”,“ResultData”:“{“设备自动”:“5092 - property not found”,“EDI产水流量”:“5092 - property not found”,“设备手动”:“5092 - property not found”,“超滤进水温度”:“5092 - property not found”,“超滤进水压力”:“5092 - property not found”,“一级膜前压力1”:“5092 - property not found”,“一级膜前压力2”:“5092 - property not found”,“一级产水流量”:“5092 - property not found”,“输送回水电阻”:“5092 - property not found”,“EDI水箱液位”:“5092 - property not found”,“一级浓水流量”:“5092 - property not found”,“EDI进水压力”:“5092 - property not found”,“一级产水电导”:“5092 - property not found”,“输送压力”:“5092 - property not found”,“EDI产水温度”:“5092 - property not found”,“超滤产水流量”:“5092 - property not found”,“自动状态”:“5092 - property not found”,“手动状态”:“5092 - property not found”,“原水电导”:“5092 - property not found”,“EDI产水电阻”:“5092 - property not found”}”,“Content”:“null”,“TraceId”:“0a3062fc16616738833562501d4ede”,“ProductKey”:“XXXXXXX”,“BizCode”:“ThingModel”,“DeviceName”:“rtyu”,“MessageId”:“”}
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了FlexManager和阿里云物联网平台的MQTT通讯,而FlexManager提供了大量能使我们快速转发设备云数据的方法和通讯方式,同学们可以多深入了解一下FlexManager。下一篇将具体讲述基于FlexManager的基础上进行私有化APP客户端开发的操作细节,欢迎同学们进一步的来学习。

猜你喜欢

转载自blog.csdn.net/weixin_41729677/article/details/126568466