Comments (6)
I have the exact same issue! Could somebody managed to avoid it?
from esp-azure.
I switched to the Azure middleware for FreeRTOS. Worth the effort. https://github.com/Azure/azure-iot-middleware-freertos
from esp-azure.
I was running into this same exact issue. Sometimes I'd get into this scenario even without turning off the AP. My device would just randomly disconnect and then never recover. The only workaround I was able to find was to modify a part of the MQTT code myself. Here's what that fix looks like (using my own fork of azure-umqtt-c
): MvIt-Now/azure-umqtt-c@bcb0b23
from esp-azure.
I have also the same issue but unfortunately this repo seems to be dead...
from esp-azure.
@afcec Look into Azure middleware. They have a samples repo that has everything you need for getting up and running on any espressif device. https://github.com/Azure/azure-iot-middleware-freertos
from esp-azure.
I just found a problem in tlsio_esp_tls.c
When a problem occur ion the socket, the state goes to TLSIO_STATE_ERROR, however in most cases it is not reported upstream, which means azure sdk is not aware of the problem.
My solution was to change the code to always call enter_tlsio_error_state when current code set the error state
Happens only in the function tlsio_esp_tls_dowork:
static void tlsio_esp_tls_dowork(CONCRETE_IO_HANDLE tls_io)
{
if (tls_io == NULL)
{
/* Codes_SRS_TLSIO_30_070: [ If the tlsio_handle parameter is NULL, tlsio_dowork shall do nothing except log an error. ]*/
LogError("NULL tlsio");
}
else
{
TLS_IO_INSTANCE* tls_io_instance = (TLS_IO_INSTANCE*)tls_io;
// This switch statement handles all of the state transitions during the opening process
switch (tls_io_instance->tlsio_state)
{
case TLSIO_STATE_CLOSED:
/* Codes_SRS_TLSIO_30_075: [ If the adapter is in TLSIO_STATE_EXT_CLOSED then tlsio_dowork shall do nothing. ]*/
// Waiting to be opened, nothing to do
break;
case TLSIO_STATE_INIT:
{
int result = esp_tls_conn_new_async(tls_io_instance->hostname, strlen(tls_io_instance->hostname), tls_io_instance->port, &tls_io_instance->esp_tls_cfg, tls_io_instance->esp_tls_handle);
if (result == 1) {
tls_io_instance->tlsio_state = TLSIO_STATE_OPEN;
tls_io_instance->on_open_complete(tls_io_instance->on_open_complete_context, IO_OPEN_OK);
} else if (result == -1) {
enter_tlsio_error_state(tls_io_instance);
}
}
break;
case TLSIO_STATE_OPEN:
if (dowork_read(tls_io_instance) < 0 && errno != EAGAIN)
{
enter_tlsio_error_state(tls_io_instance);
}
if (dowork_send(tls_io_instance) < 0 && errno != EAGAIN)
{
enter_tlsio_error_state(tls_io_instance);
}
break;
case TLSIO_STATE_ERROR:
/* Codes_SRS_TLSIO_30_071: [ If the adapter is in TLSIO_STATE_EXT_ERROR then tlsio_dowork shall do nothing. ]*/
// There is nothing valid to do here but wait to be retried
break;
default:
LogError("Unexpected internal tlsio state");
break;
}
}
}
from esp-azure.
Related Issues (20)
- When will this project get its next update ot match ESP-IDF V4.x? (CA-128) HOT 1
- Replace printf() with proper ESP_LOGx() (CA-137)
- Device disconnects after ~49 days online (CA-138)
- HSM Module not included (CA-140)
- Send Azure message larger than 5000 bytes (CA-153)
- Update to LTS_07_2021_Ref01 (CA-167) HOT 11
- README update (CA-172)
- Cannot compile project, issues (CA-184) HOT 1
- Not able to auto-reconnect with Azure Cloud (CA-218) HOT 6
- connection string setup for multiple device (CA-222) HOT 1
- Example iothub_client_sample_mqtt crash (CA-251)
- Delays / waits in Direct Method / Device Twin Callbacks (CA-269)
- prov_dev_client_ll_sample - Failure encountered on registration PROV_DEVICE_RESULT_DEV_AUTH_ERROR (CA-279) HOT 1
- JSON Serialization failed! iothub device twin sample. (CA-290)
- tls error when compiling on esp-idf 5 (CA-295) HOT 4
- No connection with NB-IoT (CA-308) HOT 1
- Azure Blob Storage data fetch fails due to HTTPS Client MBed TLS (IDFGH-11100) (CA-313) HOT 1
- ESP-AZURE on Espressif-IDE (CA-315)
- error: implicit declaration of function 'esp_tls_conn_delete' (CA-319) HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from esp-azure.