问题描述
我正在使用 AT 命令与来自 ESP8266 的 Ai-Thinker A9G 芯片通信,作为 GPS 跟踪器单元的一部分。开始时效果很好,然后 HTTPS 请求在成功发送 7 或 8 后开始失败。但是,发出 HTTP 请求仍然没有问题。
当 HTTP 请求工作正常时,什么可能导致 HTTPS 请求在前 7 或 8 次之后失败?
详情...
当设备启动时,我使用以下方法建立 GPRS 连接:
AT+CGREG=1
> OK
AT+CGATT=1
> +CGATT:1
> OK
AT+CGDCONT=1,"IP","data.uk" // APN for 1pmobile
> OK
AT+CGACT=1,1
> OK
AT+CGACT?
> +CGACT: 1,1
> OK
然后每N分钟发布一次位置,如下:
AT+HTTPPOST="https://<URL>","application/x-www-form-urlencoded","arg1=val1&arg2=val2&..."
这在前 7 或 8 次有效,之后所有 HTTPS 请求都失败并显示以下消息(完全按照从 A9G 芯片发送的方式复制,包括固件的拼写错误):
+cme ERROR: parameters are invalid
failure,pelase check your network or certificate!
在 HTTPPOST
命令开始失败后,我尝试了以下状态检查,但一切都表明芯片处于良好状态并且仍然在线:
AT+CIPSTATUS
> +CIPSTATUS:
> STATE:IP INITIAL
AT+CGACT?
> +CGACT: 1,1
> OK
AT+CGREG?
> +CGREG: 1,1
> OK
AT+CGDCONT?
> +CGDCONT:1,"data.uk","<IP address>",0
> OK
我也试过:
- 连续或间隔 5 分钟发送请求 - 行为没有变化,无论经过多少时间,它仍然会在 7 或 8 个请求后失败。
- 更换到不同的 SIM 卡并更新
CGDCONT
中指定的 APN - 没有变化。 - 使用
AT+CGACT=0,1
、AT+CGATT=0
、AT+CGREG=0
停用网络连接,然后重新启用它 - 没有变化。 - 发出
AT+HTTPGET
请求而不是HTTPPOST
- 没有变化。 - 重新启动 A9G 芯片 - 这会给我另外 7 或 8 个请求,然后重复该模式。
- 向 HTTP URL 而非 HTTPS 发出请求 - 如前所述,这些工作正常。
令人恼火的是,A9/A9G 芯片的文档很薄。其中大部分是中文 PDF,不能很好地与 Google 翻译配合使用。这些是我发现的最有用的链接,可以将我上面的内容拼凑在一起:
- AT command reference for the A6 and A7,它们是由同一制造商生产的相似但不相同的芯片。
- A Hackster.io project 提到了几个 AT 命令
- Code examples from the chip manufacturer,它们的格式很差,但如果您查看页面源代码,则更容易阅读。
- ESP8266 + A9G combo GitHub project,其中包括一些背景信息。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)