Open
Description
Description
Steps to Reproduce
boolean reconnect() {
chipId = ESP.getEfuseMac();
char chipIdString[18];
snprintf(chipIdString, sizeof(chipIdString), "%04X%08X", (uint16_t)(chipId >> 32), (uint32_t)chipId);
if (client.connect(chipIdString, mqtt_username, mqtt_password)) {
client.publish("test", message.c_str());
conectado.store(true);
}
return client.connected();
}
void mqttTask(void* param) {
while (1) {
unsigned long cu = millis();
if (cu - lastReconnectAttempt >= 60000) {
String message = "....";
if (!client.connected()) {
reconnect();
}else {
client.loop();
}
}
unsigned int highWaterMark = uxTaskGetStackHighWaterMark(NULL);
Serial.print(highWaterMark);
lastReconnectAttempt = cu;
}
vTaskDelay(pdMS_TO_TICKS(60000));
}
}
static const char* root_ca PROGMEM = R"EOF(
...
)EOF";
EthernetClient ethclient;
SSLClient seceth(ðclient);
PubSubClient client(seceth);
void setup() {
WiFi.mode(WIFI_STA);
Serial.begin(115200);
disableCore0WDT();
disableCore1WDT();
M5.begin();
M5.Power.begin();
uint64_t chipId1 = 0;
chipId1 = ESP.getEfuseMac();
char chipIdString[18];
snprintf(chipIdString, sizeof(chipIdString), "%04X%08X", (uint16_t)(chipId1 >> 32), (uint32_t)chipId1);
Serial.print(chipIdString);
String ssid = "indulink" + String(chipIdString);
if (!SD.begin()) {
M5.Lcd.println("Card failed, or not present");
while (1);
}
M5.Lcd.println("TF card initialized.");
while (!module.begin(&Wire, 21, 22, MODULE_4IN8OUT_ADDR)) {
Serial.println("4IN8OUT INIT ERROR");
M5.Lcd.println("4IN8OUT INIT ERROR");
}
Serial.println("4IN8OUT INIT SUCCESS");
M5.Lcd.println("Contador de pulsos iniciado.");
SPI.begin(SCK, MISO, MOSI, -1);
Ethernet.init(CS);
while (!Serial) { }
Ethernet.begin(mac);
Serial.print("Ethernet iniciado. Dirección IP: ");
Serial.println(Ethernet.localIP());
timeClient.begin();
timeClient.update();
seceth.setCACert(root_ca);
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
Reinicio.attach(2,reinicio);
xTaskCreatePinnedToCore(
mqttTask,
"mqttTask",
8192,
NULL,
1,
NULL,
0
);
xTaskCreatePinnedToCore(
countTask,
"countTask",
8192,
NULL,
1,
NULL,
1
);
}
Expected Behavior
Publish a variable in a broker mqtt over tls with ethernet
Actual Behavior
when the mqtt task run, this error appears
[ 62514][E][ssl__client.cpp:42] _handle_error(): [start_ssl_client():367]: (-1) ERROR - Generic error
[ 62515][E][SSLClient.cpp:242] connect(): start_ssl_client failed: 0
Environment
- Operating System: [Windows 10 Home]
- Version: [22H2]
IDE
- Arduino IDE
- PlatformIO IDE extension
Additional Context
It is a very big program, try to show the functions that are used by the mqtt task