Guest User

Untitled

a guest
Feb 13th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <stddef.h>
  4. #include <string.h>
  5. #include "esp_wifi.h"
  6. #include "esp_system.h"
  7. #include "nvs_flash.h"
  8. #include "esp_event_loop.h"
  9.  
  10. #include "freertos/FreeRTOS.h"
  11. #include "freertos/task.h"
  12. #include "freertos/semphr.h"
  13. #include "freertos/queue.h"
  14. #include "freertos/event_groups.h"
  15.  
  16. #include "esp_log.h"
  17. #include "mqtt.h"
  18.  
  19. #define CONFIG_WIFI_SSID "********"
  20. #define CONFIG_WIFI_PASSWORD "********"
  21.  
  22. const char *LOG_TAG = "MQTT_ESP32";
  23.  
  24. void connected_cb(mqtt_client *self, mqtt_event_data_t *params) {
  25. mqtt_client *client = (mqtt_client *)self;
  26. mqtt_subscribe(client, "/mqtt-esp32", 0);
  27. mqtt_publish(client, "/mqtt-esp32", "Hello World!", 11, 0, 0);
  28. }
  29. void disconnected_cb(mqtt_client *self, mqtt_event_data_t *params) {
  30.  
  31. }
  32. void reconnect_cb(mqtt_client *self, mqtt_event_data_t *params) {
  33.  
  34. }
  35. void subscribe_cb(mqtt_client *self, mqtt_event_data_t *params){
  36. ESP_LOGI(LOG_TAG, "Subscribe ok, test publish msg");
  37. mqtt_client *client = (mqtt_client *)self;
  38. mqtt_publish(client, "/mqtt-esp32", "abcde", 5, 0, 0);
  39. }
  40.  
  41. void publish_cb(mqtt_client *self, mqtt_event_data_t *params){
  42.  
  43. }
  44. void data_cb(mqtt_client *self, mqtt_event_data_t *event_data) {
  45. if(event_data->data_offset == 0) {
  46. char *topic = malloc(event_data->topic_length + 1);
  47. memcpy(topic, event_data->topic, event_data->topic_length);
  48. topic[event_data->topic_length] = 0;
  49. ESP_LOGI(LOG_TAG, "Received data for topic: %s", topic);
  50. free(topic);
  51. }
  52. char *data = malloc(event_data->data_length + 1);
  53. memcpy(data, event_data->data, event_data->data_length);
  54. data[event_data->data_length] = 0;
  55. ESP_LOGI(LOG_TAG, "Received data[%d/%d bytes]",
  56. event_data->data_length + event_data->data_offset,
  57. event_data->data_total_length);
  58. ESP_LOGI(LOG_TAG, "Data: %s", (char *)(event_data->data));
  59. free(data);
  60. }
  61.  
  62. mqtt_settings settings = {
  63. .host = "iot.eclipse.org",
  64. #if defined(CONFIG_MQTT_SECURITY_ON)
  65. .port = 8883, // encrypted
  66. #else
  67. .port = 1883, // unencrypted
  68. #endif
  69. .client_id = "some_client_id",
  70. .username = "",
  71. .password = "",
  72. .clean_session = 0,
  73. .keepalive = 120,
  74. .lwt_topic = "/lwt",
  75. .lwt_msg = "offline",
  76. .lwt_qos = 0,
  77. .lwt_retain = 0,
  78. .connected_cb = connected_cb,
  79. .disconnected_cb = disconnected_cb,
  80. .subscribe_cb = subscribe_cb,
  81. .publish_cb = publish_cb,
  82. .data_cb = data_cb
  83. };
  84.  
  85.  
  86.  
  87. esp_err_t wifi_event_handler(void *ctx, system_event_t *event) {
  88. switch(event->event_id) {
  89. case SYSTEM_EVENT_STA_START:
  90. esp_wifi_connect();
  91. break;
  92. case SYSTEM_EVENT_STA_GOT_IP:
  93. mqtt_start(&settings);
  94. break;
  95. case SYSTEM_EVENT_STA_DISCONNECTED:
  96. esp_wifi_connect();
  97. mqtt_stop();
  98. break;
  99. default:
  100. break;
  101. }
  102. return ESP_OK;
  103. }
  104.  
  105. void wifi_conn_init(void) {
  106. tcpip_adapter_init();
  107. ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
  108. wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  109. ESP_ERROR_CHECK(esp_wifi_init(&cfg));
  110. ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
  111. wifi_config_t wifi_config = {
  112. .sta = {
  113. .ssid = CONFIG_WIFI_SSID,
  114. .password = CONFIG_WIFI_PASSWORD,
  115. },
  116. };
  117. ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
  118. ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
  119. ESP_LOGI(LOG_TAG, "start the WIFI SSID:[%s] password:[%s]", CONFIG_WIFI_SSID, "******");
  120. ESP_ERROR_CHECK(esp_wifi_start());
  121. }
  122.  
  123. void app_main() {
  124. ESP_LOGI(LOG_TAG, "Starting");
  125. nvs_flash_init();
  126. wifi_conn_init();
  127. }
Add Comment
Please, Sign In to add comment