jetlinks物联网平台学习3:mqtt协议及物模型

news2024/9/27 9:04:35

mqtt协议及物模型

  • 1、创建产品
  • 2、配备设备接入方式
  • 3、上传消息协议
  • 4、填写网关信息
  • 5、配置mqtt认证信息
  • 6、配置物模型
  • 7、创建设备
  • 8、使用MQTT X模拟设备接入
  • 9、mqttx实现设备->平台 平台->设备 消息发送
    • 9.1、属性上报
    • 9.2、获取最新属性值(读取属性)
    • 9.3、回复读信息
    • 9.4、属性写入
    • 9.5、属性写回复

当前后端启动以后。根据步骤使用平台

1、创建产品

产品是设备的集合,虚拟的。一个产品管理多个设备。
设备是物联网关键要素,可以连接实际的设备

物联网->设备管理->选择产品,填写产品基础信息

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

直连设备:直接连接平台的设备
网关设备:物理网关设备
网关子设备:无法直接入网的设备需要依靠网关子设备携带报文的设备。

2、配备设备接入方式

产品详情->选择设备接入Tab页
在这里插入图片描述
点击设备接入
一开始没有这个界面
在这里插入图片描述
需要先接入网关
在这里插入图片描述
点击新增,选择mqtt直连接入
在这里插入图片描述
在这里插入图片描述
填1883端口
ip填自己的ip,公网ip,点击确认

在这里插入图片描述

再选择它,点击下一步

3、上传消息协议

jar包在文章中可取

https://hanta.yuque.com/px7kg1/ryf1pd/ikiyz2ao2kagne1g

在这里插入图片描述

在这里插入图片描述
上传jar包协议后。点击确认。

在这里插入图片描述
选择它,点击下一步

4、填写网关信息

在这里插入图片描述

保存

5、配置mqtt认证信息

产品详情->设备接入->MQTT认证配置,填写secureId和secureKey, 本文使用的secureId为admin,secureKey为admin

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

点击启动产品
在这里插入图片描述

6、配置物模型

产品查看详情,选择物模型Tab

在这里插入图片描述

三个属性数据类型double,精度2(2个小数点)
在这里插入图片描述
属性来源:设备
在这里插入图片描述

读写类型:读、写、上报
在这里插入图片描述
配置均不用配置

7、创建设备

在这里插入图片描述
启用设备
在这里插入图片描述

8、使用MQTT X模拟设备接入

MQTT X 是一款开源的 MQTT 桌面测试客户端,支持Windows、Mac和Linux操作系统,可用于验证设备是否可与物联网平台正常连接,并通过Topic订阅和发布消息。本文以Windows系统下MQTT.X为例,介绍设备使用MQTT协议模拟接入物联网平台。

https://hanta.yuque.com/px7kg1/ryf1pd/ikiyz2ao2kagne1g
此链接可以下载mqtt工具

client Id:
在这里插入图片描述

host:
在这里插入图片描述
远端ip

MQTT认证配置:
在这里插入图片描述
这个账户密码。来自于:
https://demo.jetlinks.cn/api/mqtt-auth-generator.html

在这里插入图片描述
点击生成用户名密码。将生成的填写进mqtt

然后点击connect

在这里插入图片描述
mqtt会提示连接成功。此时平台的设备也“上线”

在这里插入图片描述
第一步工作完成

9、mqttx实现设备->平台 平台->设备 消息发送

9.1、属性上报

Topic:/{productId}/{deviceId}/properties/report
方向:设备->平台

{
	"deviceId": "1642736581599657984",
	"properties": {
		"temperature": 38.5
	}
}

在这里插入图片描述

在这里插入图片描述
点击发送

此时平台
在这里插入图片描述
这是正常的。

9.2、获取最新属性值(读取属性)

Topic:/{productId}/{deviceId}/properties/read
方向:平台->设备
前提是物模型选择了读

在这里插入图片描述
点击以后,mqtt在监听状态下会收到一则消息

在这里插入图片描述
取出这个消息的messageId。称为消息id。设备回复平台时需要相同的消息id

9.3、回复读信息

Topic:/{productId}/{deviceId}/properties/read/reply
方向:设备->平台

{
	"deviceId": "1642736581599657984",
  	"messageId":"1839338167816441857",
	"properties": {
		"wet": 10.1
	}
}

在这里插入图片描述

读取属性和设置属性均需要设备主动回复,显示超时通常是以下几种情况引起的:

  1. 设备回复时未携带messageId
  2. 设备回复时messageId和指令报文内messageId不一致
  3. 设备10s内未回复消息或超过10s回复消息
  4. 回复报文超长,超过网络组件接收报文数据大小

9.4、属性写入

Topic:/{productId}/{deviceId}/properties/write
方向:平台->设备

前提是物模型设置了写

在这里插入图片描述

在这里插入图片描述
mqtt会收到消息,同理可取出messageId进行回复

9.5、属性写回复

Topic:/{productId}/{deviceId}/properties/read/reply
方向:设备->平台

{
	"deviceId": "1838607793663078400",
  	"messageId":"1839340370648125441",
	"properties": {
		"wet": 21
	}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2169523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EEPROM手册笔记

目录 一、特征描述二、功能描述三、总线特性四、设备寻址五、写入操作1.字节写入2.页写入 六、读取操作1.当前地址读取2.随机读取3.顺序读取 一、特征描述 1.Microchip Technology Inc. 24AA04/24LC04B (24XX04*) 是一款 4 Kbit 电气可擦除 PROM。该器件…

ChatDev:基于对话的多智能体协同软件开发框架

相关代码资源见文末 论文地址:ChatDev: Communicative Agents for Software Development - ACL Anthologyhttps://aclanthology.org/2024.acl-long.810/ 1. 概述 1.1. 当前的挑战 软件开发是一个复杂且多层次的过程,要求具备不同技能的团队成员之间密切合作。例如,架构师…

老人跌倒扶不扶?涪城三职工给出响亮答案

一、关键时刻的选择 于绵阳市三江湖湿地公园,平凡午后,三名环卫人员刘后刚、严荣礼及杨树坤正紧张作业。突闻呼救声,一位老人在石阶上跌倒需援手。在紧急关头,他们果断抛却工具,疾速赶至老人身边。此举不仅展现了他们…

了解网络的相关信息

文章目录 前言了解网络的相关信息1. ip是什么?1.1. 公网IP:1.2. 私有IP:1.2.1. 示例 2. 子网掩码3. 子网掩码的划分网段是什么4. 特殊的回路IP网段(127.0.0.1)5. 端口 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊&#x…

学习C++的第七天!

1.虚函数是在基类中用 virtual 关键字声明的函数,可以在派生类中被重写。纯虚函数是在虚函数的基础上,在基类中被初始化为 0 的函数,含有纯虚函数的类是抽象类,不能被实例化。 2.如果基类的析构函数不是虚函数,当通过…

(done TODO:从频谱到时域要考虑负频波和余弦波?) 傅里叶变换知识补充

参考:https://www.bilibili.com/video/BV1rC4y1E7FD/?vd_source7a1a0bc74158c6993c7355c5490fc600 sinx 和 sin2x sin3x 等整数倍频率的正弦波都是正交的 cosx 和 cos2x cos3x 等整数倍频率的余弦波都是正交的 这成为三角函数系的正交性 up主从分解出来的波恢复成…

buuctf [ACTF2020 新生赛]Include

学习笔记。 开启靶机。 进入靶场: 我们跟进 tips瞅瞅: 额,纯小白,能想到的就是先F12看看,在CTRLu、以及抓包。 得,不会了,看wp呗,不会死磕没脑子0,0? 参考:…

解决 Adobe 盗版弹窗

在这个文件夹下删除 Adobe CCXProcess 然后重装。 Adobe Premiere Pro 2024 (v24.6.1) Multilingual :: Варез от m0nkrusa [Warez by m0nkrus] (monkrus.ws) Adobe Photoshop 2024 (v25.12) Multilingual :: Варез от m0nkrusa [Warez by m0nkrus] (monkrus.…

FastAPI 第五课 -- 基本路由

目录 一. 前言 二. 根路径路由 三. 路径参数 四. 启动应用和测试路由 一. 前言 在 FastAPI 中,基本路由是定义 API 端点的关键。每个路由都映射到应用程序中的一个函数,用于处理特定的 HTTP 请求,并返回相应的响应。 二. 根路径路由 创…

矩阵求逆的几种方法

1. 定义 对于矩阵的运算中定义了加减法、乘法(包含数乘)但未定义矩阵除法,可以简单认为矩阵的逆即为矩阵除法。矩阵求逆是线性代数中的一个重要概念,在很多应用领域都有广泛的应用。对于一个给定的方阵 ( A ),如果存在…

全志A133开发板安卓系统调试串口复用成普通串口方法-触觉智能EVB1309

本文介绍了在开发板/主板串口接口不够的情况下,可将调试串口改为普通串口使用,下面为大家分享修改方法。基于触觉智能EVB1309开发板演示,搭载全志A133芯片,具有高性能超低功耗优势,待机功耗低至15mW。 1、内核配置 源…

FortiGate 无线组网

无线管理与配置 FortiAP 连接 internal 接口之后自动获得 ip 地址:192.168.1.xxx/24在 FortiGate 中创建 SSIDFortiGate 自动发现 FortiAP,将 FortiAP 添加到 FortiGate将 SSID 和 FortiAP 关联创建防火墙策略 下面我们就来一起看看在 FortiGate 中该如…

【HTTP 和 HTTPS详解】3

HTTP 状态代码 HTTP 状态代码是服务器发送给客户端的三位数字,用于指示客户端请求的结果。它们分为五类:信息性(100-199)、成功(200-299)、重定向(300-399)、客户端错误&#xff08…

【java笔记】 5 接口使用举例

// 导入Swing库中的消息对话框组件 import javax.swing.*; // 定义一个Circle类,该类实现了ShapeInterface接口 public class Circle implements ShapeInterface { // 定义一个私有变量radius来保存圆的半径 private double radius; // 默认构造函数,初…

第十一章 Java多线程--阻塞队列--PriorityBlockingQueue

目录 一、PriorityBlockingQueue基础概念 主要特点 常用方法 使用示例 二、PriorityBlockingQueue深入了解 1 PriorityBlockingQueue介绍 2 二叉堆结构介绍 3 PriorityBlockingQueue核心属性 4 PriorityBlockingQueue的写入操作 4.1 offer基本流程 4.2 offer扩容操作…

【伺服】Servo入坑学习记录①

前言 这是一个自我摸索的过程,如果有什么良好的、或严厉的批评和建议,恳请指教, 万分感谢经典控制理论中,有几个重要的概念和工具,用于分析和设计控制系统。以下是对 传递函数、伯德图、奈奎斯特图、稳定裕度 和 带宽 …

【Elasticsearch】-文本向量化

由于使用了QAnything 本地知识库应答平台 内部已集成Embedding 文本向量化服务,因此不在单独部署。 基于 transformers 如果需要单独部署,可以参看 BCEmbedding/README_zh.md at master netease-youdao/BCEmbedding GitHub 从启动脚本中可以看出&am…

脚手架是什么?详细版+通俗易懂版!!!!!!

脚手架(Scaffolding)在软件开发领域,特别是在前端开发和全栈开发环境中,是一个术语,用来描述一个辅助工具或框架,它旨在帮助开发者快速搭建项目的基础结构和开发环境。这些基础结构可能包括项目的目录结构、…

Android Input系统原理一

1. getevent 命令使用 getevent -h getevent -lrt-t 表示事件发生时间 -l label event types and names in plain text 表示把event事件类型名字打出来 -r 显示一下接受事件速率130|console:/ # getevent -lrt could n…

aloam框架laserMapping.cpp源码解读

一、详细源码解读 #include <math.h> #include <vector> #include <aloam_velodyne/common.h> #include <nav_msgs/Odometry.h> #include <nav_msgs/Path.h> #include <geometry_msgs/PoseStamped.h> #include <pcl_conversions/pcl_c…