new release

This commit is contained in:
2025-11-20 07:45:00 +00:00
parent 96b2ab1f57
commit 4820d9111e
106 changed files with 4264 additions and 15581 deletions

View File

@@ -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);