mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-05-28 18:43:40 +00:00
fix(periods): rename periods_remaining to period_count_remaining
Consistent naming with the period_count_* family introduced in the previous commit (period_count_total, period_count_today, period_count_tomorrow). periods_remaining was the last attribute in the navigation triplet using the old plural form. Renamed to period_count_remaining to follow the established pattern: all countable period metrics use the period_count_* prefix. BREAKING CHANGE: periods_remaining renamed to period_count_remaining. Impact: All four period count attributes now share the same prefix (period_count_total, period_count_today, period_count_tomorrow, period_count_remaining), making automation templates more predictable.
This commit is contained in:
parent
779e22a84e
commit
1d3c55097d
7 changed files with 14 additions and 14 deletions
|
|
@ -127,7 +127,7 @@ def get_price_intervals_attributes(
|
|||
| {
|
||||
"period_position": i,
|
||||
"period_count_total": total_filtered,
|
||||
"periods_remaining": total_filtered - i,
|
||||
"period_count_remaining": total_filtered - i,
|
||||
}
|
||||
for i, period in enumerate(filtered_periods, 1)
|
||||
]
|
||||
|
|
@ -266,8 +266,8 @@ def add_detail_attributes(attributes: dict, current_period: dict) -> None:
|
|||
attributes["period_position"] = current_period["period_position"]
|
||||
if "period_count_total" in current_period:
|
||||
attributes["period_count_total"] = current_period["period_count_total"]
|
||||
if "periods_remaining" in current_period:
|
||||
attributes["periods_remaining"] = current_period["periods_remaining"]
|
||||
if "period_count_remaining" in current_period:
|
||||
attributes["period_count_remaining"] = current_period["period_count_remaining"]
|
||||
|
||||
|
||||
def add_period_count_attributes(
|
||||
|
|
@ -421,7 +421,7 @@ def build_final_attributes_simple(
|
|||
2. Core decision attributes (level, rating_level, rating_difference_%)
|
||||
3. Price statistics (price_mean, price_median, price_min, price_max, price_spread, volatility)
|
||||
4. Price differences (period_price_diff_from_daily_min, period_price_diff_from_daily_min_%)
|
||||
5. Detail information (period_interval_count, period_position, period_count_total, periods_remaining)
|
||||
5. Detail information (period_interval_count, period_position, period_count_total, period_count_remaining)
|
||||
6. Relaxation information (relaxation_active, relaxation_level, relaxation_threshold_original_%,
|
||||
relaxation_threshold_applied_%) - only if current period was relaxed
|
||||
7. Calculation summary (min_periods_configured, flat_days_detected,
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class TibberPricesBinarySensor(TibberPricesEntity, BinarySensorEntity, RestoreEn
|
|||
"period_price_diff_from_daily_min",
|
||||
"period_price_diff_from_daily_min_%",
|
||||
"period_count_total",
|
||||
"periods_remaining",
|
||||
"period_count_remaining",
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ class PeriodSummary(TypedDict, total=False):
|
|||
period_interval_count: int # Number of intervals in period
|
||||
period_position: int # Period position (1-based)
|
||||
period_count_total: int # Total number of periods
|
||||
periods_remaining: int # Remaining periods after this one
|
||||
period_count_remaining: int # Remaining periods after this one
|
||||
|
||||
# Relaxation information (priority 6 - only if period was relaxed)
|
||||
relaxation_active: bool # Whether this period was found via relaxation
|
||||
|
|
@ -125,7 +125,7 @@ class PeriodAttributes(BaseAttributes, total=False):
|
|||
2. Core decision attributes (level, rating_level, rating_difference_%)
|
||||
3. Price statistics (price_mean, price_median, price_min, price_max, price_spread, volatility)
|
||||
4. Price comparison (period_price_diff_from_daily_min, period_price_diff_from_daily_min_%)
|
||||
5. Detail information (period_interval_count, period_position, period_count_total, periods_remaining)
|
||||
5. Detail information (period_interval_count, period_position, period_count_total, period_count_remaining)
|
||||
6. Relaxation information (only if period was relaxed)
|
||||
7. Meta information (periods list)
|
||||
"""
|
||||
|
|
@ -156,7 +156,7 @@ class PeriodAttributes(BaseAttributes, total=False):
|
|||
period_interval_count: int # Number of intervals in current/next period
|
||||
period_position: int # Period position (1-based)
|
||||
period_count_total: int # Total number of periods found
|
||||
periods_remaining: int # Remaining periods after current/next one
|
||||
period_count_remaining: int # Remaining periods after current/next one
|
||||
|
||||
# Relaxation information (priority 6 - only if period was relaxed)
|
||||
relaxation_active: bool # Whether current/next period was found via relaxation
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ def recalculate_period_metadata(periods: list[dict], *, time: TibberPricesTimeSe
|
|||
"""
|
||||
Recalculate period metadata after merging periods.
|
||||
|
||||
Updates period_position, period_count_total, and periods_remaining for all periods
|
||||
Updates period_position, period_count_total, and period_count_remaining for all periods
|
||||
based on chronological order.
|
||||
|
||||
This must be called after resolve_period_overlaps() to ensure metadata
|
||||
|
|
@ -79,7 +79,7 @@ def recalculate_period_metadata(periods: list[dict], *, time: TibberPricesTimeSe
|
|||
for position, period in enumerate(periods, 1):
|
||||
period["period_position"] = position
|
||||
period["period_count_total"] = total_periods
|
||||
period["periods_remaining"] = total_periods - position
|
||||
period["period_count_remaining"] = total_periods - position
|
||||
|
||||
|
||||
def merge_adjacent_periods(period1: dict, period2: dict) -> dict:
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ def build_period_summary_dict(
|
|||
"period_interval_count": period_data.period_length,
|
||||
"period_position": period_data.period_idx,
|
||||
"period_count_total": period_data.total_periods,
|
||||
"periods_remaining": period_data.total_periods - period_data.period_idx,
|
||||
"period_count_remaining": period_data.total_periods - period_data.period_idx,
|
||||
}
|
||||
|
||||
# Add period price difference attributes based on sensor type (step 4)
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ class TibberPricesSensor(TibberPricesEntity, RestoreSensor):
|
|||
"period_price_diff_from_daily_min",
|
||||
"period_price_diff_from_daily_min_%",
|
||||
"period_count_total",
|
||||
"periods_remaining",
|
||||
"period_count_remaining",
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ class TibberPricesSensor(TibberPricesEntity, SensorEntity):
|
|||
|
||||
### 7. Redundant/Derived Data
|
||||
|
||||
**Attributes:** `price_spread`, `volatility`, `diff_%`, `rating_difference_%`, `period_price_diff_from_daily_min`, `period_price_diff_from_daily_min_%`, `period_count_total`, `periods_remaining`
|
||||
**Attributes:** `price_spread`, `volatility`, `diff_%`, `rating_difference_%`, `period_price_diff_from_daily_min`, `period_price_diff_from_daily_min_%`, `period_count_total`, `period_count_remaining`
|
||||
|
||||
**Reason:**
|
||||
- Can be calculated from other attributes
|
||||
|
|
@ -146,7 +146,7 @@ class TibberPricesSensor(TibberPricesEntity, SensorEntity):
|
|||
|
||||
**Impact:** ~100-200 bytes saved per state change
|
||||
|
||||
**Example:** `price_spread = price_max - price_min` (both are recorded, so spread can be calculated). `periods_remaining = period_count_total - period_position` (both components are recorded).
|
||||
**Example:** `price_spread = price_max - price_min` (both are recorded, so spread can be calculated). `period_count_remaining = period_count_total - period_position` (both components are recorded).
|
||||
|
||||
## Attributes That ARE Recorded
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue