当前位置: 首页 > news >正文

猿创征文|FlexManager与阿里云MQTT通讯

文章目录

  • 前言
  • 一、阿里云物联网平台是什么?
  • 二、阿里云物联网平台产品和设备创建操作
    • 1、总操作流程
    • 2、设备接入操作流程
  • 三、FlexManager 实现MQTT通讯参数操作
    • 1.FlexManager MQTT创建
    • 2.FlexManager MQTT通讯配置数据列表
  • 四、FlexManager和阿里物联网平台MQTT通讯结果
  • 总结


前言

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


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

一、阿里云物联网平台是什么?

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

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

在这里插入图片描述
使用物联网平台实现设备完整的通信链接,需要您自行完成设备端的设备开发、云端服务器的开发(云端SDK的配置)、数据库的创建、手机App的开发。在设备和服务器开发中,您需完成设备消息的定义和处理逻辑。
设备通过物联网平台上下行通信说明如下。
通信链路说明:
1、上行通信
设备通过MQTT协议与物联网平台建立长连接,上报数据(通过Publish发布Topic和Payload)到物联网平台。
通过AMQP消费组,将设备消息流转到您的业务服务器上。
通过物联网平台的云产品流转功能,处理设备上报数据,将处理后的数据转发到RDS、表格存储、函数计算、TSDB、企业版实例内的时序数据存储、DataHub、消息队列RocketMQ等云产品中,进行存储和处理。
2、下行指令
通过业务应用下发指令,使业务服务器调用基于HTTPS协议的API接口Pub,给Topic发送指令,将数据发送到物联网平台。
物联网平台通过MQTT协议,使用Publish发送数据(指定Topic和Payload)到设备端。

二、阿里云物联网平台产品和设备创建操作

1、总操作流程

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

2、设备接入操作流程

创建产品→创建设备→创建云网关→配置物模型→管理消息通信Topic→下载设备端SDK→开发设备接入
创建产品
产品是设备的集合,通常是一组具有相同功能定义的设备集合。例如,产品指同一个型号的产品,设备就是该型号下的某个设备。使用物联网平台接入设备前,您需在物联网平台控制台创建产品。本文介绍创建产品的具体操作。
操作步骤:
1、打开https://www.aliyun.com,登录物联网平台控制台。
在这里插入图片描述

2、在实例概览页面,找到对应的实例,单击实例进入实例详情页面。
在这里插入图片描述
3、在设备管路中点击产品。
在这里插入图片描述
4、在产品界面点击创建产品
在这里插入图片描述
根据实际需求直接创建产品。
在新建产品页签,按照页面提示填写信息,然后单击确认。
在这里插入图片描述
产品名称:
为产品命名。产品名称在账号内具有唯一性。例如,可以填写为产品型号。支持中文、英文字母、日文、数字、下划线(_)、短划线(-)、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格式数据解析为设备自定义格式,设备才能与云端进行通信。

最后创建产品成功后,如图所示:
在这里插入图片描述
查看ProductSecret
在这里插入图片描述
查看物模型通讯Topic
在这里插入图片描述
5、在产品列表界面点击管理设备来添加设备
在这里插入图片描述
6、添加设备
在这里插入图片描述
在这里插入图片描述
7、查看设备详情
在这里插入图片描述
8、查看设备MQTT连接参数
在这里插入图片描述
在这里插入图片描述
9、查看DeviceSecret
在这里插入图片描述
到此,阿里云物联网产品和设备通讯参数部署完毕,下面去部署FlexManager上的MQTT通讯。

三、FlexManager 实现MQTT通讯参数操作

FlexManager支持通过MQTT 推送第三方服务器接口,第三方服务器需符合我们定义的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客户端开发的操作细节,欢迎同学们进一步的来学习。

相关文章:

  • Linux指令——crontab
  • 程序员的中秋
  • mysql数据库的安装教程
  • 新电脑的正确打开方式——(近万字图文并茂详细分步骤讲解)【包括个性锁屏,磁盘分区……】等你来解锁哦
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • 【毕业设计】基于单片机的手势检测识别系统 - arduino 物联网嵌入式
  • 【Node.js】深度解析常用核心模块-path模块
  • C语言指针操作(六)*返回指针值的函数
  • 10. Vue 常用的修饰符的作用详解?
  • 第五篇 python 基本语法(一)
  • 猿创征文| JAVA Web的环境部署
  • Python基础(一) | Python的基本语法
  • 110道Java初级面试题及答案(最新Java初级面试题大汇总)
  • 简易版实现vue1.0
  • 6大面试技能树:JAVA基础+JVM+算法+数据库+计算机网络+操作系统,时刻为面试做准备!!
  • 自己简单写的 事件订阅机制
  • 【Amaple教程】5. 插件
  • angular2 简述
  • Git的一些常用操作
  • input实现文字超出省略号功能
  • JS 面试题总结
  • JSONP原理
  • Js基础知识(四) - js运行原理与机制
  • js学习笔记
  • js作用域和this的理解
  • MaxCompute访问TableStore(OTS) 数据
  • React 快速上手 - 07 前端路由 react-router
  • Redis学习笔记 - pipline(流水线、管道)
  • sessionStorage和localStorage
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 汉诺塔算法
  • 欢迎参加第二届中国游戏开发者大会
  • 如何胜任知名企业的商业数据分析师?
  • 一文看透浏览器架构
  • 用mpvue开发微信小程序
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 阿里云ACE认证之理解CDN技术
  • # Java NIO(一)FileChannel
  • (27)4.8 习题课
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .net与java建立WebService再互相调用
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @Import注解详解
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [20160807][系统设计的三次迭代]
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#]winform部署yolov5-onnx模型
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [C++]C++类基本语法
  • [codeforces]Recover the String
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符
  • [HackMyVM]靶场 VivifyTech