implementation of autotest

This commit is contained in:
Bogdan Pilyugin 2023-03-31 16:08:44 +02:00
parent 2c3076a6f9
commit 686dca116c
4 changed files with 105 additions and 41 deletions

View File

@ -75,4 +75,6 @@ void ComposeTopic(char *topic, int idx, char *service_name, char *direct);
void regUserEventHandler(void (*event_handler)(int idx, void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)); void regUserEventHandler(void (*event_handler)(int idx, void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data));
void SystemDataHandler(char *data, uint32_t len, int idx); void SystemDataHandler(char *data, uint32_t len, int idx);
mqtt_app_err_t PublicTestMQTT(int idx);
#endif /* MAIN_INCLUDE_MQTT_H_ */ #endif /* MAIN_INCLUDE_MQTT_H_ */

View File

@ -24,6 +24,7 @@
#include "HTTPServer.h" #include "HTTPServer.h"
#include "LoRaWAN.h" #include "LoRaWAN.h"
#include "Helpers.h" #include "Helpers.h"
#include "MQTT.h"
static const char *TAG = "HTTPServerPost"; static const char *TAG = "HTTPServerPost";
@ -421,6 +422,30 @@ static HTTP_IO_RESULT HTTPPostServicesSettings(httpd_req_t *req, char *PostData)
httpd_query_key_value(PostData, "tsr", GetSysConf()->sntpClient.SntpServerAdr, httpd_query_key_value(PostData, "tsr", GetSysConf()->sntpClient.SntpServerAdr,
sizeof(GetSysConf()->sntpClient.SntpServerAdr)); sizeof(GetSysConf()->sntpClient.SntpServerAdr));
/*MQTT Test button handlers*/
if (httpd_query_key_value(PostData, "mqtttest1", tmp, 6) == ESP_OK)
{
if(!strcmp(tmp, (const char*) "prs"))
{
ESP_LOGI(TAG,"MQTT TEST 1");
PublicTestMQTT(0);
return HTTP_IO_DONE;
}
}
if (httpd_query_key_value(PostData, "mqtttest2", tmp, 6) == ESP_OK)
{
if(!strcmp(tmp, (const char*) "prs"))
{
ESP_LOGI(TAG,"MQTT TEST 2");
PublicTestMQTT(1);
return HTTP_IO_DONE;
}
}
if (httpd_query_key_value(PostData, "save", tmp, 6) == ESP_OK || if (httpd_query_key_value(PostData, "save", tmp, 6) == ESP_OK ||
httpd_query_key_value(PostData, "apply", tmp, 6) == ESP_OK) httpd_query_key_value(PostData, "apply", tmp, 6) == ESP_OK)
{ {
@ -455,6 +480,9 @@ static HTTP_IO_RESULT HTTPPostServicesSettings(httpd_req_t *req, char *PostData)
return HTTP_IO_REDIRECT; return HTTP_IO_REDIRECT;
} }
} }
#endif #endif
return HTTP_IO_DONE; return HTTP_IO_DONE;
} }

View File

@ -371,4 +371,6 @@ static void mqtt2_user_event_handler(void *handler_args, esp_event_base_t base,
UserEventHandler(1, handler_args, base, event_id, event_data); UserEventHandler(1, handler_args, base, event_id, event_data);
} }
#endif #endif

View File

@ -360,7 +360,6 @@ void SystemDataHandler(char *data, uint32_t len, int idx)
ESP_LOGW(TAG, "URL=%s, DATA=%s", URL, POST_DATA); ESP_LOGW(TAG, "URL=%s, DATA=%s", URL, POST_DATA);
HTTPPostApp(NULL, URL, POST_DATA); HTTPPostApp(NULL, URL, POST_DATA);
jRead(data, "{'reload'", &result); jRead(data, "{'reload'", &result);
if (result.elements == 1 && !memcmp("true", result.pValue, result.bytelen)) if (result.elements == 1 && !memcmp("true", result.pValue, result.bytelen))
{ {
@ -401,3 +400,36 @@ api_json_err:
if (ResponceWithError(idx, file, ID, URL, api_err) != API_OK) if (ResponceWithError(idx, file, ID, URL, api_err) != API_OK)
ESP_LOGE(TAG, "Failed to allocate memory for file MQTT message"); ESP_LOGE(TAG, "Failed to allocate memory for file MQTT message");
} }
mqtt_app_err_t PublicTestMQTT(int idx)
{
char JSONMess[MAX_ERROR_JSON];
jwOpen(JSONMess, MAX_ERROR_JSON, JW_OBJECT, JW_PRETTY);
time_t now;
time(&now);
jwObj_int("time", (unsigned int) now);
jwObj_string("event", "MQTT_TEST_MESSAGE)");
jwEnd();
jwClose();
char *buf = (char*) malloc(strlen(JSONMess) + 1);
if (buf)
{
memcpy(buf, JSONMess, strlen(JSONMess));
MQTT_DATA_SEND_STRUCT DSS;
ComposeTopic(DSS.topic, idx, "SYSTEM", "UPLINK");
DSS.raw_data_ptr = buf;
DSS.data_length = strlen(JSONMess);
if (xQueueSend(GetMQTTHandlesPool(idx)->mqtt_queue, &DSS, pdMS_TO_TICKS(1000)) == pdPASS)
return API_OK;
else
{
free(buf);
return API_INTERNAL_ERR;
}
}
else
{ // ERR internal error on publish error
return API_INTERNAL_ERR;
}
}