new buzzer component
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user