i am facing issue in ssl implimentation i tried so many things but getting the same error again and again
CODE
#include <Arduino.h>
#include <SPIFFS.h>
#define MODEM_RX 18
#define MODEM_TX 19
#define MODEM_BAUD 57600
#define MQTT_HOST “com”
#define MQTT_PORT 8883
#define MQTT_CLIENT “esp32_mc60_01”
#define MQTT_USER “abcd”
#define MQTT_PASS “efgh”
#define MQTT_TOPIC “Status”
#define APN “VILESIM”
// ================= AT Helper =================
String atCmd(const String &cmd, uint32_t timeout = 5000) {
while (Serial1.available()) Serial1.read();
if (cmd.length()) {
Serial.print(">>> ");
Serial.println(cmd);
Serial1.println(cmd);
}
String resp;
uint32_t t = millis();
while (millis() - t < timeout) {
while (Serial1.available()) {
char c = Serial1.read();
resp += c;
Serial.write(c);
}
delay(1);
}
return resp;
}
// ================= SPIFFS → MC60 CERT WRITE =================
bool mc60WriteCertFromSPIFFS() {
File f = SPIFFS.open(“/isrgrootx.pem”, “r”);
if (!f) {
Serial.println(“Certificate not found in SPIFFS”);
return false;
}
size_t certLen = f.size();
Serial.print("SPIFFS Cert Length: ");
Serial.println(certLen);
atCmd(“AT+QSECDEL="UFS:isrgrootx.pem"”);
String cmd = “AT+QSECWRITE="UFS:isrgrootx.pem",” + String(certLen) + “,100”;
String resp = atCmd(cmd, 5000);
if (resp.indexOf(“CONNECT”) == -1) {
Serial.println(“No CONNECT received”);
f.close();
return false;
}
while (f.available()) {
Serial1.write(f.read());
}
resp = atCmd(“”, 20000);
f.close();
if (resp.indexOf(“OK”) != -1) {
Serial.println(“Certificate write successful”);
return true;
}
Serial.println(“Certificate write failed”);
return false;
}
// ================= NETWORK =================
bool mc60Network() {
atCmd(“AT”);
atCmd(“ATE0”);
atCmd(“AT+CFUN=1”);
delay(2000);
if (atCmd(“AT+CPIN?”).indexOf(“READY”) == -1) return false;
if (atCmd(“AT+CREG?”).indexOf(“,1”) == -1 &&
atCmd(“AT+CREG?”).indexOf(“,5”) == -1) return false;
atCmd(“AT+CGATT=1”);
atCmd(“AT+QIDEACT”);
atCmd(String(“AT+QIREGAPP="”) + APN + “","",""”);
if (atCmd(“AT+QIACT”).indexOf(“OK”) == -1) return false;
// Verify time
atCmd(“AT+QLTS”);
return true;
}
// ================= MQTT SSL =================
bool mc60MQTTConnect() {
atCmd(“AT+QMTCFG="keepalive",0,60”);
if (!mc60WriteCertFromSPIFFS()) {
Serial.println(“CERT WRITE FAILED”);
return false;
}
atCmd(“AT+QSSLCFG="cacert",2,"UFS:isrgrootx.pem"”);
atCmd(“AT+QSSLCFG="seclevel",2,2”);
atCmd(“AT+QSSLCFG="sslversion",2,4”);
atCmd(“AT+QSSLCFG="ciphersuite",2,"0xFFFF"”);
atCmd(“AT+QSSLCFG="ignorertctime",1”);
atCmd(“AT+QSSLCFG="sni",2,1”);
atCmd(“AT+QMTCFG="SSL",0,1,2”);
String openCmd = String(“AT+QMTOPEN=0,"”) + MQTT_HOST + “",” + MQTT_PORT;
atCmd(openCmd, 5000);
uint32_t start = millis();
bool openSuccess = false;
while (millis() - start < 45000) {
if (Serial1.available()) {
String line = Serial1.readString();
Serial.print(line);
if (line.indexOf("+QMTOPEN: 0,0") != -1) {
openSuccess = true;
break;
}
if (line.indexOf("+QMTOPEN: 0,") != -1)
break;
}
}
if (!openSuccess) return false;
delay(1000);
String connCmd =
String(“AT+QMTCONN=0,"”) + MQTT_CLIENT + “","” + MQTT_USER + “","” + MQTT_PASS + “"”;
return (atCmd(connCmd, 15000).indexOf(“+QMTCONN: 0,0,0”) != -1);
}
// ================= PUBLISH =================
bool mc60Publish(const char *msg) {
String pubCmd = String(“AT+QMTPUB=0,0,0,0,"”) + MQTT_TOPIC + “"”;
atCmd(pubCmd, 2000);
Serial1.print(msg);
Serial1.write(0x1A);
return (atCmd(“”, 10000).indexOf(“+QMTPUB: 0,0,0”) != -1);
}
// ================= SETUP =================
void setup() {
Serial.begin(115200);
Serial1.begin(MODEM_BAUD, SERIAL_8N1, MODEM_RX, MODEM_TX);
if (!SPIFFS.begin(true)) {
Serial.println(“SPIFFS Mount Failed”);
while (1);
}
Serial.println(“=== MC60 MQTT SSL with SPIFFS CERT ===”);
if (!mc60Network()) {
Serial.println(“NETWORK FAILED”);
while (1);
}
if (!mc60MQTTConnect()) {
Serial.println(“MQTT SSL FAILED”);
while (1);
}
Serial.println(“MQTT SSL CONNECTED”);
mc60Publish(“SSL is stable and alive”);
}
// ================= LOOP =================
void loop() {
while (Serial1.available())
Serial.write(Serial1.read());
}
######output _ log
ESP-ROM:esp32c3-api1-20210207
Build:Feb 7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5810,len:0x438
load:0x403cc710,len:0x90c
load:0x403ce710,len:0x2624
entry 0x403cc710
=== MC60 MQTT SSL with SPIFFS CERT ===
AT
OK
ATE0
OK
AT+CFUN=1
OK
AT+CPIN?
+CPIN: READY
OK
AT+CREG?
+CREG: 0,5
OK
AT+CREG?
+CREG: 0,5
OK
AT+CGATT=1
OK
AT+QIDEACT
DEACT OK
AT+QIREGAPP=“VILESIM”,“”,“”
OK
AT+QIACT
OK
AT+QLTS
+QLTS: “25/12/22,09:22:59+22,0”
OK
AT+QMTCFG=“keepalive”,0,60
OK
SPIFFS Cert Length: 1939
AT+QSECDEL=“UFS:isrgrootx.pem”
OK
AT+QSECWRITE=“UFS:isrgrootx.pem”,1939,100
CONNECT
+QSECWRITE: 1939,4f64
OK
Certificate write successful
AT+QSSLCFG=“cacert”,2,“UFS:isrgrootx.pem”
OK
AT+QSSLCFG=“seclevel”,2,2
OK
AT+QSSLCFG=“sslversion”,2,4
OK
AT+QSSLCFG=“ciphersuite”,2,“0xFFFF”
OK
AT+QSSLCFG=“ignorertctime”,1
OK
AT+QSSLCFG=“sni”,2,1
OK
AT+QMTCFG=“SSL”,0,1,2
OK
AT+QMTOPEN=0,“mqtt-lets.balwaan.com”,8883
OK
+QMTOPEN: 0,-1
MQTT SSL FAILED