diff --git a/include/NetTransport.h b/include/NetTransport.h index e736e51..5980406 100644 --- a/include/NetTransport.h +++ b/include/NetTransport.h @@ -71,6 +71,8 @@ void PPPModemSoftRestart(void); void PPPModemStart(void); void PPPModemGetRSSI(void); +void ModemSendSMS(void); +void ModemSendAT(char *cmd, char *resp, int timeout); void MQTTRun(void); diff --git a/src/GSMTransport.c b/src/GSMTransport.c index ac9002b..ffb3aaf 100644 --- a/src/GSMTransport.c +++ b/src/GSMTransport.c @@ -298,5 +298,17 @@ void PPPModemGetRSSI(void) 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 diff --git a/src/HTTPPostSystem.c b/src/HTTPPostSystem.c index 4eadab2..da9d99b 100644 --- a/src/HTTPPostSystem.c +++ b/src/HTTPPostSystem.c @@ -23,6 +23,7 @@ #include "HTTPServer.h" #include "LoRaWAN.h" +#include "Helpers.h" 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) { - char tmp[32]; + char tmp[33]; #if CONFIG_WEBGUIAPP_ETHERNET_ENABLE 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 (!strcmp((const char*) tmp, (const char*) "1")) - TempIsETHEnabled = true; + TempIsETHEnabled = true; } if (httpd_query_key_value(PostData, "dhcp", tmp, sizeof(tmp)) == ESP_OK) { if (!strcmp((const char*) tmp, (const char*) "1")) - TempIsETHDHCPEnabled = true; + TempIsETHDHCPEnabled = true; } 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) - 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) - 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) - 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) - 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) - 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 @@ -218,6 +219,30 @@ static HTTP_IO_RESULT HTTPPostAdaptersSettings(httpd_req_t *req, char *PostData) } #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 (!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; #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) { @@ -317,29 +349,29 @@ static HTTP_IO_RESULT HTTPPostServicesSettings(httpd_req_t *req, char *PostData) #if CONFIG_WEBGUIAPP_MQTT_CLIENTS_NUM == 2 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, - sizeof(GetSysConf()->mqttStation[1].ClientID)); + sizeof(GetSysConf()->mqttStation[1].ClientID)); 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, - sizeof(GetSysConf()->mqttStation[1].GroupName)); + sizeof(GetSysConf()->mqttStation[1].GroupName)); 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 (!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) - { - uint16_t tp = atoi((const char*) tmp); - if (tp < 65535 && tp >= 1000) - GetSysConf()->mqttStation[1].ServerPort = tp; - } + if (httpd_query_key_value(PostData, "mqport2", tmp, sizeof(tmp)) == ESP_OK) + { + uint16_t tp = atoi((const char*) tmp); + if (tp < 65535 && tp >= 1000) + GetSysConf()->mqttStation[1].ServerPort = tp; + } if (httpd_query_key_value(PostData, "mqpass2", tmp, sizeof(tmp)) == ESP_OK && 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")) { + return HTTP_IO_DONE_NOREFRESH; } +#if CONFIG_WEBGUIAPP_GPRS_ENABLE else if (!strcmp(tmp, (const char*) "2")) { - WiFiDisconnect(); + char resp[256] = {0}; + ModemSendAT("AT+CCLK?\r", resp, 200); return HTTP_IO_DONE_NOREFRESH; } else if (!strcmp(tmp, (const char*) "3")) { + char resp[256] = {0}; + ModemSendAT("ATD+79022518532;\r", resp, 200); return HTTP_IO_DONE_NOREFRESH; } else if (!strcmp(tmp, (const char*) "4")) { + char resp[256] = {0}; + ModemSendAT("ATH\r", resp, 200); return HTTP_IO_DONE_NOREFRESH; } +#endif else if (!strcmp(tmp, (const char*) "5")) { return HTTP_IO_DONE_NOREFRESH; diff --git a/src/HTTPPrintSystem.c b/src/HTTPPrintSystem.c index d3a46fa..46f1ef4 100644 --- a/src/HTTPPrintSystem.c +++ b/src/HTTPPrintSystem.c @@ -27,7 +27,7 @@ #include "esp_wifi.h" #include "NetTransport.h" #include "esp_ota_ops.h" -#include "ROMFS.h" +#include "romfs.h" #include "esp_idf_version.h" #include "jWrite.h" diff --git a/src/LoRaWAN.c b/src/LoRaWAN.c index 969c0cd..0baef4a 100644 --- a/src/LoRaWAN.c +++ b/src/LoRaWAN.c @@ -55,16 +55,19 @@ uint8_t LoRaMessagesQueueStorageArea[LORAWAN_MESSAGE_BUFER_LENTH void (*LoRaUserReceiveHandler)(const char *message, int length, int port); 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; } esp_err_t LORASendData(LORA_DATA_SEND_STRUCT *pdss) { + if (LORAMessagesQueueHandle == NULL) + return ESP_ERR_INVALID_ARG; char *ptr = (char*) malloc(MESSAGE_LENGTH); if (ptr) { + ESP_LOGW(TAG, "memory allocate %d byte", MESSAGE_LENGTH); memcpy(ptr, pdss->raw_data_ptr, MESSAGE_LENGTH); LORA_DATA_SEND_STRUCT DSS; DSS.raw_data_ptr = ptr; @@ -75,6 +78,7 @@ esp_err_t LORASendData(LORA_DATA_SEND_STRUCT *pdss) else { free(ptr); + ESP_LOGW(TAG, "memory free (queue full) %d byte", MESSAGE_LENGTH); 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); } #endif - if(LoRaUserReceiveHandler != NULL) - LoRaUserReceiveHandler((char*)message, length, (int)port); + if (LoRaUserReceiveHandler != NULL) + LoRaUserReceiveHandler((char*) message, length, (int) port); } @@ -118,6 +122,7 @@ void LoRaWANTransportTask(void *pvParameter) #endif ttn_transmit_message((const uint8_t*) DSS.raw_data_ptr, MESSAGE_LENGTH, 1, true); free(DSS.raw_data_ptr); + ESP_LOGW(TAG, "memory free (transmitted) %d byte", MESSAGE_LENGTH); } else { @@ -128,7 +133,6 @@ void LoRaWANTransportTask(void *pvParameter) } } - void LoRaWANRejoin(void) { ttn_rejoin(); @@ -174,7 +178,6 @@ void LoRaWANInitJoinTask(void *pvParameter) } #endif - void LoRaWANStart(void) { #ifdef CONFIG_WEBGUIAPP_LORAWAN_ENABLE diff --git a/src/MQTT.c b/src/MQTT.c index 6193ae3..ef18292 100644 --- a/src/MQTT.c +++ b/src/MQTT.c @@ -30,6 +30,8 @@ #define MQTT_MESSAGE_BUFER_LENTH 5 //size of mqtt queue #define MQTT_RECONNECT_CHANGE_ADAPTER 3 +#define MQTT_RECONNECT_TIMEOUT 40 + #if CONFIG_WEBGUIAPP_MQTT_ENABLE QueueHandle_t MQTT1MessagesQueueHandle; @@ -297,8 +299,13 @@ static void start_mqtt() strcpy(tmp, GetSysConf()->mqttStation[i].ClientID); strcat(tmp, "-"); strcat(tmp, GetSysConf()->ID); +<<<<<<< src/MQTT.c //mqtt_cfg.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].mqtt_index = i; //mqtt_cfg.user_context = (void*) &mqtt[i];