Skip to content

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