Sistema Embarcado LockWise
Sistema de fechadura inteligente com autenticação por voz, controle MQTT e aplicativo móvel
Carregando...
Procurando...
Nenhuma entrada encontrada
Referência ao ficheiro mqtt.c
#include "audio_stream.h"
#include "config.h"
#include "driver/gpio.h"
#include "esp_crt_bundle.h"
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "lock.h"
#include "mqtt.h"
#include "nvs_flash.h"
#include "system_utils.h"
#include <arpa/inet.h>
#include <cbor.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <time.h>

Funções

static void mqtt_event_handler (void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
 Handler de eventos MQTT.
 
static void process_cbor_command (CborValue *value)
 Processa comandos recebidos via CBOR MQTT.
 
static void handle_update_config_command (CborValue *map_value)
 Trata comando UPDATE_CONFIG recebido via MQTT.
 
void mqtt_init (void)
 Inicializa o cliente MQTT.
 
void mqtt_publish_status (const char *status)
 Publica um status no tópico MQTT do dispositivo.
 
void mqtt_publish_lock_event (lock_state_t state, door_reason_t reason)
 Publica um evento de mudança de estado da fechadura via MQTT.
 
static void mqtt_publish_heartbeat (void)
 Publica heartbeat detalhado via MQTT.
 
void mqtt_heartbeat_task (void *pvParameters)
 Tarefa que publica heartbeats periódicos via MQTT.
 

Variáveis

static const char * TAG = "\033[1mLOCKWISE:\033[35mMQTT\033[0m\033[35m"
 
TaskHandle_t idle_blink_task
 Handle da tarefa de piscar idle (acessível de audio_stream.c)
 
esp_mqtt_client_handle_t mqtt_client
 Handle global do cliente MQTT.
 

Documentação das funções

◆ handle_update_config_command()

static void handle_update_config_command ( CborValue *  map_value)
static

Trata comando UPDATE_CONFIG recebido via MQTT.

Parâmetros
map_valueValor CBOR do mapa contendo chave e valor para atualização.

Atualiza configuração específica baseada na chave e valor fornecidos.

◆ mqtt_event_handler()

static void mqtt_event_handler ( void *  handler_args,
esp_event_base_t  base,
int32_t  event_id,
void *  event_data 
)
static

Handler de eventos MQTT.

Parâmetros
handler_argsArgumentos do handler.
baseBase do evento.
event_idID do evento.
event_dataDados do evento.

Processa eventos de conexão, desconexão e dados recebidos via MQTT.

◆ mqtt_heartbeat_task()

void mqtt_heartbeat_task ( void *  pvParameters)

Tarefa que publica heartbeats periódicos via MQTT.

Parâmetros
pvParametersParâmetros da tarefa (não usado).

Executa em loop, publicando informações completas do estado do dispositivo em intervalos configuráveis.

◆ mqtt_init()

void mqtt_init ( void  )

Inicializa o cliente MQTT.

Esta função configura e inicia o cliente MQTT, conectando-se ao broker especificado na configuração. Assina o tópico específico do dispositivo para receber comandos.

◆ mqtt_publish_heartbeat()

static void mqtt_publish_heartbeat ( void  )
static

Publica heartbeat detalhado via MQTT.

Publica mensagem CBOR com informações completas do estado do dispositivo, incluindo configurações atuais e estado da fechadura.

◆ mqtt_publish_lock_event()

void mqtt_publish_lock_event ( lock_state_t  state,
door_reason_t  reason 
)

Publica um evento de mudança de estado da fechadura via MQTT.

Parâmetros
stateNovo estado da fechadura.
reasonRazão da mudança de estado.

Publica uma mensagem CBOR detalhada incluindo lock state, reason, uptime e timestamp.

◆ mqtt_publish_status()

void mqtt_publish_status ( const char *  status)

Publica um status no tópico MQTT do dispositivo.

Parâmetros
statusString descrevendo o status atual (ex.: "CONNECTED", "STREAMING").

Publica uma mensagem CBOR contendo o evento, uptime e timestamp no tópico lockwise/{device_id}/status.

◆ process_cbor_command()

static void process_cbor_command ( CborValue *  value)
static

Processa comandos recebidos via CBOR MQTT.

Parâmetros
valueValor CBOR contendo o comando.

Interpreta comandos como UNLOCK, LOCK, PING, etc., e executa ações correspondentes.

Documentação das variáveis

◆ idle_blink_task

TaskHandle_t idle_blink_task
extern

Handle da tarefa de piscar idle (acessível de audio_stream.c)

◆ mqtt_client

esp_mqtt_client_handle_t mqtt_client

Handle global do cliente MQTT.

Esta variável externa armazena o handle do cliente MQTT usado para comunicação com o broker.

◆ TAG

const char* TAG = "\033[1mLOCKWISE:\033[35mMQTT\033[0m\033[35m"
static