Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdint.h>
- #include <stddef.h>
- #include <string.h>
- #include "esp_wifi.h"
- #include "esp_system.h"
- #include "nvs_flash.h"
- #include "esp_event_loop.h"
- #include "freertos/FreeRTOS.h"
- #include "freertos/task.h"
- #include "freertos/semphr.h"
- #include "freertos/queue.h"
- #include "freertos/event_groups.h"
- #include "esp_log.h"
- #include "mqtt.h"
- #define CONFIG_WIFI_SSID "********"
- #define CONFIG_WIFI_PASSWORD "********"
- const char *LOG_TAG = "MQTT_ESP32";
- void connected_cb(mqtt_client *self, mqtt_event_data_t *params) {
- mqtt_client *client = (mqtt_client *)self;
- mqtt_subscribe(client, "/mqtt-esp32", 0);
- mqtt_publish(client, "/mqtt-esp32", "Hello World!", 11, 0, 0);
- }
- void disconnected_cb(mqtt_client *self, mqtt_event_data_t *params) {
- }
- void reconnect_cb(mqtt_client *self, mqtt_event_data_t *params) {
- }
- void subscribe_cb(mqtt_client *self, mqtt_event_data_t *params){
- ESP_LOGI(LOG_TAG, "Subscribe ok, test publish msg");
- mqtt_client *client = (mqtt_client *)self;
- mqtt_publish(client, "/mqtt-esp32", "abcde", 5, 0, 0);
- }
- void publish_cb(mqtt_client *self, mqtt_event_data_t *params){
- }
- void data_cb(mqtt_client *self, mqtt_event_data_t *event_data) {
- if(event_data->data_offset == 0) {
- char *topic = malloc(event_data->topic_length + 1);
- memcpy(topic, event_data->topic, event_data->topic_length);
- topic[event_data->topic_length] = 0;
- ESP_LOGI(LOG_TAG, "Received data for topic: %s", topic);
- free(topic);
- }
- char *data = malloc(event_data->data_length + 1);
- memcpy(data, event_data->data, event_data->data_length);
- data[event_data->data_length] = 0;
- ESP_LOGI(LOG_TAG, "Received data[%d/%d bytes]",
- event_data->data_length + event_data->data_offset,
- event_data->data_total_length);
- ESP_LOGI(LOG_TAG, "Data: %s", (char *)(event_data->data));
- free(data);
- }
- mqtt_settings settings = {
- .host = "iot.eclipse.org",
- #if defined(CONFIG_MQTT_SECURITY_ON)
- .port = 8883, // encrypted
- #else
- .port = 1883, // unencrypted
- #endif
- .client_id = "some_client_id",
- .username = "",
- .password = "",
- .clean_session = 0,
- .keepalive = 120,
- .lwt_topic = "/lwt",
- .lwt_msg = "offline",
- .lwt_qos = 0,
- .lwt_retain = 0,
- .connected_cb = connected_cb,
- .disconnected_cb = disconnected_cb,
- .subscribe_cb = subscribe_cb,
- .publish_cb = publish_cb,
- .data_cb = data_cb
- };
- esp_err_t wifi_event_handler(void *ctx, system_event_t *event) {
- switch(event->event_id) {
- case SYSTEM_EVENT_STA_START:
- esp_wifi_connect();
- break;
- case SYSTEM_EVENT_STA_GOT_IP:
- mqtt_start(&settings);
- break;
- case SYSTEM_EVENT_STA_DISCONNECTED:
- esp_wifi_connect();
- mqtt_stop();
- break;
- default:
- break;
- }
- return ESP_OK;
- }
- void wifi_conn_init(void) {
- tcpip_adapter_init();
- ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
- wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
- ESP_ERROR_CHECK(esp_wifi_init(&cfg));
- ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
- wifi_config_t wifi_config = {
- .sta = {
- .ssid = CONFIG_WIFI_SSID,
- .password = CONFIG_WIFI_PASSWORD,
- },
- };
- ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
- ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
- ESP_LOGI(LOG_TAG, "start the WIFI SSID:[%s] password:[%s]", CONFIG_WIFI_SSID, "******");
- ESP_ERROR_CHECK(esp_wifi_start());
- }
- void app_main() {
- ESP_LOGI(LOG_TAG, "Starting");
- nvs_flash_init();
- wifi_conn_init();
- }
Add Comment
Please, Sign In to add comment