From 2d9c53186919b07ff931042f4d688c0f6da83d06 Mon Sep 17 00:00:00 2001 From: PlxEV Date: Sun, 8 Jun 2025 10:57:23 +0100 Subject: [PATCH] integrate meter module with evse --- components/api/src/json.c | 2 +- components/evse/evse_core.c | 2 +- components/evse/evse_fsm.c | 2 +- components/meter/CMakeLists.txt | 5 +- components/meter/include/meter.h | 36 ++++ .../{peripherals => meter}/src/energy_meter.c | 6 +- components/modbus/src/modbus.c | 2 +- components/peripherals/CMakeLists.txt | 1 - components/peripherals/include/energy_meter.h | 179 ------------------ components/peripherals/src/peripherals.c | 2 +- components/serial_mdb/src/serial_mdb copy.c | 2 +- components/serial_mdb/src/serial_mdb.c | 2 +- components/serial_mt/src/serial_mt.c | 2 +- 13 files changed, 52 insertions(+), 191 deletions(-) rename components/{peripherals => meter}/src/energy_meter.c (98%) delete mode 100755 components/peripherals/include/energy_meter.h diff --git a/components/api/src/json.c b/components/api/src/json.c index 8e868d1..cec833b 100755 --- a/components/api/src/json.c +++ b/components/api/src/json.c @@ -15,7 +15,7 @@ #include "evse_api.h" #include "ocpp.h" #include "board_config.h" -#include "energy_meter.h" +#include "meter.h" #include "socket_lock.h" #include "proximity.h" //#include "modbus.h" diff --git a/components/evse/evse_core.c b/components/evse/evse_core.c index d84ccfd..74547bd 100755 --- a/components/evse/evse_core.c +++ b/components/evse/evse_core.c @@ -6,7 +6,7 @@ #include "evse_config.h" #include "evse_api.h" #include "pilot.h" -#include "energy_meter.h" +#include "meter.h" #include "freertos/FreeRTOS.h" #include "freertos/semphr.h" #include "esp_log.h" diff --git a/components/evse/evse_fsm.c b/components/evse/evse_fsm.c index 41ce2f1..4b77cb3 100755 --- a/components/evse/evse_fsm.c +++ b/components/evse/evse_fsm.c @@ -7,7 +7,7 @@ #include "ac_relay.h" #include "board_config.h" #include "socket_lock.h" -#include "energy_meter.h" +#include "meter.h" #include "proximity.h" #include "rcm.h" #include "evse_state.h" diff --git a/components/meter/CMakeLists.txt b/components/meter/CMakeLists.txt index bfbc982..e37c1c2 100755 --- a/components/meter/CMakeLists.txt +++ b/components/meter/CMakeLists.txt @@ -2,8 +2,9 @@ idf_component_register( SRCS "src/ade7758.c" "src/meter.c" + "src/energy_meter.c" INCLUDE_DIRS "include" - REQUIRES - driver evse + REQUIRES + driver evse nvs_flash esp_timer serial_mdb ) diff --git a/components/meter/include/meter.h b/components/meter/include/meter.h index 67505db..eb60c6d 100755 --- a/components/meter/include/meter.h +++ b/components/meter/include/meter.h @@ -7,6 +7,16 @@ extern "C" { #include #include +#include "esp_err.h" + +/** + * @brief Grid energy meter model + */ +typedef enum { + ENERGY_METER_NONE, + ENERGY_METER_ORNO_515, + ENERGY_METER_ORNO_517, +} meter_model_t; /** * @brief Estrutura com os dados de medição trifásica. @@ -65,6 +75,32 @@ MeterData meter_getData(void); */ bool meter_is_running(void); +// High level energy meter API +void energy_meter_init(void); +bool meter_get_state(void); +esp_err_t meter_set_state(bool _state); +meter_model_t meter_get_model(void); +esp_err_t meter_set_model(meter_model_t mode); +void energy_meter_start_session(void); +void energy_meter_stop_session(void); +void energy_meter_process(bool charging, uint16_t charging_current); +uint32_t energy_meter_get_power(void); +uint32_t energy_meter_get_session_time(void); +uint32_t energy_meter_get_charging_time(void); +uint32_t energy_meter_get_consumption(void); +void energy_meter_get_voltage(float *voltage); +float energy_meter_get_l1_voltage(void); +float energy_meter_get_l2_voltage(void); +float energy_meter_get_l3_voltage(void); +void energy_meter_get_current(float *current); +float energy_meter_get_l1_current(void); +float energy_meter_get_l2_current(void); +float energy_meter_get_l3_current(void); +const char *meter_model_to_str(meter_model_t mode); +meter_model_t meter_str_to_model(const char *str); +const char *meter_state_to_str(bool state); +bool meter_str_to_state(const char *str); + #ifdef __cplusplus } #endif diff --git a/components/peripherals/src/energy_meter.c b/components/meter/src/energy_meter.c similarity index 98% rename from components/peripherals/src/energy_meter.c rename to components/meter/src/energy_meter.c index 8ddd905..a6449f6 100755 --- a/components/peripherals/src/energy_meter.c +++ b/components/meter/src/energy_meter.c @@ -7,7 +7,6 @@ #include "esp_timer.h" #include "nvs.h" -#include "energy_meter.h" #include "meter.h" #include "serial_mdb.h" @@ -231,3 +230,8 @@ meter_model_t meter_str_to_model(const char *str) return ENERGY_METER_NONE; } + +bool meter_str_to_state(const char *str) +{ + return strcmp(str, "CONNECTED") == 0; +} diff --git a/components/modbus/src/modbus.c b/components/modbus/src/modbus.c index 35d4812..989b4d0 100755 --- a/components/modbus/src/modbus.c +++ b/components/modbus/src/modbus.c @@ -11,7 +11,7 @@ #include "modbus.h" #include "evse_api.h" #include "evse_error.h" -#include "energy_meter.h" +#include "meter.h" #include "socket_lock.h" #include "temp_sensor.h" diff --git a/components/peripherals/CMakeLists.txt b/components/peripherals/CMakeLists.txt index 003ed37..5d3b18f 100755 --- a/components/peripherals/CMakeLists.txt +++ b/components/peripherals/CMakeLists.txt @@ -7,7 +7,6 @@ set(srcs "src/pilot.c" "src/proximity.c" "src/ac_relay.c" - "src/energy_meter.c" "src/socket_lock.c" "src/rcm.c" "src/aux_io.c" diff --git a/components/peripherals/include/energy_meter.h b/components/peripherals/include/energy_meter.h deleted file mode 100755 index 4ae3eac..0000000 --- a/components/peripherals/include/energy_meter.h +++ /dev/null @@ -1,179 +0,0 @@ -#ifndef ENERGY_METER_H_ -#define ENERGY_METER_H_ - -#include -#include -#include "esp_err.h" - -/** - * @brief Grid energy meter model - * - */ - -typedef enum -{ - ENERGY_METER_NONE, - ENERGY_METER_ORNO_515, - ENERGY_METER_ORNO_517, -} meter_model_t; - -/** - * @brief Initialize energy meter - * - */ -void energy_meter_init(void); - -/** - * @brief Get state of energy meter - * - * @return bool - */ -bool meter_get_state(void); - -/** - * @brief Get mode of energy meter, stored in NVS - * - * @return meter_model_t - */ -meter_model_t meter_get_model(void); - -/** - * @brief Set mode of energy meter, stored in NVS - * - * @param mode - * @return esp_err_t - */ -esp_err_t meter_set_model(meter_model_t mode); - - -/** - * @brief Start energy meter session, if not started - * - */ -void energy_meter_start_session(void); - -/** - * @brief Stop energy meter session, if not stopped - * - */ -void energy_meter_stop_session(void); - -/** - * @brief Process energy meter - * - * @param charging - * @param charging_current - */ -void energy_meter_process(bool charging, uint16_t charging_current); - -/** - * @brief Get session actual power - * - * @return Power in W - */ -uint32_t energy_meter_get_power(void); - -/** - * @brief Get session time - * - * @return Time in s - */ -uint32_t energy_meter_get_session_time(void); - -/** - * @brief Get charging time - * - * @return Time in s - */ -uint32_t energy_meter_get_charging_time(void); - -/** - * @brief Get session consumption - * - * @return Consumption in Wh - */ -uint32_t energy_meter_get_consumption(void); - -/** - * @brief After energy_meter_process, get current measured voltage - * - * @param voltage Output array of 3 items, values in V - */ -void energy_meter_get_voltage(float *voltage); - -/** - * @brief Cet current measured voltage on L1 - * - * @return Voltage in V - */ -float energy_meter_get_l1_voltage(void); - -/** - * @brief Cet current measured voltage on L2 - * - * @return Voltage in V - */ -float energy_meter_get_l2_voltage(void); - -/** - * @brief Cet current measured voltage on L3 - * - * @return Voltage in V - */ -float energy_meter_get_l3_voltage(void); - -/** - * @brief After energy_meter_process, get current measured current - * - * @param voltage Output array of 3 items, values in A - */ -void energy_meter_get_current(float *current); - -/** - * @brief Cet current measured current on L1 - * - * @return Voltage in V - */ -float energy_meter_get_l1_current(void); - -/** - * @brief Cet current measured current on L2 - * - * @return Voltage in V - */ -float energy_meter_get_l2_current(void); - -/** - * @brief Cet current measured current on L3 - * - * @return Voltage in V - */ -float energy_meter_get_l3_current(void); - -/** - * @brief Serialize to string - * - * @param mode - * @return const char* - */ -const char *meter_model_to_str(meter_model_t mode); - -/** - * @brief Parse from string - * - * @param str - * @return meter_model_t - */ -meter_model_t meter_str_to_model(const char *str); - - -/** - * @brief Serialize to string - * - * @param mode - * @return const char* - */ -const char *meter_state_to_str(bool state); - - -#endif /* ENERGY_METER_H_ */ diff --git a/components/peripherals/src/peripherals.c b/components/peripherals/src/peripherals.c index 16a9893..61fc36f 100755 --- a/components/peripherals/src/peripherals.c +++ b/components/peripherals/src/peripherals.c @@ -7,7 +7,7 @@ #include "ac_relay.h" #include "socket_lock.h" #include "rcm.h" -#include "energy_meter.h" +#include "meter.h" #include "aux_io.h" #include "ntc_sensor.h" diff --git a/components/serial_mdb/src/serial_mdb copy.c b/components/serial_mdb/src/serial_mdb copy.c index 661204c..9c7375c 100755 --- a/components/serial_mdb/src/serial_mdb copy.c +++ b/components/serial_mdb/src/serial_mdb copy.c @@ -7,7 +7,7 @@ #include "sdkconfig.h" #include "evse_api.h" #include "currentshaper.h" -#include "energy_meter.h" +#include "meter.h" #define TXD_PIN (GPIO_NUM_17) #define RXD_PIN (GPIO_NUM_16) diff --git a/components/serial_mdb/src/serial_mdb.c b/components/serial_mdb/src/serial_mdb.c index 9e55147..9d87e59 100755 --- a/components/serial_mdb/src/serial_mdb.c +++ b/components/serial_mdb/src/serial_mdb.c @@ -7,7 +7,7 @@ #include "sdkconfig.h" #include "evse_api.h" #include "currentshaper.h" -#include "energy_meter.h" +#include "meter.h" #define TXD_PIN (GPIO_NUM_17) #define RXD_PIN (GPIO_NUM_16) diff --git a/components/serial_mt/src/serial_mt.c b/components/serial_mt/src/serial_mt.c index 50bc56b..82633c6 100755 --- a/components/serial_mt/src/serial_mt.c +++ b/components/serial_mt/src/serial_mt.c @@ -9,7 +9,7 @@ #include "serial_mt.h" #include "evse_api.h" #include "currentshaper.h" -#include "energy_meter.h" +#include "meter.h" //#include "app_main.h" //#include "sync_master.h"