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.

71 lignes
1.8KB

  1. /*
  2. * server.c
  3. *
  4. * Created on: 21 Apr 2020
  5. * Author: Chris
  6. */
  7. #include "server.h"
  8. static const char *TAG = "server";
  9. char cur_value_str[255] = "No measurements yet!";
  10. void server_set_values(int32_t temp_raw, uint32_t pressure_raw, uint32_t humidity_raw,
  11. int32_t temp2_raw, uint32_t pressure2_raw, uint32_t humidity2_raw)
  12. {
  13. sprintf(cur_value_str, "<html><body><p>%d %d %d</p><p>%d %d %d</p></body></html>",
  14. temp_raw, pressure_raw, humidity_raw, temp2_raw, pressure2_raw, humidity2_raw);
  15. }
  16. static esp_err_t get_handler(httpd_req_t *req)
  17. {
  18. char* buf;
  19. size_t buf_len;
  20. /* Get header value string length and allocate memory for length + 1,
  21. * extra byte for null termination */
  22. buf_len = httpd_req_get_hdr_value_len(req, "Host") + 1;
  23. if (buf_len > 1) {
  24. buf = malloc(buf_len);
  25. /* Copy null terminated value string into buffer */
  26. if (httpd_req_get_hdr_value_str(req, "Host", buf, buf_len) == ESP_OK) {
  27. ESP_LOGI(TAG, "Found header => Host: %s", buf);
  28. }
  29. free(buf);
  30. }
  31. const char* resp_str = cur_value_str;
  32. httpd_resp_send(req, resp_str, strlen(resp_str));
  33. return ESP_OK;
  34. }
  35. static httpd_uri_t uri = {
  36. .uri = "/",
  37. .method = HTTP_GET,
  38. .handler = get_handler,
  39. };
  40. static httpd_handle_t start_webserver(void)
  41. {
  42. httpd_handle_t server = NULL;
  43. httpd_config_t config = HTTPD_DEFAULT_CONFIG();
  44. // Start the httpd server
  45. ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port);
  46. if (httpd_start(&server, &config) == ESP_OK) {
  47. // Set URI handlers
  48. ESP_LOGI(TAG, "Registering URI handlers");
  49. httpd_register_uri_handler(server, &uri);
  50. return server;
  51. }
  52. ESP_LOGI(TAG, "Error starting server!");
  53. return NULL;
  54. }
  55. void init_server()
  56. {
  57. start_webserver();
  58. }