移远EC600S-CN (3) - HTTP(S)应用GET请求POST请求,HTTP接入OneNET物联网云平台

2023-10-27

 

移远EC600S-CN 使用AT指令HTTP连接GET请求POST请求,并接入OneNET物联网云平台。实现HTTP对物联网设备的接入。

同样也适用于 EC200S。(EC200S不支持QuecPython,体积比EC600S略大,但便宜很多)

 

1. 准备

QCOM_V1.6

Quectel_EC200x&EG912Y&EC600S系列_HTTP(S)_应用指导_V1.0.pdf

以上工具和文档已上传GitHub:EC600S 工具及文档下载

 

2. HTTP(S)-AT操作流程

详见 应用指导的 1.2章节。

 

3. 关键AT命令格式

  • 3.1 AT+QHTTPCFG 配置HTTP(S)服务器参数

(1)查看HTTP(S)功能的所有参数:AT+QHTTPCFG?
(2)设置PDP场景为xx:AT+QHTTPCFG="contextid",<context ID>
(3)禁用(0)或启用(1)自定义HTTP(S)请求头消息:AT+QHTTPCFG="requestheader",<request_header>
(4)禁用(0)或启用(1)输出HTTP(S)响应头消息:AT+QHTTPCFG="responseheader",<response_header>
(5)禁用(0)或启用(1)自动输出HTTP(S)响应头消息:AT+QHTTPCFG="rspout/auto",<auto_outrsp>

<context ID>:场景ID(PDP上下文 ID),范围 1~15。默认值1。

<request_header>:禁用(0)或启用(1)自定义HTTP(S)请求头消息。0-禁用;1-启用。默认0。

        若禁用了自定义HTTP(S)请求头消息,则 GET请求的格式为:AT+QHTTPGET=<rsptime>

        若启用了自定义HTTP(S)请求头消息,则 GET请求的格式为:AT+QHTTPGET=<rsptime>,<data_length>

        错误使用,会报无效参数错误: +CME ERROR: 730

<response_header>:禁用(0)或启用(1)输出HTTP(S)响应头消息。0-禁用;1-启用。默认0。

<auto_outrsp>:禁用(0)或启用(1)自动输出HTTP(S)响应头消息。

        若启动了自动输出,则AT+QHTTPREAD 和 AT+QHTTPREADFILE 会执行失败。

 

  • 3.2 AT+QHTTPURL 设置远程HTTP(S)服务器的URL

(1)查询URL:AT+QHTTPURL?
(2)设置URL:AT+QHTTPURL=<URL_length>,<timeout>

HTTP(S)服务器的URL必须以 http:// 或 https:// 开头,表示访问 HTTP或HTTPS服务器。

例:输入 AT+QHTTPURL=24,80 命令后,TA会发出 CONNECT响应并进入透传模式,此时即可输入URL,例如HTTP://api.heclouds.com/。当输入数据的总大小达到<URL_length>24时,TA将切换回命令模式并上报结果 OK,URL设置完成。

<URL_length>:URL字符串长度。范围1~2048字节。

<timeout>:URL的最大输入时间。范围1~65535。默认60s。

 

  • 3.3 AT+QHTTPGET 发送GET请求到HTTP(S)服务器

根据上面 AT+QHTTPCFG="requestheader",<request_header> 的配置,GET分为两种情况:

(1)禁用了自定义HTTP(S)请求头消息:

AT+QHTTPGET=<rsptime>

(2)启用了自定义HTTP(S)请求头消息:

AT+QHTTPGET=<rsptime>,<data_length>

例:输入 AT+QHTTPGET=30,107命令后,若HTTP(S)服务器连接成功,TA会发出 CONNECT响应并进入透传模式,此时即可输入自定义GET请求头消息,例 "GET /devices/614235347/datapoints HTTP/1.1\r\napi-key:gXmRJ0eTdHa7dn7=HQ2a95nt7pg=\r\nHost:api.heclouds.com\r\n\r\n"。当输入数据的总大小达到<data_length>107时,TA将切换回命令模式并上报结果 OK,自定义GET请求发送完成。之后如果模块收到来自HTTP(S)服务器的响应后,将上报一下URC:+QHTTPGET: <err>,<httprspcode>,<content_length>

<rsptime>:GET的最大响应时间,单位秒。范围1~65535,默认值60。

<data_length>:HTTP(S)自定义请求信息的长度,包括HTTP(S)请求头消息和 HTTP(S)请求体。范围1~2048,单位字节。

注意:上面的GET请求消息:"GET /devices/614235347/datapoints HTTP/1.1\r\napi-key:gXmRJ0eTdHa7dn7=HQ2a95nt7pg=\r\nHost:api.heclouds.com\r\n\r\n",如果用 移远的串口调试工具 - QCOM_V1.6.exe,在右侧发送栏是发不出来的,右侧的输入栏不支持换行,也不支持 \r\n 转义。需要将内容粘贴到左侧的输入栏,并且按照 \r\n 的个数,手动替换为回车换行。(末尾一定要留两行换行,作为结束标志)

 

  • 3.4 AT+QHTTPPOST 发送POST请求到HTTP(S)服务器

根据上面 AT+QHTTPCFG="requestheader",<request_header> 的配置,POST分为两种情况:

(1)禁用了自定义HTTP(S)请求头消息:

AT+QHTTPPOST=<data_length>,<input_time>,<rsptime>

(2)启用了自定义HTTP(S)请求头消息:

AT+QHTTPPOST=<data_length>,<input_time>,<rsptime>

例:输入 AT+QHTTPPOST=107,30,30命令后,若HTTP(S)服务器连接成功,TA会发出 CONNECT响应并进入透传模式,此时即可输入HTTP(S) POST 请求体(和请求头消息)。当输入数据的总大小达到<data_length>107时,TA将切换回命令模式并上报结果 OK,自定义POST请求发送完成。之后如果模块收到来自HTTP(S)服务器的响应后,将上报一下URC:+QHTTPPOST: <err>,<httprspcode>,<content_length>

<data_length>:POST请求体长度。范围1~1024000,单位字节。

<input_time>:POST请求信息的最大输入时间。范围1~65535,单位秒。默认值60。

<rsptime>:配置HTTP (S) POST响应+QHTTPPOST: <err>,<httprspcode>,<content_length>的最大输出时间。范围1~65535,单位秒,默认值60。

 

  • 3.5 AT+QHTTPREAD 读取HTTP(S)服务器响应信息

AT+QHTTPREAD=<wait_time>

<wait_time>:接收两个数据包之间的最大间隔时间。范围1~65535,单位秒,默认值60。

 

  • 3.5 AT+QHTTPSTOP 取消HTTP(S)请求

MCU可通过该命令取消 HTTP(S) GET/POST 请求,断开与HTTP(S)的会话连接。

AT+QHTTPSTOP

 

 

4. HTTP接入OneNET物联网云平台

创建OneNET产品、设备、数据流、api-key、网页APP控制:OneNET四路开关产品创建

esp8266 AT指令连接OneNET(流程很像,可做参考):esp8266 HTTP接入OneNET云平台

  • 4.1 HTTP GET请求四路开关状态

上电后,短按POWKY,待串口接收到 RDY后,表示模块已经开机。

(1)PDP场景配置:(设置运营商信息,与上一章TCP连接的前半部分操作一样)

RDY
AT+CPIN?

+CPIN: READY

OK
AT+CREG?

+CREG: 0,1

OK
AT+CGREG?

+CGREG: 0,1

OK
AT+CEREG?

+CEREG: 0,1

OK
AT+QICSGP=1

+QICSGP: 1,"CMNET","","",1

OK
AT+QICSGP=1,1,"CMNET","","",1

OK
AT+QIACT=1

OK
AT+QIACT?

+QIACT: 1,1,1,"10.84.159.4"

OK

 

(2)HTTP接入OneNET,GET请求设备状态

AT+QHTTPCFG?

+QHTTPCFG: "contextid",1
+QHTTPCFG: "requestheader",0
+QHTTPCFG: "responseheader",0
+QHTTPCFG: "sslctxid",1
+QHTTPCFG: "contenttype",0
+QHTTPCFG: "rspout/auto",0
+QHTTPCFG: "closed/ind",0
+QHTTPCFG: "reqheader/add",0

OK
AT+QHTTPCFG="contextid",1

OK
AT+QHTTPCFG="responseheader",1

OK
AT+QHTTPCFG="requestheader",1

OK
AT+QHTTPURL=24,80

CONNECT
// 输入OneNET的URL,24个字节"HTTP://api.heclouds.com/"
OK
AT+QHTTPGET=30,107

CONNECT
// 输入GET报文,107个字节"GET /devices/614235347/datapoints HTTP/1.1\r\napi-key:gXmRJ0eTdHa7dn7=HQ2a95nt7pg=\r\nHost:api.heclouds.com\r\n\r\n"
OK

+QHTTPGET: 0,200,365
AT+QHTTPREAD=30

CONNECT
HTTP/1.1 200 OK
Date: Fri, 29 Jan 2021 10:23:48 GMT
Content-Type: application/json
Content-Length: 365
Connection: keep-alive
Server: Apache-Coyote/1.1
Pragma: no-cache

{"errno":0,"data":{"count":4,"datastreams":[{"datapoints":[{"at":"2020-07-30 17:34:44.000","value":0}],"id":"switch_3"},{"datapoints":[{"at":"2020-07-30 17:02:34.000","value":1}],"id":"switch_4"},{"datapoints":[{"at":"2020-07-30 17:34:31.000","value":1}],"id":"switch_1"},{"datapoints":[{"at":"2020-07-30 17:34:51.000","value":0}],"id":"switch_2"}]},"error":"succ"}
OK

+QHTTPREAD: 0
AT+QHTTPSTOP

OK

 

刚刚获取到的四路开关状态依次为:1 0 0 1

使用APP,改变开关的值。

 

再来GET查询一次。

AT+QHTTPGET=30,107

CONNECT
// 输入GET报文,107个字节"GET /devices/614235347/datapoints HTTP/1.1\r\napi-key:gXmRJ0eTdHa7dn7=HQ2a95nt7pg=\r\nHost:api.heclouds.com\r\n\r\n"
OK

+QHTTPGET: 0,200,365
AT+QHTTPREAD=30

CONNECT
HTTP/1.1 200 OK
Date: Fri, 29 Jan 2021 10:31:29 GMT
Content-Type: application/json
Content-Length: 365
Connection: keep-alive
Server: Apache-Coyote/1.1
Pragma: no-cache

{"errno":0,"data":{"count":4,"datastreams":[{"datapoints":[{"at":"2021-01-29 18:30:49.000","value":1}],"id":"switch_3"},{"datapoints":[{"at":"2020-07-30 17:02:34.000","value":1}],"id":"switch_4"},{"datapoints":[{"at":"2020-07-30 17:34:31.000","value":1}],"id":"switch_1"},{"datapoints":[{"at":"2021-01-29 18:30:46.000","value":1}],"id":"switch_2"}]},"error":"succ"}
OK

+QHTTPREAD: 0
AT+QHTTPSTOP

OK

开关状态依次为:1 1 1 1

状态一致,EC600S使用HTTP接入OneNET成功。

 

如需上报温湿度消息,OneNET要先创建对应的数据流,设备拼接json报文使用POST上发,操作区别不大就不做演示了。

(按照上一章TCP连接的操作,接入80端口,发送相同的GET/POST报文,同样可以实现一样的效果。不过显然使用HTTP的AT指令要更方便些。)

 

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

移远EC600S-CN (3) - HTTP(S)应用GET请求POST请求,HTTP接入OneNET物联网云平台 的相关文章

随机推荐

  • 搭建nginx+php后访问不到项目

    记在虚拟机搭建php nginx mysql踩到的坑 首先因为工作原因 离开了上家公司 然后入职xx后 由于没有开发机只能自己搭建了一个虚拟机 搭建好后使用一键安装式工具安装了lnmp环境 之后访问nginx是可以访问通的 但是指定了项目目
  • TCP、UDP、HTTP、SOCKET之间的区别

    IP 网络层协议 TCP和UDP 传输层协议 HTTP 应用层协议 SOCKET TCP IP网络的API TCP IP代表传输控制协议 网际协议 指的是一系列协议 TCP和UDP使用IP协议从一个网络传送数据包到另一个网络 把IP想像成一
  • 二手服务器还是组装机,我表弟不懂电脑,老板竟然给他组装这种电脑:没坑人,明码标价!...

    说到组装电脑 大家都不陌生了 它是多硬件组合的产物 它对硬件搭配有要求 对于动手能力也有一定的要求 于是很多朋友为了省麻烦就会去找熟人或者是电脑店进行咨询组装电脑 前几天 我的表弟就在他居住附近的一家电脑店咨询组装了一台电脑 最后发现被坑惨
  • 原创打造 Claude网页 接口

    先进入App unavailable Anthropic 新建聊天聊起来 在聊之前就要打开f12 监听请求 相关参数打开f12即可找到 注意 需要在打开f12后发送几条信息给claude才有相关链接显示 这两个参数就是我们需要的 cooki
  • Code Blocks IDE在linux下添加include & lib路径

    摘自 url http bbs csdn net topics 350101552 url size large 第一步 编译第三方库 得到头文件和库 例如路径关系 D MyLib include D MyLib lib 在include中
  • 抖音直播间弹幕rpc学习

    目标url 随便找个直播间即可 https live douyin com 198986091107 接口分析 首先并没有在xhr下找到对应的接口 因为采用了websocket来传输信息 切换到ws即可看到 消息下 可以看到16进制的数据在
  • 连接被拒绝 因为没有授权此用户账户进行远程登录

    背景 有时想远程连接某服务器进行操作 但是远程登陆时 却报错 解决办法 在服务器上进行设置 允许用户登录 步骤 1 用允许登录的用户 远程连接服务器 在这里用v liyh登录 点击 开始 图标 运行 如图 在对话框中输入 mstsc 如图
  • 【Linux命令详解

    文章标题 简介 一 参数列表 二 使用介绍 1 显示文件内容 2 创建文件 3 连接文件 4 显示行号 5 压缩空行 6 显示特殊字符 7 显示行号和特殊字符 8 从标准输入读取 9 显示文件开头或结尾 10 备份文件 11 显示文件内容至
  • Redis 配置详解 —— 全网最新最全

    文章目录 一 撰文目的 二 配置详解 1 EXAMPLE 概要说明 2 INCLUDES 配置包含 3 MODULES 加载模块 4 NETWORK 网络配置 5 TLS SSL 通讯协议 6 GENERAL 常规配置 7 SNAPSHOT
  • 【合作 】联通、壳牌、联想、国金证券等众多企业签约 Eolink !

    联通 壳牌 联想 华润置地 中国铁塔等多家知名企业签约 Eolink 携手落地 API 全生命周期管理 感谢广大企业对 Eolink 的信任和选择 Eolink 致力于为企业提供最全面的 API 研发管理解决方案 提供高效 可靠的工具以及服
  • lua文件读写

    文件读写 文件读写对制作游戏很有帮助 可以调用别的文件中的代码 保存最高分 游戏存档 玩家状态等信写到文件中 首先 让我们看一个简单的命令 dofile 这个命令会读入另一个文件的代码并立即执行 代码 dofile test lua 很简单
  • 记录一个vue项目报错UnhandledPromiseRejectionWarning: Unhandled promise rejection.

    使用vue cli创建vue项目 加入一些之前的代码 然后打包运行报错 node 4892 UnhandledPromiseRejectionWarning Unhandled promise rejection This error or
  • 一种复杂业务场景的解决方案(代码结构)

    背景 我个人负责交易线的一些服务优化工作 如购物车 预购单等 这些服务是前台服务 需要基于很多中台服务能力来实现业务功能 中台服务如商品中心 协议中心 用户中心 营销活动等 前台服务通过RPC调用中台服务获取数据 在2020年度的优化工作汇
  • 如何做好nodejs服务在服务器上的安全防护?

    Web服务器安全问题仍然是IT部门最关心的问题之一 因为频发的网络攻击已被证明 由于存在托管敏感数据 Web服务器是一个组织中最容易被黑客针对攻击的地方 因此 本篇文章结合nodejs服务对如何提高Web服务器安全性给出了下面几条提示 一
  • 2023蓝桥杯C++A组题解(第十四届)

    今年广东省三中游 按New Oj估分 前5题估分17 第1题 3 4 5题暴力 第2题 B dfs写错了 第7题 G 并查集 多了个以前没见过的要求 找不到思路 面向爆零选手 水平有限 将就着看 有空再补充后5题 目录 吐槽 A 2067
  • Vue全家桶(四)之ES6模块化与webpack打包

    Vue全家桶 Vue全家桶 地址 Vue全家桶 一 之基础指令 https blog csdn net m0 55990909 article details 123917809 Vue全家桶 一 之常用特性 https blog csdn
  • Air32

    Air32 合宙Air001单片机内部FLASH读写示例 代码已经通过测试 开发环境KEIL MDK 5 36 测试代码 void FLASH RdWrTest void uint32 t Address uint32 t PageRead
  • vue + ant design vue 搭配 less 动态自定义主题颜色

    今天搞了一下午 终于搞成功了 分享给大家看看 思路解析 less 提供一个 modifyVars 可以修改浏览器中 less 文件里的变量 所以我们需要在浏览器端引入 less js 需要引入一个 less 文件 其中包含要修改的变量 但是
  • yum install net-tools安装报错could not resolve host: mirrorlist.centos.org

    Could not retrieve mirrorlist http mirrorlist centos org release 7 arch x86 64 repo os infra stock error was 14 curl 6 C
  • 移远EC600S-CN (3) - HTTP(S)应用GET请求POST请求,HTTP接入OneNET物联网云平台

    移远EC600S CN 使用AT指令HTTP连接GET请求POST请求 并接入OneNET物联网云平台 实现HTTP对物联网设备的接入 同样也适用于 EC200S EC200S不支持QuecPython 体积比EC600S略大 但便宜很多