我使用 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
我也尝试过:
CGDCONT
中指定的 APN - 没有变化。AT+CGACT=0,1
、AT+CGATT=0
、AT+CGREG=0
停用网络连接,然后重新启用它 - 没有变化。AT+HTTPGET
请求而不是 HTTPPOST
- 没有变化。令人烦恼的是,A9/A9G 芯片的文档资料很少。其中大部分内容是中文 PDF 格式,无法很好地与谷歌翻译配合使用。这些是我发现的最有用的链接,可以将上面的内容拼凑起来:
最后我联系了芯片制造商,解释了我遇到的问题,并建议固件中可能存在错误。他们回复并确认确实如此,并表示该问题不太可能很快得到解决:
你好马克,
是的,我们现在发现很多A9G模块的问题反馈,包括你说的,但现在我们没有足够的工程师来支持这个问题。
如果你的数量要求大我可以尝试推。
致以诚挚的问候,
- 海外团队
深圳市安信可科技有限公司
深圳市安信科科技有限公司
我将其发布为答案而不是评论,因为它直接回答了我原始帖子顶部的主要问题:“当 HTTP 请求工作正常时,什么可能导致 HTTPS 请求在前 7 或 8 个之后失败?”。答:固件损坏。我最好的猜测是分配和取消分配内存以处理 TLS 交换时出现错误,但这可能还很遥远。
对于遇到此问题的其他人,您有几个选择:
我可以看一下使用 AT+HTTPPOST 命令的示例吗?
我尝试发送这样的命令: AT+HTTPPOST="https://api.restful-api.dev/objects","application/json","{"name":"test"}" 但它不起作用。你有什么建议吗? 😭(我用的是A9G)。
另外,我想知道如何在此 POST 命令中添加授权令牌。非常感谢。”