Air780EP- AT开发-阿里云应用指南

news2024/11/16 3:22:40

简介

使用AT方式连接阿里云分为一机一密和一型一密两种方式,其中一机一密又包括HTTP认证二次连接和MQTT直连两种方式

  • 关联文档和使用工具:
    • AT固件获取
    • 在线加/解密工具
    • 阿里云平台

准备工作

  1. Air780EP_全IO开发板一套,包括天线SIM卡,USB线,并烧录AT固件

在这里插入图片描述

  1. PC电脑,串口工具

  2. 准备设备证书及产品证书

    注意:下方证书信息仅为本教程使用,用户需要使用自己的证书信息

--设备证书
{
  "ProductKey": "k1hipglLdjU",
  "DeviceName": "868488076506128",
  "DeviceSecret": "fef32adf6dad46c2c7cbf335d3a7b021"
}
--产品证书
{
    "ProductSecret": "8LQwOYSZMwp3DFBd",
    "ProductKey": "k1hipglLdjU"
}

阿里云操作

产品操作

打开阿里云平台找到物联网平台,开通业务后进入控制台

点开设备管理产品页面,点击新建产品。根据需求和图示说明创建产品。

具体详细介绍见阿里云页面

在这里插入图片描述

设备操作

创建产品完成后就可以进入设备页面添加设备,在对应产品页面进入设备管理,按照提示添加设备

(在做正式产品时建议使用imei为devicename,方便后期维护)

阿里云设备创建
在这里插入图片描述

连接阿里云

一机一密AT HTTP鉴权连接

  • 首先需要使用HmacMD5计算哈希值用于签名,使用网址:在线加/解密工具(https://encode.chahuo.com/)
明文: clientId868488076506128deviceName868488076506128productKeyk1hipglLdjU
秘钥: fef32adf6dad46c2c7cbf335d3a7b021
结果: 0f655b12adf519b9a7a2b0a990f398b6
  • 拼接DOWNLOAD参数
productKey=k1hipglLdjU&sign=0f655b12adf519b9a7a2b0a990f398b6&clientId=868488076506128&deviceName=868488076506128
  • AT交互流程如下所示
  1. 激活网络
[03:09:17.105]发→◇AT+CGATT?
□
[03:09:17.106]收←◆AT+CGATT?

+CGATT: 1

OK

[03:09:24.575]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"
□
[03:09:24.579]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"

OK

[03:09:32.363]发→◇AT+SAPBR=3,1,"APN","CMIOT"
□
[03:09:32.365]收←◆AT+SAPBR=3,1,"APN","CMIOT"

OK

[03:09:38.899]发→◇AT+SAPBR=1,1
□
[03:09:38.901]收←◆AT+SAPBR=1,1

OK
  1. 初始化HTTP
[03:09:43.901]发→◇AT+HTTPINIT
□
[03:09:43.903]收←◆AT+HTTPINIT

OK
  1. 写入网址URL
[03:09:50.783]发→◇AT+HTTPPARA="URL",https://iot-auth.cn-shanghai.aliyuncs.com/auth/devicename
□
[03:09:50.786]收←◆AT+HTTPPARA="URL",https://iot-auth.cn-shanghai.aliyuncs.com/auth/devicename

OK
  1. 设置本次请求的hearder,注意"Content-type: " 后面有一个空格
[03:09:57.667]发→◇AT+HTTPPARA="USER_DEFINED","Content-type: application/x-www-form-urlencoded"
□
[03:09:57.671]收←◆AT+HTTPPARA="USER_DEFINED","Content-type: application/x-www-form-urlencoded"

OK
  1. 配置写入DOWNLOAD参数指令,注意这个112是DOWNLOAD参数的数据长度(以字节为单位),实际使用时,要根据自己的数据长度进行修改,切记!!! 待出现DOWNLOAD后发送通过前文计算拼接出来的DOWNLOAD参数
[03:10:05.246]发→◇AT+HTTPDATA=112,20000
□
[03:10:05.249]收←◆AT+HTTPDATA=112,20000

DOWNLOAD
  1. 写入DOWNLOAD参数,注意最好自己复制这串数据,然后修改具体的值,不要全部手动输入,否则很容易出问题,切记!!!
[03:10:10.735]发→◇productKey=k1hipglLdjU&sign=0f655b12adf519b9a7a2b0a990f398b6&clientId=868488076506128&deviceName=868488076506128
□
[03:10:10.740]收←◆
OK
  1. HTTPACTION的信息上报,正常的话会回复状态码200
[03:10:16.378]发→◇AT+HTTPACTION=1
□
[03:10:16.381]收←◆AT+HTTPACTION=1

OK
  1. 收到信息上报正常回复状态码200,收到返回数据长度为124
[03:10:18.025]收←◆
+HTTPACTION: 1,200,124
  1. 读取请求结果,注意,HTTPREAD返回的数据中有iotId和iotToken,其中iotId的值为MQTT client的用户名,iotToken的值为MQTT client的密码
[03:10:51.867]发→◇AT+HTTPREAD
□
[03:10:51.870]收←◆AT+HTTPREAD

+HTTPREAD: 124
{"code":200,"data":{"iotId":"2BGmgWFvoXlbi1Er9sk4k1hip0","iotToken":"137eb0759ca248b79383a60c0b0e0f80"},"message":"success"}
OK
  1. 配置连接阿里云,注意,第一个值为clientId,第二个值为iotId,第三个值为iotToken
[03:13:32.942]发→◇AT+MCONFIG="868488076506128","2BGmgWFvoXlbi1Er9sk4k1hip0","137eb0759ca248b79383a60c0b0e0f80"
□
[03:13:32.945]收←◆AT+MCONFIG="868488076506128","2BGmgWFvoXlbi1Er9sk4k1hip0","137eb0759ca248b79383a60c0b0e0f80"

OK
  1. 建立连接,注意,收到CONNECT OK后立刻发送指令建立会话,不然会被踢,一定注意!!!
[03:13:51.493]发→◇AT+SSLMIPSTART="a1qsHBbKtmc.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883[03:13:51.496]收←◆AT+SSLMIPSTART="a1qsHBbKtmc.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883

OK

[03:13:52.911]收←◆
CONNECT OK

[03:13:53.182]发→◇AT+MCONNECT=1,120[03:13:53.185]收←◆AT+MCONNECT=1,120

OK

[03:13:53.434]收←◆
CONNACK OK
  • 连接成功

在这里插入图片描述

一机一密AT直连MQTT

  • 当设备属于公共实例,使用一型一密预注册认证方式时,动态注册参数如下:
mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
mqttUsername: deviceName+"&"+productKey
mqttPassword: sign_hmac(deviceSecret,content)
参数说明
clientId客户端ID:长度在64个字符内,建议使用IMEI或SN码方便区分不同客户端
securemode安全模式: 2 (TLS直连模式),3 (TCP直连模式)
signmethod表示签名算法类型。支持hmacmd5,hmacsha1,hmacsha256。默认为hmacmd5
timestamp表示当前时间毫秒值,可以不传递
mqttPassword前文计算的签名值
  • AT交互流程如下所示
  1. 配置MQTT参数
[03:51:26.001]发→◇AT+MCONFIG="868488076506128|securemode=3,signmethod=hmacmd5|","868488076506128&k1hipglLdjU","0f655b12adf519b9a7a2b0a990f398b6"
□
[03:51:26.004]收←◆AT+MCONFIG="868488076506128|securemode=3,signmethod=hmacmd5|","868488076506128&k1hipglLdjU","0f655b12adf519b9a7a2b0a990f398b6"

OK
  1. 建立连接,注意,第一个参数需要根据实际项目productKey修改
[03:51:43.546]发→◇AT+SSLMIPSTART="k1hipglLdjU.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
□
[03:51:43.549]收←◆AT+SSLMIPSTART="k1hipglLdjU.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883

OK
  1. 建立会话,注意,收到 CONNECT OK 后立刻发送指令建立会话,不然会被踢,一定注意!!!
[03:51:45.836]收←◆
CONNECT OK

[03:51:48.961]发→◇AT+MCONNECT=1,120
□
[03:51:48.964]收←◆AT+MCONNECT=1,120

OK

[03:51:49.179]收←◆
CONNACK OK

一型一密AT方式连接

  • 一型一密与一机一密的主要区别在于第一次连接的时候需要根据协议请求秘钥,首先需要在阿里云打开动态注册开关,如下图所示

在这里插入图片描述

  • 使用到的参数如下所示
{
    "ProductSecret": "8LQwOYSZMwp3DFBd",
    "ProductKey": "k1hipglLdjU"
    "DeviceName" "868488076506128"
}

明文:deviceName868488076506128productKeyk1hipglLdjUrandom123456
秘钥:8LQwOYSZMwp3DFBd
HmacMD5计算结果:20558baadb2a0b04847767980f0ee67b

DOWNLOAD参数
--random 为随机数,长度不定
productKey=k1hipglLdjU&deviceName=868488076506128&random=123456&sign=20558baadb2a0b04847767980f0ee67b&signMethod=HmacMD5
  • 当设备属于公共实例,使用一型一密预注册认证方式时,动态注册参数如下:
mqttClientId: clientId+"|securemode=2,authType=xxxx,random=xxxx,signmethod=xxxx|"
mqttUserName: deviceName+"&"+productKey
mqttPassword: sign_hmac(productSecret,content) 
  • AT交互流程如下所示
  1. 激活网络,注意,先发送AT+CGATT?查询是否附着上GPRS数据网络,返回+CGATT: 1后,才能执行下面的三个 AT指令。
[04:07:13.901]发→◇AT+CGATT?
□
[04:07:13.902]收←◆AT+CGATT?

+CGATT: 1

OK

[04:07:23.900]发→◇AT+SAPBR=3,1,"CONTYPE","GPRS"
□
[04:07:23.902]收←◆AT+SAPBR=3,1,"CONTYPE","GPRS"

OK

[04:07:31.245]发→◇AT+SAPBR=3,1,"APN","CMIOT"
□
[04:07:31.248]收←◆AT+SAPBR=3,1,"APN","CMIOT"

OK

[04:07:38.659]发→◇AT+SAPBR=1,1
□
[04:07:38.661]收←◆AT+SAPBR=1,1

OK
  1. 初始化HTTP
[04:08:35.329]发→◇AT+HTTPINIT
□
[04:08:35.332]收←◆AT+HTTPINIT

OK
  1. 写入网址URL
[04:08:44.056]发→◇AT+HTTPPARA="URL","https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device"
□
[04:08:44.061]收←◆AT+HTTPPARA="URL","https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device"

OK
  1. 设置本次请求的hearder,注意"Content-type: " 后面有一个空格
[04:08:54.671]发→◇AT+HTTPPARA="USER_DEFINED","Content-Type: application/x-www-form-urlencoded"
□
[04:08:54.674]收←◆AT+HTTPPARA="USER_DEFINED","Content-Type: application/x-www-form-urlencoded"

OK
  1. 配置写入DOWNLOAD参数指令,注意这个120是DOWNLOAD参数的数据长度(以字节为单位),实际使用时,要根据自己的数据长度进行修改,切记!!! 待出现DOWNLOAD后发送通过前文计算拼接出来的DOWNLOAD参数
[04:09:11.437]发→◇AT+HTTPDATA=120,20000
□
[04:09:11.439]收←◆AT+HTTPDATA=120,20000

DOWNLOAD
  1. 写入DOWNLOAD参数,注意最好自己复制这串数据,然后修改具体的值,不要全部手动输入,否则很容易出问题,切记!!!
[04:09:16.944]发→◇productKey=k1hipglLdjU&deviceName=868488076506128&random=123456&sign=20558baadb2a0b04847767980f0ee67b&signMethod=HmacMD5
□
[04:09:16.947]收←◆
OK
  1. HTTPACTION的信息上报,正常的话会回复状态码200
[04:09:26.653]发→◇AT+HTTPACTION=1
□
[04:09:26.656]收←◆AT+HTTPACTION=1

OK
  1. 收到信息上报正常回复状态码200,收到返回数据长度为149
[04:09:28.828]收←◆
+HTTPACTION: 1,200,149
  1. 读取请求结果
[04:09:43.709]发→◇AT+HTTPREAD
□
[04:09:43.711]收←◆AT+HTTPREAD

+HTTPREAD: 149
{"code":200,"data":{"deviceName":"868488076506128","deviceSecret":"fef32adf6dad46c2c7cbf335d3a7b021","productKey":"k1hipglLdjU"},"message":"success"}
OK

发布与订阅消息

发布消息

  • 发布Qos0消息
[04:58:06.798]发→◇AT+MPUB="/k1hipglLdjU/868488076506128/user/update",0,0,"HelloWorld"
□
[04:58:06.802]收←◆AT+MPUB="/k1hipglLdjU/868488076506128/user/update",0,0,"HelloWorld"

OK
  • 发布Qos1消息,注意,Qos1 消息必须等到PUBACK返回,才能发下一条消息
[04:58:43.408]发→◇AT+MPUB="/k1hipglLdjU/868488076506128/user/update",1,0,"HelloWorld"
□
[04:58:43.412]收←◆AT+MPUB="/k1hipglLdjU/868488076506128/user/update",1,0,"HelloWorld"

OK

[04:58:43.709]收←◆
PUBACK
  • 通过物联网平台-监控运维-日志服务可以直接查看日志信息

在这里插入图片描述

订阅消息

  • 订阅主题
[05:01:58.568]发→◇AT+MSUB="/k1hipglLdjU/868488076506128/user/get",0
□
[05:01:58.572]收←◆AT+MSUB="/k1hipglLdjU/868488076506128/user/get",0

OK

[05:01:58.887]收←◆
SUBACK
  • 设置收到数据时的打印方式
    配置为0时主动上报到串口,上报的 URC 为+MSUB:<topic>,<len>,<message>
    配置为1时为缓存模式。有新订阅消息时,上报的URC为 +MSUB:<store_addr>
[05:02:05.102]发→◇AT+MQTTMSGSET=0
□
[05:02:05.105]收←◆AT+MQTTMSGSET=0

OK
  • 通过阿里云平台发布消息

外链图片转存中…(img-YxMoe4AE-1721627349846)]

订阅消息

  • 订阅主题
[05:01:58.568]发→◇AT+MSUB="/k1hipglLdjU/868488076506128/user/get",0
□
[05:01:58.572]收←◆AT+MSUB="/k1hipglLdjU/868488076506128/user/get",0

OK

[05:01:58.887]收←◆
SUBACK
  • 设置收到数据时的打印方式
    配置为0时主动上报到串口,上报的 URC 为+MSUB:<topic>,<len>,<message>
    配置为1时为缓存模式。有新订阅消息时,上报的URC为 +MSUB:<store_addr>
[05:02:05.102]发→◇AT+MQTTMSGSET=0
□
[05:02:05.105]收←◆AT+MQTTMSGSET=0

OK
  • 通过阿里云平台发布消息

在这里插入图片描述

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

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

相关文章

华为云技术精髓笔记(四)-CES基础入门实战

华为云技术精髓笔记(四) CES基础入门实战 一、监控ECS性能 1、 远程登录ECS 步骤一 双击实验桌面的“Xfce终端”打开Terminal&#xff0c;输入以下命令登录云服务器。注意&#xff1a;请使用云服务器的公网IP替换命令中的【EIP】。 LANGen_us.UTF-8 ssh rootEIP说明&#x…

中国自然灾害影响及损失数据

自然灾害往往会导致大量的人员伤亡和财产损失&#xff0c;数据集详细记载了2014-2020年中国自然灾害影响以及灾害造成的损失情况。其中包括地震、台风、雨雪、阵雨、雪灾、暴雨、旱灾、龙卷风、泥石流、山崩、泥石流、滑坡、洪涝等灾害事件。 数据集主要以excel的格式存储。属性…

【学术会议征稿】第二届人工智能与自动化控制国际学术会议(AIAC 2024)

第二届人工智能与自动化控制国际学术会议&#xff08;AIAC 2024&#xff09; The 2nd International Conference on Artificial Intelligence and Automation Control 随着技术的迅猛发展&#xff0c;人工智能与自动化控制已经深入到工业、交通、医疗、教育等各个领域&#x…

【Linux】-----权限详解

目录 一、Linux下的权限概念 Ⅰ、是什么&#xff1f; Ⅱ、Linux下的两种角色 角色 如何添加普通用户 身份的转化方式 身份的提权 添加普通用户至白名单 二、Linux下的权限管理 Ⅰ、文件访问者的分类(Linux下的“人”) Ⅱ、文件类型和访问权限(事物属性) 1.文件类型 …

为什么阿里巴巴超级喜欢java开发?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 我猜可能是因为&#xff0…

GD32 MCU是如何进入中断函数的

用过GD32 MCU的小伙伴们都知道&#xff0c;程序是顺序执行的&#xff0c;但当有中断来的时候程序会跳转到中断函数&#xff0c;执行完中断函数后程序又继续回到原来的位置继续执行&#xff0c;那么你们知道MCU是如何找到中断函数入口的吗&#xff1f; 今天我们就以GD32F303系列…

MacOS M1 安装item2 并配置Zsh

文章目录 1 下载item22 美化item22.1 配置主题2.2 设置黑色的主题&#xff1a;2.3 配置显示状态栏 status bar 3 安装 Oh my zsh3.1 设置主题3.2 设置插件3.3 安装第三方插件1 下载仓库解压2 使用 git clone 一些常用插件以及其作用 参考 1 下载item2 MacOS自带终端&#xff0…

springboot个体快餐订单系统-计算机毕业设计源码13441

目 录 摘要 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 个体快餐订单系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 个…

ATA-7025高压放大器的参数特点与应用领域有哪些

高压放大器是一种电子设备&#xff0c;用于将低电压信号放大成高电压信号&#xff0c;其参数特点与应用领域有着广泛的应用。本文将从高压放大器的参数特点和主要应用领域两个方面展开详细介绍。 高压放大器的参数特点主要包括输入输出电压范围广、带宽宽、增益高、输出功率大等…

计网:物理层

写在开头&#xff1a;物理层就负责传送比特0和1&#xff0c; 本质上理解物理层就是理解传输介质哪个表示比特0和1&#xff0c;如&#xff1a;高电平表示1、低电平表示0等 物理层主要任务&#xff1a; 机械特性&#xff1a;指明接口所用接线器的形状和尺寸、引脚数目和排列、固…

数据结构之二元查找树转有序双向链表详解与示例(C/C++)

文章目录 1. 二元查找树&#xff08;BST&#xff09;简介2. 有序双向链表&#xff08;DLL&#xff09;简介3. 二元查找树的实现4. 转换为有序双向链表的步骤5. C实现代码6. C实现代码7. 效率与空间复杂度比较8. 结论 在数据结构与算法中&#xff0c;树和链表都是非常重要的数据…

八股文之java基础

jdk9中对字符串进行了一个什么优化&#xff1f; jdk9之前 字符串的拼接通常都是使用进行拼接 但是的实现我们是基于stringbuilder进行的 这个过程通常比较低效 包含了创建stringbuilder对象 通过append方法去将stringbuilder对象进行拼接 最后使用tostring方法去转换成最终的…

C# 基础语法(一篇包学会的)

C#&#xff08;读作"C Sharp"&#xff09;是一种现代的、通用的面向对象编程语言&#xff0c;由微软公司开发。它结合了C和C的强大特性&#xff0c;并去掉了一些复杂性&#xff0c;使得开发者可以更加高效地编写代码。 一、入坑C# (一) 安装和设置 首先&#xff0c…

Modbus转BACnet/IP网关BA100-配硬件说明

在现代自动化系统中&#xff0c;不同设备和系统之间的通信至关重要&#xff0c;Modbus和BACnet/IP协议虽然各有优势&#xff0c;但它们之间的直接通信存在障碍。钡铼Modbus转BACnet/IP网关作为连接这两种协议的桥梁&#xff0c;允许不同系统之间的无缝数据交换。 一、Modbus转…

喜讯丨泰迪智能科技实力中标湖北民族大学数学与统计学院一流专业实验室建设项目

近日&#xff0c;泰迪智能科技凭借其卓越的技术实力与解决方案&#xff0c;在湖北民族大学数学与统计学院的一流专业实验室建设项目招标中脱颖而出&#xff0c;成功揽获该项目的建设权&#xff0c;中标项目金额达人民币355万元。 项目建设成果 一、实验室建设内容&#xff1a; …

提升无线网络安全:用Python脚本发现并修复WiFi安全问题

文章目录 概要环境准备技术细节3.1 实现原理3.2 创建python文件3.3 插入内容3.4 运行python脚本 加固建议4.1 选择强密码4.2 定期更换密码4.3 启用网络加密4.4 关闭WPS4.5 隐藏SSID4.6 限制连接设备 小结 概要 在本文中&#xff0c;我们将介绍并展示如何使用Python脚本来测试本…

数据结构(队列及其实现)

概念与结构 概念&#xff1a;只允许在⼀端进⾏插⼊数据操作&#xff0c;在另⼀端进⾏删除数据操作的特殊线性表&#xff0c; 队列具有先进先出FIFO(First In First Out)原则。 ⼊队列&#xff1a;进⾏插⼊操作的⼀端称为队尾 出队列&#xff1a;进⾏删除操作的⼀端称为队头…

TypeScript体操(二):Utility Type手写实现

目录 前言常用 Utility Types 及其实现Partial<T>Required<T>Readonly<T>Pick<T, K>Omit<T, K>Record<K, T>Exclude<T, U>Extract<T, U>NonNullable<T>ReturnType<T>InstanceType<T>Parameters<T>Con…

yolo5图片视频、摄像头推理demo

yolo5图片、视频推理demo 图片 import torch# 加载预训练模型 model torch.hub.load(./yolo5, custom, pathyolov5s.pt, sourcelocal)# 加载图片 img 1.jpg# 进行推理 results model(img)# 解析结果 detections results.xyxy[0].cpu().numpy() # [x1, y1, x2, y2, confid…

Windows下载、安装、部署Redis服务的详细流程

本文介绍在Windows电脑中&#xff0c;下载、安装、部署并运行Redis数据库服务的方法。 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源、高性能的键值存储系统&#xff0c;最初由Salvatore Sanfilippo在2009年发布&#xff0c;并由Redis Labs维护。Redis因其…