Air780E

2023-11-18

目录

基础资料

探讨重点

实现功能

硬件准备

软件版本

在雁飞格物平台上创建产品

1、创建产品

2、查看雁飞格物平台接入协议

组成ClientId

组成userName

3、设备鉴权信息

鉴权参数计算(python版):

4、MQTT直连雁飞格物平台

5、发布与订阅消息

​6、订阅

订阅云端响应属性上报主题

7、发布


基础资料

基于Air780E开发板:Air780E文档中心

简介:AT开发

探讨重点

本系列主要探讨MQTT手动接入联通雁飞格物平台的基本操作及手动鉴权步骤、信息订阅及发布的基本原理。

参考阅读:物联网模组AT命令接入云平台(1)-MQTT基本原理及步骤

实现功能

MQTT手动接入联通雁飞格物平台的基本操作及手动鉴权。

硬件准备

Air780E开发板1块,SIM卡1张。

软件版本

Revision: AirM2M_780E_V1108_LTE_AT

任意串口调试工具(本文使用llcom1.1.1.9,波特率9600)

在雁飞格物平台上创建产品

1、创建产品

雁飞格物平台​​​​​​​

​产品名称根据自己需求填写

设备类型:直连设备

设备接入协议:MQTT

联网方式:2G/3G/4G/5G

认证方式:设备密钥

物模型定义根据自己需求填写、演示选择温湿度监测单元。

标准功能定义

功能类型

功能名称

标识符

是否必选

数据类型

属性

温度

temperature

必选

float

属性

经度

longitude

必选

double

属性

纬度

latitude

必选

double

属性

海拔

altitude

必选

double

属性

湿度

humidity

必选

float

属性

省电模式

powerSavingMode

必选

enum

服务

蜂鸣告警控制

buzzerControl

必选

--

点击提交即可

点到设备一栏,新建设备

产品一栏选择上一步创建的产品,设备名称、deviceKey、IMEI根据自身需要填写

注意:!!!如果deviceKey为空,则联通物联网平台会自动生成

基本信息

产品名称

AIR780E 查看产品

productKey

cu10k330sbs*****

设备状态

未激活

设备名称

4600112503*****

deviceKey

medlar

认证方式

设备密钥

设备类型

设备

接入协议

MQTT

IP地址

--

deviceId

重置

IMEI

4600112503*****

iotId

b2a955f59eaf4694bf1d8dbee9d*****

点击提交后,设备即可创建成功

2、查看雁飞格物平台接入协议

文档展示 - 雁飞格物平台 (cuiot.cn)

MQTT协议规定连接参数须有ClientID,Username和Password三个字段,雁飞格物平台规定的三元组格式详细信息可在接入文档中查看

ClientId:{deviceId}|{productKey}|{signMethod}|{authType}|{operator}

Username:{deviceKey}|{productKey}

Password:将deviceId, deviceKey,productKey参数值依次进行拼接再进行hmac_sha256或sm3得到

组成ClientId

operator:由协议可见,当联网方式为蜂窝网时,operator字段表示运营商标识符,这里测试用的是移动卡,operator字段则为2

deviceId:deviceId需要和operator搭配使用,operator为1、2、3、4任意一个时,deviceId为流量卡的iccid 898601228012082*****

我们发AT+ICCID查一下当前设备流量卡的iccid,作为deviceId来使用

​authType:一机一密填0即可

signMethod:此次示例使用hmac_sha256,写0即表示接入验证用的是hmac_sha256

productKey:在产品列表即可找到 cu10k330sbs*****

​到此,clientId已经拼接好了,拼接后的clientId如下

​ 898601228012082*****|cu10k330sbs*****|0|0|2

组成userName

​在设备详细信息内找到deviceKey和productKey,拼接在一起即可

userName组成如下:

username:medlar|cu10k330sbs*****

组成password

​ 如文档所说,将deviceId,deviceKey和productKey拼接再进行hmac_sha256加密即可得到password

​ 加密密钥为设备的deviceSecre,在设备详情页中可以找到

3C09BC967DA7C2B53DE55B65*****F3B

3、设备鉴权信息

productKey

cu10k330sbs*****

deviceKey

medlar

deviceSecret

3C09BC967DA7C2B53DE55B65*****F3B

加密之前deviceId,deviceKey、productKey拼接的字符串为:

898601228012082*****medlarcu10k330sbs*****

密钥为3C09BC967DA7C2B53DE55B65*****F3B

加密后得到的password为

021e76d54221851be1307492a5a1abc3f6ad2031c96ca71d07ca34d0262*****

鉴权参数计算(python版):

def hmac_sha256(key, value):
    """
    hmacsha256加密
    return:加密结果转成16进制字符串形式
    """
    message = value.encode('utf-8')
return hmac.new(key.encode('utf-8'), message, digestmod=hashlib.sha256).hexdigest()
str="898601228012082*****medlarcu10k330sbs*****"
key="3C09BC967DA7C2B53DE55B65*****F3B"
print(hmac_sha256(key, str))

结果:021e76d54221851be1307492a5a1abc3f6ad2031c96ca71d07ca34d0262*****

4、MQTT直连雁飞格物平台

[2022/11/21 15:59:47.4123] ← AT+MCONFIG="898601228012082*****|cu10k330sbs*****|0|0|2","medlar|cu10k330sbs*****","021e76d54221851be1307492a5a1abc3f6ad2031c96ca71d07ca34d0262*****"
OK
[2022/11/21 16:00:48.7303] ← AT+MIPSTART="dmp-mqtt.cuiot.cn",1883
[2022/11/21 16:00:48.8542] → AT+MIPSTART="dmp-mqtt.cuiot.cn",1883
OK
[2022/11/21 16:00:49.1099] → 
CONNECT OK
[2022/11/21 16:00:50.4232] ← AT+MCONNECT=1,60
[2022/11/21 16:00:50.5276] → AT+MCONNECT=1,60
OK
[2022/11/21 16:00:50.6951] → 
CONNACK OK

5、发布与订阅消息

雁飞格物平台有固定的通信TOPIC,在设备详情页TOPIC列表内,这里演示设备上传物模型数据和订阅上传物模型响应功能

​属性定义在产品详情页的功能定义一栏内获取

​6、订阅

订阅云端响应属性上报主题

[2022/11/21 16:06:36.7815] ← AT+MSUB="$sys/cu10k330sbs*****/medlar/property/pub_reply",0
OK
[2022/11/21 16:06:37.0950] → 
SUBACK

7、发布

向设备上报属性的主题发布消息,消息携带设备的属性,不同的产品具有不同的属性,可以在设备物模型处查看

具体payload上传协议需要查看雁飞格物平台物模型文档 文档展示 - 雁飞格物平台 (cuiot.cn)

此处上报一条温度属性

[2022/11/21 16:12:24.6508] ← AT+MPUB="$sys/cu10k330sbs*****/medlar/property/pub",0,0,"{\22messageId\22:\22123\22,\22params\22:{\22key\22:\22temperature\22,\22value\22:23.4,\22ts\22:\221528292272000\22}}"
OK
[2022/12/06 16:40:18.8405] → +MSUB: "$sys/cu10k330sbs*****/medlar/property/pub_reply",55 byte,{"code":"000000","message":"Success","messageId":"123"}
平台返回success,表示属性上报成功

在设备列表的设备详情页、设备数据一栏内查看上报的数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Air780E 的相关文章

  • 覆盖 require 后调用 lua_getfield() 时崩溃

    这个问题与 Henri Menke 在这个问题中的回答相关 如何在 C 中获取预加载模块名称 https stackoverflow com questions 51510308 how to get preloaded module na
  • 如何将 Lua 嵌入到 Python 3.x 中?

    是否可以将 Lua 嵌入到 Python 3 x 中 如果是这样 我如何在我的 Python 程序中运行和执行 Lua 脚本 语言之间的交互有多好 例如 Lua 是否可以访问 Python 的所有变量和类以及 Python 是否可以访问 L
  • 迭代包括空行在内的行

    给定一个带有一些空行的多行字符串 我如何在Lua中迭代行包括空行 local s foo nbar n njim for line in magiclines s do print line and blank or line end gt
  • Lua - 尝试调用全局(零值)

    执行此代码时 出现错误 尝试调用全局 forId 零值 function execute args local itemid 526 local bone forId itemid this is where the error occur
  • 如何访问废弃的函数参数?

    在 Lua 中 调用带有多余参数的函数将简单地丢弃这些参数 有没有可能与debug库来访问这些被丢弃的参数 我不是在寻找可变参数函数 function test local info debug getinfo 1 u print info
  • Lua:冒号符号、“自我”和函数定义与调用

    我对定义 调用 Lua 函数时使用的冒号表示法感到非常困惑 我以为我已经明白了 直到我看到这段代码 function string PatternSafe str return str gsub pattern escape replace
  • 我应该用 C++ 封装 Lua 代码的哪些代码?

    我终于将 LuaBind 配置为与我的 C 项目一起使用 我最近发现 Tiled 地图编辑器可以选择将文件导出为 lua 所以我想尝试一下 我将使用什么代码来封装下面粘贴的代码以使其与我的 C RPG 项目一起使用 return versi
  • 循环直到在表中找到 2 个特定值?

    我试图找到一种更聪明的方法来解决这个问题 这是与游戏相关的代码的摘录 它循环遍历每个背包的每个插槽 直到找到铲子和绳子 local continue local foundShovel foundRope for i 0 Container
  • C 的哪些部分最可移植?

    我最近读到了 Lua 联合创始人 Luiz H de Figueredo 和 Roberto Ierusalimschy 的采访 他们讨论了 Lua 的设计和实现 至少可以说这是非常有趣的 然而 讨论的一部分让我想起了一些事情 Robert
  • Redis INCRBY 有限制

    我想知道是否有一种方法可以通过我的应用程序的单次往返在 Redis 中执行此操作 对于给定的键K 其可能值V是范围内的任意整数 A B 基本上 它有上限和下限 When an INCRBY or DECRBY发出命令 例如INCRBY ke
  • corona sdk中拖动物理对象

    我尝试在场景中拖动重力 0 0 的动态主体 我有一个主体类型为动态的正方形 以及一个主体类型为静态的图像 但是当将方形拖动到图像上时 它会产生一点力 但是可以超出图像并传递到另一边 如图所示 这是我拖动正方形的代码 local functi
  • 如何在aerospike中获取ttl为-1的记录集?

    我在aerospike中有很多记录 我想获取ttl为 1的记录 请提供解决方案 只是为了澄清 设置TTL 为 1 https github com aerospike aerospike client go blob master docs
  • 什么时候适合使用Lua这样的嵌入式脚本语言

    我玩 魔兽世界 大约有两年了 我对用来编写插件的 Lua 很好奇 由于到目前为止我读到的有关 Lua 的内容都是 快 轻 和 这太棒了 所以我想知道如何以及何时使用它 您需要在系统中嵌入像 Lua 这样的脚本语言的典型情况是什么 当您需要最
  • 安装Lua套接字库

    要么我太累了 要么我瞎了 我想学习 Lua 网络 因此我必须安装socketlib 所以我可以轻松地要求它 但我不知道我应该 要求 哪些文件 例子说 local socket require socket 但正如我所说 如果我使用 我不知道
  • 如何在我的 Lua 脚本中添加“睡眠”或“等待”?

    我正在尝试通过更改一天中的时间来为游戏制作一个简单的脚本 但我想快速完成 这就是我要说的 function disco hour minute setTime 1 0 SLEEP setTime 2 0 SLEEP setTime 3 0
  • Lua 访问表的键和值

    我想在关卡编辑器中读取 Lua 文件 这样我就可以以可视化格式显示其数据供用户编辑 如果我有一个像这样的 Lua 表 properties Speed 10 TurnSpeed 5 Speed显然是关键并且10价值 我知道如果我知道像这样的
  • 如何在lua中获取shell脚本的返回码?

    我正在lua中执行一个脚本 os execute sh manager scripts update system sh f 我想获得脚本的输出 如果退出状态为 7 则返回 7 I tried local output os execute
  • Lua 的标准(或最好支持的)大数(任意精度)库是什么?

    我正在处理大量无法四舍五入的数字 使用 Lua 的标准数学库 似乎没有方便的方法来保持精度超过某些内部限制 我还看到有几个库可以加载以处理大数字 http oss digirati com br luabignum http oss dig
  • Lua表在内存中是如何处理的?

    lua如何处理表的增长 是否相当于ArrayList在Java中 IE 需要连续的内存空间 并且当它变得大于已经分配的空间时 内部数组被复制到另一个内存空间 有什么聪明的方法来引导吗 我的问题是 表是如何存储在内存中的 我不是问如何在 Lu
  • 在Windows上使用gcc 5.3.0编译Lua 5.2.4模块

    我需要用 gcc 5 3 0 编译 Lua 5 2 4 模块 在 Windows 上 在此之前 我按照以下步骤构建 Lua 5 2 4 gcc c DLUA BUILD AS DLL c ren lua o lua obj ren luac

随机推荐

  • JavaScript 手写深拷贝

    深拷贝 深拷贝就是要拷贝的对象内的所有引用类型的属性进行完整的拷贝 也就是说拷贝出来的对象和原对象之间没有任何数据是共享的 所有的东西都是自己独占的一份 三步实现深拷贝 第一步 判断入参是值类型还是引用类型 值类型直接返回 if typeo
  • 数字图像处理课程设计-疲劳检测系统

    文章目录 数字图像处理课程设计 疲劳检测系统 前言 一 课程设计任务 二 设计框图 三 准备工作 四 任务流程 视频预处理 4 2图片分割 五 结果 六 项目总结 数字图像处理课程设计 疲劳检测系统 前言 此系统基于MATLAB设计 核心思
  • 系统稳定性设计原则:简单、冗余、标准化、健壮

    作者介绍 淇公 蚂蚁金服技术专家 热爱java和一些函数式语言 长期关注系统稳定性领域 因为base在分公司 需要经常去总部出差 所以搭乘飞机成了家常便饭 很多时候坐在飞机上会不由的感叹 设计制造这样精密复杂的机器的那帮人真的是了不起 他们
  • 如何获取Windows软件安装信息

    猜你感兴趣 使用Pyqt5玩转ChatGpt 内网文件共享服务 快速搭建私有pip镜像源 python设计模式 创建型模式 docker搭建私有git服务器 项目备份和迁移 redis持久化方案 说明 windows注册表中有两支子健存储有
  • Swagger3 注解使用(Open API 3.0)

    文章目录 前言 一 swagger 3 的使用 Swagger SpringFox 3 0 相关特性 SpringDoc 二 从 spring fox 迁移到 springdoc 三 使用 swagger3 注解代替 swagger2 的
  • 【算法/剑指Offer】从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

    题目描述 从上到下按层打印二叉树 同一层结点从左至右输出 每一层输出一行 struct TreeNode int val struct TreeNode left struct TreeNode right TreeNode int x v
  • (Oracle基础篇) Select检索数据

    Select语句语法 Select语句是日常使用最多的语句 它以select开头 其中最重要的部分就是Select和From关键字 这两项是查询当中必须的部分 其他子句可以根据实际的需求进行变动 获取指定字段数据代码 查询指定字段数据实例代
  • 如何在Jupyter Notebook中使用Tensorflow

    下边是原文链接 中文翻译如下 http stackoverflow com questions 35771285 using tensorflow through jupyter python 3 解决该问题主要参考Using a virt
  • 7个学习UI、UX设计一定要经历的步骤

    我们不是一些有才华的设计师 我们天生就有艺术天赋 后天我们学会了设计技巧 设计的根本目的是解决问题 设计是不断发现和解决问题 有许多设计领域 UI UX 产品设计师 平面设计师 交互设计师 信息架构师等 所以要找出你最感兴趣的设计专业 现在
  • 【C++入门】新增nullptr关键字详解

    1 C和C 中NULL的区别 ifdef cplusplus 定义这个符号就表示当前是C 环境 define NULL 0 在C 中NULL就是0 else define NULL void 0 在C中NULL是强制类型转换为void 的0
  • 使用externals配置,在VUE 工程中引入外部js文件,减少打包时间

    以VUE项目中引入echarts文件为例 第一步在VUE项目中找到index html文件 引入 第二步 在项目找到 build gt webpack base conf js module exports externals echart
  • CTF--web学习

    这是大二上学期主要学习的一些知识 分享一下 一 linux常见命令 Linux切换到超级管理员 sudo su 切换到普通用户 su username touch创建文件 mkdir创建文件夹 mkdir p aaa bbb ccc创建aa
  • Jupyter:数据分析和网络爬虫开发利器

    Jupyter是一种流行的数据分析和网络爬虫开发工具 它具有许多功能 使得在各种语言 如Python R和Julia 中编写 测试和调试代码变得简单 Jupyter的一个优点是 它允许用户在Web浏览器中与数据和可视化进行交互 无需在本地计
  • 解决webview不显示图片常用方法,亲测有效

    左图不显示图片 右边是解决后显示的 我是先截右边再截左边 所以时间上右边的早了 都有的代码如下 项目中用的dataBinding数据绑定 mBinding wvBaseWebView指的是webview控件 mBinding wvBaseW
  • STM32:Custom HID实现USB双向通信

    本文章主要讲了使用STM32的USB Device 实现控制板和电脑通信功能 从而实现 上位机对控制板进行调试 USB Device可以有多种类型 实现双向通信的话 推荐使用Custom HID类型 首先使用STM32CubeMx实现功能引
  • ffmpeg 音频常用命令

    ffmpeg的使用方式 ffmpeg options infile options i infile outfile options outfile Stream specifier Some options are applied per
  • Log4j学习笔记

    用了三四年的C 转向Java的怀抱 还是有诸多的不适应 C 中不论多复杂的Server 只要有GDB在手 总感觉debug都不是啥大事 程序运行期间的各种状态 都可以通过GDB轻松的获取到 而到了Java中 总感觉像是被困住了手脚 有力没法
  • 【JavaScript】npm、Yarn 和 pnpm 的区别

    npm Yarn 和 pnpm 都是用于管理和构建 JavaScript 项目的包管理工具 以下是它们之间的一些区别和特点 npm Node Package Manager npm 是 Node js 官方提供的包管理工具 是 JavaSc
  • 什么是数据中心IP,优缺点是什么?

    如果根据拥有者或者说发送地址来分类的话 可以将代理分为三类 数据中心ip 住宅ip 移动ip 本文我们来了解数据中心ip的原理以及他们的优势劣势 才能选择适合自己的代理 一 什么是数据中心ip代理 数据中心ip是由数据中心拥有和管理的IP的
  • Air780E

    目录 基础资料 探讨重点 实现功能 硬件准备 软件版本 在雁飞格物平台上创建产品 1 创建产品 2 查看雁飞格物平台接入协议 组成ClientId 组成userName 3 设备鉴权信息 鉴权参数计算 python版 4 MQTT直连雁飞格