猿创征文|设备云FlexManager和阿里云MQTT通讯实例详解
Posted 一直在尽头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猿创征文|设备云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客户端开发的操作细节,欢迎同学们进一步的来学习。
以上是关于猿创征文|设备云FlexManager和阿里云MQTT通讯实例详解的主要内容,如果未能解决你的问题,请参考以下文章
猿创征文|不会代码也能玩开发?基于华为云 IoT 快速实现 0 代码体验物联网设备上云
猿创征文|不会代码也能玩开发?基于华为云 IoT 快速实现 0 代码体验物联网设备上云
猿创征文|云原生 | 24Docker运行数据库实战之MongoDB
猿创征文|云原生 | 25Docker运行数据库实战之Redis