new release
This commit is contained in:
@@ -2,7 +2,8 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include <stdbool.h>
|
||||
@@ -10,106 +11,79 @@ extern "C" {
|
||||
#include "esp_err.h"
|
||||
|
||||
// Tamanhos máximos esperados pelos getters (buffers do chamador)
|
||||
#define MQTT_SERVER_MAX_LEN 64 ///< host ou URI do broker
|
||||
#define MQTT_BASE_TOPIC_MAX_LEN 64 ///< tópico base (ex: "evse")
|
||||
#define MQTT_USERNAME_MAX_LEN 32
|
||||
#define MQTT_PASSWORD_MAX_LEN 64
|
||||
#define MQTT_SERVER_MAX_LEN 64 ///< host ou URI do broker
|
||||
#define MQTT_BASE_TOPIC_MAX_LEN 64 ///< tópico base (ex: "evse")
|
||||
#define MQTT_USERNAME_MAX_LEN 32
|
||||
#define MQTT_PASSWORD_MAX_LEN 64
|
||||
|
||||
/**
|
||||
* @brief Inicializa o módulo MQTT.
|
||||
*
|
||||
* - Carrega configuração da NVS
|
||||
* - Regista handlers de eventos (AUTH, SCHED, LOADBALANCER, METER, EVSE, NETWORK)
|
||||
* - Cria a task de telemetria periódica
|
||||
*
|
||||
* Não inicia a ligação ao broker imediatamente; isso acontece quando existir IP
|
||||
* (NETWORK_EVENT_STA_GOT_IP) e `enabled == true`.
|
||||
*/
|
||||
esp_err_t mqtt_init(void);
|
||||
// =============================
|
||||
// Limit modes (cmd/evse/limit)
|
||||
// =============================
|
||||
typedef enum
|
||||
{
|
||||
LIMIT_MODE_OFF = 0, ///< sem limite, usa max do hardware
|
||||
LIMIT_MODE_MANUAL, ///< corrente fixa definida pelo utilizador
|
||||
LIMIT_MODE_LOADBALANCER, ///< limita pelo contador da instalação
|
||||
LIMIT_MODE_SOLAR ///< só com excedente FV
|
||||
} limit_mode_t;
|
||||
|
||||
/**
|
||||
* @brief Força tentativa de ligação ao broker (normalmente não é necessário chamar).
|
||||
*
|
||||
* Útil apenas se quiseres forçar manualmente depois de mudares config.
|
||||
*/
|
||||
esp_err_t mqtt_start(void);
|
||||
/**
|
||||
* @brief Inicializa o módulo MQTT.
|
||||
*
|
||||
* - Carrega configuração da NVS
|
||||
* - Regista handlers de eventos (AUTH, SCHED, LOADBALANCER, METER, EVSE, NETWORK)
|
||||
* - Cria a task de telemetria periódica
|
||||
* - Aplica o modo de limite persistido
|
||||
*
|
||||
* Não inicia a ligação ao broker imediatamente; isso acontece quando existir IP
|
||||
* (NETWORK_EVENT_STA_GOT_IP) e `enabled == true`.
|
||||
*
|
||||
* IMPORTANTE: chamar DEPOIS de loadbalancer_init() para o restauro do modo
|
||||
* de limite funcionar correctamente.
|
||||
*/
|
||||
esp_err_t mqtt_init(void);
|
||||
|
||||
/**
|
||||
* @brief Pára o cliente MQTT e destrói o handle.
|
||||
*/
|
||||
void mqtt_stop(void);
|
||||
/**
|
||||
* @brief Força tentativa de ligação ao broker (normalmente não é necessário chamar).
|
||||
*/
|
||||
esp_err_t mqtt_start(void);
|
||||
|
||||
// =============================
|
||||
// Getters de configuração
|
||||
// =============================
|
||||
/**
|
||||
* @brief Pára o cliente MQTT e destrói o handle.
|
||||
*/
|
||||
void mqtt_stop(void);
|
||||
|
||||
/**
|
||||
* @brief Indica se o MQTT está ativo (flag em config).
|
||||
*/
|
||||
bool mqtt_get_enabled(void);
|
||||
// =============================
|
||||
// Getters de configuração
|
||||
// =============================
|
||||
|
||||
/**
|
||||
* @brief Obtém o servidor MQTT (host ou URI).
|
||||
*
|
||||
* @param server buffer de saída, com pelo menos MQTT_SERVER_MAX_LEN bytes.
|
||||
*/
|
||||
void mqtt_get_server(char *server);
|
||||
bool mqtt_get_enabled(void);
|
||||
void mqtt_get_server(char *server);
|
||||
void mqtt_get_base_topic(char *base_topic);
|
||||
void mqtt_get_user(char *username);
|
||||
void mqtt_get_password(char *password);
|
||||
uint16_t mqtt_get_periodicity(void);
|
||||
|
||||
/**
|
||||
* @brief Obtém o tópico base (ex.: "evse").
|
||||
*
|
||||
* @param base_topic buffer de saída, com pelo menos MQTT_BASE_TOPIC_MAX_LEN bytes.
|
||||
*/
|
||||
void mqtt_get_base_topic(char *base_topic);
|
||||
// =============================
|
||||
// Setter de configuração
|
||||
// =============================
|
||||
|
||||
/**
|
||||
* @brief Obtém o username MQTT (se configurado).
|
||||
*
|
||||
* @param username buffer de saída, com pelo menos MQTT_USERNAME_MAX_LEN bytes.
|
||||
*/
|
||||
void mqtt_get_user(char *username);
|
||||
|
||||
/**
|
||||
* @brief Obtém a password MQTT (se configurada).
|
||||
*
|
||||
* @param password buffer de saída, com pelo menos MQTT_PASSWORD_MAX_LEN bytes.
|
||||
*/
|
||||
void mqtt_get_password(char *password);
|
||||
|
||||
/**
|
||||
* @brief Obtém a periodicidade da telemetria periódica (em segundos).
|
||||
*/
|
||||
uint16_t mqtt_get_periodicity(void);
|
||||
|
||||
// =============================
|
||||
// Setter de configuração
|
||||
// =============================
|
||||
|
||||
/**
|
||||
* @brief Atualiza a configuração MQTT (tipicamente chamado pelo endpoint REST).
|
||||
*
|
||||
* - Grava em NVS
|
||||
* - Se já existir cliente ligado, pára e recria com a nova config
|
||||
* - Se `enabled == true` e houver IP, tenta ligar ao broker
|
||||
*
|
||||
* @param enabled true para ativar MQTT
|
||||
* @param host hostname ou URI (ex: "broker.hivemq.com" ou "mqtt://x.y.z")
|
||||
* @param topic tópico base (ex: "evse")
|
||||
* @param username username MQTT (ou NULL para manter/limpar)
|
||||
* @param password password MQTT (ou NULL para manter/limpar)
|
||||
* @param periodicity período da task de telemetria em segundos (ex: 30)
|
||||
*
|
||||
* @return ESP_OK em caso de sucesso, ou erro de NVS / MQTT.
|
||||
*/
|
||||
esp_err_t mqtt_set_config(bool enabled,
|
||||
const char *host,
|
||||
const char *topic,
|
||||
const char *username,
|
||||
const char *password,
|
||||
int periodicity);
|
||||
/**
|
||||
* @brief Atualiza a configuração MQTT (tipicamente chamado pelo endpoint REST).
|
||||
*
|
||||
* - Grava em NVS
|
||||
* - Se já existir cliente ligado, pára e recria com a nova config
|
||||
* - Se `enabled == true` e houver IP, tenta ligar ao broker
|
||||
*/
|
||||
esp_err_t mqtt_set_config(bool enabled,
|
||||
const char *host,
|
||||
const char *topic,
|
||||
const char *username,
|
||||
const char *password,
|
||||
int periodicity);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
// === Fim de: components/mqtt/include/mqtt.h ===
|
||||
// === Fim de: components/mqtt/include/mqtt.h ===
|
||||
Reference in New Issue
Block a user