hass.tibber_prices/custom_components/tibber_prices/custom_translations/en.json
Julian Pawlowski d06ae63075 feat(sensors): add Energy Dashboard price sensor and period duration sensors
Added dedicated sensor for Home Assistant's Energy Dashboard integration and
new sensors to track total period duration for best/peak price periods.

New Sensors:
- current_interval_price_major: Shows price in major currency (EUR/kWh, NOK/kWh)
  instead of minor units (ct/kWh, øre/kWh) for Energy Dashboard compatibility
- best_price_period_duration: Total length of current/next best price period
- peak_price_period_duration: Total length of current/next peak price period

Changes:
- sensor/definitions.py: Added 3 new sensor definitions with proper device_class,
  state_class, and suggested_display_precision
- sensor/core.py: Extended native_unit_of_measurement property to return major
  currency unit for Energy Dashboard sensor while keeping minor units for others
- sensor/core.py: Added _calc_period_duration() method to calculate period lengths
- sensor/core.py: Added handler mappings for new duration sensors
- const.py: Imported format_price_unit_major() for currency formatting
- translations/*.json: Added entity names for all 5 languages (de, en, nb, nl, sv)
- custom_translations/*.json: Added descriptions, long_descriptions, and usage_tips
  for all new sensors in all 5 languages

Technical Details:
- Energy Dashboard sensor uses 4 decimal precision (0.2534 EUR/kWh) vs 2 decimals
  for regular price sensors (25.34 ct/kWh)
- Duration sensors return minutes (UnitOfTime.MINUTES) with 0 decimal precision
- Duration sensors disabled by default (less commonly needed than end time)
- All MONETARY sensors now have explicit state_class=SensorStateClass.TOTAL
- All ENUM/TIMESTAMP sensors have explicit state_class=None for clarity

Impact: Users can now add electricity prices to Energy Dashboard for automatic
cost calculation. Duration sensors help users plan appliance usage by showing
how long cheap/expensive periods last. All price statistics now properly tracked
by Home Assistant's recorder.
2025-11-15 20:38:21 +00:00

381 lines
36 KiB
JSON

{
"sensor": {
"current_interval_price": {
"description": "The current electricity price per kWh",
"long_description": "Shows the current price per kWh from your Tibber subscription",
"usage_tips": "Use this to track prices or to create automations that run when electricity is cheap"
},
"current_interval_price_major": {
"description": "Current electricity price in major currency (EUR/kWh, NOK/kWh, etc.) for Energy Dashboard",
"long_description": "Shows the current price per kWh in major currency units (e.g., EUR/kWh instead of ct/kWh, NOK/kWh instead of øre/kWh). This sensor is specifically designed for use with Home Assistant's Energy Dashboard, which requires prices in standard currency units.",
"usage_tips": "Use this sensor when configuring the Energy Dashboard under Settings → Dashboards → Energy. Select this sensor as the 'Entity with current price' to automatically calculate your energy costs. The Energy Dashboard multiplies your energy consumption (kWh) by this price to show total costs."
},
"next_interval_price": {
"description": "The next interval electricity price per kWh",
"long_description": "Shows the price for the next 15-minute interval from your Tibber subscription",
"usage_tips": "Use this to prepare for upcoming price changes or to schedule devices to run during cheaper intervals"
},
"previous_interval_price": {
"description": "The previous interval electricity price per kWh",
"long_description": "Shows the price for the previous 15-minute interval from your Tibber subscription",
"usage_tips": "Use this to review past price changes or track price history"
},
"current_hour_average_price": {
"description": "Rolling 5-interval average price per kWh",
"long_description": "Shows the average price per kWh calculated from 5 intervals: 2 previous, current, and 2 next intervals (approximately 75 minutes total). This provides a smoothed 'hour price' that adapts as time moves, rather than being fixed to clock hours.",
"usage_tips": "Use this for a more stable price indicator that smooths out short-term fluctuations while still being responsive to price changes. Better than fixed hourly prices for making consumption decisions."
},
"next_hour_average_price": {
"description": "Rolling 5-interval average price for next hour per kWh",
"long_description": "Shows the average price per kWh calculated from 5 intervals centered one hour ahead: approximately intervals +2 through +6 from now (covering minutes +30 to +105). This provides a forward-looking smoothed 'hour price' for planning consumption.",
"usage_tips": "Use this to anticipate price changes in the next hour. Helpful for scheduling high-consumption activities like charging electric vehicles, running dishwashers, or heating systems."
},
"lowest_price_today": {
"description": "The lowest electricity price for today per kWh",
"long_description": "Shows the lowest price per kWh for the current day from your Tibber subscription",
"usage_tips": "Use this to compare current prices to the cheapest time of the day"
},
"highest_price_today": {
"description": "The highest electricity price for today per kWh",
"long_description": "Shows the highest price per kWh for the current day from your Tibber subscription",
"usage_tips": "Use this to avoid running appliances during peak price times"
},
"average_price_today": {
"description": "The average electricity price for today per kWh",
"long_description": "Shows the average price per kWh for the current day from your Tibber subscription",
"usage_tips": "Use this as a baseline for comparing current prices"
},
"lowest_price_tomorrow": {
"description": "The lowest electricity price for tomorrow per kWh",
"long_description": "Shows the lowest price per kWh for tomorrow from your Tibber subscription. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).",
"usage_tips": "Use this to plan energy-intensive activities for tomorrow's cheapest time. Perfect for pre-scheduling heating, EV charging, or appliances."
},
"highest_price_tomorrow": {
"description": "The highest electricity price for tomorrow per kWh",
"long_description": "Shows the highest price per kWh for tomorrow from your Tibber subscription. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).",
"usage_tips": "Use this to avoid running appliances during tomorrow's peak price times. Helpful for planning around expensive periods."
},
"average_price_tomorrow": {
"description": "The average electricity price for tomorrow per kWh",
"long_description": "Shows the average price per kWh for tomorrow from your Tibber subscription. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).",
"usage_tips": "Use this as a baseline for comparing tomorrow's prices and planning consumption. Compare with today's average to see if tomorrow will be more or less expensive overall."
},
"yesterday_price_level": {
"description": "Aggregated price level for yesterday",
"long_description": "Shows the aggregated price level classification for all intervals in yesterday. Uses the same logic as hourly sensors to determine the overall price level for the entire day.",
"usage_tips": "Use this to understand yesterday's overall price situation. Compare with today to see daily trends."
},
"today_price_level": {
"description": "Aggregated price level for today",
"long_description": "Shows the aggregated price level classification for all intervals in today. Uses the same logic as hourly sensors to determine the overall price level for the entire day.",
"usage_tips": "Use this to understand today's overall price situation at a glance. Helpful for quick assessments of whether today is generally cheap or expensive."
},
"tomorrow_price_level": {
"description": "Aggregated price level for tomorrow",
"long_description": "Shows the aggregated price level classification for all intervals in tomorrow. Uses the same logic as hourly sensors to determine the overall price level for the entire day. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).",
"usage_tips": "Use this to understand tomorrow's overall price situation. Compare with today to see if tomorrow will be more or less favorable for energy consumption."
},
"yesterday_price_rating": {
"description": "Aggregated price rating for yesterday",
"long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in yesterday, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day.",
"usage_tips": "Use this to understand yesterday's price situation relative to your personalized thresholds. Compare with today for trend analysis."
},
"today_price_rating": {
"description": "Aggregated price rating for today",
"long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in today, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day.",
"usage_tips": "Use this to quickly assess today's price situation relative to your personalized thresholds. Helps make consumption decisions for the current day."
},
"tomorrow_price_rating": {
"description": "Aggregated price rating for tomorrow",
"long_description": "Shows the aggregated price rating (low/normal/high) for all intervals in tomorrow, based on your configured thresholds. Uses the same logic as hourly sensors to determine the overall rating for the entire day. This sensor becomes unavailable until tomorrow's data is published by Tibber (typically around 13:00-14:00 CET).",
"usage_tips": "Use this to plan tomorrow's energy consumption based on your personalized price thresholds. Compare with today to decide if you should shift consumption to tomorrow or use energy today."
},
"trailing_price_average": {
"description": "The average electricity price for the past 24 hours per kWh",
"long_description": "Shows the average price per kWh calculated from the past 24 hours (trailing average) from your Tibber subscription. This provides a rolling average that updates every 15 minutes based on historical data.",
"usage_tips": "Use this to compare current prices against recent trends. A current price significantly above this average may indicate a good time to reduce consumption."
},
"leading_price_average": {
"description": "The average electricity price for the next 24 hours per kWh",
"long_description": "Shows the average price per kWh calculated from the next 24 hours (leading average) from your Tibber subscription. This provides a forward-looking average based on available forecast data.",
"usage_tips": "Use this to plan energy usage. If the current price is below the leading average, it may be a good time to run energy-intensive appliances."
},
"trailing_price_min": {
"description": "The minimum electricity price for the past 24 hours per kWh",
"long_description": "Shows the minimum price per kWh from the past 24 hours (trailing minimum) from your Tibber subscription. This provides the lowest price seen in the last 24 hours.",
"usage_tips": "Use this to see the best price opportunity you had in the past 24 hours and compare it with current prices."
},
"trailing_price_max": {
"description": "The maximum electricity price for the past 24 hours per kWh",
"long_description": "Shows the maximum price per kWh from the past 24 hours (trailing maximum) from your Tibber subscription. This provides the highest price seen in the last 24 hours.",
"usage_tips": "Use this to see the peak price in the past 24 hours and assess price volatility."
},
"leading_price_min": {
"description": "The minimum electricity price for the next 24 hours per kWh",
"long_description": "Shows the minimum price per kWh from the next 24 hours (leading minimum) from your Tibber subscription. This provides the lowest price expected in the next 24 hours based on forecast data.",
"usage_tips": "Use this to identify the best price opportunity coming up and schedule energy-intensive tasks accordingly."
},
"leading_price_max": {
"description": "The maximum electricity price for the next 24 hours per kWh",
"long_description": "Shows the maximum price per kWh from the next 24 hours (leading maximum) from your Tibber subscription. This provides the highest price expected in the next 24 hours based on forecast data.",
"usage_tips": "Use this to avoid running appliances during upcoming peak price periods."
},
"current_interval_price_level": {
"description": "The current price level classification",
"long_description": "Shows Tibber's classification of the current price compared to historical prices",
"usage_tips": "Use this to create automations based on relative price levels rather than absolute prices"
},
"next_interval_price_level": {
"description": "Price level for the next 15-minute interval",
"long_description": "Shows the price level classification for the upcoming interval. Helps anticipate short-term price changes for immediate planning.",
"usage_tips": "Use for quick decisions about starting or stopping high-power devices in the next few minutes."
},
"previous_interval_price_level": {
"description": "Price level for the previous 15-minute interval",
"long_description": "Shows the price level classification for the last interval. Useful for historical comparison and understanding recent price trends.",
"usage_tips": "Use to compare current vs recent price levels or analyze consumption patterns against historical prices."
},
"current_hour_price_level": {
"description": "Aggregated price level for current rolling hour (5 intervals)",
"long_description": "Shows the median price level across 5 intervals (2 before, current, 2 after) covering approximately 75 minutes. Provides a more stable price level indicator that smooths out short-term fluctuations.",
"usage_tips": "Use for medium-term planning decisions where you want to avoid reacting to brief price spikes or dips."
},
"next_hour_price_level": {
"description": "Aggregated price level for next rolling hour (5 intervals ahead)",
"long_description": "Shows the median price level across 5 intervals centered one hour ahead. Helps plan consumption based on upcoming price trends rather than instantaneous future prices.",
"usage_tips": "Use to schedule activities for the next hour based on a smoothed price level forecast."
},
"current_interval_price_rating": {
"description": "How the current interval's price compares to historical data",
"long_description": "Shows how the current interval's price compares to historical price data as a percentage",
"usage_tips": "A positive percentage means the current price is above average, negative means below average"
},
"next_interval_price_rating": {
"description": "Price rating for the next 15-minute interval",
"long_description": "Shows how the next interval's price compares to the rolling 24-hour average. Helps anticipate if upcoming prices are above or below the recent trend.",
"usage_tips": "Use to make quick decisions about starting activities in the next interval based on relative price position."
},
"previous_interval_price_rating": {
"description": "Price rating for the previous 15-minute interval",
"long_description": "Shows how the last interval's price compared to the rolling average. Useful for understanding recent price behavior.",
"usage_tips": "Use for analyzing how price ratings changed over time or validating past consumption decisions."
},
"current_hour_price_rating": {
"description": "Aggregated price rating for current rolling hour (5 intervals)",
"long_description": "Shows the average rating across 5 intervals (2 before, current, 2 after). Based on the average percentage difference from rolling 24h average, providing a smoothed rating indicator.",
"usage_tips": "Use for stable medium-term price assessment that doesn't overreact to brief price anomalies."
},
"next_hour_price_rating": {
"description": "Aggregated price rating for next rolling hour (5 intervals ahead)",
"long_description": "Shows the averaged rating for 5 intervals centered one hour ahead. Helps understand if the next hour will generally be above or below average pricing.",
"usage_tips": "Use to decide if you should wait an hour before starting high-consumption activities."
},
"next_avg_1h": {
"description": "Average price for the next 1 hour (forward-only from next interval)",
"long_description": "Forward-looking average: Shows average of next 4 intervals (1 hour) starting from the NEXT 15-minute interval (not including current). Different from current_hour_average_price which includes past intervals. Use for absolute price threshold planning.",
"usage_tips": "Absolute price threshold: Only start appliances when average stays below your maximum acceptable price (e.g., below 0.25 EUR/kWh). Combine with trend sensor for optimal timing. Note: This is NOT a replacement for hourly prices - use current_hour_average_price for that."
},
"next_avg_2h": {
"description": "Average price for the next 2 hours",
"long_description": "Shows the average price for the next 8 intervals (2 hours) starting from the next 15-minute interval.",
"usage_tips": "Absolute price threshold: Set a maximum acceptable average price for standard appliances like washing machines. Ensures you never pay more than your limit."
},
"next_avg_3h": {
"description": "Average price for the next 3 hours",
"long_description": "Shows the average price for the next 12 intervals (3 hours) starting from the next 15-minute interval.",
"usage_tips": "Absolute price threshold: For EU Eco programs (dishwashers, 3-4h runtime). Only start when 3h average is below your price limit. Use with trend sensor to find best moment within acceptable price range."
},
"next_avg_4h": {
"description": "Average price for the next 4 hours",
"long_description": "Shows the average price for the next 16 intervals (4 hours) starting from the next 15-minute interval.",
"usage_tips": "Absolute price threshold: Set maximum acceptable price for heat pumps or water heaters. Prevents operation during expensive periods regardless of relative trends."
},
"next_avg_5h": {
"description": "Average price for the next 5 hours",
"long_description": "Shows the average price for the next 20 intervals (5 hours) starting from the next 15-minute interval.",
"usage_tips": "Absolute price threshold: Bridge between short and long-term planning. Use for extended cycles with hard price limits (e.g., pool pumps, extended heating cycles)."
},
"next_avg_6h": {
"description": "Average price for the next 6 hours",
"long_description": "Shows the average price for the next 24 intervals (6 hours) starting from the next 15-minute interval.",
"usage_tips": "Absolute price threshold: Evening planning with price caps. Only schedule tasks if 6h average stays below your maximum acceptable cost."
},
"next_avg_8h": {
"description": "Average price for the next 8 hours",
"long_description": "Shows the average price for the next 32 intervals (8 hours) starting from the next 15-minute interval.",
"usage_tips": "Absolute price threshold: Overnight operation decisions. Set hard price limits for night loads (battery charging, thermal storage). Never exceed your budget."
},
"next_avg_12h": {
"description": "Average price for the next 12 hours",
"long_description": "Shows the average price for the next 48 intervals (12 hours) starting from the next 15-minute interval.",
"usage_tips": "Absolute price threshold: Strategic decisions with price caps. Only proceed if 12h average is below your maximum acceptable price. Good for postponable large loads."
},
"price_trend_1h": {
"description": "Price trend for the next hour",
"long_description": "Compares current interval price with average of next 1 hour (4 intervals). Rising if future is >5% higher, falling if >5% lower, stable otherwise.",
"usage_tips": "Relative optimization: 'falling' = wait, prices dropping. 'rising' = act now or you'll pay more. 'stable' = price doesn't matter much now. Works independent of absolute price level."
},
"price_trend_2h": {
"description": "Price trend for the next 2 hours",
"long_description": "Compares current interval price with average of next 2 hours (8 intervals). Rising if future is >5% higher, falling if >5% lower, stable otherwise.",
"usage_tips": "Relative optimization: Ideal for appliances. 'falling' means better prices coming in 2h - postpone if possible. Finds best timing within your available window, regardless of season."
},
"price_trend_3h": {
"description": "Price trend for the next 3 hours",
"long_description": "Compares current interval price with average of next 3 hours (12 intervals). Rising if future is >5% higher, falling if >5% lower, stable otherwise.",
"usage_tips": "Relative optimization: For Eco programs. 'falling' means prices dropping >5% - worth waiting. Works in any season. Combine with avg sensor for price cap: only when avg < your limit AND trend not 'falling'."
},
"price_trend_4h": {
"description": "Price trend for the next 4 hours",
"long_description": "Compares current interval price with average of next 4 hours (16 intervals). Rising if future is >5% higher, falling if >5% lower, stable otherwise.",
"usage_tips": "Relative optimization: Heat pump/battery decisions. 'falling' means better charging window coming. Always finds relative best time - whether prices are 10 cents or 50 cents. Use avg sensor for absolute limit."
},
"price_trend_5h": {
"description": "Price trend for the next 5 hours",
"long_description": "Compares current interval price with average of next 5 hours (20 intervals). Rising if future is >5% higher, falling if >5% lower, stable otherwise.",
"usage_tips": "Relative optimization: Extended operations. Adapts to market - finds best relative timing in any price environment. 'stable/rising' = good time to start within your planning window."
},
"price_trend_6h": {
"description": "Price trend for the next 6 hours",
"long_description": "Compares current interval price with average of next 6 hours (24 intervals). Rising if future is >5% higher, falling if >5% lower, stable otherwise.",
"usage_tips": "Relative optimization: Evening decisions. 'falling' = prices improve significantly if you wait. No fixed thresholds needed - automatically adjusts to winter/summer price levels."
},
"price_trend_8h": {
"description": "Price trend for the next 8 hours",
"long_description": "Compares current interval price with average of next 8 hours (32 intervals). Rising if future is >5% higher, falling if >5% lower, stable otherwise.",
"usage_tips": "Relative optimization: Night planning. 'falling' means waiting for night pays off (>5% cheaper). Works year-round without manual threshold adjustments. Start when 'stable' or 'rising'."
},
"price_trend_12h": {
"description": "Price trend for the next 12 hours",
"long_description": "Compares current interval price with average of next 12 hours (48 intervals). Rising if future is >5% higher, falling if >5% lower, stable otherwise.",
"usage_tips": "Relative optimization: Long-term strategic decisions. 'falling' = significantly better prices coming tonight/tomorrow. Finds optimal timing in any market condition. Best combined with avg sensor price cap."
},
"daily_rating": {
"description": "How today's prices compare to historical data",
"long_description": "Shows how today's prices compare to historical price data as a percentage",
"usage_tips": "A positive percentage means today's prices are above average, negative means below average"
},
"monthly_rating": {
"description": "How this month's prices compare to historical data",
"long_description": "Shows how this month's prices compare to historical price data as a percentage",
"usage_tips": "A positive percentage means this month's prices are above average, negative means below average"
},
"data_timestamp": {
"description": "Timestamp of the latest available price data interval",
"long_description": "Shows the timestamp of the latest available price data interval from your Tibber subscription"
},
"today_volatility": {
"description": "Price volatility classification for today",
"long_description": "Shows how much electricity prices vary throughout today based on the spread (difference between highest and lowest price). Classification: LOW = spread < 5ct, MODERATE = 5-15ct, HIGH = 15-30ct, VERY HIGH = >30ct.",
"usage_tips": "Use this to decide if price-based optimization is worthwhile. For example, with a balcony battery that has 15% efficiency losses, optimization only makes sense when volatility is at least MODERATE. Create automations that check volatility before scheduling charging/discharging cycles."
},
"tomorrow_volatility": {
"description": "Price volatility classification for tomorrow",
"long_description": "Shows how much electricity prices will vary throughout tomorrow based on the spread (difference between highest and lowest price). Becomes unavailable until tomorrow's data is published (typically 13:00-14:00 CET).",
"usage_tips": "Use this for advance planning of tomorrow's energy usage. If tomorrow has HIGH or VERY HIGH volatility, it's worth optimizing energy consumption timing. If LOW, you can run devices anytime without significant cost differences."
},
"next_24h_volatility": {
"description": "Price volatility classification for the rolling next 24 hours",
"long_description": "Shows how much electricity prices vary in the next 24 hours from now (rolling window). This crosses day boundaries and updates every 15 minutes, providing a forward-looking volatility assessment independent of calendar days.",
"usage_tips": "Best sensor for real-time optimization decisions. Unlike today/tomorrow sensors that switch at midnight, this provides continuous 24h volatility assessment. Use for battery charging strategies that span across day boundaries."
},
"today_tomorrow_volatility": {
"description": "Combined price volatility classification for today and tomorrow",
"long_description": "Shows volatility across both today and tomorrow combined (when tomorrow's data is available). Provides an extended view of price variation spanning up to 48 hours. Falls back to today-only when tomorrow's data isn't available yet.",
"usage_tips": "Use this for multi-day planning and to understand if price opportunities exist across the day boundary. The 'today_volatility' and 'tomorrow_volatility' breakdown attributes show individual day contributions. Useful for scheduling charging sessions that might span midnight."
},
"price_forecast": {
"description": "Forecast of upcoming electricity prices",
"long_description": "Shows upcoming electricity prices for future intervals in a format that's easy to use in dashboards",
"usage_tips": "Use this entity's attributes to display upcoming prices in charts or custom cards. Access either 'intervals' for all future intervals or 'hours' for hourly summaries."
},
"best_price_end_time": {
"description": "When the current or next best price period ends",
"long_description": "Shows the end timestamp of the current best price period when active, or the end of the next period when no period is active. Always shows a useful time reference for planning. Returns 'Unknown' only when no periods are configured.",
"usage_tips": "Use this to display a countdown like 'Cheap period ends in 2 hours' (when active) or 'Next cheap period ends at 14:00' (when inactive). Home Assistant automatically shows relative time for timestamp sensors."
},
"best_price_period_duration": {
"description": "Total length of current or next best price period in minutes",
"long_description": "Shows how long the best price period lasts in total. During an active period, shows the duration of the current period. When no period is active, shows the duration of the next upcoming period. Returns 'Unknown' only when no periods are configured.",
"usage_tips": "Useful for planning: 'The next cheap period lasts 90 minutes' or 'Current cheap period is 120 minutes long'. Combine with remaining_minutes to calculate when to start long-running appliances."
},
"best_price_remaining_minutes": {
"description": "Minutes remaining in current best price period (0 when inactive)",
"long_description": "Shows how many minutes are left in the current best price period. Returns 0 when no period is active. Updates every minute. Check binary_sensor.best_price_period to see if a period is currently active.",
"usage_tips": "Perfect for automations: 'If remaining_minutes > 0 AND remaining_minutes < 30, start washing machine now'. The value 0 makes it easy to check if a period is active (value > 0) or not (value = 0)."
},
"best_price_progress": {
"description": "Progress through current best price period (0% when inactive)",
"long_description": "Shows progress through the current best price period as 0-100%. Returns 0% when no period is active. Updates every minute. 0% means period just started, 100% means it's about to end.",
"usage_tips": "Great for visual progress bars. Use in automations: 'If progress > 0 AND progress > 75, send notification that cheap period is ending soon'. Value 0 indicates no active period."
},
"best_price_next_start_time": {
"description": "When the next best price period starts",
"long_description": "Shows when the next upcoming best price period starts. During an active period, this shows the start of the NEXT period after the current one. Returns 'Unknown' only when no future periods are configured.",
"usage_tips": "Always useful for planning ahead: 'Next cheap period starts in 3 hours' (whether you're in a period now or not). Combine with automations: 'When next start time is in 10 minutes, send notification to prepare washing machine'."
},
"best_price_next_in_minutes": {
"description": "Minutes until next best price period starts (0 when in transition)",
"long_description": "Shows minutes until the next best price period starts. During an active period, shows time until the period AFTER the current one. Returns 0 during brief transition moments. Updates every minute.",
"usage_tips": "Perfect for 'wait until cheap period' automations: 'If next_in_minutes > 0 AND next_in_minutes < 15, wait before starting dishwasher'. Value > 0 always indicates a future period is scheduled."
},
"peak_price_end_time": {
"description": "When the current or next peak price period ends",
"long_description": "Shows the end timestamp of the current peak price period when active, or the end of the next period when no period is active. Always shows a useful time reference for planning. Returns 'Unknown' only when no periods are configured.",
"usage_tips": "Use this to display 'Expensive period ends in 1 hour' (when active) or 'Next expensive period ends at 18:00' (when inactive). Combine with automations to resume operations after peak."
},
"peak_price_period_duration": {
"description": "Total length of current or next peak price period in minutes",
"long_description": "Shows how long the peak price period lasts in total. During an active period, shows the duration of the current period. When no period is active, shows the duration of the next upcoming period. Returns 'Unknown' only when no periods are configured.",
"usage_tips": "Useful for planning: 'The next expensive period lasts 60 minutes' or 'Current peak is 90 minutes long'. Combine with remaining_minutes to decide whether to wait out the peak or proceed with operations."
},
"peak_price_remaining_minutes": {
"description": "Minutes remaining in current peak price period (0 when inactive)",
"long_description": "Shows how many minutes are left in the current peak price period. Returns 0 when no period is active. Updates every minute. Check binary_sensor.peak_price_period to see if a period is currently active.",
"usage_tips": "Use in automations: 'If remaining_minutes > 60, cancel deferred charging session'. Value 0 makes it easy to distinguish active (value > 0) from inactive (value = 0) periods."
},
"peak_price_progress": {
"description": "Progress through current peak price period (0% when inactive)",
"long_description": "Shows progress through the current peak price period as 0-100%. Returns 0% when no period is active. Updates every minute.",
"usage_tips": "Visual progress indicator in dashboards. Automation: 'If progress > 0 AND progress > 90, prepare to resume normal heating schedule'. Value 0 indicates no active period."
},
"peak_price_next_start_time": {
"description": "When the next peak price period starts",
"long_description": "Shows when the next upcoming peak price period starts. During an active period, this shows the start of the NEXT period after the current one. Returns 'Unknown' only when no future periods are configured.",
"usage_tips": "Always useful for planning: 'Next expensive period starts in 2 hours'. Automation: 'When next start time is in 30 minutes, reduce heating temperature preemptively'."
},
"peak_price_next_in_minutes": {
"description": "Minutes until next peak price period starts (0 when in transition)",
"long_description": "Shows minutes until the next peak price period starts. During an active period, shows time until the period AFTER the current one. Returns 0 during brief transition moments. Updates every minute.",
"usage_tips": "Pre-emptive automation: 'If next_in_minutes > 0 AND next_in_minutes < 10, complete current charging cycle now before prices increase'."
}
},
"binary_sensor": {
"tomorrow_data_available": {
"description": "Whether price data for tomorrow is available",
"long_description": "Indicates if price data for the following day has been received from Tibber",
"usage_tips": "Use this to check if tomorrow's prices are available for planning"
},
"peak_price_period": {
"description": "Whether the current interval is among the most expensive of the day",
"long_description": "Turns on when the current price is in the top 20% of today's prices",
"usage_tips": "Use this to avoid running high-consumption appliances during expensive intervals"
},
"best_price_period": {
"description": "Whether the current interval is among the cheapest of the day",
"long_description": "Turns on when the current price is in the bottom 20% of today's prices",
"usage_tips": "Use this to run high-consumption appliances during the cheapest intervals"
},
"connection": {
"description": "Whether the connection to the Tibber API is working",
"long_description": "Indicates if the integration can successfully connect to the Tibber API",
"usage_tips": "Use this to monitor the connection status to the Tibber API"
}
},
"home_types": {
"APARTMENT": "Apartment",
"ROWHOUSE": "Rowhouse",
"HOUSE": "House",
"COTTAGE": "Cottage"
}
}