checked mqtt client, fixed some issues

This commit is contained in:
Bogdan Pilyugin 2022-08-19 15:35:06 +02:00
parent cabc2904ea
commit 4b8b8a36d3
6 changed files with 47 additions and 29 deletions

View File

@ -46,6 +46,8 @@
#define MAX_DYNVAR_LENGTH 64 #define MAX_DYNVAR_LENGTH 64
#define MAX_INCFILE_LENGTH 1024 #define MAX_INCFILE_LENGTH 1024
#define HTTP_SERVER_DEBUG_LEVEL 1
typedef enum typedef enum
{ {
HTTP_IO_DONE = 0u, // Finished with procedure HTTP_IO_DONE = 0u, // Finished with procedure

View File

@ -246,6 +246,7 @@
SYS_CONFIG* GetSysConf(void); SYS_CONFIG* GetSysConf(void);
esp_err_t WebGuiAppInit(void); esp_err_t WebGuiAppInit(void);
void DelayedRestart(void);
#endif /* COMPONENTS_WEB_GUI_APPLICATION_INCLUDE_SYSTEMCONFIGURATION_H_ */ #endif /* COMPONENTS_WEB_GUI_APPLICATION_INCLUDE_SYSTEMCONFIGURATION_H_ */

View File

@ -66,7 +66,6 @@ void regAfterPostHandlerCustom(HTTP_IO_RESULT (*post_handler)(httpd_req_t *req,
AfterPostHandlerCust = post_handler; AfterPostHandlerCust = post_handler;
} }
HTTP_IO_RESULT HTTPPostApp(httpd_req_t *req, const char *filename, char *PostData) HTTP_IO_RESULT HTTPPostApp(httpd_req_t *req, const char *filename, char *PostData)
{ {
const char *pt = filename + 1; const char *pt = filename + 1;
@ -122,7 +121,6 @@ static HTTP_IO_RESULT AfterPostHandler(httpd_req_t *req, const char *filename, c
if (!memcmp(filename, pg_34, sizeof(pg_34))) if (!memcmp(filename, pg_34, sizeof(pg_34)))
return HTTPPostIndex34(req, PostData); return HTTPPostIndex34(req, PostData);
if (!memcmp(filename, pg_reboot, sizeof(pg_reboot))) if (!memcmp(filename, pg_reboot, sizeof(pg_reboot)))
return HTTPPostReboot(req, PostData); return HTTPPostReboot(req, PostData);
@ -133,7 +131,7 @@ static HTTP_IO_RESULT AfterPostHandler(httpd_req_t *req, const char *filename, c
return HTTPPostMemJson(req, PostData); return HTTPPostMemJson(req, PostData);
if (AfterPostHandlerCust != NULL) if (AfterPostHandlerCust != NULL)
AfterPostHandler(req, filename, PostData); AfterPostHandlerCust(req, filename, PostData);
return HTTP_IO_DONE; return HTTP_IO_DONE;
@ -409,6 +407,26 @@ static HTTP_IO_RESULT HTTPPostIndex31(httpd_req_t *req, char *PostData)
httpd_query_key_value(PostData, "clnm1", GetSysConf()->mqttStation[0].UserName, httpd_query_key_value(PostData, "clnm1", GetSysConf()->mqttStation[0].UserName,
sizeof(GetSysConf()->mqttStation[0].UserName)); sizeof(GetSysConf()->mqttStation[0].UserName));
if (httpd_query_key_value(PostData, "mqttenb1", tmp, sizeof(tmp)) == ESP_OK)
{
if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsMQTT1Enabled = true;
}
if (httpd_query_key_value(PostData, "mprt1", tmp, sizeof(tmp)) == ESP_OK)
if (httpd_query_key_value(PostData, "mprt1", tmp, sizeof(tmp)) == ESP_OK)
{
uint16_t tp = atoi((const char*) tmp);
if (tp < 65535 && tp >= 1000)
GetSysConf()->mqttStation[0].ServerPort = tp;
}
if (httpd_query_key_value(PostData, "clps1", tmp, sizeof(tmp)) == ESP_OK &&
strcmp(tmp, (const char*) "******"))
{
strcpy(GetSysConf()->mqttStation[0].UserPass, tmp);
}
#if CONFIG_MQTT_CLIENTS_NUM == 2
httpd_query_key_value(PostData, "cld2", GetSysConf()->mqttStation[1].ServerAddr, httpd_query_key_value(PostData, "cld2", GetSysConf()->mqttStation[1].ServerAddr,
sizeof(GetSysConf()->mqttStation[1].ServerAddr)); sizeof(GetSysConf()->mqttStation[1].ServerAddr));
httpd_query_key_value(PostData, "idd2", GetSysConf()->mqttStation[1].ClientID, httpd_query_key_value(PostData, "idd2", GetSysConf()->mqttStation[1].ClientID,
@ -418,24 +436,13 @@ static HTTP_IO_RESULT HTTPPostIndex31(httpd_req_t *req, char *PostData)
httpd_query_key_value(PostData, "clnm2", GetSysConf()->mqttStation[1].UserName, httpd_query_key_value(PostData, "clnm2", GetSysConf()->mqttStation[1].UserName,
sizeof(GetSysConf()->mqttStation[1].UserName)); sizeof(GetSysConf()->mqttStation[1].UserName));
if (httpd_query_key_value(PostData, "mqttenb1", tmp, sizeof(tmp)) == ESP_OK)
{
if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsMQTT1Enabled = true;
}
if (httpd_query_key_value(PostData, "mqttenb2", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "mqttenb2", tmp, sizeof(tmp)) == ESP_OK)
{ {
if (!strcmp((const char*) tmp, (const char*) "1")) if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsMQTT2Enabled = true; TempIsMQTT2Enabled = true;
} }
if (httpd_query_key_value(PostData, "mprt1", tmp, sizeof(tmp)) == ESP_OK)
if (httpd_query_key_value(PostData, "mprt1", tmp, sizeof(tmp)) == ESP_OK)
{
uint16_t tp = atoi((const char*) tmp);
if (tp < 65535 && tp >= 1000)
GetSysConf()->mqttStation[0].ServerPort = tp;
}
if (httpd_query_key_value(PostData, "mprt2", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "mprt2", tmp, sizeof(tmp)) == ESP_OK)
if (httpd_query_key_value(PostData, "mprt2", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "mprt2", tmp, sizeof(tmp)) == ESP_OK)
{ {
@ -444,23 +451,22 @@ static HTTP_IO_RESULT HTTPPostIndex31(httpd_req_t *req, char *PostData)
GetSysConf()->mqttStation[1].ServerPort = tp; GetSysConf()->mqttStation[1].ServerPort = tp;
} }
if (httpd_query_key_value(PostData, "clps1", tmp, sizeof(tmp)) == ESP_OK &&
strcmp(tmp, (const char*) "******"))
{
strcpy(GetSysConf()->mqttStation[0].UserPass, tmp);
}
if (httpd_query_key_value(PostData, "clps2", tmp, sizeof(tmp)) == ESP_OK && if (httpd_query_key_value(PostData, "clps2", tmp, sizeof(tmp)) == ESP_OK &&
strcmp(tmp, (const char*) "******")) strcmp(tmp, (const char*) "******"))
{ {
strcpy(GetSysConf()->mqttStation[1].UserPass, tmp); strcpy(GetSysConf()->mqttStation[1].UserPass, tmp);
} }
#endif
if (httpd_query_key_value(PostData, "sav", tmp, 4) == ESP_OK) if (httpd_query_key_value(PostData, "sav", tmp, 4) == ESP_OK)
{ {
if (!strcmp(tmp, (const char*) "prs")) if (!strcmp(tmp, (const char*) "prs"))
{ {
GetSysConf()->mqttStation[0].Flags1.bIsGlobalEnabled = TempIsMQTT1Enabled; GetSysConf()->mqttStation[0].Flags1.bIsGlobalEnabled = TempIsMQTT1Enabled;
#if CONFIG_MQTT_CLIENTS_NUM == 2
GetSysConf()->mqttStation[1].Flags1.bIsGlobalEnabled = TempIsMQTT2Enabled; GetSysConf()->mqttStation[1].Flags1.bIsGlobalEnabled = TempIsMQTT2Enabled;
#endif
WriteNVSSysConfig(GetSysConf()); WriteNVSSysConfig(GetSysConf());
memcpy(PostData, "/reboot.html", sizeof "/reboot.html"); memcpy(PostData, "/reboot.html", sizeof "/reboot.html");
return HTTP_IO_REDIRECT; return HTTP_IO_REDIRECT;
@ -480,8 +486,6 @@ static HTTP_IO_RESULT HTTPPostIndex34(httpd_req_t *req, char *PostData)
return HTTP_IO_DONE; return HTTP_IO_DONE;
} }
static HTTP_IO_RESULT HTTPPostReboot(httpd_req_t *req, char *PostData) static HTTP_IO_RESULT HTTPPostReboot(httpd_req_t *req, char *PostData)
{ {
char tmp[33]; char tmp[33];
@ -489,7 +493,7 @@ static HTTP_IO_RESULT HTTPPostReboot(httpd_req_t *req, char *PostData)
{ {
if (!strcmp(tmp, (const char*) "prs")) if (!strcmp(tmp, (const char*) "prs"))
{ {
//DelayedRestart(); DelayedRestart();
} }
} }
return HTTP_IO_DONE; return HTTP_IO_DONE;

View File

@ -581,6 +581,7 @@ int HTTPPrint(httpd_req_t *req, char *buf, char *var)
HTTPPrintCust(req, buf, var); HTTPPrintCust(req, buf, var);
else else
HTTPPrint_DEF(VarData, NULL); HTTPPrint_DEF(VarData, NULL);
} }
int dLen = strlen(VarData); int dLen = strlen(VarData);
memcpy(buf, VarData, dLen); memcpy(buf, VarData, dLen);

View File

@ -86,7 +86,7 @@ static void ComposeTopic(char *topic, char *system_name, char *direct, char *cli
BytesToStr((unsigned char*) tmp, (unsigned char*) dev_rom_id, 4); BytesToStr((unsigned char*) tmp, (unsigned char*) dev_rom_id, 4);
strcpy((char*) topic, system_name); // Global system name strcpy((char*) topic, system_name); // Global system name
strcat((char*) topic, "/"); strcat((char*) topic, "/");
strcpy((char*) topic, direct); // Data direction UPLINK or DOWNLINK strcat((char*) topic, direct); // Data direction UPLINK or DOWNLINK
strcat((char*) topic, "/"); strcat((char*) topic, "/");
strcat((char*) topic, (const char*) dev_rom_id); // Unique device ID (based on ROM chip id) strcat((char*) topic, (const char*) dev_rom_id); // Unique device ID (based on ROM chip id)
strcat((char*) topic, "/"); strcat((char*) topic, "/");

View File

@ -71,7 +71,7 @@ esp_err_t WebGuiAppInit(void)
esp_err_t err = nvs_flash_init(); esp_err_t err = nvs_flash_init();
ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_netif_init());
ESP_ERROR_CHECK(esp_event_loop_create_default()); ESP_ERROR_CHECK(esp_event_loop_create_default());
if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND || MANUAL_RESET == 1) if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND || MANUAL_RESET == 1 || gpio_get_level(GPIO_NUM_34) == 0)
{ {
// 1.OTA app partition table has a smaller NVS partition size than the non-OTA // 1.OTA app partition table has a smaller NVS partition size than the non-OTA
// partition table. This size mismatch may cause NVS initialization to fail. // partition table. This size mismatch may cause NVS initialization to fail.
@ -126,7 +126,7 @@ if(GetSysConf()->wifiSettings.Flags1.bIsAP)
if (GetSysConf()->mqttStation[0].Flags1.bIsGlobalEnabled if (GetSysConf()->mqttStation[0].Flags1.bIsGlobalEnabled
|| GetSysConf()->mqttStation[1].Flags1.bIsGlobalEnabled) || GetSysConf()->mqttStation[1].Flags1.bIsGlobalEnabled)
{ {
// MQTTRun(); MQTTRun();
} }
#endif #endif
} }
@ -331,7 +331,7 @@ static void ResetSysConfig(SYS_CONFIG *Conf)
memcpy(Conf->mqttStation[1].UserPass, CONFIG_MQTT_PASSWORD, sizeof(CONFIG_MQTT_PASSWORD)); memcpy(Conf->mqttStation[1].UserPass, CONFIG_MQTT_PASSWORD, sizeof(CONFIG_MQTT_PASSWORD));
#endif #endif
#endif #endif
GetChipId(Conf->imei);
} }
esp_err_t ReadNVSSysConfig(SYS_CONFIG *SysConf) esp_err_t ReadNVSSysConfig(SYS_CONFIG *SysConf)
@ -410,3 +410,13 @@ esp_err_t ResetInitSysConfig(void)
return WriteNVSSysConfig(&SysConfig); return WriteNVSSysConfig(&SysConfig);
} }
void DelayedRestartTask(void *pvParameter)
{
vTaskDelay(pdMS_TO_TICKS(3000));
esp_restart();
}
void DelayedRestart(void)
{
xTaskCreate(DelayedRestartTask, "RestartTask", 1024 * 4, (void*) 0, 3, NULL);
}