Repo for ESP32 Weather Station Development
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

506 lignes
18KB

  1. //#include "bme280.h"
  2. //#include "bme280_defs.h"
  3. //#include "driver/i2c.h"
  4. #include "display.h"
  5. #include <esp_log.h>
  6. #include <freertos/FreeRTOS.h>
  7. #include <freertos/task.h>
  8. //#include <esp_wifi.h>
  9. //#include "freertos/event_groups.h"
  10. //#include "nvs_flash.h"
  11. //#include <esp_http_server.h>
  12. //#include <sys/param.h>
  13. //#define WIFI_SSID "Netzknecht"
  14. //#define WIFI_PASS "***REMOVED***"
  15. //#define WIFI_RETRIES 10
  16. //
  17. //static EventGroupHandle_t s_wifi_event_group;
  18. //#define WIFI_CONNECTED_BIT BIT0
  19. //#define WIFI_FAIL_BIT BIT1
  20. //
  21. //static const char *TAG = "wifi station";
  22. //static int s_retry_num = 0;
  23. //
  24. //char cur_value_str[255];
  25. //
  26. ///* An HTTP GET handler */
  27. //static esp_err_t hello_get_handler(httpd_req_t *req)
  28. //{
  29. // char* buf;
  30. // size_t buf_len;
  31. //
  32. // /* Get header value string length and allocate memory for length + 1,
  33. // * extra byte for null termination */
  34. // buf_len = httpd_req_get_hdr_value_len(req, "Host") + 1;
  35. // if (buf_len > 1) {
  36. // buf = malloc(buf_len);
  37. // /* Copy null terminated value string into buffer */
  38. // if (httpd_req_get_hdr_value_str(req, "Host", buf, buf_len) == ESP_OK) {
  39. // ESP_LOGI(TAG, "Found header => Host: %s", buf);
  40. // }
  41. // free(buf);
  42. // }
  43. //
  44. // buf_len = httpd_req_get_hdr_value_len(req, "Test-Header-2") + 1;
  45. // if (buf_len > 1) {
  46. // buf = malloc(buf_len);
  47. // if (httpd_req_get_hdr_value_str(req, "Test-Header-2", buf, buf_len) == ESP_OK) {
  48. // ESP_LOGI(TAG, "Found header => Test-Header-2: %s", buf);
  49. // }
  50. // free(buf);
  51. // }
  52. //
  53. // buf_len = httpd_req_get_hdr_value_len(req, "Test-Header-1") + 1;
  54. // if (buf_len > 1) {
  55. // buf = malloc(buf_len);
  56. // if (httpd_req_get_hdr_value_str(req, "Test-Header-1", buf, buf_len) == ESP_OK) {
  57. // ESP_LOGI(TAG, "Found header => Test-Header-1: %s", buf);
  58. // }
  59. // free(buf);
  60. // }
  61. //
  62. // /* Read URL query string length and allocate memory for length + 1,
  63. // * extra byte for null termination */
  64. // buf_len = httpd_req_get_url_query_len(req) + 1;
  65. // if (buf_len > 1) {
  66. // buf = malloc(buf_len);
  67. // if (httpd_req_get_url_query_str(req, buf, buf_len) == ESP_OK) {
  68. // ESP_LOGI(TAG, "Found URL query => %s", buf);
  69. // char param[32];
  70. // /* Get value of expected key from query string */
  71. // if (httpd_query_key_value(buf, "query1", param, sizeof(param)) == ESP_OK) {
  72. // ESP_LOGI(TAG, "Found URL query parameter => query1=%s", param);
  73. // }
  74. // if (httpd_query_key_value(buf, "query3", param, sizeof(param)) == ESP_OK) {
  75. // ESP_LOGI(TAG, "Found URL query parameter => query3=%s", param);
  76. // }
  77. // if (httpd_query_key_value(buf, "query2", param, sizeof(param)) == ESP_OK) {
  78. // ESP_LOGI(TAG, "Found URL query parameter => query2=%s", param);
  79. // }
  80. // }
  81. // free(buf);
  82. // }
  83. //
  84. // /* Set some custom headers */
  85. // httpd_resp_set_hdr(req, "Custom-Header-1", "Custom-Value-1");
  86. // httpd_resp_set_hdr(req, "Custom-Header-2", "Custom-Value-2");
  87. //
  88. // /* Send response with custom headers and body set as the
  89. // * string passed in user context*/
  90. // const char* resp_str = cur_value_str;
  91. // httpd_resp_send(req, resp_str, strlen(resp_str));
  92. //
  93. // /* After sending the HTTP response the old HTTP request
  94. // * headers are lost. Check if HTTP request headers can be read now. */
  95. // if (httpd_req_get_hdr_value_len(req, "Host") == 0) {
  96. // ESP_LOGI(TAG, "Request headers lost");
  97. // }
  98. // return ESP_OK;
  99. //}
  100. //
  101. //static httpd_uri_t hello = {
  102. // .uri = "/hello",
  103. // .method = HTTP_GET,
  104. // .handler = hello_get_handler,
  105. // /* Let's pass response string in user
  106. // * context to demonstrate it's usage */
  107. // .user_ctx = "Hello World!"
  108. //};
  109. //
  110. //static httpd_handle_t start_webserver(void)
  111. //{
  112. // httpd_handle_t server = NULL;
  113. // httpd_config_t config = HTTPD_DEFAULT_CONFIG();
  114. //
  115. // // Start the httpd server
  116. // ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port);
  117. // if (httpd_start(&server, &config) == ESP_OK) {
  118. // // Set URI handlers
  119. // ESP_LOGI(TAG, "Registering URI handlers");
  120. // httpd_register_uri_handler(server, &hello);
  121. // return server;
  122. // }
  123. //
  124. // ESP_LOGI(TAG, "Error starting server!");
  125. // return NULL;
  126. //}
  127. //
  128. //static void stop_webserver(httpd_handle_t server)
  129. //{
  130. // // Stop the httpd server
  131. // httpd_stop(server);
  132. //}
  133. //
  134. //static void disconnect_handler(void* arg, esp_event_base_t event_base,
  135. // int32_t event_id, void* event_data)
  136. //{
  137. // httpd_handle_t* server = (httpd_handle_t*) arg;
  138. // if (*server) {
  139. // ESP_LOGI(TAG, "Stopping webserver");
  140. // stop_webserver(*server);
  141. // *server = NULL;
  142. // }
  143. //}
  144. //
  145. //static void connect_handler(void* arg, esp_event_base_t event_base,
  146. // int32_t event_id, void* event_data)
  147. //{
  148. // httpd_handle_t* server = (httpd_handle_t*) arg;
  149. // if (*server == NULL) {
  150. // ESP_LOGI(TAG, "Starting webserver");
  151. // *server = start_webserver();
  152. // }
  153. //}
  154. //
  155. //static void event_handler(void* arg, esp_event_base_t event_base,
  156. // int32_t event_id, void* event_data)
  157. //{
  158. // if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
  159. // esp_wifi_connect();
  160. // } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
  161. // if (s_retry_num < WIFI_RETRIES) {
  162. // esp_wifi_connect();
  163. // s_retry_num++;
  164. // ESP_LOGI(TAG, "retry to connect to the AP");
  165. // } else {
  166. // xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
  167. // }
  168. // ESP_LOGI(TAG,"connect to the AP fail");
  169. // } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
  170. // ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
  171. // ESP_LOGI(TAG, "got ip:%s",
  172. // ip4addr_ntoa(&event->ip_info.ip));
  173. // s_retry_num = 0;
  174. // xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
  175. // }
  176. //}
  177. //void wifi_init_sta()
  178. //{
  179. // s_wifi_event_group = xEventGroupCreate();
  180. //
  181. // tcpip_adapter_init();
  182. //
  183. // ESP_ERROR_CHECK(esp_event_loop_create_default());
  184. //
  185. // wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  186. // ESP_ERROR_CHECK(esp_wifi_init(&cfg));
  187. //
  188. // //tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_STA);
  189. // //tcpip_adapter_ip_info_t info;
  190. // //ip4_addr_t gw;
  191. // //gw.addr = ipaddr_addr("192.168.0.1");
  192. // //info.gw = gw;
  193. // //ip4_addr_t ip;
  194. // //ip.addr = ipaddr_addr("192.168.0.110");
  195. // //info.ip = ip;
  196. // //ip4_addr_t netmask;
  197. // //netmask.addr = ipaddr_addr("255.255.255.0");
  198. // //info.netmask = netmask;
  199. // //tcpip_adapter_sta_start(0, &info);
  200. //
  201. // ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));
  202. // ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL));
  203. //
  204. // wifi_config_t wifi_config = {
  205. // .sta = {
  206. // .ssid = WIFI_SSID,
  207. // .password = WIFI_PASS
  208. // },
  209. // };
  210. // ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
  211. // ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) );
  212. // ESP_ERROR_CHECK(esp_wifi_start() );
  213. //
  214. // ESP_LOGI(TAG, "wifi_init_sta finished.");
  215. //
  216. // /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum
  217. // * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */
  218. // EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group,
  219. // WIFI_CONNECTED_BIT | WIFI_FAIL_BIT,
  220. // pdFALSE,
  221. // pdFALSE,
  222. // portMAX_DELAY);
  223. //
  224. // //tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_STA, &info);
  225. // /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually
  226. // * happened. */
  227. // if (bits & WIFI_CONNECTED_BIT) {
  228. // ESP_LOGI(TAG, "connected to ap SSID:%s password:%s",
  229. // WIFI_SSID, WIFI_PASS);
  230. // } else if (bits & WIFI_FAIL_BIT) {
  231. // ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s",
  232. // WIFI_SSID, WIFI_PASS);
  233. // } else {
  234. // ESP_LOGE(TAG, "UNEXPECTED EVENT");
  235. // }
  236. //
  237. // ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler));
  238. // ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler));
  239. // vEventGroupDelete(s_wifi_event_group);
  240. //}
  241. //
  242. //void i2c_setup()
  243. //{
  244. // printf("Setting up I�C driver on port 1... ");
  245. // i2c_config_t config;
  246. // config.mode = I2C_MODE_MASTER;
  247. // config.sda_io_num = 33;
  248. // config.sda_pullup_en = GPIO_PULLUP_ENABLE;
  249. // config.scl_io_num = 32;
  250. // config.scl_pullup_en = GPIO_PULLUP_ENABLE;
  251. // config.master.clk_speed = 100000;
  252. // i2c_param_config(I2C_NUM_0, &config);
  253. // printf("Set driver parameters... ");
  254. // esp_err_t err = i2c_driver_install(I2C_NUM_0, I2C_MODE_MASTER, 0, 0, 0);
  255. // if (err == ESP_OK)
  256. // printf("Driver installed!\n");
  257. // else if (err == ESP_ERR_INVALID_ARG)
  258. // printf("Driver install failed, invalid arguments!\n");
  259. // else
  260. // printf("Driver install failed!\n");
  261. //}
  262. //
  263. //int8_t i2c_read(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len) {
  264. // i2c_cmd_handle_t cmd = i2c_cmd_link_create();
  265. // i2c_master_start(cmd);
  266. // i2c_master_write_byte(cmd, dev_id << 1 | I2C_MASTER_WRITE, 1);
  267. // i2c_master_write_byte(cmd, reg_addr, 1);
  268. // i2c_master_start(cmd);
  269. // i2c_master_write_byte(cmd, dev_id << 1 | I2C_MASTER_READ, 1);
  270. // if (len > 1) {
  271. // i2c_master_read(cmd, data, len - 1, I2C_MASTER_ACK);
  272. // }
  273. // i2c_master_read_byte(cmd, data + len - 1, I2C_MASTER_NACK);
  274. // i2c_master_stop(cmd);
  275. // i2c_master_cmd_begin(I2C_NUM_0, cmd, 500 / portTICK_RATE_MS);
  276. // i2c_cmd_link_delete(cmd);
  277. // return 0;
  278. //}
  279. //
  280. //int8_t i2c_write(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len) {
  281. // //printf("Writing to bus: dev_id=%x, reg_addr=%x, data=%p, length=%u\n", dev_id, reg_addr, data, len);
  282. // i2c_cmd_handle_t cmd = i2c_cmd_link_create();
  283. // i2c_master_start(cmd);
  284. // i2c_master_write_byte(cmd, (dev_id << 1) | I2C_MASTER_WRITE, 1);
  285. // i2c_master_write_byte(cmd, reg_addr, 1);
  286. // i2c_master_write(cmd, data, len, 1);
  287. // i2c_master_stop(cmd);
  288. // i2c_master_cmd_begin(I2C_NUM_0, cmd, 500 / portTICK_RATE_MS);
  289. // i2c_cmd_link_delete(cmd);
  290. // return 0;
  291. //}
  292. //
  293. //void i2c_delay(uint32_t period) {
  294. // vTaskDelay(period / portTICK_PERIOD_MS);
  295. //}
  296. //
  297. //void i2c_shutdown()
  298. //{
  299. // printf("Shutting down I�C bus... ");
  300. // esp_err_t err = i2c_driver_delete(I2C_NUM_0);
  301. // if (err == ESP_ERR_INVALID_ARG)
  302. // printf("Failed, invalid arguments!\n");
  303. // else
  304. // printf("Success!\n");
  305. //}
  306. //
  307. //void read_sensor(struct bme280_dev* dev, int32_t* temp, uint32_t* pressure, uint32_t* humidity) {
  308. //
  309. // uint8_t settings_sel;
  310. // uint32_t req_delay;
  311. // struct bme280_data comp_data;
  312. //
  313. // dev->settings.osr_h = BME280_OVERSAMPLING_16X;
  314. // dev->settings.osr_p = BME280_OVERSAMPLING_16X;
  315. // dev->settings.osr_t = BME280_OVERSAMPLING_16X;
  316. // dev->settings.filter = BME280_FILTER_COEFF_16;
  317. //
  318. // settings_sel = BME280_OSR_PRESS_SEL | BME280_OSR_TEMP_SEL | BME280_OSR_HUM_SEL | BME280_FILTER_SEL;
  319. // bme280_set_sensor_settings(settings_sel, dev);
  320. //
  321. // req_delay = 12*bme280_cal_meas_delay(&(dev->settings));
  322. //
  323. // /* Continuously stream sensor data */
  324. // bme280_set_sensor_mode(BME280_FORCED_MODE, dev);
  325. // /* Wait for the measurement to complete and print data @25Hz */
  326. // dev->delay_ms(req_delay / portTICK_PERIOD_MS);
  327. // bme280_get_sensor_data(BME280_ALL, &comp_data, dev);
  328. // *temp = comp_data.temperature;
  329. // *pressure = comp_data.pressure;
  330. // *humidity = comp_data.humidity;
  331. //}
  332. //
  333. //void read_sensor2(struct bme280_dev* dev, int32_t* temp, uint32_t* pressure, uint32_t* humidity) {
  334. //
  335. // uint8_t settings_sel;
  336. // uint32_t req_delay;
  337. // struct bme280_data comp_data;
  338. //
  339. // dev->settings.osr_h = BME280_OVERSAMPLING_16X;
  340. // dev->settings.osr_p = BME280_OVERSAMPLING_16X;
  341. // dev->settings.osr_t = BME280_OVERSAMPLING_16X;
  342. // dev->settings.filter = BME280_FILTER_COEFF_16;
  343. //
  344. // settings_sel = BME280_OSR_PRESS_SEL | BME280_OSR_TEMP_SEL | BME280_OSR_HUM_SEL | BME280_FILTER_SEL;
  345. // bme280_set_sensor_settings(settings_sel, dev);
  346. // /*Calculate the minimum delay required between consecutive measurement based upon the sensor enabled
  347. // * and the oversampling configuration. */
  348. // req_delay = 12*bme280_cal_meas_delay(&(dev->settings));
  349. //
  350. // bme280_set_sensor_mode(BME280_FORCED_MODE, dev);
  351. // /* Wait for the measurement to complete and print data @25Hz */
  352. // dev->delay_ms(req_delay / portTICK_PERIOD_MS);
  353. // bme280_get_sensor_data(BME280_ALL, &comp_data, dev);
  354. // *temp = comp_data.temperature;
  355. // *pressure = comp_data.pressure;
  356. // *humidity = comp_data.humidity;
  357. //}
  358. //void print_data(u8g2_t* u8g2, int32_t temp_raw, uint32_t pressure_raw, uint32_t humidity_raw,
  359. // int32_t temp2_raw, uint32_t pressure2_raw, uint32_t humidity2_raw) {
  360. // // Calc temperature pre and post comma values
  361. // int32_t temp_pre = temp_raw / 100;
  362. // int32_t temp_post = (abs(temp_raw) % 100) / 10;
  363. // int32_t temp2_pre = temp2_raw / 100;
  364. // int32_t temp2_post = (abs(temp2_raw) % 100) / 10;
  365. //
  366. // // Calc pressure values
  367. // uint32_t press = pressure_raw / 100;
  368. // uint32_t press2 = pressure2_raw / 100;
  369. //
  370. // // Calc humidity pre and post comma values
  371. // uint32_t humid_pre = humidity_raw / 1024;
  372. // uint32_t humid_post = (humidity_raw - humid_pre*1024) * 10 / 1024;
  373. // uint32_t humid2_pre = humidity2_raw / 1024;
  374. // uint32_t humid2_post = (humidity2_raw - humid2_pre*1024) * 10 / 1024;
  375. //
  376. // // Format temperatures
  377. // char temp_str[2*(sizeof(int)*8+1)+5] = ""; // ""
  378. // char temp_pre_str[sizeof(int)*8+1];
  379. // itoa(temp_pre, temp_pre_str, 10);
  380. // char temp_post_str[sizeof(int)*8+1];
  381. // itoa(temp_post, temp_post_str, 10);
  382. // char temp2_pre_str[sizeof(int)*8+1];
  383. // itoa(temp2_pre, temp2_pre_str, 10);
  384. // char temp2_post_str[sizeof(int)*8+1];
  385. // itoa(temp2_post, temp2_post_str, 10);
  386. // if (temp_pre < 10)
  387. // strcat(temp_str, " "); // Add space if first temperatur is just one digit long " "
  388. // strcat(temp_str, temp_pre_str); // " 1"
  389. // strcat(temp_str, ","); // " 1,"
  390. // strcat(temp_str, temp_post_str); // " 1,3"
  391. // strcat(temp_str, " "); // " 1,3 "
  392. // if (temp2_pre >= 0)
  393. // strcat(temp_str, " "); // Add space if there is no minus sign " 1,3 "
  394. // if (temp2_pre < 10)
  395. // strcat(temp_str, " "); // Add space if second temperatur is just one digit long " 1,3 "
  396. // strcat(temp_str, temp2_pre_str); // " 1,3 7"
  397. // strcat(temp_str, ","); // " 1,3 7,"
  398. // strcat(temp_str, temp2_post_str); // " 1,3 7,2"
  399. // strcat(temp_str, " �C"); // " 1,3 7,2 �C"
  400. //
  401. // // Format temperatures
  402. // char humid_str[2*(sizeof(int)*8+1)+5] = ""; // ""
  403. // char humid_pre_str[sizeof(int)*8+1];
  404. // itoa(humid_pre, humid_pre_str, 10);
  405. // char humid_post_str[sizeof(int)*8+1];
  406. // itoa(humid_post, humid_post_str, 10);
  407. // char humid2_pre_str[sizeof(int)*8+1];
  408. // itoa(humid2_pre, humid2_pre_str, 10);
  409. // char humid2_post_str[sizeof(int)*8+1];
  410. // itoa(humid2_post, humid2_post_str, 10);
  411. // strcat(humid_str, humid_pre_str); // "12"
  412. // strcat(humid_str, ","); // "12,"
  413. // strcat(humid_str, humid_post_str); // "12,5"
  414. // strcat(humid_str, " "); // "12,5 "
  415. // strcat(humid_str, humid2_pre_str); // "12,5 45"
  416. // strcat(humid_str, ","); // "12,5 45,"
  417. // strcat(humid_str, humid2_post_str); // "12,5 45,23"
  418. // strcat(humid_str, " %"); // "12,5 45,23 %"
  419. //
  420. // // Format pressure
  421. // char pressure_str[2*(sizeof(int)*8+1)+5] = ""; // ""
  422. // char press1_str[sizeof(int)*8+1];
  423. // itoa(press, press1_str, 10);
  424. // char press2_str[sizeof(int)*8+1];
  425. // itoa(press2, press2_str, 10);
  426. // if (press < 1000)
  427. // strcat(pressure_str, " ");
  428. // strcat(pressure_str, press1_str);
  429. // strcat(pressure_str, " ");
  430. // if (press2 < 1000)
  431. // strcat(pressure_str, " ");
  432. // strcat(pressure_str, press2_str);
  433. // strcat(pressure_str, " hPa");
  434. //
  435. // u8g2_ClearBuffer(u8g2);
  436. // u8g2_SetFont(u8g2, u8g2_font_profont17_mf);
  437. // int8_t fontheight = u8g2_GetAscent(u8g2);
  438. // int8_t fontmargin = abs(u8g2_GetDescent(u8g2))+2;
  439. // u8g2_DrawStr(u8g2, 0, fontheight, " IN OUT ");
  440. // u8g2_DrawStr(u8g2, 0, 2*fontheight + fontmargin, temp_str);
  441. // u8g2_DrawStr(u8g2, 0, 3*fontheight + 2*fontmargin, humid_str);
  442. // u8g2_DrawStr(u8g2, 0, 4*fontheight + 3*fontmargin, pressure_str);
  443. // u8g2_SendBuffer(u8g2);
  444. //}
  445. void app_main(void)
  446. {
  447. int32_t temp = -12;
  448. uint32_t pressure = 0;
  449. uint32_t humidity = 0;
  450. int32_t temp2 = 0;
  451. uint32_t pressure2 = 0;
  452. uint32_t humidity2 = 0;
  453. // INIT SENSOR
  454. // i2c_setup();
  455. // struct bme280_dev dev;
  456. // dev.dev_id = 0x76;
  457. // dev.intf = BME280_I2C_INTF;
  458. // dev.read = i2c_read;
  459. // dev.write = i2c_write;
  460. // dev.delay_ms = i2c_delay;
  461. // bme280_init(&dev);
  462. // INIT SENSOR2
  463. // struct bme280_dev dev2;
  464. // dev2.dev_id = 0x77;
  465. // dev2.intf = BME280_I2C_INTF;
  466. // dev2.read = i2c_read;
  467. // dev2.write = i2c_write;
  468. // dev2.delay_ms = i2c_delay;
  469. // bme280_init(&dev2);
  470. // INIT WIFI
  471. //Initialize NVS
  472. // esp_err_t ret = nvs_flash_init();
  473. // if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
  474. // ESP_ERROR_CHECK(nvs_flash_erase());
  475. // ret = nvs_flash_init();
  476. // }
  477. // ESP_ERROR_CHECK(ret);
  478. //
  479. // ESP_LOGI(TAG, "ESP_WIFI_MODE_STA");
  480. // wifi_init_sta();
  481. // INIT WEBSERVER
  482. // static httpd_handle_t server = NULL;
  483. // ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &connect_handler, &server));
  484. // ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &disconnect_handler, &server));
  485. // server = start_webserver();
  486. init_display();
  487. while (1) {
  488. display_data(temp, pressure, humidity, temp2, pressure2, humidity2);
  489. vTaskDelay(1000 / portTICK_PERIOD_MS);
  490. }
  491. }