idle_energy_detection
idle_energy_detection ¤
IdleEnergyDetectionEvents ¤
IdleEnergyDetectionEvents(
dataframe: DataFrame,
*,
event_uuid: str = "energy:idle",
time_column: str = "systime",
uuid_column: str = "uuid"
)
Bases: Base
Energy: Idle Energy Detection
Cross-reference an energy meter signal with a boolean machine-state signal to detect and quantify energy consumed during idle (non-production) periods.
Supports two data models via constructor parameters:
-
Standard (ts-shape default)::
IdleEnergyDetectionEvents(df)
expects: systime | uuid | value_double | value_bool¤
-
Raw CSV::
IdleEnergyDetectionEvents(df, time_column="time", uuid_column="id")
Methods: - idle_energy_by_window: Idle vs running energy per time window. - idle_energy_by_shift: Idle waste aggregated per shift. - idle_energy_trend: Rolling trend of idle energy waste.
idle_energy_by_window ¤
idle_energy_by_window(
meter_uuid: str,
state_uuid: str,
*,
energy_column: str = "value_double",
state_column: str = "value_bool",
window: str = "1h",
idle_threshold: float = 0.1
) -> pd.DataFrame
Aggregate energy consumed during idle periods per time window.
Machine-running percentage is the mean of the boolean state signal within
each window. Windows below idle_threshold are classified as idle.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
meter_uuid
|
str
|
Identifier of the energy meter signal. |
required |
state_uuid
|
str
|
Identifier of the boolean machine-state signal (True=running). |
required |
energy_column
|
str
|
Column containing energy readings. |
'value_double'
|
state_column
|
str
|
Column containing boolean state values. |
'value_bool'
|
window
|
str
|
Resample window (e.g. '1h', '15min'). |
'1h'
|
idle_threshold
|
float
|
machine_running_pct below this classifies the window as idle. |
0.1
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
DataFrame
|
start, uuid, source_uuid, is_delta, total_energy, idle_energy, running_energy, machine_running_pct, idle_fraction |
idle_energy_by_shift ¤
idle_energy_by_shift(
meter_uuid: str,
state_uuid: str,
*,
energy_column: str = "value_double",
state_column: str = "value_bool",
shift_definitions: (
dict[str, tuple[str, str]] | None
) = None
) -> pd.DataFrame
Aggregate idle energy waste per shift across all dates.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
meter_uuid
|
str
|
Identifier of the energy meter signal. |
required |
state_uuid
|
str
|
Identifier of the boolean machine-state signal. |
required |
energy_column
|
str
|
Column containing energy readings. |
'value_double'
|
state_column
|
str
|
Column containing boolean state values. |
'value_bool'
|
shift_definitions
|
dict[str, tuple[str, str]] | None
|
Dict mapping shift name → (start_time, end_time). Default: three-shift operation (06-14, 14-22, 22-06). |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
DataFrame
|
shift, total_energy, idle_energy, waste_fraction |
idle_energy_trend ¤
idle_energy_trend(
meter_uuid: str,
state_uuid: str,
*,
energy_column: str = "value_double",
state_column: str = "value_bool",
window: str = "1D",
trend_window: int = 7,
idle_threshold: float = 0.1
) -> pd.DataFrame
Rolling trend of idle energy waste over time.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
meter_uuid
|
str
|
Identifier of the energy meter signal. |
required |
state_uuid
|
str
|
Identifier of the boolean machine-state signal. |
required |
energy_column
|
str
|
Column containing energy readings. |
'value_double'
|
state_column
|
str
|
Column containing boolean state values. |
'value_bool'
|
window
|
str
|
Aggregation window (default daily). |
'1D'
|
trend_window
|
int
|
Number of windows for rolling average. |
7
|
idle_threshold
|
float
|
machine_running_pct below this → idle. |
0.1
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
DataFrame
|
start, uuid, source_uuid, idle_energy, rolling_avg_idle_energy, trend_direction |