diff --git a/components/server/CMakeLists.txt b/components/server/CMakeLists.txt new file mode 100644 index 0000000..3b99613 --- /dev/null +++ b/components/server/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "server.c" + INCLUDE_DIRS "." + REQUIRES esp_http_server freertos) \ No newline at end of file diff --git a/components/server/server.c b/components/server/server.c new file mode 100644 index 0000000..1959162 --- /dev/null +++ b/components/server/server.c @@ -0,0 +1,147 @@ +/* + * server.c + * + * Created on: 21 Apr 2020 + * Author: Chris + */ + +#include "server.h" + +static const char *TAG = "server"; +char cur_value_str[255] = "No measurements yet!"; + +void server_set_values(int32_t temp_raw, uint32_t pressure_raw, uint32_t humidity_raw, + int32_t temp2_raw, uint32_t pressure2_raw, uint32_t humidity2_raw) +{ + sprintf(cur_value_str, "

%d %d %d

%d %d %d

", temp_raw, pressure_raw, humidity_raw, temp2_raw, pressure2_raw, humidity2_raw); +} + +static esp_err_t get_handler(httpd_req_t *req) +{ + char* buf; + size_t buf_len; + + /* Get header value string length and allocate memory for length + 1, + * extra byte for null termination */ + buf_len = httpd_req_get_hdr_value_len(req, "Host") + 1; + if (buf_len > 1) { + buf = malloc(buf_len); + /* Copy null terminated value string into buffer */ + if (httpd_req_get_hdr_value_str(req, "Host", buf, buf_len) == ESP_OK) { + ESP_LOGI(TAG, "Found header => Host: %s", buf); + } + free(buf); + } + +// buf_len = httpd_req_get_hdr_value_len(req, "Test-Header-2") + 1; +// if (buf_len > 1) { +// buf = malloc(buf_len); +// if (httpd_req_get_hdr_value_str(req, "Test-Header-2", buf, buf_len) == ESP_OK) { +// ESP_LOGI(TAG, "Found header => Test-Header-2: %s", buf); +// } +// free(buf); +// } +// +// buf_len = httpd_req_get_hdr_value_len(req, "Test-Header-1") + 1; +// if (buf_len > 1) { +// buf = malloc(buf_len); +// if (httpd_req_get_hdr_value_str(req, "Test-Header-1", buf, buf_len) == ESP_OK) { +// ESP_LOGI(TAG, "Found header => Test-Header-1: %s", buf); +// } +// free(buf); +// } + +// /* Read URL query string length and allocate memory for length + 1, +// * extra byte for null termination */ +// buf_len = httpd_req_get_url_query_len(req) + 1; +// if (buf_len > 1) { +// buf = malloc(buf_len); +// if (httpd_req_get_url_query_str(req, buf, buf_len) == ESP_OK) { +// ESP_LOGI(TAG, "Found URL query => %s", buf); +// char param[32]; +// /* Get value of expected key from query string */ +// if (httpd_query_key_value(buf, "query1", param, sizeof(param)) == ESP_OK) { +// ESP_LOGI(TAG, "Found URL query parameter => query1=%s", param); +// } +// if (httpd_query_key_value(buf, "query3", param, sizeof(param)) == ESP_OK) { +// ESP_LOGI(TAG, "Found URL query parameter => query3=%s", param); +// } +// if (httpd_query_key_value(buf, "query2", param, sizeof(param)) == ESP_OK) { +// ESP_LOGI(TAG, "Found URL query parameter => query2=%s", param); +// } +// } +// free(buf); +// } + + /* Set some custom headers */ +// httpd_resp_set_hdr(req, "Custom-Header-1", "Custom-Value-1"); +// httpd_resp_set_hdr(req, "Custom-Header-2", "Custom-Value-2"); + + /* Send response with custom headers and body set as the + * string passed in user context*/ + const char* resp_str = cur_value_str; + httpd_resp_send(req, resp_str, strlen(resp_str)); + + /* After sending the HTTP response the old HTTP request + * headers are lost. Check if HTTP request headers can be read now. */ +// if (httpd_req_get_hdr_value_len(req, "Host") == 0) { +// ESP_LOGI(TAG, "Request headers lost"); +// } + return ESP_OK; +} + +static httpd_uri_t uri = { + .uri = "/", + .method = HTTP_GET, + .handler = get_handler, +}; + +static httpd_handle_t start_webserver(void) +{ + httpd_handle_t server = NULL; + httpd_config_t config = HTTPD_DEFAULT_CONFIG(); + + // Start the httpd server + ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port); + if (httpd_start(&server, &config) == ESP_OK) { + // Set URI handlers + ESP_LOGI(TAG, "Registering URI handlers"); + httpd_register_uri_handler(server, &uri); + return server; + } + + ESP_LOGI(TAG, "Error starting server!"); + return NULL; +} + +static void stop_webserver(httpd_handle_t server) +{ + // Stop the httpd server + httpd_stop(server); +} + +static void connect_handler(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data) +{ + httpd_handle_t* server = (httpd_handle_t*) arg; + if (*server == NULL) { + ESP_LOGI(TAG, "Starting webserver"); + *server = start_webserver(); + } +} + +static void disconnect_handler(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data) +{ + httpd_handle_t* server = (httpd_handle_t*) arg; + if (*server) { + ESP_LOGI(TAG, "Stopping webserver"); + stop_webserver(*server); + *server = NULL; + } +} + +void init_server() +{ + start_webserver(); +} diff --git a/components/server/server.h b/components/server/server.h new file mode 100644 index 0000000..af7e702 --- /dev/null +++ b/components/server/server.h @@ -0,0 +1,23 @@ +/* + * server.h + * + * Created on: 21 Apr 2020 + * Author: Chris + */ + +#ifndef COMPONENTS_SERVER_SERVER_H_ +#define COMPONENTS_SERVER_SERVER_H_ + +#include +#include +#include +#include +#include +#include +#include + +void init_server(); +void server_set_values(int32_t temp_raw, uint32_t pressure_raw, uint32_t humidity_raw, + int32_t temp2_raw, uint32_t pressure2_raw, uint32_t humidity2_raw); + +#endif /* COMPONENTS_SERVER_SERVER_H_ */ diff --git a/components/wifi/CMakeLists.txt b/components/wifi/CMakeLists.txt new file mode 100644 index 0000000..98cbc38 --- /dev/null +++ b/components/wifi/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "wifi.c" + INCLUDE_DIRS "." + REQUIRES nvs_flash) \ No newline at end of file diff --git a/main/Kconfig.projbuild b/components/wifi/Kconfig similarity index 75% rename from main/Kconfig.projbuild rename to components/wifi/Kconfig index 7e23439..1b07f08 100644 --- a/main/Kconfig.projbuild +++ b/components/wifi/Kconfig @@ -1,5 +1,5 @@ # put here your custom config value -menu "Example Configuration" +menu "WIFI AP Configuration" config ESP_WIFI_SSID string "WiFi SSID" default "myssid" @@ -11,4 +11,8 @@ config ESP_WIFI_PASSWORD default "mypassword" help WiFi password (WPA or WPA2) for the example to use. + +config ESP_WIFI_RETRIES + int "WiFi connection retries" + default 5 endmenu diff --git a/components/wifi/wifi.c b/components/wifi/wifi.c new file mode 100644 index 0000000..a2f79e7 --- /dev/null +++ b/components/wifi/wifi.c @@ -0,0 +1,111 @@ +/* + * wifi.c + * + * Created on: 21 Apr 2020 + * Author: Chris + */ + +#include "wifi.h" + +#define WIFI_CONNECTED_BIT BIT0 +#define WIFI_FAIL_BIT BIT1 + +static EventGroupHandle_t s_wifi_event_group; +static const char *TAG = "wifi station"; +static int s_retry_num = 0; + +static void event_handler(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data) +{ + if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { + esp_wifi_connect(); + } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { + if (s_retry_num < CONFIG_ESP_WIFI_RETRIES) { + esp_wifi_connect(); + s_retry_num++; + ESP_LOGI(TAG, "retry to connect to the AP"); + } else { + xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); + } + ESP_LOGI(TAG,"connect to the AP fail"); + } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { + ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; + ESP_LOGI(TAG, "got ip:%s", + ip4addr_ntoa(&event->ip_info.ip)); + s_retry_num = 0; + xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); + } +} + +void wifi_init_sta() +{ + //Initialize NVS + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK(nvs_flash_erase()); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK(ret); + + s_wifi_event_group = xEventGroupCreate(); + + tcpip_adapter_init(); + + ESP_ERROR_CHECK(esp_event_loop_create_default()); + + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + + //tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_STA); + //tcpip_adapter_ip_info_t info; + //ip4_addr_t gw; + //gw.addr = ipaddr_addr("192.168.0.1"); + //info.gw = gw; + //ip4_addr_t ip; + //ip.addr = ipaddr_addr("192.168.0.110"); + //info.ip = ip; + //ip4_addr_t netmask; + //netmask.addr = ipaddr_addr("255.255.255.0"); + //info.netmask = netmask; + //tcpip_adapter_sta_start(0, &info); + + ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL)); + ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL)); + + wifi_config_t wifi_config = { + .sta = { + .ssid = CONFIG_ESP_WIFI_SSID, + .password = CONFIG_ESP_WIFI_PASSWORD + }, + }; + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) ); + ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) ); + ESP_ERROR_CHECK(esp_wifi_start() ); + + ESP_LOGI(TAG, "wifi_init_sta finished."); + + /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum + * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */ + EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group, + WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, + pdFALSE, + pdFALSE, + portMAX_DELAY); + + //tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_STA, &info); + /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually + * happened. */ + if (bits & WIFI_CONNECTED_BIT) { + ESP_LOGI(TAG, "connected to ap SSID:%s", + CONFIG_ESP_WIFI_SSID); + } else if (bits & WIFI_FAIL_BIT) { + ESP_LOGI(TAG, "Failed to connect to SSID:%s", + CONFIG_ESP_WIFI_SSID); + } else { + ESP_LOGE(TAG, "UNEXPECTED EVENT"); + } + + //ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler)); + //ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler)); + //vEventGroupDelete(s_wifi_event_group); +} diff --git a/components/wifi/wifi.h b/components/wifi/wifi.h new file mode 100644 index 0000000..0ed9e94 --- /dev/null +++ b/components/wifi/wifi.h @@ -0,0 +1,20 @@ +/* + * wifi.h + * + * Created on: 21 Apr 2020 + * Author: Chris + */ + +#ifndef COMPONENTS_WIFI_WIFI_H_ +#define COMPONENTS_WIFI_WIFI_H_ + +#include +#include +#include +#include "freertos/event_groups.h" +#include +#include "nvs_flash.h" + +void wifi_init_sta(); + +#endif /* COMPONENTS_WIFI_WIFI_H_ */ diff --git a/main/main.c b/main/main.c index a18fdef..08e1764 100644 --- a/main/main.c +++ b/main/main.c @@ -1,245 +1,9 @@ #include "display.h" #include "sensors.h" +#include "wifi.h" +#include "server.h" #include -#include -#include - -//#include -//#include "freertos/event_groups.h" -//#include "nvs_flash.h" -//#include -//#include - -//#define WIFI_SSID "Netzknecht" -//#define WIFI_PASS "SpvtNVYsSRTsX36I" -//#define WIFI_RETRIES 10 -// -//static EventGroupHandle_t s_wifi_event_group; -//#define WIFI_CONNECTED_BIT BIT0 -//#define WIFI_FAIL_BIT BIT1 -// -//static const char *TAG = "wifi station"; -//static int s_retry_num = 0; -// -//char cur_value_str[255]; -// -///* An HTTP GET handler */ -//static esp_err_t hello_get_handler(httpd_req_t *req) -//{ -// char* buf; -// size_t buf_len; -// -// /* Get header value string length and allocate memory for length + 1, -// * extra byte for null termination */ -// buf_len = httpd_req_get_hdr_value_len(req, "Host") + 1; -// if (buf_len > 1) { -// buf = malloc(buf_len); -// /* Copy null terminated value string into buffer */ -// if (httpd_req_get_hdr_value_str(req, "Host", buf, buf_len) == ESP_OK) { -// ESP_LOGI(TAG, "Found header => Host: %s", buf); -// } -// free(buf); -// } -// -// buf_len = httpd_req_get_hdr_value_len(req, "Test-Header-2") + 1; -// if (buf_len > 1) { -// buf = malloc(buf_len); -// if (httpd_req_get_hdr_value_str(req, "Test-Header-2", buf, buf_len) == ESP_OK) { -// ESP_LOGI(TAG, "Found header => Test-Header-2: %s", buf); -// } -// free(buf); -// } -// -// buf_len = httpd_req_get_hdr_value_len(req, "Test-Header-1") + 1; -// if (buf_len > 1) { -// buf = malloc(buf_len); -// if (httpd_req_get_hdr_value_str(req, "Test-Header-1", buf, buf_len) == ESP_OK) { -// ESP_LOGI(TAG, "Found header => Test-Header-1: %s", buf); -// } -// free(buf); -// } -// -// /* Read URL query string length and allocate memory for length + 1, -// * extra byte for null termination */ -// buf_len = httpd_req_get_url_query_len(req) + 1; -// if (buf_len > 1) { -// buf = malloc(buf_len); -// if (httpd_req_get_url_query_str(req, buf, buf_len) == ESP_OK) { -// ESP_LOGI(TAG, "Found URL query => %s", buf); -// char param[32]; -// /* Get value of expected key from query string */ -// if (httpd_query_key_value(buf, "query1", param, sizeof(param)) == ESP_OK) { -// ESP_LOGI(TAG, "Found URL query parameter => query1=%s", param); -// } -// if (httpd_query_key_value(buf, "query3", param, sizeof(param)) == ESP_OK) { -// ESP_LOGI(TAG, "Found URL query parameter => query3=%s", param); -// } -// if (httpd_query_key_value(buf, "query2", param, sizeof(param)) == ESP_OK) { -// ESP_LOGI(TAG, "Found URL query parameter => query2=%s", param); -// } -// } -// free(buf); -// } -// -// /* Set some custom headers */ -// httpd_resp_set_hdr(req, "Custom-Header-1", "Custom-Value-1"); -// httpd_resp_set_hdr(req, "Custom-Header-2", "Custom-Value-2"); -// -// /* Send response with custom headers and body set as the -// * string passed in user context*/ -// const char* resp_str = cur_value_str; -// httpd_resp_send(req, resp_str, strlen(resp_str)); -// -// /* After sending the HTTP response the old HTTP request -// * headers are lost. Check if HTTP request headers can be read now. */ -// if (httpd_req_get_hdr_value_len(req, "Host") == 0) { -// ESP_LOGI(TAG, "Request headers lost"); -// } -// return ESP_OK; -//} -// -//static httpd_uri_t hello = { -// .uri = "/hello", -// .method = HTTP_GET, -// .handler = hello_get_handler, -// /* Let's pass response string in user -// * context to demonstrate it's usage */ -// .user_ctx = "Hello World!" -//}; -// -//static httpd_handle_t start_webserver(void) -//{ -// httpd_handle_t server = NULL; -// httpd_config_t config = HTTPD_DEFAULT_CONFIG(); -// -// // Start the httpd server -// ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port); -// if (httpd_start(&server, &config) == ESP_OK) { -// // Set URI handlers -// ESP_LOGI(TAG, "Registering URI handlers"); -// httpd_register_uri_handler(server, &hello); -// return server; -// } -// -// ESP_LOGI(TAG, "Error starting server!"); -// return NULL; -//} -// -//static void stop_webserver(httpd_handle_t server) -//{ -// // Stop the httpd server -// httpd_stop(server); -//} -// -//static void disconnect_handler(void* arg, esp_event_base_t event_base, -// int32_t event_id, void* event_data) -//{ -// httpd_handle_t* server = (httpd_handle_t*) arg; -// if (*server) { -// ESP_LOGI(TAG, "Stopping webserver"); -// stop_webserver(*server); -// *server = NULL; -// } -//} -// -//static void connect_handler(void* arg, esp_event_base_t event_base, -// int32_t event_id, void* event_data) -//{ -// httpd_handle_t* server = (httpd_handle_t*) arg; -// if (*server == NULL) { -// ESP_LOGI(TAG, "Starting webserver"); -// *server = start_webserver(); -// } -//} -// -//static void event_handler(void* arg, esp_event_base_t event_base, -// int32_t event_id, void* event_data) -//{ -// if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { -// esp_wifi_connect(); -// } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { -// if (s_retry_num < WIFI_RETRIES) { -// esp_wifi_connect(); -// s_retry_num++; -// ESP_LOGI(TAG, "retry to connect to the AP"); -// } else { -// xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); -// } -// ESP_LOGI(TAG,"connect to the AP fail"); -// } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { -// ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; -// ESP_LOGI(TAG, "got ip:%s", -// ip4addr_ntoa(&event->ip_info.ip)); -// s_retry_num = 0; -// xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); -// } -//} - -//void wifi_init_sta() -//{ -// s_wifi_event_group = xEventGroupCreate(); -// -// tcpip_adapter_init(); -// -// ESP_ERROR_CHECK(esp_event_loop_create_default()); -// -// wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); -// ESP_ERROR_CHECK(esp_wifi_init(&cfg)); -// -// //tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_STA); -// //tcpip_adapter_ip_info_t info; -// //ip4_addr_t gw; -// //gw.addr = ipaddr_addr("192.168.0.1"); -// //info.gw = gw; -// //ip4_addr_t ip; -// //ip.addr = ipaddr_addr("192.168.0.110"); -// //info.ip = ip; -// //ip4_addr_t netmask; -// //netmask.addr = ipaddr_addr("255.255.255.0"); -// //info.netmask = netmask; -// //tcpip_adapter_sta_start(0, &info); -// -// ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL)); -// ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL)); -// -// wifi_config_t wifi_config = { -// .sta = { -// .ssid = WIFI_SSID, -// .password = WIFI_PASS -// }, -// }; -// ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) ); -// ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) ); -// ESP_ERROR_CHECK(esp_wifi_start() ); -// -// ESP_LOGI(TAG, "wifi_init_sta finished."); -// -// /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum -// * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */ -// EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group, -// WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, -// pdFALSE, -// pdFALSE, -// portMAX_DELAY); -// -// //tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_STA, &info); -// /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually -// * happened. */ -// if (bits & WIFI_CONNECTED_BIT) { -// ESP_LOGI(TAG, "connected to ap SSID:%s password:%s", -// WIFI_SSID, WIFI_PASS); -// } else if (bits & WIFI_FAIL_BIT) { -// ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s", -// WIFI_SSID, WIFI_PASS); -// } else { -// ESP_LOGE(TAG, "UNEXPECTED EVENT"); -// } -// -// ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler)); -// ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler)); -// vEventGroupDelete(s_wifi_event_group); -//} void app_main(void) { @@ -250,31 +14,15 @@ void app_main(void) uint32_t pressure2 = 0; uint32_t humidity2 = 0; - // INIT WIFI - //Initialize NVS -// esp_err_t ret = nvs_flash_init(); -// if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { -// ESP_ERROR_CHECK(nvs_flash_erase()); -// ret = nvs_flash_init(); -// } -// ESP_ERROR_CHECK(ret); -// -// ESP_LOGI(TAG, "ESP_WIFI_MODE_STA"); -// wifi_init_sta(); - - // INIT WEBSERVER -// static httpd_handle_t server = NULL; -// ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &connect_handler, &server)); -// ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &disconnect_handler, &server)); -// server = start_webserver(); init_sensors(); init_display(); - read_sensor(&temp, &pressure, &humidity); - read_sensor2(&temp2, &pressure2, &humidity2); - display_data(temp, pressure, humidity, temp2, pressure2, humidity2); + wifi_init_sta(); + init_server(); + while (1) { read_sensor(&temp, &pressure, &humidity); read_sensor2(&temp2, &pressure2, &humidity2); + server_set_values(temp, pressure, humidity, temp2, pressure2, humidity2); display_data(temp, pressure, humidity, temp2, pressure2, humidity2); vTaskDelay(1000 / portTICK_PERIOD_MS); }