A9G 上通过 AT 命令的 HTTPS 请求在 7 次请求后失败; HTTP 工作正常

问题描述 投票:0回答:2

我使用 AT 命令与 ESP8266 的 Ai-Thinker A9G 芯片进行通信,作为 GPS 跟踪器单元的一部分。一开始工作正常,然后在成功发送 7 或 8 后 HTTPS 请求开始失败。不过,发出 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,"IP","data.uk","<IP address>",0,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 格式,无法很好地与谷歌翻译配合使用。这些是我发现的最有用的链接,可以将上面的内容拼凑起来:

esp8266 at-command gprs
2个回答
3
投票

最后我联系了芯片制造商,解释了我遇到的问题,并建议固件中可能存在错误。他们回复并确认确实如此,并表示该问题不太可能很快得到解决:

你好马克,

是的,我们现在发现很多A9G模块的问题反馈,包括你说的,但现在我们没有足够的工程师来支持这个问题。

如果你的数量要求大我可以尝试推。

致以诚挚的问候,

- 海外团队

深圳市安信可科技有限公司

深圳市安信科科技有限公司

我将其发布为答案而不是评论,因为它直接回答了我原始帖子顶部的主要问题:“当 HTTP 请求工作正常时,什么可能导致 HTTPS 请求在前 7 或 8 个之后失败?”。答:固件损坏。我最好的猜测是分配和取消分配内存以处理 TLS 交换时出现错误,但这可能还很遥远。

对于遇到此问题的其他人,您有几个选择:

  • 尽可能使用 WiFi。
  • 坚持 HTTP 请求。
  • 每7次命令后重新启动芯片。

0
投票

我可以看一下使用 AT+HTTPPOST 命令的示例吗?

我尝试发送这样的命令: AT+HTTPPOST="https://api.restful-api.dev/objects","application/json","{"name":"test"}" 但它不起作用。你有什么建议吗? 😭(我用的是A9G)。

另外,我想知道如何在此 POST 命令中添加授权令牌。非常感谢。”

© www.soinside.com 2019 - 2024. All rights reserved.