EG边缘计算网关连接中移ONENET物联网平台(MQTT协议)

news/2024/9/18 0:50:06/ 标签: 边缘计算, 物联网, MQTT, 中移ONENET

上文:EG边缘计算网关连接阿里云物联网平台(MQTT协议)

需求概述

本章节主要实现一个流程:EG8200mini采集Modbus RTU数据,通过MQTT协议连接中移ONENET物联网平台

Modbus RTU采集此处不做过多赘述,可参考其他案例(串口读取Modbus传感器数据)介绍。下文默认已经采集到Modbus RTU数据。

要采集的Modbus点位表:

地址(Doc)

数据类型

属性

名称

00001

Boolean

读写

MotorControl1

00002

Uint16

读写

MotorControl2

40001

Uint16

读写

Requency1

40002

Uint16

读写

Requency2

需求分析

网关配置:

第一步:采集Modbus RTU数据

第二步:拼接Json

第三步:MQTT上报并接收平台响应

平台配置:

第一步:添加产品

第二步:添加物模型

第三步:添加设备

第四步:数据展示

需求实现

网关配置

第一步:采集Modbus从机的数据

此处为采集Modbus RTU数据,不在过多赘述,可参考其他案例。采集到Modbus RTU的流程如下:

此处为语雀内容卡片,点击链接查看:Modbus RTU 读数据 · IOTRouter

源码:

[{"id":"d968892da4e40a46","type":"inject","z":"b7c6f1e56286d94a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":480,"y":1780,"wires":[["9b935c0dd6a63827","3bc2eb81af744a6d"]]},{"id":"9b935c0dd6a63827","type":"modbusRead","z":"b7c6f1e56286d94a","name":"读线圈","uid":"1","dataType":"1","len":"120","modbus":"f4b98c3be57ddcad","columns":[{"Key":"MotorControl1","Address":"0","Type":"23","Tdata":""},{"Key":"MotorControl2","Address":"1","Type":"23","Tdata":""}],"x":670,"y":1780,"wires":[["de1ce0dfa2e082f8"]]},{"id":"30fa1cad395c11c4","type":"modbusRead","z":"b7c6f1e56286d94a","name":"读频率","uid":"1","dataType":"3","len":"120","modbus":"f4b98c3be57ddcad","columns":[{"Key":"Requency1","Address":"0","Type":"1","Tdata":""},{"Key":"Requency2","Address":"1","Type":"1","Tdata":""}],"x":670,"y":1860,"wires":[["de1ce0dfa2e082f8"]]},{"id":"de1ce0dfa2e082f8","type":"join","z":"b7c6f1e56286d94a","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"0.5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":870,"y":1820,"wires":[["b53287da47908499"]]},{"id":"3bc2eb81af744a6d","type":"delay","z":"b7c6f1e56286d94a","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":470,"y":1860,"wires":[["30fa1cad395c11c4"]]},{"id":"b53287da47908499","type":"debug","z":"b7c6f1e56286d94a","name":"调试 254","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1040,"y":1820,"wires":[]},{"id":"f4b98c3be57ddcad","type":"modbus config","name":"","model":"2","host":"127.0.0.1","port":"502","serialport":"/dev/ttyAS3","baudrate":"115200","databits":"8","stopbits":"1","parity":"none","timeout":"50","reqtimeout":"1000"}]
第二步:拼接Json

参考ONENETonJson协议MQTT数据格式以及平台配置第二步的物模型设置。将网关配置第一步采集的数据JSON格式化:

上行Json示例:

{

"id": "123",

"version": "1.0",

"params": {

"Power": {

"value": "on",

"time": 1524448722123

},

"WF": {

"value": 23.6,

"time": 1524448722123

}

}

}

平台下行反馈Json示例:

{

"id": "123",

"code": 200,

"msg": "xxxx"

}

此处为语雀视频卡片,点击链接查看:onenet上报封装.mp4

源码:

var RS485_RECV = msg.payload
var time = Date.now()var pid = "31ACZV4snl"
var deviceName = "device001"
var topic = `$sys/${pid}/${deviceName}/thing/property/post`
msg.topic = topic
var mqttSend = {"id": "123","version": "1.0","params": {"DO1": {"value": RS485_RECV.MotorControl1 ? true : false,"time": time},"DO2": {"value": RS485_RECV.MotorControl2 ? true : false,"time": time},"frequency1": {"value": RS485_RECV.Requency1,"time": time},"frequency2": {"value": RS485_RECV.Requency2,"time": time}}
}msg.payload = JSON.stringify(mqttSend)
return msg;
第三步:MQTT上报

使用MQTT发布节点,参考平台配置第四步的内容填写MQTT连接参数:

pid:产品ID

device-name:设备名称

设备属性上报Topic:$sys/{pid}/{device-name}/thing/property/post

上报响应订阅topic:$sys/{pid}/{device-name}/thing/property/post/reply

此处为语雀视频卡片,点击链接查看:onenet数据上报.mp4

平台配置

第一步:添加产品

进入ONENET物联网平台

产品开发->创建产品:

所属地址:自由选择

节点类型:网关设备

协议类型:MQTT

数据格式:oneJson

联网方式:自定义

开发方案:自定义方案

产品厂商:自定义

产品型号:自定义

品牌名称:自定义

此处为语雀视频卡片,点击链接查看:添加产品.mp4

第二步:添加物模型

产品开发->设置物模型->添加自定义模型:

此处为语雀视频卡片,点击链接查看:添加物模型.mp4

第三步:添加设备

设备接入管理->设备管理->添加设备:

所属产品:选择第一步创建的产品

设备名称:自定义

设备描述:自定义

此处为语雀视频卡片,点击链接查看:ev_20240702_173246.mp4

第四步:激活设备

参考文档MQTT设备连接:

MQTT连接参数:

连接地址:mqtts.heclouds.com
端口:1883
clientId:设备名称
username:产品ID
password:计算后的token(参考下一步说明)

Token计算参考文档Token计算:

res:products/31ACZV4snl                              (规则products/{产品ID})
et:1721859317                                        (失效时间)
key:awGbZ4HLsXkvaxOlixv/642tOZM3dXUzf+Xd6UnV098=     (产品key)

根据上述步骤获取的连接参数:

地址:mqtts.heclouds.com
端口:1883
clientId:device001
username:31ACZV4snl
password:version=2018-10-31&res=products%2F31ACZV4snl&et=1721791062&method=md5&sign=iDH4WvVwIGlpRkFlBC1Eow%3D%3D

MQTT连接参数配置到MQTT发布节点

此处为语雀视频卡片,点击链接查看:MQTT-onenet配置.mp4

此时可以看到设备已经在线:

第五步:数据展示

设备管理->详情->属性:

网关触发数据发送,可以看到ONENET物联网平台物模型数据更新:

总结

EG边缘计算网关与中移ONENET物联网平台的无缝对接,用户可以轻松实现对工业设备、传感器等现场设备的远程监控和管理。EG网关负责数据采集和协议转换,ONENET平台提供云端数据处理、分析与可视化,形成了一个高效、稳定的物联网系统。利用MQTT协议的轻量高效特点,确保设备数据能够及时、可靠地上传到云平台,实现工业设备的智能化和远程控制。

更多了解:成都纵横智控


http://www.ppmy.cn/news/1525607.html

相关文章

在线小说|基于java的小说阅读系统小程序(源码+数据库+文档)

在线小说|小说阅读系统|小说阅读系统小程序 目录 基于java的小说阅读系统小程序 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布…

MySQL一:在Ubuntu下安装MySQL数据库

目录 前言 1.查看操作系统版本 2.添加MySQLAPT源 2.1下载发布包 ​编辑 2.2安装发布包 3.安装MySQL 4.查看MySQL状态 5.开启自启动 ​编辑 6.登录MySQL 前言 操作系统版本为Ubuntu 22.04.6LTS 1.查看操作系统版本 lsb_release -a 2.添加MySQLAPT源 2.1下载发布包 M…

鸿蒙(API 12 Beta6版)超帧功能开发【顶点标记】

概述 OpenGTX是GPU Turbo X的开放式入口,根据游戏开发者主动提供的游戏过程中的关键信息,使能LTPO(动态帧率/刷新率)等游戏加速方案,助力游戏开发者打造高画质、高流畅、低功耗极致体验。LTPO通过动态感知游戏渲染状态…

ACL 2024:交叉领域情感分析——论文阅读笔记

前言 阅读了一篇ABSA的论文,在这里写下自己的一些理解小笔记,可能有点小乱,原文在这下面: 论文链接:Refining and Synthesis: A Simple yet Effective Data Augmentation Framework for Cross-Domain Aspect-based Sen…

vue2响应式系统是如何实现的(手写)

引言 喜欢请点赞,支持点在看。 关注牛马圈,干货不间断。 忆往昔 回头看,已经使用vue2多年,虽然也掌握了其他几种前端框架,但对vue2是真爱。 核心概念 Object.defineProperty Vue 2的响应式系统核心是使用了Object.de…

深入理解java并发编程之aqs框架

跟synchronized 相比较,可重入锁ReentrankLock其实原理有什么不同? 所得基本原理是为了达到一个目的;就是让所有线程都能看到某种标记。synchronized通过在对象头中设置标记实现了这一目的,是一种JVM原生的锁实现方式。而Reentran…

​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​

1. 请尽可能详细地说明,进程和线程的区别,分别有哪些应用场景?进程间如何通信?线程间如何通信?你的回答中不要写出示例代码。 进程和线程是操作系统中的两个基本概念,它们在计算机系统中扮演着不同的角色&…

《数据结构(C语言版)第二版》第八章-排序(8.5-归并排序、8.6基数排序、8.7 外部排序)

8.5 归并排序 (Merging Sort) 【基本思想】 将两个或两个以上的有序表合并成一个有序表的过程。 将两个有序表合并成一个有序表的过程称为2-路归并,2-路归并最为简单和常用。 假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列…

Git换行符自动转换参数core.autocrlf的用法

core.autocrlf 是 Git 中用于控制换行符自动转换的配置选项。它有以下几个可能的值: 1. true 作用:在 checkin 时将 CRLF 转换为 LF,在 checkout 时将 LF 转换为 CRLF。适用场景:适用于 Windows 用户,希望在本地文件…

如何让Windows控制台窗口不接受鼠标点击(禁用鼠标输入)

一、简述 在我们编写控制台应用程序时,默认情况下程序的打印输出会在控制台窗口中进行显示,我们在写服务功能时在窗口中会不断打印消息输出,这个时候如果使用鼠标点击了控制台窗口,会阻塞程序的继续运行,导致我们的程…

Python安装:Mac 使用brew 安装Python2 和 Python3

安装python ## python2 brew install python ## python3 brew install python3出现错误 Error: An unexpected error occurred during the brew link step The formula built, but is not symlinked into /usr/local Permission denied dir_s_mkdir - /usr/local/Frameworks …

uniapp媒体

uni.previewImage实现图片放大预览 // 图片预览函数function onPreview(index) {// 收集所有图片的urlvar urls pets.value.data.map(item > item.url)// 预览图片uni.previewImage({current: index, // 当前预览的图片索引urls: urls // 所有图片的url数组})}

HarmonyOS】ArkTS学习之基于TextTimer的简易计时器的elapsedTime最小时间单位问题

本文旨在纪录自己对TextTimer使用过程的疑惑问题 我在查看教程时候,发现很多博客在onTimer(event: (utc: number, elapsedTime: number) > void) 这里提到elapsedTime:计时器经过的时间,单位为毫秒。我不清楚是否为版本问题。 在我查看ver…

编写XBOX控制器实现鼠标键盘输入

1.核心部分, XINPUT输入封装 XInput封装https://mp.csdn.net/mp_blog/creation/editor/1420701282.对话框窗口编写 Win32 对话框封装-CSDN博客https://blog.csdn.net/Flame_Cyclone/article/details/142110008?spm1001.2014.3001.5501 3.使用到的其他封装 字符串编码转换与…

Azure web app has no access to openai private endpoint in virtual network

题意:"Azure Web 应用无法访问虚拟网络中的 OpenAI 私有端点。" 问题背景: I am trying to host a web application similar to a private ChatGPT instance within a secluded virtual network, ensuring that theres no external internet …

以太网--TCP/IP协议(二)

上文中讲述了IP协议,本文主要来讲一下TCP协议。 TCP协议 (1)端到端通信 直接把源主机应用程序产生的数据传输到目的主机使用这 些数据的应用程序中,就是端到端通信。 (2)传输层端口 公认端口&#xff0…

CCF刷题计划——训练计划(反向拓扑排序)

训练计划 计算机软件能力认证考试系统 这道题70分还是很好拿的。后面30分需要用到 反向拓扑排序 ,相对而言就麻烦点,需要逆序遍历。不着急,我们慢慢来。首先给出70分的代码。 本题可以学到:反向拓扑排序 70分题解:…

红黑树的删除

文章目录 前言一.删除的节点左子树右子树都有二.删除的节点只有左/右子树删除调整操作 三.删除的节点没有孩子1.删除的节点为红色2.删除的节点为黑色1).兄弟节点为黑色(1).兄弟节点至少有一个红色的孩子节点LL型RR型RL型LR型 (2).兄弟节点没有孩子或所有孩子为黑色 2).兄弟节点…

【贪心算法】贪心算法

贪心算法简介 1.什么是贪心算法2.贪心算法的特点3.学习贪心的方向 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.什么是贪心算法 与其说是…

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…