new buzzer component

This commit is contained in:
2025-07-22 00:09:58 +01:00
parent 84f106eee5
commit bd587a10c0
58 changed files with 3215 additions and 6961 deletions

View File

@@ -59,7 +59,6 @@ static void meter_ade7758_post_event(const meter_ade7758_internal_data_t *data)
}
}
// === Task de leitura ===
static void meter_ade7758_task_func(void *param) {
ESP_LOGI(TAG, "Tarefa de medição ADE7758 iniciada");
@@ -68,7 +67,7 @@ static void meter_ade7758_task_func(void *param) {
while (true) {
meter_ade7758_internal_data_t meterData = {0};
//ESP_LOGI(TAG, "Tarefa de medição ADE7758 iniciada %d",getVersion());
ESP_LOGI(TAG, "Tarefa de medição ADE7758 iniciada %d",getVersion());
meterData.vrms[0] = avrms() / VRMS_CAL;
meterData.vrms[1] = bvrms() / VRMS_CAL;
@@ -82,6 +81,21 @@ static void meter_ade7758_task_func(void *param) {
if (setPotLine(PHASE_B, 20)) meterData.watt[1] = getWatt(PHASE_B);
if (setPotLine(PHASE_C, 20)) meterData.watt[2] = getWatt(PHASE_C);
ESP_LOGI(TAG, "VRMS: A=%.2f V, B=%.2f V, C=%.2f V",
(double)meterData.vrms[0],
(double)meterData.vrms[1],
(double)meterData.vrms[2]);
ESP_LOGI(TAG, "IRMS: A=%.2f A, B=%.2f A, C=%.2f A",
(double)meterData.irms[0],
(double)meterData.irms[1],
(double)meterData.irms[2]);
ESP_LOGI(TAG, "Watt: A=%.2f W, B=%.2f W, C=%.2f W",
(double)meterData.watt[0],
(double)meterData.watt[1],
(double)meterData.watt[2]);
if (memcmp(&previous, &meterData, sizeof(meterData)) != 0) {
if (xSemaphoreTake(meter_mutex, pdMS_TO_TICKS(10)) == pdTRUE) {
meter_data = meterData;

View File

@@ -54,11 +54,21 @@ typedef struct {
static bool phase_updated[PHASE_COUNT] = {false, false, false};
static meter_zigbee_data_t meter_data = {0};
static SemaphoreHandle_t meter_mutex = NULL;
static TaskHandle_t meter_zigbee_task = NULL;
bool meter_zigbee_is_running(void) {
return meter_zigbee_task != NULL;
}
void send_stop_command(void) {
const char *cmd = "stop\n"; // Comando enviado para o outro lado interpretar e dormir
uart_write_bytes(UART_PORT, cmd, strlen(cmd));
uart_wait_tx_done(UART_PORT, pdMS_TO_TICKS(100)); // Aguarda envio terminar
}
static void meter_zigbee_post_event(void) {
meter_event_data_t evt = {
.source = "GRID",
@@ -212,7 +222,15 @@ esp_err_t meter_zigbee_start(void) {
return ESP_OK;
}
void meter_zigbee_stop(void) {
send_stop_command();
vTaskDelay(pdMS_TO_TICKS(100)); // Aguarda o outro lado processar
if (meter_zigbee_task) {
vTaskDelete(meter_zigbee_task);
meter_zigbee_task = NULL;
@@ -224,8 +242,4 @@ void meter_zigbee_stop(void) {
vSemaphoreDelete(meter_mutex);
meter_mutex = NULL;
}
}
bool meter_zigbee_is_running(void) {
return meter_zigbee_task != NULL;
}
}