3-phase PV router
|
Manages a collection of relays and their behavior based on surplus and import thresholds. More...
#include <utils_relay.h>
Public Member Functions | |
constexpr | RelayEngine (const relayOutput(&ref)[N]) |
Construct a list of relays. | |
constexpr | RelayEngine (integral_constant< uint8_t, D > ic, const relayOutput(&ref)[N]) |
Construct a list of relays with a custom sliding average. | |
constexpr const auto & | get_relay (uint8_t idx) const |
Get the relay object. | |
constexpr auto | get_size () const |
Get the number of relays. | |
void | inc_duration () const |
Increment the duration's state of each relay. | |
void | printConfiguration () const |
Print the configuration of each relay. | |
void | proceed_relays () const |
Proceed all relays in increasing order (surplus) or decreasing order (import). | |
Static Public Member Functions | |
static auto | get_average () |
Get the current average. | |
static void | update_average (int16_t currentPower) |
Update the sliding average. | |
Private Attributes | |
const relayOutput | relay [N] |
uint8_t | settle_change { 60 } |
Static Private Attributes | |
static EWMA_average< D *60/DATALOG_PERIOD_IN_SECONDS > | ewma_average |
Manages a collection of relays and their behavior based on surplus and import thresholds.
The RelayEngine
class provides functionality to manage multiple relays, including their initialization, state transitions, and configuration. It uses a sliding average to determine the current power state and adjusts the relays accordingly.
N | The number of relays to be managed. |
D | The duration in minutes for the sliding average (default is 10 minutes). |
Definition at line 308 of file utils_relay.h.
|
inlineexplicitconstexpr |
Construct a list of relays.
Definition at line 315 of file utils_relay.h.
|
inlineconstexpr |
Construct a list of relays with a custom sliding average.
ic | Integral constant representing the sliding average duration. |
ref | Array of relay configurations. |
Definition at line 326 of file utils_relay.h.
|
inlinestatic |
Get the current average.
Definition at line 357 of file utils_relay.h.
|
inlineconstexpr |
Get the relay object.
idx | The index of the relay |
Definition at line 347 of file utils_relay.h.
|
inlineconstexpr |
Get the number of relays.
Definition at line 336 of file utils_relay.h.
void RelayEngine< N, D >::inc_duration | ( | ) | const |
Increment the duration's state of each relay.
This method updates the duration of the current state for each relay and decreases the delay (settle_change
) until the next state change is allowed.
Definition at line 453 of file utils_relay.h.
|
inline |
Print the configuration of each relay.
This method outputs the configuration of all relays, including their pin assignments, thresholds, and minimum ON/OFF durations, to the Serial interface.
Definition at line 433 of file utils_relay.h.
|
inline |
Proceed all relays in increasing order (surplus) or decreasing order (import).
This method adjusts the state of the relays based on the current average power. If surplus power is available, it tries to turn ON relays in increasing order. If power is being imported, it tries to turn OFF relays in decreasing order.
Definition at line 391 of file utils_relay.h.
|
inlinestatic |
Update the sliding average.
currentPower | Current power at the grid |
Definition at line 367 of file utils_relay.h.
|
inlinestaticprivate |
EWMA average
Definition at line 450 of file utils_relay.h.
|
private |
Array of relays
Definition at line 446 of file utils_relay.h.
|
mutableprivate |
Delay in seconds until next change occurs
Definition at line 448 of file utils_relay.h.