这个好像也用不到,不过可以先贴出来。简单看了一下也没深入分析,直接扒过来了,感觉涉及到了上位机的学习了。我这下位机的可能用不到,就是贴过来好了。

        应用概述

        使用 AT 方式连接阿里云分为一机一密和一型一密,其中一机一密又包含 HTTP 认证二
次连接和 MQTT 直连两种方式。
        步骤
        1. 训练波特率
        2. 激活 PDP (之前也研究过了,也设置过了。下面再贴一遍过来吧。)

        使用如下AT命令,激活了一路id为1、APN为自动获取的默认APN的PDP承载(就是连接并开启了相关通道,无需在担心通讯了,算是设备本身的资料了)

        AT+SAPBR=3,1,"CONTYPE","GPRS"

        OK

        AT+SAPBR=3,1,"APN",""

        OK

        AT+SAPBR=1,1

        OK

        AT+SAPBR=2,1

        +SAPBR: 1,1,"10.55.40.48"

        OK

        3. 连接阿里云
        这个本次研究就是这个了。
        材料准备
        准备设备证书及产品证书。
        1.
        --设备证书
        {
        "ProductKey": "a1qsHBbKtmc",
        "DeviceName": "866714044533668",
        "DeviceSecret": "c25262e140bb58d4ec3de5028a2cc836"
        }--产品证书
        {
        "ProductSecret": "nNmPacH5aL8EViD4",
        "ProductKey": "a1qsHBbKtmc"
        }
        阿里云操作
        产品操作
        打开阿里云找到物联网平台,开通业务后进入控制台。
        点开设备管理的产品页面,点击新建产品。根据需求和图示说明创建产品。
        具体详细介绍见阿里云页面(如何在物联网平台创建产品_物联网平台(IoT)-阿里云帮助中心
        设备操作
        创建产品完成后就可以进入设备页面添加设备,在对应产品页面进入设备管理,按照提示添
加设备 (在做正式产品时建议使用 imei devicename,方便后期维护)
        阿里云设备创建
        连接阿里云
        一机一密 AT HTTP 鉴权连接
        首先需要使用 HmacMD5 计算哈希值用于签名,使用网址:计算工具
        明文:
        clientId866714044533668deviceName866714044533668productKeya1qsHBbKtmc
        秘钥: c25262e140bb58d4ec3de5028a2cc836
        结果: 655d19e9c43e27d8c66419a6724eb56a
        拼接 DOWNLOAD 参数
        productKey=a1qsHBbKtmc&sign=655d19e9c43e27d8c66419a6724eb56a&clientId=866714044533668&deviceName=866714044533668
        具体交互流程如下所示
        [2021-05-21 20:24:55.620]# SEND ASCII>
        AT+HTTPINIT
        [2021-05-21 20:24:55.674]# RECV ASCII>
        AT+HTTPINIT
        OK
        [2021-05-21 20:25:04.547]# SEND ASCII>
        AT+HTTPPARA="URL",https://iot-auth.cn-shanghai.aliyuncs.com/auth/devicen
        ame
        [2021-05-21 20:25:04.601]# RECV ASCII>
        AT+HTTPPARA="URL",https://iot-auth.cn-shanghai.aliyuncs.com/auth/devicen
        ame
        OK
        [2021-05-21 20:25:11.724]# SEND ASCII>
        AT+HTTPPARA="USER_DEFINED","Content-Type:
        application/x-www-form-urlencoded"
        [2021-05-21 20:25:11.776]# RECV ASCII>
        AT+HTTPPARA="USER_DEFINED","Content-Type:
        application/x-www-form-urlencoded"
        OK
        [2021-05-21 20:25:22.028]# SEND ASCII>
        AT+HTTPDATA=120,20000
        [2021-05-21 20:25:22.078]# RECV ASCII>
        AT+HTTPDATA=120,20000
        DOWNLOAD
        [2021-05-21 20:25:29.643]# SEND ASCII>
        productKey=a1qsHBbKtmc&sign=655d19e9c43e27d8c66419a6724eb56a&clientId=866714044533668&deviceName=866714044533668
        [2021-05-21 20:25:42.079]# RECV ASCII>
        OK
        [2021-05-21 20:25:52.388]# SEND ASCII>
        AT+HTTPACTION=1
        [2021-05-21 20:25:52.450]# RECV ASCII>
        AT+HTTPACTION=1
        OK
        [2021-05-21 20:25:53.034]# RECV ASCII>
        +HTTPACTION: 1,200,124
        [2021-05-21 20:25:59.556]# SEND ASCII>
        AT+HTTPREAD
        [2021-05-21 20:25:59.624]# RECV ASCII>
        AT+HTTPREAD
        +HTTPREAD: 124
        {"code":200,"data":{"iotId":"8rCqP6OVgi90P5a479IC000000","iotToken":"^1^1621599952882^218a0a267fc6c36"},"message":"success"}
        OK--收到服务器返回数据其中 iotId MQTT Client 的用户名,iotToken 的值为 MQTT Clientd 的密码
        [2021-05-21 20:29:48.876]# SEND ASCII>
        AT+MCONFIG="866714044533668","8rCqP6OVgi90P5a479IC000000","^1^1621599952882^218a0a267fc6c36"
        [2021-05-21 20:29:48.932]# RECV ASCII>
        AT+MCONFIG="866714044533668","8rCqP6OVgi90P5a479IC000000","^1^1621599952882^218a0a267fc6c36"
        OK
        [2021-05-21 20:29:57.900]# SEND ASCII>
        AT+SSLMIPSTART="a1qsHBbKtmc.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
        [2021-05-21 20:29:57.950]# RECV ASCII>
        AT+SSLMIPSTART="a1qsHBbKtmc.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
        OK
        [2021-05-21 20:29:58.474]# RECV ASCII>
        CONNECT OK
        [2021-05-21 20:30:03.332]# SEND ASCII>
        AT+MCONNECT=1,120
        [2021-05-21 20:30:03.383]# RECV ASCII>
        AT+MCONNECT=1,120
        OK
        [2021-05-21 20:30:03.493]# RECV ASCII>
        CONNACK OK
        一机一密 AT 直连 MQTT
        当设备属于公共实例,使用一型一密预注册认证方式时,动态注册参数如下:
        mqttClientId:clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
        mqttUsername: deviceName+"&"+productKey
        mqttPassword: sign_hmac(deviceSecret,content)
        具体交互流程如下所示
        [2021-05-21 21:26:59.670]# SEND ASCII>
        AT+MCONFIG="866714044533668|securemode=3,signmethod=hmacmd5|","866714044533668&a1qsHBbKtmc","655d19e9c43e27d8c66419a6724eb56a"
        [2021-05-21 21:26:59.725]# RECV ASCII>
        AT+MCONFIG="866714044533668|securemode=3,signmethod=hmacmd5|","866714044533668&a1qsHBbKtmc","655d19e9c43e27d8c66419a6724eb56a"
        OK
        [2021-05-21 21:27:00.958]# SEND ASCII>
        AT+SSLMIPSTART="a1qsHBbKtmc.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
        [2021-05-21 21:27:01.007]# RECV ASCII>
        AT+SSLMIPSTART="a1qsHBbKtmc.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883
        OK
        [2021-05-21 21:27:01.567]# RECV ASCII>
        CONNECT OK
        [2021-05-21 21:27:02.333]# SEND ASCII>
        AT+MCONNECT=1,120
        [2021-05-21 21:27:02.385]# RECV ASCII>
        AT+MCONNECT=1,120
        OK
        [2021-05-21 21:27:02.527]# RECV ASCII>
        CONNACK OK
        一型一密 AT 方式连接
        一型一密与一机一密的主要区别在于第一次连接的时候需要根据协议请求秘钥。首先需要在阿里云打开动态注册开关如下图所示。
        用到的参数如下所示。
        {
        "ProductSecret": "nNmPacH5aL8EViD4",
        "ProductKey": "a1qsHBbKtmc"
        "DeviceName" "866714044533668"
        }--random 为随机数,长度不定
        productKey=a1qsHBbKtmc&deviceName=866714044533668&random=123456&sign=073074d8b722eacb1f6d2054d99e9d64&signMethod=HmacMD5e10adc3949ba59abbe56e057f20f883e
        明文:deviceName866714044533668productKeya1qsHBbKtmcrandom123456
        秘钥:nNmPacH5aL8EViD4
        HmacMD5 计算结果:073074d8b722eacb1f6d2054d99e9d64d8d847e2558c6382fc35d2c91f626501a1qsHBbKtmcnNmPacH5aL8EViD4
        ProductKey = b1KCi45LcCP
        ProductSecret = VWll9fiYWKiwraBk
        DeviceName = 862991419835241
        productKey=a1qsHBbKtmc&deviceName=866714044533668&random=123456&sign=073074d8b722eacb1f6d2054d99e9d64&signMethod=HmacMD5deviceName866714044533668productKeya1qsHBbKtmcrandom123456nNmPacH5aL8EViD4073074d8b722eacb1f6d2054d99e9d64
当设备属于公共实例,使用一型一密预注册认证方式时,动态注册参数如下:
        mqttClientId:
        clientId+"|securemode=2,authType=xxxx,random=xxxx,signmethod=xxxx|"
        mqttUserName: deviceName+"&"+productKey
        mqttPassword: sign_hmac(productSecret,content)
        AT 交互流程如下
        [21:37:43.379]AT+HTTPINIT
[21:37:43.383]AT+HTTPINIT
        OK
        [21:37:48.704]
        →◇AT+HTTPPARA="URL","https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device"
[21:37:48.713]
        ←◆AT+HTTPPARA="URL","https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device"
        OK
        [21:37:55.164]AT+HTTPPARA="USER_DEFINED","Content-Type:application/x-www-form-urlencoded"
         [21:37:55.170]AT+HTTPPARA="USER_DEFINED","Content-Type:application/x-www-form-urlencoded"
        OK
        [21:38:00.207]AT+HTTPDATA=120,20000
[21:38:00.215]AT+HTTPDATA=120,20000
        DOWNLOAD
        [21:38:07.980]
        →◇productKey=a1qsHBbKtmc&deviceName=867435054361274&random=123456&sign=f25999d2e8ff8f5854b95d0ea9e0cd0c&signMethod=HmacMD5
[21:38:07.989]
        OK
        [21:38:17.459]AT+HTTPACTION=1
[21:38:17.467]AT+HTTPACTION=1
        OK
        [21:38:18.931]
        +HTTPACTION: 1,200,149
        [21:38:23.636]AT+HTTPREAD
        [21:38:23.645]AT+HTTPREAD
        +HTTPREAD: 149
        {"code":200,"data":{"deviceName":"867435054361274","deviceSecret":"82cdb125154973a7c9fac52be5b757c2","productKey":"a1qsHBbKtmc"},"message":"success"}
        OK
        发布与订阅消息
        发布
        [2021-05-21 23:02:04.961]# RECV ASCII>
        CONNACK OK
        [2021-05-21 23:02:16.503]# SEND ASCII>
        AT+MPUB="/a1qsHBbKtmc/866714044533668/user/update",0,0,"HelloWorld"
        [2021-05-21 23:02:16.554]# RECV ASCII>
        AT+MPUB="/a1qsHBbKtmc/866714044533668/user/update",0,0,"HelloWorld"
        OK
        订阅
        [2021-05-21 23:04:59.487]# SEND ASCII>
        AT+MSUB="/a1qsHBbKtmc/866714044533668/user/get",0
        [2021-05-21 23:04:59.603]# RECV ASCII>
        AT+MSUB="/a1qsHBbKtmc/866714044533668/user/get",0
        OK
        [2021-05-21 23:04:59.725]# RECV ASCII>
        SUBACK
        [2021-05-21 23:05:16.759]# SEND ASCII>
        AT+MQTTMSGSET=0
        [2021-05-21 23:05:16.808]# RECV ASCII>
        AT+MQTTMSGSET=0
        OK
        [2021-05-21 23:05:41.965]# RECV ASCII>
        +MSUB: "/a1qsHBbKtmc/866714044533668/user/get",7 byte,Hello!!
补:完全扒过来的,因为我不是很熟,就不深入分析了。
再补:实际上大差不差的,也就是AT指令的运行,如果用到了,可以也就会熟悉吧。不过最近动力不太足,这里暂时没气力了。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Backlog] 核心协调器 | 终端用户界面(TUI)实现 | 多分支任务冲突解决 | 测试验证体系

第8章 核心协调器 欢迎回到Backlog.md! 在上一章文件系统操作中,我们深入了解了数据物理存储层面的读写机制。本章将聚焦系统的神经中枢——核心协调器。 核心协调器的本质(中央决策引擎) 如果将Backlog.md视为项目管理团队&a…

车载以太网-TC8测试-UT(Upper Tester)

目录 一、技术原理:指令体系与协议适配1. **指令格式与传输机制**2. **协议栈交互逻辑**3. **规范遵循与版本演进**二、测试应用:TC8测试场景与案例1. **TCP协议栈深度验证**2. **ARP协议健壮性测试**3. **SOME/IP服务动态管理**三、实现挑战与解决方案1. **实时性要求**2. *…

扣子Coze纯前端部署多Agents

纯前端网页搭建,无需任何后端代码,方便快捷! 就像公司前台的多功能控制台,员工可以通过按钮快速呼叫不同的AI助手。具备多设备适配、智能对话等基础能力。 支持添加多个智能体 配置方式 添加智能体信息,data-bot为智…

STM32中I2C协议详解

前言 在嵌入式系统中,设备间的短距离通信协议中,I2C(Inter-Integrated Circuit,集成电路互连)以其信号线少、布线简单、支持多从机等特点,被广泛应用于传感器、EEPROM、OLED屏等中低速外设的通信场景。与SP…

解锁Spring Boot多项目共享Redis:优雅Key命名结构指南

引言Redis 基础与 Spring Boot 集成Redis 简介Redis,即 Remote Dictionary Server,是一个开源的基于内存的数据结构存储系统,可用作数据库、缓存和消息中间件 。它具备诸多显著特性,使其在现代软件开发中占据重要地位。Redis 的读…

《重构项目》基于Apollo架构设计的项目重构方案(多种地图、多阶段、多任务、状态机管理)

1. 项目结构设计project/ ├── config/ # 配置文件(定义 Scenario、Stage、Task 的映射) ├── src/ │ ├── base/ # 抽象基类定义 │ │ ├── scenario_base.h/.cpp │ │ ├── stage_base.h/.cpp…

动手学深度学习13.6. 目标检测数据集-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:数据集_哔哩哔哩_bilibili 本节教材地址:13.6. 目标检测数据集 — 动手学深度学习 2.0…

Unity3D游戏内存优化指南

前言 Unity3D 游戏的内存控制是保证游戏流畅运行(尤其在移动端和主机平台)和避免崩溃的关键挑战。以下是核心策略和常见问题的解决方案: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验…

git学习:首次创建仓库

文章目录前言:1、首次创建仓库并上传数据1.1 创建仓库,1.2 命令上传1.3 首次代码上传至仓库的步骤:2、分支操作2.1 分支的删除2.2 切换分支2.3 查看分支2.4 同步其他分支的修改3、查看电脑的配置文件4、远程仓库命令 git remote5、其他后语前…

C++并行计算:OpenMP与MPI全解析

在高性能计算领域,充分利用硬件资源的并行计算技术已成为刚需。从单节点多核到跨节点集群,开发者需要掌握不同的并行编程模型。本文将系统讲解两种主流并行技术:OpenMP(共享内存多核并行)与MPI(分布式内存集…

TCP 动态选路协议全面研究:OSPF、BGP 与 IS-IS 的比较与应用分析

一、引言:动态选路协议概述 在现代计算机网络中,路由选择是数据传输的核心功能,它决定了数据包从源到目的地的路径选择。随着网络规模的不断扩大和复杂性的增加,静态路由已经无法满足网络动态变化的需求,动态路由协议…

OpenCV 图像哈希类cv::img_hash::AverageHash

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::img_hash::AverageHash是OpenCV中用于图像哈希(Image Hashing)的一个类,属于opencv_img_hash模块。它实现了…

【Python-网络爬虫】爬虫的基础概念介绍

目录 一、爬虫的介绍 1.1 爬虫的概念 1.2 爬虫的作用 1. 搜索引擎数据索引 2. 商业数据采集与分析 3. 舆情监控与社交分析 4. 学术研究与数据挖掘 5. 信息聚合与服务优化 二、爬虫的分类 三、爬虫的基本流程 3.1 基本流程 3.2 Robots协议 一、爬虫的介绍 1.1 爬虫的…

力扣-31.下一个排列

题目链接 31.下一个排列 class Solution {public void nextPermutation(int[] nums) {//1.从右往左找第一个非逆序的数aint left nums.length - 2; //这里是为了找不到顺序对的时候正好停在-1while (left > 0 && nums[left] > nums[left 1]) { //一定要取等号…

Python爬虫实战:研究python-nameparser库相关技术

1. 引言 在当今数字化时代,姓名作为个人身份的重要标识,在许多领域都有着广泛的应用需求。例如,在客户关系管理系统中,准确解析姓名可以帮助企业更好地了解客户背景;在学术研究中,分析作者姓名分布有助于发现研究团队的地域特征;在社交网络分析中,姓名信息可以辅助进行…

Android中MVI架构详解

博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家 👉点击跳转到教程 什么是 MVI 架构? MVI (Model-View-Intent) 是一种单向数据流的架构模式,它源于响应式编程思想。在 MVI 中: 架构图: 1、Model: 代表的是UI 状态,它包含了…

AutoGen-AgentChat-3-人机交互

import os from dotenv import load_dotenvload_dotenv()True人机交互 在上一节“团队”中,我们了解了如何创建、观察和控制代理团队。本节将重点介绍如何在应用程序中与团队进行交互,并向团队提供人工反馈。 您可以通过两种主要方式从您的应用程序与团队…

Flink Db2 CDC 环境配置与验证

一、DB2 数据库核心配置 1. 启用数据库日志记录与CDC支持 -- 以DB2管理员身份连接数据库 CONNECT TO mydb USER db2inst1 USING password;-- 启用数据库归档日志模式(CDC依赖) UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 DISK:/db2log/archive…

初识单例模式

文章目录场景通点定义实现思路六种 Java 实现饿汉式懒汉式synchronized 方法双重检查锁 Double Check Lock Volatile静态内部类 Singleton Holder枚举单例单例运用场景破解单例模式参考场景通点 资源昂贵:数据库连接池、线程池、日志组件,只需要一份全…