Skip to content

Issue with a connection MQTT over TLS with Ethernet W5500 #98

Open
@MaxiLargo

Description

@MaxiLargo

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(&ethclient);
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

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions