【问题标题】:Arduino SIM5320E HTTPS Request. AT+ CommandsArduino SIM5320E HTTPS 请求。 AT+ 命令
【发布时间】:2022-12-12 15:28:32
【问题描述】:

我正在研究 Maduino Zero SIM5320,我正在尝试使用 ThingSpeak 向 API 发出 GET 请求。

我有以下代码来尝试发送数据,但没有收到任何要发送的数据。

  sendData("AT+CSQ", 2000, DEBUG);
  sendData("AT+CREG=1", 2000, DEBUG);
  sendData("AT+COPS=0", 2000, DEBUG);
  sendData("AT+CGATT=1", 2000, DEBUG);
  sendData("AT+CGATT?", 2000, DEBUG);
  sendData("AT+CGDCONT=1,\"IP\",\"internet\"", 2000, DEBUG);
  sendData("AT+CGSOCKCONT=1,\"IP\",\"internet\"", 2000, DEBUG);
  sendData("AT+CSOCKSETPN=1", 2000, DEBUG);
  sendData("AT+NETOPEN", 3000, DEBUG);
  sendData("AT+IPADDR", 3000, DEBUG);

发送数据时它不会注册该值。

AT+CHTTPSOPSE="api.thingspeak.com",80,1

好的

AT+CHTTPSSEND=55

GET /update?api_key=XXXXXHIDDENXXXXXXX&field1=12 HTTP/1.1

好的

AT+CHTTPSSEND? +CHTTPSSEND:0

最终目标是获取数据以使用它触发 API。这样做的最佳方法是什么,我怎样才能让它发挥作用?

预先感谢您的建议和帮助。

SIM 文档:https://simcom.ee/documents/SIM5320/SIMCOM_SIM5320_ATC_EN_V2.05.pdf

【问题讨论】:

  • 我很困惑,你在谈论 HTTPS,但是你打开了一个到端口 80 (HTTP) 的连接并设置服务器类型 1 (HTTP) 而不是 443,2 (HTTPS)...(如果你想要 HTTP 而不是 HTTPS无论如何,使用AT+CHTTPACT不是更容易吗?)
  • 这里的其他可能问题可能是您在第一个标题行之后缺少最后两个 CRLF,或者可能还需要 Host 标题。
  • @CherryDT,感谢您的回复。我知道 HTTP 在端口 80 上,HTTPS 在端口 443 上,在以前的模块中,我可以使用“AT+HTTPPARA”进行 URL 请求,但是 sim5320 不支持 AT+HTTPPARA,所以我有点迷路 ATM .
  • @CherryDT 现在只获取HTTP/1.1 400 Bad Request. 我已经尝试了它的变体,但仍然无法正常工作。这是我尝试发出但失败的 cURL 请求。这是一个示例,说明它如何在我以前的代码中使用另一个 sim 模块 (SIM808)。 "AT+HTTPPARA=\"URL\",\"http://api.thingspeak.com/update.json?api_key=" + (String)APIKEY + "&field1=25.5\"";
  • 这很好,因为这意味着您实际上发送了请求并且现在得到了响应。您现在应该检查 API 密钥是否正确等。您可以尝试使用 telnet 或 nc / netcat 手动发送完全相同的请求。您可以打开与服务器的连接并发送请求,看看会发生什么,以及何时得到正确答案那里,您至少知道请求现在可以了。 g.recordit.co/pcYXKdLkeh.gif

标签: arduino gsm at-command arduino-ide


【解决方案1】:

我能够通过@CherryDT 的帮助向 Thingspeak 提交请求,这里是提交随机数的示例。

randomNumber = random(1,99);  
sendData("AT+CHTTPSOPSE="api.thingspeak.com",80,1", 2000, DEBUG);
sendData("AT+CHTTPSSEND=72",2000,DEBUG);
SerialUSB.println("Random Number is: " + (String)randomNumber);
sendData("GET /update?api_key=XXXXXXXXXX&field1=" +(String)randomNumber+"",0,DEBUG);
sendData("Host: api.thingspeak.com",0,DEBUG);

该问题最初是由需要传递的字符数引起的。在我的案例中,我使用 72,因为这正是需要的数量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    相关资源
    最近更新 更多