我正在尝试连接到托管在 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