电路研究9.3.4——合宙Air780EP中的AT开发指南:HTTPS示例

发布于:2025-05-10 ⋅ 阅读:(14) ⋅ 点赞:(0)

        暂时感觉用不到这个,不过还是先贴出来吧,到时如果真用到再详细分析出来。

        SSL 证书双向验证功能的 HTTPS 过程:

        AT+FSCREATE="ca.crt" 创建服务器端 CA 证书文件
        OK
        AT+FSCREATE="client.crt" 创建客户端证书文件
        OK
        AT+FSCREATE="client.key" 创建客户端密钥文件
        OK
        AT+FSWRITE="ca.crt",0,2080,15 文件长度 2080 字节只是举例,要根据实际填写。下同。
        > 这里输入 CA 证书文件
        OK
        AT+FSWRITE="client.crt",0,128,10
        > 这里输入客户端证书文件
        OK
        AT+FSWRITE="client.key",0,188,10
        > 这里输入客户端密钥文件
        OK
        AT+SAPBR=3,1,"CONTYPE","GPRS"
        OK
        AT+SAPBR=3,1,"APN","" 设置 PDP 承载之 APN 参数 模块注册网络后会从网络自动获取 <apn>并激活一个 PDP 上下文,用于 RNDIS 上网使用(此 <apn> 可以通 过 AT+CGDCONT? 来 查询),所以输入 AT+SAPBR=3,<cid>,"APN","" 即可,模块内部会按 照自动获取的 <apn> 来设置 APN
        OK
        AT+SAPBR=1,1
        OK
        AT+SAPBR=2,1
        +SAPBR: 1,1,010.169.179.213 OK
        AT+SSLCFG="cacert",153,"ca.crt" 设置服务器 CA 证书 SSL 上下文 id ,在 TCP 单链接的情况下缺省为 0 ; 在 HTTPS 链接下为 153 ,下同
        OK
        AT+SSLCFG="clientcert",153,"client.crt" 设置客户端证书
        OK
        AT+SSLCFG="clientkey",153,"client.key" 设置客户端 KEY
        OK
        AT+SSLCFG="seclevel",153,2 设置安全等级
        OK
        AT+SSLCFG="ciphersuite",153,0X0035 设置加密套件
        OK
        AT+SSLCFG="clientrandom",153,01B12C3141516171F19202122232425262728293031 323334353637D 设置随机数
        OK
        AT+HTTPINIT HTTP 协议栈初始化
        OK
        AT+HTTPPARA="CID",1 设置 HTTP 会话参数: CID
        OK
        AT+HTTPPARA="URL","https://**.***.***" 设置 HTTP 会话参数: URL 请写具体的网址,而不要照抄
        OK
        AT+HTTPACTION=0 GET 开始
        OK
        +HTTPACTION:0,200,1348 +HTTPACTION:0,200,1348 +HTTPACTION:0,200,1348 … … 出现这些 URC 上报表明 GET 数据成功,等待 READ AT+HTTPREAD 读取从 HTTP 服务器 GET 的数据
        +HTTPREAD:1592 ……………… OK …..表示 HTTP 数据 AT+HTTPTERM 结束 HTTP 服务
        OK
        ……… OK ……表示 HTTP 数据
        AT+HTTPTERM 结束 HTTP 服务
        OK
        这里算是证书的相互认证吗?感觉超像上位机的网页认证呢。
        常见问题
        1、 HTTP 支持多连接吗
        目前 HTTP 仅支持单连接,不支持多连接
        2、 HTTPS 如何使用
        本文主要描述了基本流程和异常处理,对于 HTTPS 使用方法没有做过多描述,这一部分,请 自行参考 AT 手册 HTTP 章节下《使用方法举例》中的 " SSL 证书验证功能的 HTTPS 流程 " 使用方法;支持的 SSL 参数,请自行参考 AT+SSLCFG 命令说明
        如果 SSL 的参数配置不变,则每次开机运行过程中,仅设置一次即可,当然如果一直不需要变动,可以考虑使用AT&W来设置保存吧?
        3、重试多次 PDP HTTP 应用一直连接失败
        如果重试多次 PDP 激活, PDP 一直激活失败,或者 HTTP 一直请求应答失败,则尝试使用如 下手段恢复:
        1、使用 RESET 引脚复位模块
        2、极端情况下,直接给模块断电,再上电, POWER KEY 引脚拉低开机
        4、 HTTP 如何下载大文件(断点续传)
        在实际的应用场景中,可能需要下载一个非常大的文件,例如几百 K 字节、几 M 字节,但是 4G 模块中 HTTP 可用的内存缓冲区为 300KB 左右( 780E 模块 4KB 左右),当文件大小超过这个缓冲区时,就要使用断点续传功能来分段下载处理了。下面以“ 下载一个 11975260 字节的文件” 为例,来说明如何使用断点续传功能(注意:本示例仅仅演示了正常流程的 HTTP AT命令,完整流程以及异常处理流程请参考本文应用流程部分)
        AT+HTTPINIT
        OK
        AT+HTTPPARA= "URL" , "http://openluat-erp.oss-cn-hangzhou.aliyuncs.com/erp_ site_file/product_file/sw_file_20200108162920_Luat_V0028_ASR1802.zip"
        OK
        AT+HTTPACTION= 2
        OK
        +HTTPACTION: 2 , 200 , 0
        AT+HTTPHEAD
        +HTTPHEAD: 454
        server: aliyunoss
        date : thu, 16 jan 2020 06 : 50 : 58 gmt
        content- type : application/zip
        content-length: 11975260
        //此处的 11975260 表示文件
        总大小
        connection: keep-alive
        x-oss-request-id: 5e2007 d108f4be32353a92ae
        accept-ranges: bytes
        etag: "a5b9cc75c0f26413bbaf00a0fa952bb2"
        last-modified: wed, 08 jan 2020 08 : 29 : 29 gmt
        x-oss-object- type : normal
        x-oss-hash-crc64ecma: 16925484473913319613
        x-oss-storage-class: standard
        content-md5: pbnmdcdyzbo7rwcg+pursg==
        x-oss-server- time : 111
        OK
        //如下指令,表示下载文件的第一个 3 KB 数据
        AT+HTTPPARA= "BREAK" , 0
        OK
        AT+HTTPPARA= "BREAKEND" , 3071
        OK
        AT+HTTPACTION= 0
        OK
        +HTTPACTION: 0 , 206 , 3072
        AT+HTTPREAD
        +HTTPREAD: 3072
        ......
        //此处输出 3072 字节数据
        OK
        //表示下载文件的第一个 3 KB 数据完成
        //如下指令,表示下载文件的第二个 3 KB 数据
        AT+HTTPPARA= "BREAK" , 3072
        OK
        AT+HTTPPARA= "BREAKEND" , 6143
        OK
        AT+HTTPACTION= 0
        OK
        +HTTPACTION: 0 , 206 , 3072
        AT+HTTPREAD
        +HTTPREAD: 3072
        ......
        //此处输出 3072 字节数据
        OK
        //表示下载文件的第二个 3 KB 数据完成
        //此处参考上文指令,一直循环读取文件的下一个 300 KB 数据,直到读取结束
        ......
        AT+HTTPTERM
        OK
        5、 HTTP 下载的大文件如何可靠的发送给 MCU AT 流控)
        在上面第四个问题指令里加入下面一段 AT 指令中,如下一段 AT 指令
        AT+HTTPREAD
        +HTTPREAD: 3072
        ......
        //此处输出 3072 字节数据
        OK
        …处的 3072 字节数据,是模块通过 UART AT 口发送给 MCU ,在实际传输过程中,由于串口芯片驱动、MCU 端的处理能力、波特率的选择都存在不确定性,可能会导致 MCU 端接收到的数据,实际上没有 3072 字节,这就要求 UART AT 口打开流控功能。模块支持硬流控和软流控两种:
        1. 硬流控,参考如下步骤操作:(这个感觉不涉及到,可以不使用呢)
        (1 ) 模块和 的 UART 口, CTS RTS 要交叉相连
        (2 MCU 端固件要支持并且打开硬流控功能
        (3 MCU 端要发送 AT+IFC=2,2 命令到模块端,打开模块端的硬流控功能
        2. 软流控,参考如下步骤操作:
        (1 MCU 端固件要支持并且打开软流控功能
        (2 MCU 端要发送 AT+IFC=1,1 命令到模块端,打开模块端的硬流控功能
        6、为什么我只发了 10 字节消息, 100 次却消耗了那么多流量?
        因为还有 HTTP 自带的请求头。
        7、为什么频繁请求会失败 ?
        支持的 http 连接总数有限数量为 tcp 连接数量 8 个,建议一个 http 连接返回请求结果之后, 再去请求下一个连接;不要使用循环定时器方式不断的发起新的 http 请求。
        8、如何 POST 文件 ?
        主要是使用 AT+HTTPDATA 命令录入文件数据后,发送 AT+HTTPACTION=1 利用 post 上传
        9、数据发送接收缓存问题
        AT 版本:有缓存机制,内存中有一个的缓冲区( 780E 系列模块标准 AT 4KB last 版本为 128k),发送和接受使用的是同一块缓冲区,发送和收到数据后,插入此缓冲区,然后通过 AT 口输出 urc ,提示收到的数据长度;缓冲区满之后,再收到新数据,会丢弃新收到的数据, 并通过 AT 口输出 urc 提示出错;需要读取数据时,发送 AT+HTTPREAD 命令读取,可分段 读取,也可全部读取
        注意:缓冲区位于内存中,断电或者重启后,缓存表中的数据会被清空;虽然缓冲区可以缓 存很多数据,但是建议收到数据时,通过 AT+HTTPREAD 及时读取出来,以防缓冲区满出错
        HTTP 下载大文件内存不足问题
        可以使用上面的断点续传
        或者新的 AT 指令 AT+HTTPEXACTION / AT+HTTPEXGET
        示例:
        AT+CPIN?
        +CPIN: READY
        //查询 sim 卡是否正常
        OK
        AT+CGATT?
        +CGATT: 1
        //查询是否附着上数据网络,如果返回 +CGATT: 0 表示未附着上
        OK
        AT+SAPBR= 3 , 1 , "CONTYPE" , "GPRS"
        OK
        AT+SAPBR= 3 , 1 , "APN" , ""
        //设置 APN ,此处 "" 表示使用从网络端自动获取到的 APN
        OK
        AT+SAPBR= 1 , 1
        //发起激活 PDP 的请求
        OK
        AT+SAPBR= 2 , 1
        //注意:此命令仅仅查询 PDP 地址,可以不执行
        +SAPBR: 1 , 1 , "10.43.103.155"
        //请求到的 PDP 地址
        AT+HTTPINIT
        OK
        AT+HTTPPARA= "CID" , 1
        OK
        AT+HTTPPARA= "URL" , "airtest.openluat.com"
        OK
        AT+HTTPEXACTION= 0
        OK
        +HTTPEXGET //收到这个返回以后 发送下面这条指令
        AT+HTTPEXGET //重复发送这条指令直到文件下载完
        +HTTPEXGET: 3880 // 本次输出 3880 字节数据
        (此处省略了打印信息 )
        OK
        +HTTPEXGET
        AT+HTTPEXGET
        +HTTPEXGET:
        (此处省略了打印信息 )
        OK
        +HTTPEXACTION: 0 , 200 // 下载完毕结束会话
        感觉有点晕了,加上最近身体也不怎么舒服,感觉厌头耷脑的,一点也不舒服,目前就先到这里吧。

网站公告

今日签到

点亮在社区的每一天
去签到