Merge branch 'main' into 'main-idf5'

# Conflicts:
#   src/MQTT.c
This commit is contained in:
Bogdan Pilyugin 2023-03-10 17:42:26 +00:00
commit d2b9f7fa29
6 changed files with 92 additions and 28 deletions

View File

@ -71,6 +71,8 @@ void PPPModemSoftRestart(void);
void PPPModemStart(void); void PPPModemStart(void);
void PPPModemGetRSSI(void); void PPPModemGetRSSI(void);
void ModemSendSMS(void);
void ModemSendAT(char *cmd, char *resp, int timeout);
void MQTTRun(void); void MQTTRun(void);

View File

@ -298,5 +298,17 @@ void PPPModemGetRSSI(void)
ESP_LOGW(TAG, "Signal %d, ber %d", rssi, ber); ESP_LOGW(TAG, "Signal %d, ber %d", rssi, ber);
} }
void ModemSendAT(char *cmd, char *resp, int timeout)
{
esp_modem_at(dce, cmd, resp, timeout);
ESP_LOGI(TAG, "Command:%s", cmd);
ESP_LOGW(TAG, "%s", resp);
}
void ModemSendSMS(void)
{
}
#endif #endif

View File

@ -23,6 +23,7 @@
#include "HTTPServer.h" #include "HTTPServer.h"
#include "LoRaWAN.h" #include "LoRaWAN.h"
#include "Helpers.h"
static const char *TAG = "HTTPServerPost"; static const char *TAG = "HTTPServerPost";
@ -97,7 +98,7 @@ static HTTP_IO_RESULT AfterPostHandler(httpd_req_t *req, const char *filename, c
static HTTP_IO_RESULT HTTPPostAdaptersSettings(httpd_req_t *req, char *PostData) static HTTP_IO_RESULT HTTPPostAdaptersSettings(httpd_req_t *req, char *PostData)
{ {
char tmp[32]; char tmp[33];
#if CONFIG_WEBGUIAPP_ETHERNET_ENABLE #if CONFIG_WEBGUIAPP_ETHERNET_ENABLE
bool TempIsETHEnabled = false; bool TempIsETHEnabled = false;
@ -105,26 +106,26 @@ static HTTP_IO_RESULT HTTPPostAdaptersSettings(httpd_req_t *req, char *PostData)
if (httpd_query_key_value(PostData, "ethen", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "ethen", tmp, sizeof(tmp)) == ESP_OK)
{ {
if (!strcmp((const char*) tmp, (const char*) "1")) if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsETHEnabled = true; TempIsETHEnabled = true;
} }
if (httpd_query_key_value(PostData, "dhcp", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "dhcp", tmp, sizeof(tmp)) == ESP_OK)
{ {
if (!strcmp((const char*) tmp, (const char*) "1")) if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsETHDHCPEnabled = true; TempIsETHDHCPEnabled = true;
} }
if (httpd_query_key_value(PostData, "ipa", tmp, 15) == ESP_OK) if (httpd_query_key_value(PostData, "ipa", tmp, 15) == ESP_OK)
esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.IPAddr); esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.IPAddr);
if (httpd_query_key_value(PostData, "mas", tmp, 15) == ESP_OK) if (httpd_query_key_value(PostData, "mas", tmp, 15) == ESP_OK)
esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.Mask); esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.Mask);
if (httpd_query_key_value(PostData, "gte", tmp, 15) == ESP_OK) if (httpd_query_key_value(PostData, "gte", tmp, 15) == ESP_OK)
esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.Gateway); esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.Gateway);
if (httpd_query_key_value(PostData, "dns1", tmp, 15) == ESP_OK) if (httpd_query_key_value(PostData, "dns1", tmp, 15) == ESP_OK)
esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.DNSAddr1); esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.DNSAddr1);
if (httpd_query_key_value(PostData, "dns2", tmp, 15) == ESP_OK) if (httpd_query_key_value(PostData, "dns2", tmp, 15) == ESP_OK)
esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.DNSAddr2); esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.DNSAddr2);
if (httpd_query_key_value(PostData, "dns3", tmp, 15) == ESP_OK) if (httpd_query_key_value(PostData, "dns3", tmp, 15) == ESP_OK)
esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.DNSAddr3); esp_netif_str_to_ip4(tmp, (esp_ip4_addr_t*) &GetSysConf()->ethSettings.DNSAddr3);
#endif #endif
@ -218,6 +219,30 @@ static HTTP_IO_RESULT HTTPPostAdaptersSettings(httpd_req_t *req, char *PostData)
} }
#endif #endif
#if CONFIG_WEBGUIAPP_LORAWAN_ENABLE
bool TempIsLoRaEnabled = false;
if (httpd_query_key_value(PostData, "lren", tmp, sizeof(tmp)) == ESP_OK)
{
if (!strcmp((const char*) tmp, (const char*) "1"))
TempIsLoRaEnabled = true;
}
if (httpd_query_key_value(PostData, "lrdvid", tmp, sizeof(tmp)) == ESP_OK)
{
if (strlen(tmp) == 16)
StrToBytesLen((unsigned char*) tmp, (unsigned char*) GetSysConf()->lorawanSettings.DevEui, 16);
}
if (httpd_query_key_value(PostData, "lrapid", tmp, sizeof(tmp)) == ESP_OK)
{
if (strlen(tmp) == 16)
StrToBytesLen((unsigned char*) tmp, (unsigned char*) GetSysConf()->lorawanSettings.AppEui, 16);
}
if (httpd_query_key_value(PostData, "lrapkey", tmp, sizeof(tmp)) == ESP_OK)
{
if (strlen(tmp) == 32)
StrToBytesLen((unsigned char*) tmp, (unsigned char*) GetSysConf()->lorawanSettings.AppKey, 32);
}
#endif
if (httpd_query_key_value(PostData, "wifisc", tmp, 4) == ESP_OK) if (httpd_query_key_value(PostData, "wifisc", tmp, 4) == ESP_OK)
{ {
if (!strcmp(tmp, (const char*) "prs")) if (!strcmp(tmp, (const char*) "prs"))
@ -259,6 +284,13 @@ static HTTP_IO_RESULT HTTPPostAdaptersSettings(httpd_req_t *req, char *PostData)
GetSysConf()->gsmSettings.Flags1.bIsGSMEnabled = TempIsGSMEnabled; GetSysConf()->gsmSettings.Flags1.bIsGSMEnabled = TempIsGSMEnabled;
#endif #endif
} }
else if (!strcmp(tmp, (const char*) "lora"))
{
#if CONFIG_WEBGUIAPP_LORAWAN_ENABLE
GetSysConf()->lorawanSettings.Flags1.bIsLoRaWANEnabled = TempIsLoRaEnabled;
#endif
}
if (httpd_query_key_value(PostData, "apply", tmp, 5) == ESP_OK) if (httpd_query_key_value(PostData, "apply", tmp, 5) == ESP_OK)
{ {
@ -317,29 +349,29 @@ static HTTP_IO_RESULT HTTPPostServicesSettings(httpd_req_t *req, char *PostData)
#if CONFIG_WEBGUIAPP_MQTT_CLIENTS_NUM == 2 #if CONFIG_WEBGUIAPP_MQTT_CLIENTS_NUM == 2
httpd_query_key_value(PostData, "mqurl2", GetSysConf()->mqttStation[1].ServerAddr, httpd_query_key_value(PostData, "mqurl2", GetSysConf()->mqttStation[1].ServerAddr,
sizeof(GetSysConf()->mqttStation[1].ServerAddr)); sizeof(GetSysConf()->mqttStation[1].ServerAddr));
httpd_query_key_value(PostData, "mqid2", GetSysConf()->mqttStation[1].ClientID, httpd_query_key_value(PostData, "mqid2", GetSysConf()->mqttStation[1].ClientID,
sizeof(GetSysConf()->mqttStation[1].ClientID)); sizeof(GetSysConf()->mqttStation[1].ClientID));
httpd_query_key_value(PostData, "mqsys2", GetSysConf()->mqttStation[1].SystemName, httpd_query_key_value(PostData, "mqsys2", GetSysConf()->mqttStation[1].SystemName,
sizeof(GetSysConf()->mqttStation[1].SystemName)); sizeof(GetSysConf()->mqttStation[1].SystemName));
httpd_query_key_value(PostData, "mqgrp2", GetSysConf()->mqttStation[1].GroupName, httpd_query_key_value(PostData, "mqgrp2", GetSysConf()->mqttStation[1].GroupName,
sizeof(GetSysConf()->mqttStation[1].GroupName)); sizeof(GetSysConf()->mqttStation[1].GroupName));
httpd_query_key_value(PostData, "mqname2", GetSysConf()->mqttStation[1].UserName, httpd_query_key_value(PostData, "mqname2", GetSysConf()->mqttStation[1].UserName,
sizeof(GetSysConf()->mqttStation[1].UserName)); sizeof(GetSysConf()->mqttStation[1].UserName));
if (httpd_query_key_value(PostData, "mqen2", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "mqen2", 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, "mqport2", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "mqport2", tmp, sizeof(tmp)) == ESP_OK)
if (httpd_query_key_value(PostData, "mqport2", tmp, sizeof(tmp)) == ESP_OK) if (httpd_query_key_value(PostData, "mqport2", tmp, sizeof(tmp)) == ESP_OK)
{ {
uint16_t tp = atoi((const char*) tmp); uint16_t tp = atoi((const char*) tmp);
if (tp < 65535 && tp >= 1000) if (tp < 65535 && tp >= 1000)
GetSysConf()->mqttStation[1].ServerPort = tp; GetSysConf()->mqttStation[1].ServerPort = tp;
} }
if (httpd_query_key_value(PostData, "mqpass2", tmp, sizeof(tmp)) == ESP_OK && if (httpd_query_key_value(PostData, "mqpass2", tmp, sizeof(tmp)) == ESP_OK &&
strcmp(tmp, (const char*) "******")) strcmp(tmp, (const char*) "******"))
@ -484,21 +516,29 @@ static HTTP_IO_RESULT HTTPPostSystemSettings(httpd_req_t *req, char *PostData)
{ {
if (!strcmp(tmp, (const char*) "1")) if (!strcmp(tmp, (const char*) "1"))
{ {
return HTTP_IO_DONE_NOREFRESH; return HTTP_IO_DONE_NOREFRESH;
} }
#if CONFIG_WEBGUIAPP_GPRS_ENABLE
else if (!strcmp(tmp, (const char*) "2")) else if (!strcmp(tmp, (const char*) "2"))
{ {
WiFiDisconnect(); char resp[256] = {0};
ModemSendAT("AT+CCLK?\r", resp, 200);
return HTTP_IO_DONE_NOREFRESH; return HTTP_IO_DONE_NOREFRESH;
} }
else if (!strcmp(tmp, (const char*) "3")) else if (!strcmp(tmp, (const char*) "3"))
{ {
char resp[256] = {0};
ModemSendAT("ATD+79022518532;\r", resp, 200);
return HTTP_IO_DONE_NOREFRESH; return HTTP_IO_DONE_NOREFRESH;
} }
else if (!strcmp(tmp, (const char*) "4")) else if (!strcmp(tmp, (const char*) "4"))
{ {
char resp[256] = {0};
ModemSendAT("ATH\r", resp, 200);
return HTTP_IO_DONE_NOREFRESH; return HTTP_IO_DONE_NOREFRESH;
} }
#endif
else if (!strcmp(tmp, (const char*) "5")) else if (!strcmp(tmp, (const char*) "5"))
{ {
return HTTP_IO_DONE_NOREFRESH; return HTTP_IO_DONE_NOREFRESH;

View File

@ -27,7 +27,7 @@
#include "esp_wifi.h" #include "esp_wifi.h"
#include "NetTransport.h" #include "NetTransport.h"
#include "esp_ota_ops.h" #include "esp_ota_ops.h"
#include "ROMFS.h" #include "romfs.h"
#include "esp_idf_version.h" #include "esp_idf_version.h"
#include "jWrite.h" #include "jWrite.h"

View File

@ -55,16 +55,19 @@ uint8_t LoRaMessagesQueueStorageArea[LORAWAN_MESSAGE_BUFER_LENTH
void (*LoRaUserReceiveHandler)(const char *message, int length, int port); void (*LoRaUserReceiveHandler)(const char *message, int length, int port);
void regLoRaUserReceiveHandler( void regLoRaUserReceiveHandler(
void (*user_handler)(const char *message, int length, int port)) void (*user_handler)(const char *message, int length, int port))
{ {
LoRaUserReceiveHandler = user_handler; LoRaUserReceiveHandler = user_handler;
} }
esp_err_t LORASendData(LORA_DATA_SEND_STRUCT *pdss) esp_err_t LORASendData(LORA_DATA_SEND_STRUCT *pdss)
{ {
if (LORAMessagesQueueHandle == NULL)
return ESP_ERR_INVALID_ARG;
char *ptr = (char*) malloc(MESSAGE_LENGTH); char *ptr = (char*) malloc(MESSAGE_LENGTH);
if (ptr) if (ptr)
{ {
ESP_LOGW(TAG, "memory allocate %d byte", MESSAGE_LENGTH);
memcpy(ptr, pdss->raw_data_ptr, MESSAGE_LENGTH); memcpy(ptr, pdss->raw_data_ptr, MESSAGE_LENGTH);
LORA_DATA_SEND_STRUCT DSS; LORA_DATA_SEND_STRUCT DSS;
DSS.raw_data_ptr = ptr; DSS.raw_data_ptr = ptr;
@ -75,6 +78,7 @@ esp_err_t LORASendData(LORA_DATA_SEND_STRUCT *pdss)
else else
{ {
free(ptr); free(ptr);
ESP_LOGW(TAG, "memory free (queue full) %d byte", MESSAGE_LENGTH);
return ESP_ERR_TIMEOUT; return ESP_ERR_TIMEOUT;
} }
} }
@ -93,8 +97,8 @@ void messageReceived(const uint8_t *message, size_t length, ttn_port_t port)
ESP_LOGI(TAG, "Received=%s", P); ESP_LOGI(TAG, "Received=%s", P);
} }
#endif #endif
if(LoRaUserReceiveHandler != NULL) if (LoRaUserReceiveHandler != NULL)
LoRaUserReceiveHandler((char*)message, length, (int)port); LoRaUserReceiveHandler((char*) message, length, (int) port);
} }
@ -118,6 +122,7 @@ void LoRaWANTransportTask(void *pvParameter)
#endif #endif
ttn_transmit_message((const uint8_t*) DSS.raw_data_ptr, MESSAGE_LENGTH, 1, true); ttn_transmit_message((const uint8_t*) DSS.raw_data_ptr, MESSAGE_LENGTH, 1, true);
free(DSS.raw_data_ptr); free(DSS.raw_data_ptr);
ESP_LOGW(TAG, "memory free (transmitted) %d byte", MESSAGE_LENGTH);
} }
else else
{ {
@ -128,7 +133,6 @@ void LoRaWANTransportTask(void *pvParameter)
} }
} }
void LoRaWANRejoin(void) void LoRaWANRejoin(void)
{ {
ttn_rejoin(); ttn_rejoin();
@ -174,7 +178,6 @@ void LoRaWANInitJoinTask(void *pvParameter)
} }
#endif #endif
void LoRaWANStart(void) void LoRaWANStart(void)
{ {
#ifdef CONFIG_WEBGUIAPP_LORAWAN_ENABLE #ifdef CONFIG_WEBGUIAPP_LORAWAN_ENABLE

View File

@ -30,6 +30,8 @@
#define MQTT_MESSAGE_BUFER_LENTH 5 //size of mqtt queue #define MQTT_MESSAGE_BUFER_LENTH 5 //size of mqtt queue
#define MQTT_RECONNECT_CHANGE_ADAPTER 3 #define MQTT_RECONNECT_CHANGE_ADAPTER 3
#define MQTT_RECONNECT_TIMEOUT 40
#if CONFIG_WEBGUIAPP_MQTT_ENABLE #if CONFIG_WEBGUIAPP_MQTT_ENABLE
QueueHandle_t MQTT1MessagesQueueHandle; QueueHandle_t MQTT1MessagesQueueHandle;
@ -297,8 +299,13 @@ static void start_mqtt()
strcpy(tmp, GetSysConf()->mqttStation[i].ClientID); strcpy(tmp, GetSysConf()->mqttStation[i].ClientID);
strcat(tmp, "-"); strcat(tmp, "-");
strcat(tmp, GetSysConf()->ID); strcat(tmp, GetSysConf()->ID);
<<<<<<< src/MQTT.c
//mqtt_cfg.client_id = tmp; //mqtt_cfg.client_id = tmp;
mqtt_cfg.credentials.client_id = tmp; mqtt_cfg.credentials.client_id = tmp;
=======
mqtt_cfg.client_id = tmp;
mqtt_cfg.reconnect_timeout_ms = MQTT_RECONNECT_TIMEOUT * 1000;
>>>>>>> src/MQTT.c
mqtt[i].is_connected = false; mqtt[i].is_connected = false;
mqtt[i].mqtt_index = i; mqtt[i].mqtt_index = i;
//mqtt_cfg.user_context = (void*) &mqtt[i]; //mqtt_cfg.user_context = (void*) &mqtt[i];