Modular v1

This commit is contained in:
2026-01-15 23:11:17 +00:00
parent 2b9642ebd2
commit 675c6aadcd
8 changed files with 783 additions and 39 deletions
+60
View File
@@ -0,0 +1,60 @@
/* Device Registry - Abstração de diferentes tipos de dispositivos Zigbee */
#pragma once
#include "esp_zigbee_core.h"
#include "device_config.h"
#ifdef __cplusplus
extern "C" {
#endif
/* ========================= ESTRUTURA DE DISPOSITIVO ========================= */
typedef struct {
const char *name; /* Nome do dispositivo */
uint16_t device_id; /* Zigbee Device ID */
uint8_t endpoint; /* Endpoint do dispositivo */
/* Função para criar clusters específicos do dispositivo */
esp_zb_cluster_list_t* (*create_clusters)(void);
/* Handler para atributos específicos do dispositivo */
esp_err_t (*attribute_handler)(const esp_zb_zcl_set_attr_value_message_t *message);
/* Função de inicialização específica do hardware */
void (*hardware_init)(void);
/* Função para atualizar estado do dispositivo */
void (*update_state)(void);
} device_type_t;
/* ========================= REGISTRO DE DISPOSITIVOS ========================= */
/* Retorna a configuração do dispositivo ativo */
const device_type_t* device_get_config(void);
/* ========================= FUNÇÕES AUXILIARES PARA CLUSTERS ========================= */
/* Cria cluster básico (obrigatório para todos os dispositivos) */
esp_zb_attribute_list_t* device_create_basic_cluster(void);
/* Cria cluster identify (obrigatório para todos os dispositivos) */
esp_zb_attribute_list_t* device_create_identify_cluster(void);
/* Cria cluster on/off (para dispositivos controláveis) */
esp_zb_attribute_list_t* device_create_onoff_cluster(void);
/* Cria cluster de temperatura (para sensores) */
esp_zb_attribute_list_t* device_create_temperature_cluster(void);
/* Cria cluster de ocupação (para sensores de movimento/porta) */
esp_zb_attribute_list_t* device_create_occupancy_cluster(void);
/* Cria cluster IAS Zone (para sensores de segurança) */
esp_zb_attribute_list_t* device_create_ias_zone_cluster(void);
#ifdef __cplusplus
}
#endif