add net manager
This commit is contained in:
138
components/meter_manager/src/meter_manager.c
Executable file
138
components/meter_manager/src/meter_manager.c
Executable file
@@ -0,0 +1,138 @@
|
||||
#include "meter_manager.h"
|
||||
#include "esp_log.h"
|
||||
#include "meter_ade7758.h"
|
||||
#include "meter_orno513.h"
|
||||
#include "meter_orno516.h"
|
||||
#include "meter_zigbee.h"
|
||||
|
||||
static const char *TAG = "meter_manager";
|
||||
|
||||
// Variáveis para armazenar o tipo de medidor atual
|
||||
static meter_type_t current_meter_type = METER_TYPE_NONE;
|
||||
|
||||
esp_err_t meter_init(meter_type_t meter_type) {
|
||||
current_meter_type = meter_type;
|
||||
ESP_LOGI(TAG, "Initializing meter of type: %d", meter_type);
|
||||
|
||||
switch (current_meter_type) {
|
||||
case METER_TYPE_EVSE_ADE7758:
|
||||
return meter_ade7758_init(); // Inicializa o medidor ADE7758 (EVSE)
|
||||
case METER_TYPE_GRID_ORNO513:
|
||||
return meter_orno513_init(); // Inicializa o medidor ORNO 513 ou 516 (Grid)
|
||||
case METER_TYPE_GRID_ORNO516:
|
||||
return meter_init_orno516(); // Inicializa o medidor ORNO 513 ou 516 (Grid)
|
||||
case METER_TYPE_GRID_ZIGBEE:
|
||||
return meter_init_zigbee(); // Inicializa o medidor Zigbee (Grid)
|
||||
default:
|
||||
ESP_LOGE(TAG, "Unsupported meter type");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
}
|
||||
|
||||
esp_err_t meter_start(void) {
|
||||
if (current_meter_type == METER_TYPE_NONE) {
|
||||
ESP_LOGE(TAG, "Meter type is not initialized");
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "Starting meter");
|
||||
|
||||
switch (current_meter_type) {
|
||||
case METER_TYPE_EVSE_ADE7758:
|
||||
return meter_ade7758_start();
|
||||
case METER_TYPE_GRID_ORNO513:
|
||||
return meter_orno513_start();
|
||||
case METER_TYPE_GRID_ORNO516:
|
||||
return meter_start_orno516();
|
||||
case METER_TYPE_GRID_ZIGBEE:
|
||||
return meter_start_zigbee();
|
||||
default:
|
||||
ESP_LOGE(TAG, "Unsupported meter type");
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
}
|
||||
|
||||
void meter_stop(void) {
|
||||
if (current_meter_type == METER_TYPE_NONE) {
|
||||
ESP_LOGE(TAG, "Meter is not initialized");
|
||||
return;
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "Stopping meter");
|
||||
|
||||
switch (current_meter_type) {
|
||||
case METER_TYPE_EVSE_ADE7758:
|
||||
meter_ade7758_stop();
|
||||
break;
|
||||
case METER_TYPE_GRID_ORNO513:
|
||||
meter_orno513_stop();
|
||||
break;
|
||||
case METER_TYPE_GRID_ORNO516:
|
||||
meter_stop_orno516();
|
||||
break;
|
||||
case METER_TYPE_GRID_ZIGBEE:
|
||||
meter_stop_zigbee();
|
||||
break;
|
||||
default:
|
||||
ESP_LOGE(TAG, "Unsupported meter type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool meter_is_running(void) {
|
||||
if (current_meter_type == METER_TYPE_NONE) {
|
||||
ESP_LOGE(TAG, "Meter is not initialized");
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (current_meter_type) {
|
||||
case METER_TYPE_EVSE_ADE7758:
|
||||
return meter_ade7758_is_running();
|
||||
case METER_TYPE_GRID_ORNO513:
|
||||
return meter_orno513_is_running();
|
||||
case METER_TYPE_GRID_ORNO516:
|
||||
return meter_is_running_orno516();
|
||||
case METER_TYPE_GRID_ZIGBEE:
|
||||
return meter_is_running_zigbee();
|
||||
default:
|
||||
ESP_LOGE(TAG, "Unsupported meter type");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
float meter_get_vrms_l1(void) {
|
||||
if (current_meter_type == METER_TYPE_NONE) return 0;
|
||||
switch (current_meter_type) {
|
||||
case METER_TYPE_EVSE_ADE7758:
|
||||
return meter_ade7758_get_vrms_l1();
|
||||
case METER_TYPE_GRID_ORNO513:
|
||||
return meter_orno513_get_vrms_l1();
|
||||
case METER_TYPE_GRID_ORNO516:
|
||||
return meter_get_vrms_l1_orno516();
|
||||
case METER_TYPE_GRID_ZIGBEE:
|
||||
return meter_get_vrms_l1_zigbee();
|
||||
default:
|
||||
ESP_LOGE(TAG, "Unsupported meter type for reading vrms_l1");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Continue as funções `meter_get_*` para cada tipo de dado (corrente, potência, etc.)
|
||||
float meter_get_irms_l1(void) {
|
||||
if (current_meter_type == METER_TYPE_NONE) return 0;
|
||||
switch (current_meter_type) {
|
||||
case METER_TYPE_EVSE_ADE7758:
|
||||
return meter_ade7758_get_irms_l1();
|
||||
case METER_TYPE_GRID_ORNO513:
|
||||
return meter_orno513_get_irms_l1();
|
||||
case METER_TYPE_GRID_ORNO516:
|
||||
return meter_get_irms_l1_orno516();
|
||||
case METER_TYPE_GRID_ZIGBEE:
|
||||
return meter_get_irms_l1_zigbee();
|
||||
default:
|
||||
ESP_LOGE(TAG, "Unsupported meter type for reading irms_l1");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// You should add the rest of the functions similarly as you progress
|
||||
Reference in New Issue
Block a user