Repo for ESP32 Weather Station Development
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
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. }