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.

81 lignes
2.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. esp_mqtt_client_handle_t client;
  10. static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event)
  11. {
  12. esp_mqtt_client_handle_t client = event->client;
  13. int msg_id;
  14. // your_context_t *context = event->context;
  15. switch (event->event_id) {
  16. case MQTT_EVENT_CONNECTED:
  17. ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
  18. break;
  19. case MQTT_EVENT_DISCONNECTED:
  20. ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
  21. break;
  22. case MQTT_EVENT_SUBSCRIBED:
  23. ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id);
  24. msg_id = esp_mqtt_client_publish(client, "/topic/qos0", "data", 0, 0, 0);
  25. ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
  26. break;
  27. case MQTT_EVENT_UNSUBSCRIBED:
  28. ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id);
  29. break;
  30. case MQTT_EVENT_PUBLISHED:
  31. ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
  32. break;
  33. case MQTT_EVENT_DATA:
  34. ESP_LOGI(TAG, "MQTT_EVENT_DATA");
  35. printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);
  36. printf("DATA=%.*s\r\n", event->data_len, event->data);
  37. break;
  38. case MQTT_EVENT_ERROR:
  39. ESP_LOGI(TAG, "MQTT_EVENT_ERROR");
  40. /*if (event->error_handle->error_type == MQTT_ERROR_TYPE_TCP_TRANSPORT) {
  41. log_error_if_nonzero("reported from esp-tls", event->error_handle->esp_tls_last_esp_err);
  42. log_error_if_nonzero("reported from tls stack", event->error_handle->esp_tls_stack_err);
  43. log_error_if_nonzero("captured as transport's socket errno", event->error_handle->esp_transport_sock_errno);
  44. ESP_LOGI(TAG, "Last errno string (%s)", strerror(event->error_handle->esp_transport_sock_errno));
  45. }*/
  46. break;
  47. default:
  48. ESP_LOGI(TAG, "Other event id:%d", event->event_id);
  49. break;
  50. }
  51. return ESP_OK;
  52. }
  53. static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) {
  54. ESP_LOGD(TAG, "Event dispatched from event loop base=%s, event_id=%d", base, event_id);
  55. mqtt_event_handler_cb(event_data);
  56. }
  57. void send_mqtt_update(double lux, const char* topic)
  58. {
  59. char lux_str[317] = "\0";
  60. snprintf(lux_str, 317, "%f", lux);
  61. esp_mqtt_client_publish(client, topic, lux_str, 0, 0, 0);
  62. }
  63. void init_server()
  64. {
  65. //start_webserver();
  66. esp_mqtt_client_config_t mqtt_cfg = {
  67. .uri = "mqtt://192.168.0.101",
  68. };
  69. client = esp_mqtt_client_init(&mqtt_cfg);
  70. esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, client);
  71. esp_mqtt_client_start(client);
  72. }