4

我正在尝试连接到托管在 AWS 上的蚊子经纪人,在端口 8883 上,但到目前为止我还没有成功。我正在使用 TinyGSM 和 PubSubClient 库。

GSM 模块连接到互联网,并且在没有 SSL 的代理中完美运行。但是当我尝试切换到 SSL 时,他无法连接,并且 MQTT 客户端返回 -2。但是这个错误不是很清楚,你可以在 PubSub 文档中看到。

#define MQTT_CONNECT_FAILED -2

这些是它为尝试连接到代理而执行的 AT 命令

AT+CIPRXGET=4,0

+CIPRXGET: 4,0,0

OK
AT+CIPSTATUS=0

+CIPSTATUS: 0,0,"TCP","3.13.162.221","8883","CLOSED"

OK
* Trying to connect to the MQTT Broker: <broker_url>
AT+CIPCLOSE=0,1

ERROR
AT+CIPSSL=1

OK
AT+CIPSTART=0,"TCP",<broker_url>,8883

OK
Failed to reconnect to the broker.
Status: -2

代码中一些有用的部分

void setupGSM() {
  SerialMon.println("Setup GSM...");
  
  modem.sendAT("+SSLOPT=1,1");
  if (modem.waitResponse() != 1) {
    SerialMon.printf("modem +SSLOPT=1,1 failed");
  }
  while (!modem.gprsConnect(APN, APN_USER, APN_KEY)) {
    SerialMon.println("GPRS Connection Failed");
    modem.restart();
    delay(1000);
  }
  SerialMon.println("GPRS Connection Success");
}

void reconnectMQTT() {
  while (!MQTT.connected()) {
    SerialMon.print("* Trying to connect to the MQTT Broker: ");
    SerialMon.println(BROKER_MQTT);
    initMQTT();

    if (MQTT.connect(ID_MQTT, MQTT_USERNAME, MQTT_KEY)) {
      SerialMon.println("Successfully connected to the MQTT broker!");
      MQTT.subscribe(RECEIVED_CREDITS);
    }
    else {
      SerialMon.println("Failed to reconnect to the broker.");
      SerialMon.print("Status: ");
      SerialMon.println(MQTT.state());
      delay(2000);
    }
  }
}

问题是,如何使用 sim800l 模块通过 SSL 连接到 MQTT 代理?

信息
调制解调器:SIMCOM_SIM800L R14.18
主处理器板:TTGO-T-Call ESP32
TinyGSM 版本:0.10.5

4

1 回答 1

0

AWS IoT 代理需要使用 SSL 客户端证书。

于 2020-08-26T09:11:01.820 回答