Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

这篇具有很好参考价值的文章主要介绍了Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

基础资料

探讨重点

实现功能

硬件准备

软件版本

保姆级步骤

新建项目

1. MQTT连接官方说明:

2、配置文件基本模式

方式1:采用平台给定的MQTT连接参数

方式2:采用平台给定的MQTT连接工具计算相关参数

方式3:示例,采用Python实现连接参数生成

3、一型一密AT方式连接

4、接入云平台及订阅、发布主题示例


基础资料

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

简介:AT开发

探讨重点

本系列主要探讨MQTT手动接入腾讯云物理网平台的基本操作及手动鉴权步骤、信息订阅及发布的基本原理。

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

实现功能

MQTT手动接入腾讯云物理网平台的基本操作及手动鉴权。

硬件准备

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

软件版本

Revision: AirM2M_780E_V1108_LTE_AT

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

保姆级步骤

新建项目

阿里云物联网平台入口

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

DeviceName可以自定义。

这里采用sim卡的IMEI(8615510564*****)作为DeviceName,便于后期维护。

设备的证书信息

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

1. MQTT连接官方说明:

连接参数说明如下,本文主要从一机一密注册认证的方式进行介绍。

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

2、配置文件基本模式

根据物联网模组AT命令接入云平台(1)-MQTT基本原理及步骤,首先要确定MQTT连接的配置文件,根据,官方文档,可知,基本模式为:

AT+MCONFIG="clientId|securemode=2,signmethod=加密方式,timestamp=时间戳|","DeviceName&ProductKey","passwd"

而passwd是由形如:

'clientIdi0m26pL****.861551056*****deviceName8615510564*****productKeyi0m26p*****timestamp16706417*****'的字符串通过signmethod指定的加密方式计算而的,DeviceSecret作为计算的key。

方式1:采用平台给定的MQTT连接参数

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

平台给定的参数中的clientId采用'clientId'+'.'+'deviceName'组合的方式确定,hmac_sha256加密方式。可以直接使用。需要注意的是,passwd大小写系统都能够认可。

按基本模式,组合出的配置参数,之后按步骤认证后建立连接。

方式2:采用平台给定的MQTT连接工具计算相关参数

平台帮助文档中给出了javascript编写password工具(MQTT_Password)。

Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤

支持hmacsha1和hmacmd5方法。这里可以采用产品名称作为clientId,该工具能够简易的计算出主要的连接参数,但该工具的时间戳字段不能够自由修改。

方式3:示例,采用Python实现连接参数生成

参考博文:python3 HMAC/SHA256/BASE64/MD5

import time
import hmac
import hashlib

#1、时间戳生成及基本注册数据

timestamp=int(time.time()*1000)+60*60 #60*60有效时间3600s,可按需延长
pk = "i0m26pL****"
dn = "861551056*****"
ds = "25dacc9ca202cf11ecda2541d7*****"
ts = timestamp
ci = "air780e"
sm1 = "hmacsha1"  #加密方式选择,不参与计算
sm5 = "hmacmd5"
sm6 = "hmacsha256"

#2、passwd计算字符串生成

contentStr='clientId'+ci+'deviceName'+dn+'productKey'+pk+'timestamp'+str(ts)
#print(contentStr)

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()



def hmac_md5(key, value):

    """
    hmacmd5加密
    return:加密结果转成16进制字符串形式
    """
    message = value.encode('utf-8')
    return hmac.new(key.encode('utf-8'), message, digestmod=hashlib.md5).hexdigest()



def hamc_sha1(key,value):

    message = value.encode('utf-8')  # 加密内容
    # key = key.encode('utf-8')          # 加密的key
    return hmac.new(key.encode('utf-8'), message, digestmod=hashlib.sha1).hexdigest()

#3、不同加密方式下的passwd计算及AT+MCONFIG参数生成
#官方sign程序生成的passwd全部大写,实测大小写均可被系统识别,不影响鉴权。

#3.1 hmac_md5

print("hamc_md5:",hmac_md5(ds, contentStr).upper())
print("AT+MCONFIG=",'"'+ci + "|securemode=2,signmethod=" + sm5 + ",timestamp=" + str(ts) + "|\""+",\""+dn + "&" + pk+'","'+hmac_md5(ds, contentStr).upper()+'"')


#3.2 hamc_sha1

print("hamc_sha1",hamc_sha1(ds, contentStr).upper())
print("AT+MCONFIG=",'"'+ci + "|securemode=2,signmethod=" + sm1 + ",timestamp=" + str(ts) + "|\""+",\""+dn + "&" + pk+'","'+hamc_sha1(ds, contentStr).upper()+'"')


#3.2 云平台MQTT参数的验证

ci= pk+"."+dn
ts=1670641794482
contentStr='clientId'+ci+'deviceName'+dn+'productKey'+pk+'timestamp'+str(ts)
print("hamc_sha256",hmac_sha256(ds, contentStr).upper())
print("AT+MCONFIG=",'"'+ci + "|securemode=2,signmethod=" + sm6 + ",timestamp=" + str(ts) + "|\""+",\""+dn + "&" + pk+'","'+hmac_sha256(ds, contentStr).upper()+'"')

3、一型一密AT方式连接

一型一密与一机一密的主要区别在于第一次连接的时候需要根据协议请求秘钥,连接前在阿里云打开动态注册开关。具体连接方式请参考官方开发者文档。

4、接入云平台及订阅、发布主题示例

←代表串口工具发送指令,→代表串口工具接收到的指令或信息。

基本连接情况确定程序见物联网模组AT命令接入云平台(1)-MQTT基本原理及步骤。文章来源地址https://www.toymoban.com/news/detail-421774.html

#接入云平台参数指定

[2022/12/10 18:20:08.9715] ← AT+MCONFIG= "air780e|securemode=2,signmethod=hmacsha1,timestamp=16706450*****|","861551056420391&i0m26p*****","5B4117DE87575D98D9D12364235EB76C********"
[2022/12/10 18:20:09.0793] → AT+MCONFIG= "air780e|securemode=2,signmethod=hmacsha1,timestamp=16706450*****|","861551056420391&i0m26******","5B4117DE87575D98D9D12364235EB76C4*******F"

OK

[2022/12/10 18:20:10.2153] ← AT+MIPSTART="iot-06z00gm80emf6to.mqtt.iothub.aliyuncs.com",1883
[2022/12/10 18:20:10.3217] → AT+MIPSTART="iot-06z00gm80emf6to.mqtt.iothub.aliyuncs.com",1883

OK

[2022/12/10 18:20:10.6112] →

CONNECT OK

[2022/12/10 18:20:12.4242] ← AT+MCONNECT=1,120
[2022/12/10 18:20:12.5412] → AT+MCONNECT=1,120

OK

[2022/12/10 18:20:12.7432] →

CONNACK OK

[2022/12/10 18:20:15.4216] ← AT+MSUB="/ext/ntp/i0m26p*****/8615510564*****/response",0
[2022/12/10 18:20:15.5267] → AT+MSUB="/ext/ntp/i0m26****/861551056*****/response",0

OK

[2022/12/10 18:20:15.6557] →

SUBACK

#发布NTP时间订阅

#开发板规则,AT命令中"(双引号)应由\22替代。                                     

#(由AT+MPUB="/ext/ntp/i0m26pLx83v/8615510564*****/request",0,0,{"deviceSendTime":"1670145990689"} 转写得到)

[2022/12/10 18:20:16.7899] ← AT+MPUB="/ext/ntp/i0m26p****/8615510564****1/request",0,0,{\22deviceSendTime\22:\221670145990689\22}

[2022/12/10 18:20:16.8949] → AT+MPUB="/ext/ntp/i0m26p*****/861551056*****1/request",0,0,{\22deviceSendTime\22:\221670145990689\22}

OK

[2022/12/10 18:20:17.0273] →
+MSUB: "/ext/ntp/i0m26p*****/861551056*****1/response",100 byte,{"deviceSendTime":"1670145990689","serverSendTime":"1670667616579","serverRecvTime":"1670667616579"}

到了这里,关于Air780E|阿里云|AT命令|物联网|三元组|鉴权|算法|密钥生成|(3)-阿里云物联网手动接入步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Air780EG —— 合宙4G定位解决方案

    开机 - 搜星 - 定位成功 - 上报 - 关机 开机 - 搜星 - 定位成功 - 模块休眠,关闭GPS电源,但是备电不关 - 需要定位时,热启动 - 模块休眠,关闭GPS电源,但是备电不关 -循环 780EG Luatos的测试示例下载 优点 :思路简单,功耗计算固定 缺点 :不是最优解,且实际操作起来会发现

    2024年02月12日
    浏览(36)
  • Air101|Air103|Air105|Air780E|ESP32C3|ESP32S3|Air32F103开发板:概述及PinOut

    目录 1、合宙Air101 固件编译可参考: PinOut(V2.1092400): 管脚映射表 PinOut(V2.1091800): 2、Air103 最新固件下载: 固件编译可参考: PinOut(V3.21112201): 管脚映射表 资料链接 PinOut(V4.21121301): 3、合宙Air105 固件编译可参考: 管脚详细信息 PinOut(V2.22050801) 4、Air780E 固件编译可

    2023年04月08日
    浏览(27)
  • LuatOS-SOC接口文档(air780E)--adc - 数模转换

    常量 类型 解释 adc.ADC_RANGE_3_6 number air105的ADC分压电阻开启,范围0~3.76V adc.ADC_RANGE_1_8 number air105的ADC分压电阻关闭,范围0~1.88V adc.ADC_RANGE_3_8 number air780E开启ADC0,1分压电阻,范围0~3.8V adc.ADC_RANGE_1_2 number air780E关闭ADC0,1分压电阻,范围0~1.2V adc.CH_CPU number CPU内部温度的通道id adc.CH

    2024年02月07日
    浏览(37)
  • LuatOS-SOC接口文档(air780E)--max30102 - 心率模块

    初始化MAX30102传感器 参数 传入值类型 解释 int 传感器所在的i2c总线id,默认为0 int int引脚 返回值 返回值类型 解释 bool 成功返回true, 否则返回nil或者false 例子 获取心率血氧(大概需要10s时间测量) 参数 无 返回值 返回值类型 解释 bool 成功返回true, 否则返回nil或者false number 心率

    2024年02月07日
    浏览(34)
  • LuatOS-SOC接口文档(air780E)-- io - io操作(扩展)

    示例 判断文件是否存在 参数 传入值类型 解释 string 文件路径 返回值 返回值类型 解释 bool 存在返回true,否则返回false 例子 获取文件大小 参数 传入值类型 解释 string 文件路径 返回值 返回值类型 解释 int 文件数据,若文件不存在会返回nil 例子 读取整个文件,请注意内存消耗 参

    2024年02月07日
    浏览(32)
  • LuatOS-SOC接口文档(air780E)--lvgl - LVGL图像库

    创建一个lv_draw_mask_radius_param_t 参数 无 返回值 返回值类型 解释 userdata lv_draw_mask_radius_param_t指针 例子 释放一个lv_draw_mask_radius_param_t 参数 无 返回值 无 例子 创建一个lv_draw_mask_line_param_t 参数 无 返回值 返回值类型 解释 userdata lv_draw_mask_line_param_t指针 例子 释放一个lv_draw_mask

    2024年02月07日
    浏览(36)
  • LuatOS-SOC接口文档(air780E)-- httpsrv - http服务端

    启动并监听一个http端口 参数 传入值类型 解释 int 端口号 function 回调函数 返回值 返回值类型 解释 bool 成功返回true, 否则返回false 例子 停止http服务 参数 传入值类型 解释 int 端口号 返回值 返回值类型 解释 nil 当前无返回值 例子 无

    2024年02月08日
    浏览(39)
  • LuatOS-SOC接口文档(air780E)--audio - 多媒体音频

    常量 类型 解释 audio.PCM number PCM格式,即原始ADC数据 audio.MORE_DATA number audio.on回调函数传入参数的值,表示底层播放完一段数据,可以传入更多数据 audio.DONE number audio.on回调函数传入参数的值,表示底层播放完全部数据了 audio.BUS_DAC number 硬件输出总线,DAC类型 audio.BUS_I2S numb

    2024年02月07日
    浏览(49)
  • LuatOS-SOC接口文档(air780E)--mqtt - mqtt客户端

    常量 类型 解释 mqtt.STATE_DISCONNECT number mqtt 断开 mqtt.STATE_SCONNECT number mqtt socket连接中 mqtt.STATE_MQTT number mqtt socket已连接 mqtt连接中 mqtt.STATE_READY number mqtt mqtt已连接 订阅主题 参数 传入值类型 解释 string/table 主题 int topic为string时生效 0/1/2 默认0 返回值 返回值类型 解释 int 消息i

    2024年02月06日
    浏览(31)
  • LuatOS-SOC接口文档(air780E)-- i2s - 数字音频

    示例 常量 类型 解释 i2s.MODE_I2S number I2S标准,比如ES7149 i2s.MODE_LSB number LSB格式 i2s.MODE_MSB number MSB格式,比如TM8211 初始化i2s 参数 传入值类型 解释 int i2s通道号,与具体设备有关 int 模式, 当前仅支持0, MASTER|TX|RX 模式, 暂不支持slave. 可选 int 采样率,默认44100. 可选 int 数据位数,默认

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包