new release
This commit is contained in:
@@ -66,7 +66,7 @@ typedef struct
|
||||
float frequency;
|
||||
float power_factor;
|
||||
// acumulados
|
||||
float total_energy_kWh;
|
||||
float total_energy_Wh;
|
||||
// derivados práticos
|
||||
int32_t sum_watt; // soma das 3 fases
|
||||
float avg_voltage; // média das 3 fases
|
||||
@@ -79,6 +79,15 @@ static ocpp_meter_cache_t s_meter = {0};
|
||||
static portMUX_TYPE s_meter_mux = portMUX_INITIALIZER_UNLOCKED;
|
||||
static esp_event_handler_instance_t s_meter_inst = NULL;
|
||||
|
||||
// valor de oferta (A por conector)
|
||||
static float s_current_offered_A = 16.0f;
|
||||
|
||||
// novo input apropriado
|
||||
static float getCurrentOffered(void)
|
||||
{
|
||||
return s_current_offered_A;
|
||||
}
|
||||
|
||||
/* =========================
|
||||
* Task / Main Loop
|
||||
* ========================= *
|
||||
@@ -391,7 +400,7 @@ static void on_meter_event(void *arg, esp_event_base_t base, int32_t id, void *d
|
||||
s_meter.watt[2] = evt->watt[2];
|
||||
s_meter.frequency = evt->frequency;
|
||||
s_meter.power_factor = evt->power_factor;
|
||||
s_meter.total_energy_kWh = evt->total_energy; // já vem em kWh segundo o teu .h
|
||||
s_meter.total_energy_Wh = evt->total_energy;
|
||||
s_meter.sum_watt = sum_w;
|
||||
s_meter.avg_voltage = avg_v;
|
||||
s_meter.sum_current = sum_i;
|
||||
@@ -442,34 +451,32 @@ float setPowerMeterInput(void)
|
||||
|
||||
float setEnergyMeterInput(void)
|
||||
{
|
||||
float kwh = 0.0f;
|
||||
float wh = 0.0f;
|
||||
bool have = false;
|
||||
|
||||
portENTER_CRITICAL(&s_meter_mux);
|
||||
have = s_meter.have_data;
|
||||
if (have)
|
||||
kwh = s_meter.total_energy_kWh;
|
||||
wh = s_meter.total_energy_Wh;
|
||||
portEXIT_CRITICAL(&s_meter_mux);
|
||||
|
||||
float wh = kwh * 1000.0f;
|
||||
|
||||
if (!have)
|
||||
{
|
||||
ESP_LOGW(TAG, "[METER] EnergyMeterInput: no data (return 0)");
|
||||
}
|
||||
else
|
||||
{
|
||||
ESP_LOGD(TAG, "[METER] EnergyMeterInput: %.3f kWh (%.1f Wh)", kwh, wh);
|
||||
ESP_LOGD(TAG, "[METER] EnergyMeterInput: (%.1f Wh)", wh);
|
||||
}
|
||||
return wh; // agora devolve Wh
|
||||
}
|
||||
|
||||
int setEnergyInput(void)
|
||||
{
|
||||
float energy_kWh = setEnergyMeterInput(); // kWh
|
||||
int wh = (int)lrintf((double)energy_kWh * 1000.0); // Wh arredondado
|
||||
ESP_LOGD(TAG, "[METER] EnergyInput: %.3f kWh -> %d Wh", energy_kWh, wh);
|
||||
return wh;
|
||||
float wh = setEnergyMeterInput();
|
||||
int wh_i = (int)lrintf((double)wh);
|
||||
ESP_LOGD(TAG, "[METER] EnergyInput: %.1f Wh", wh);
|
||||
return wh_i;
|
||||
}
|
||||
|
||||
float setCurrentInput(void)
|
||||
@@ -795,7 +802,7 @@ void ocpp_start(void)
|
||||
|
||||
/* Metering */
|
||||
ocpp_addMeterValueInputFloat(&setCurrentInput, "Current.Import", "A", NULL, NULL);
|
||||
ocpp_addMeterValueInputFloat(&setCurrentInput, "Current.Offered", "A", NULL, NULL);
|
||||
ocpp_addMeterValueInputFloat(&getCurrentOffered, "Current.Offered", "A", NULL, NULL);
|
||||
ocpp_addMeterValueInputFloat(&setVoltageInput, "Voltage", "V", NULL, NULL);
|
||||
ocpp_addMeterValueInputFloat(&setTemperatureInput, "Temperature", "Celsius", NULL, NULL);
|
||||
ocpp_addMeterValueInputFloat(&setPowerMeterInput, "Power.Active.Import", "W", NULL, NULL);
|
||||
|
||||
Reference in New Issue
Block a user