Indústrias William
  • 📖Indústrias William DOCS
    • iW - ESPMI
      • Introdução
        • Principais Características
        • 🚀Aplicações
      • Hardware
        • Docs
      • Exemplos
        • LVGL Widgets Example
        • 📊SquareLine Studio
          • Apresentação SquareLine Studio
          • Materiais e Ferramentas
          • Interface exemplo
          • Export Interface
        • 📶LoRa
        • 📡Gateware LoRa
          • Configuração do Rádio LoRa
          • Ethernet
          • MQTT
          • Envio dos Pacotes
          • Código completo
      • ⁉️Perguntas frequentes
    • iW - ST Starter Kit
      • Introdução
        • Get started
      • 🔽Downloads
      • Exemplos
        • GPIO
        • ADC
        • SPI
        • USART
        • PWM
        • RTC
      • Aplicações
        • End-Device-LoRa
        • FATFS
        • Frequencimetro
    • iW - ESPMI-IND
      • Principais Características
      • 🚀Aplicações
      • Exemplos
    • iW - Scott
      • Introdução
      • Principais Características
    • 📞Contatos
    • iW - PMIC
    • iW - LoRaEXplorer
Powered by GitBook
On this page
  1. Indústrias William DOCS
  2. iW - ESPMI
  3. Exemplos
  4. Gateware LoRa

MQTT

PreviousEthernetNextEnvio dos Pacotes

Last updated 1 year ago

Os pacotes recebidos pelo módulo LoRa são enviados para a plataforma via mqtt. Neste exemplo iremos usar o protocolo MQTT sem criptografia, isso significa que o método de autenticação não contará com certificados, mas sim com apenas algumas credencias básicas. No nosso caso, iremos usar um TOKEN de autenticação no parâmetro USERNAME.

Função de configuração do MQTT Client


#include "freertos/FreeRTOS.h"
#include <stdio.h>
#include <stdint.h>
#include <stddef.h>
#include <string.h>
#include <esp_system.h>
#include <nvs_flash.h>
#include <esp_event.h>
#include <esp_log.h>
#include <mqtt_client.h>


static const char TAG [] = "MQTT_CLIENT";
static const char TOKEN [] = "quTmRodClesEdqqwB64i";
static const char BROKER [] = "mqtt://demo.thingsboard.io";

bool mqttIsConnected = false;

static void log_error_if_nonzero(const char *message, int error_code){
    if (error_code != 0) {
        ESP_LOGE(TAG, "Last error %s: 0x%x", message, error_code);
    }
}



static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
{
    ESP_LOGD(TAG, "Event dispatched from event loop base=%s, event_id=%" PRIi32 "", base, event_id);
    esp_mqtt_event_handle_t event = event_data;
    esp_mqtt_client_handle_t client = event->client;
    int msg_id;
    switch ((esp_mqtt_event_id_t)event_id) {
    case MQTT_EVENT_CONNECTED:
        mqttIsConnected = true;
        ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
 
        break;
    case MQTT_EVENT_DISCONNECTED:
        mqttIsConnected = false;
        ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
        break;

    case MQTT_EVENT_SUBSCRIBED:
        ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id);
       
        break;
    case MQTT_EVENT_UNSUBSCRIBED:
        ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id);
        break;
    case MQTT_EVENT_PUBLISHED:
        ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
        break;
    case MQTT_EVENT_DATA:
        ESP_LOGI(TAG, "MQTT_EVENT_DATA");
        printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);
        printf("DATA=%.*s\r\n", event->data_len, event->data);
        break;
    case MQTT_EVENT_ERROR:
        ESP_LOGI(TAG, "MQTT_EVENT_ERROR");
        if (event->error_handle->error_type == MQTT_ERROR_TYPE_TCP_TRANSPORT) {
            log_error_if_nonzero("reported from esp-tls", event->error_handle->esp_tls_last_esp_err);
            log_error_if_nonzero("reported from tls stack", event->error_handle->esp_tls_stack_err);
            log_error_if_nonzero("captured as transport's socket errno",  event->error_handle->esp_transport_sock_errno);
            ESP_LOGI(TAG, "Last errno string (%s)", strerror(event->error_handle->esp_transport_sock_errno));

        }
        break;
    default:
        ESP_LOGI(TAG, "Other event id:%d", event->event_id);
        break;
    }
}




 esp_mqtt_client_handle_t mqtt_app_start(void){
    esp_mqtt_client_config_t mqtt_cfg = {
        .broker = {
            .address = {
                .uri = BROKER
            },
        },
        .credentials = {
            .username = TOKEN
        }
    };

    esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);
    /* The last argument may be used to pass data to the event handler, in this example mqtt_event_handler */
    esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
    esp_mqtt_client_start(client);

    return client;
}
📖
📡
ThingsBoard