/* 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