From cd526a965e1c4db91573cceb7c2da64d382c5cc4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Dec 2025 23:28:32 +0000 Subject: [PATCH] Replace water heater with home battery storage system Water heater was not a realistic example - people want hot water immediately regardless of price. Home battery storage is the perfect example: purpose-built for price arbitrage, high consumption (5-10 kW), actual ad-hoc price checking makes sense Co-authored-by: jpawlowski <75446+jpawlowski@users.noreply.github.com> --- docs/user/docs/automation-examples.md | 20 ++++++------- .../version-v0.21.0/automation-examples.md | 28 +++++++++---------- .../version-v0.22.0/automation-examples.md | 28 +++++++++---------- .../version-v0.22.1/automation-examples.md | 28 +++++++++---------- .../version-v0.23.0/automation-examples.md | 28 +++++++++---------- .../version-v0.23.1/automation-examples.md | 28 +++++++++---------- .../version-v0.24.0/automation-examples.md | 28 +++++++++---------- 7 files changed, 94 insertions(+), 94 deletions(-) diff --git a/docs/user/docs/automation-examples.md b/docs/user/docs/automation-examples.md index c3e6ab7..e74dada 100644 --- a/docs/user/docs/automation-examples.md +++ b/docs/user/docs/automation-examples.md @@ -25,12 +25,12 @@ These examples show how to handle low-volatility days where period classificatio ### Use Case: Only Act on Meaningful Price Variations -On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when volatility is moderate or higher, ensuring meaningful savings: +On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only charges devices when volatility is moderate or higher, ensuring meaningful savings: ```yaml automation: - - alias: "Water Heater - Best Price (Moderate+ Volatility)" - description: "Heat water during Best Price period, but only on days with meaningful price differences" + - alias: "Home Battery - Charge During Best Price (Moderate+ Volatility)" + description: "Charge home battery during Best Price periods, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period @@ -40,24 +40,24 @@ automation: - condition: template value_template: > {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') | float(0) >= 15 }} - # Optional: Check water temperature is below target + # Only charge if battery has capacity - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 + entity_id: sensor.home_battery_level + below: 90 action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - service: notify.mobile_app data: - message: "Water heater started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" + message: "Home battery charging during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" ``` **Why this works:** - On moderate+ volatility days (CV ≥ 15%), Best Price periods offer worthwhile savings - On low-volatility days (CV < 15%), price differences are minimal (typically < 3 ct/kWh span) -- Water heaters are ideal for price-based automation: high consumption (2-3 kW), thermal storage allows flexible timing -- User can manually boost temperature anytime if needed +- Home batteries are ideal for price-based automation: high consumption (5-10 kW), purpose-built for price arbitrage +- Battery can discharge during peak prices for additional savings or grid support **Volatility threshold guide:** - CV < 15%: Low volatility - minimal price variation diff --git a/docs/user/versioned_docs/version-v0.21.0/automation-examples.md b/docs/user/versioned_docs/version-v0.21.0/automation-examples.md index 4237b6d..8227344 100644 --- a/docs/user/versioned_docs/version-v0.21.0/automation-examples.md +++ b/docs/user/versioned_docs/version-v0.21.0/automation-examples.md @@ -25,12 +25,12 @@ These examples show how to handle low-volatility days where period classificatio ### Use Case: Only Act on Meaningful Price Variations -On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when volatility is moderate or higher, ensuring meaningful savings: +On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only charges devices when volatility is moderate or higher, ensuring meaningful savings: ```yaml automation: - - alias: "Water Heater - Best Price (Moderate+ Volatility)" - description: "Heat water during Best Price period, but only on days with meaningful price differences" + - alias: "Home Battery - Charge During Best Price (Moderate+ Volatility)" + description: "Charge home battery during Best Price periods, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period @@ -40,24 +40,24 @@ automation: - condition: template value_template: > {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') | float(0) >= 15 }} - # Optional: Check water temperature is below target + # Only charge if battery has capacity - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 + entity_id: sensor.home_battery_level + below: 90 action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - service: notify.mobile_app data: - message: "Water heater started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" + message: "Home battery charging during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" ``` **Why this works:** - On moderate+ volatility days (CV >= 15%), Best Price periods offer worthwhile savings - On low-volatility days (CV < 15%), price differences are minimal (typically < 3 ct/kWh span) -- Water heaters are ideal for price-based automation: high consumption (2-3 kW), thermal storage allows flexible timing -- User can manually boost temperature anytime if needed +- Home batteries are ideal for price-based automation: high consumption (5-10 kW), purpose-built for price arbitrage +- Battery can discharge during peak prices for additional savings or grid support **Volatility threshold guide:** - CV < 15%: Low volatility - minimal price variation @@ -84,17 +84,17 @@ automation: below: 20 # Optional: Check water temperature - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 # Only heat if below 55°C + entity_id: sensor.home_battery_level + below: 90 # Only heat if below 55°C action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - delay: hours: 2 # Heat for 2 hours - service: switch.turn_off target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge ``` **Why this works:** diff --git a/docs/user/versioned_docs/version-v0.22.0/automation-examples.md b/docs/user/versioned_docs/version-v0.22.0/automation-examples.md index 4237b6d..8227344 100644 --- a/docs/user/versioned_docs/version-v0.22.0/automation-examples.md +++ b/docs/user/versioned_docs/version-v0.22.0/automation-examples.md @@ -25,12 +25,12 @@ These examples show how to handle low-volatility days where period classificatio ### Use Case: Only Act on Meaningful Price Variations -On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when volatility is moderate or higher, ensuring meaningful savings: +On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only charges devices when volatility is moderate or higher, ensuring meaningful savings: ```yaml automation: - - alias: "Water Heater - Best Price (Moderate+ Volatility)" - description: "Heat water during Best Price period, but only on days with meaningful price differences" + - alias: "Home Battery - Charge During Best Price (Moderate+ Volatility)" + description: "Charge home battery during Best Price periods, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period @@ -40,24 +40,24 @@ automation: - condition: template value_template: > {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') | float(0) >= 15 }} - # Optional: Check water temperature is below target + # Only charge if battery has capacity - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 + entity_id: sensor.home_battery_level + below: 90 action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - service: notify.mobile_app data: - message: "Water heater started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" + message: "Home battery charging during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" ``` **Why this works:** - On moderate+ volatility days (CV >= 15%), Best Price periods offer worthwhile savings - On low-volatility days (CV < 15%), price differences are minimal (typically < 3 ct/kWh span) -- Water heaters are ideal for price-based automation: high consumption (2-3 kW), thermal storage allows flexible timing -- User can manually boost temperature anytime if needed +- Home batteries are ideal for price-based automation: high consumption (5-10 kW), purpose-built for price arbitrage +- Battery can discharge during peak prices for additional savings or grid support **Volatility threshold guide:** - CV < 15%: Low volatility - minimal price variation @@ -84,17 +84,17 @@ automation: below: 20 # Optional: Check water temperature - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 # Only heat if below 55°C + entity_id: sensor.home_battery_level + below: 90 # Only heat if below 55°C action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - delay: hours: 2 # Heat for 2 hours - service: switch.turn_off target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge ``` **Why this works:** diff --git a/docs/user/versioned_docs/version-v0.22.1/automation-examples.md b/docs/user/versioned_docs/version-v0.22.1/automation-examples.md index 4237b6d..8227344 100644 --- a/docs/user/versioned_docs/version-v0.22.1/automation-examples.md +++ b/docs/user/versioned_docs/version-v0.22.1/automation-examples.md @@ -25,12 +25,12 @@ These examples show how to handle low-volatility days where period classificatio ### Use Case: Only Act on Meaningful Price Variations -On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when volatility is moderate or higher, ensuring meaningful savings: +On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only charges devices when volatility is moderate or higher, ensuring meaningful savings: ```yaml automation: - - alias: "Water Heater - Best Price (Moderate+ Volatility)" - description: "Heat water during Best Price period, but only on days with meaningful price differences" + - alias: "Home Battery - Charge During Best Price (Moderate+ Volatility)" + description: "Charge home battery during Best Price periods, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period @@ -40,24 +40,24 @@ automation: - condition: template value_template: > {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') | float(0) >= 15 }} - # Optional: Check water temperature is below target + # Only charge if battery has capacity - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 + entity_id: sensor.home_battery_level + below: 90 action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - service: notify.mobile_app data: - message: "Water heater started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" + message: "Home battery charging during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" ``` **Why this works:** - On moderate+ volatility days (CV >= 15%), Best Price periods offer worthwhile savings - On low-volatility days (CV < 15%), price differences are minimal (typically < 3 ct/kWh span) -- Water heaters are ideal for price-based automation: high consumption (2-3 kW), thermal storage allows flexible timing -- User can manually boost temperature anytime if needed +- Home batteries are ideal for price-based automation: high consumption (5-10 kW), purpose-built for price arbitrage +- Battery can discharge during peak prices for additional savings or grid support **Volatility threshold guide:** - CV < 15%: Low volatility - minimal price variation @@ -84,17 +84,17 @@ automation: below: 20 # Optional: Check water temperature - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 # Only heat if below 55°C + entity_id: sensor.home_battery_level + below: 90 # Only heat if below 55°C action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - delay: hours: 2 # Heat for 2 hours - service: switch.turn_off target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge ``` **Why this works:** diff --git a/docs/user/versioned_docs/version-v0.23.0/automation-examples.md b/docs/user/versioned_docs/version-v0.23.0/automation-examples.md index 4237b6d..8227344 100644 --- a/docs/user/versioned_docs/version-v0.23.0/automation-examples.md +++ b/docs/user/versioned_docs/version-v0.23.0/automation-examples.md @@ -25,12 +25,12 @@ These examples show how to handle low-volatility days where period classificatio ### Use Case: Only Act on Meaningful Price Variations -On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when volatility is moderate or higher, ensuring meaningful savings: +On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only charges devices when volatility is moderate or higher, ensuring meaningful savings: ```yaml automation: - - alias: "Water Heater - Best Price (Moderate+ Volatility)" - description: "Heat water during Best Price period, but only on days with meaningful price differences" + - alias: "Home Battery - Charge During Best Price (Moderate+ Volatility)" + description: "Charge home battery during Best Price periods, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period @@ -40,24 +40,24 @@ automation: - condition: template value_template: > {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') | float(0) >= 15 }} - # Optional: Check water temperature is below target + # Only charge if battery has capacity - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 + entity_id: sensor.home_battery_level + below: 90 action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - service: notify.mobile_app data: - message: "Water heater started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" + message: "Home battery charging during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" ``` **Why this works:** - On moderate+ volatility days (CV >= 15%), Best Price periods offer worthwhile savings - On low-volatility days (CV < 15%), price differences are minimal (typically < 3 ct/kWh span) -- Water heaters are ideal for price-based automation: high consumption (2-3 kW), thermal storage allows flexible timing -- User can manually boost temperature anytime if needed +- Home batteries are ideal for price-based automation: high consumption (5-10 kW), purpose-built for price arbitrage +- Battery can discharge during peak prices for additional savings or grid support **Volatility threshold guide:** - CV < 15%: Low volatility - minimal price variation @@ -84,17 +84,17 @@ automation: below: 20 # Optional: Check water temperature - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 # Only heat if below 55°C + entity_id: sensor.home_battery_level + below: 90 # Only heat if below 55°C action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - delay: hours: 2 # Heat for 2 hours - service: switch.turn_off target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge ``` **Why this works:** diff --git a/docs/user/versioned_docs/version-v0.23.1/automation-examples.md b/docs/user/versioned_docs/version-v0.23.1/automation-examples.md index 4237b6d..8227344 100644 --- a/docs/user/versioned_docs/version-v0.23.1/automation-examples.md +++ b/docs/user/versioned_docs/version-v0.23.1/automation-examples.md @@ -25,12 +25,12 @@ These examples show how to handle low-volatility days where period classificatio ### Use Case: Only Act on Meaningful Price Variations -On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when volatility is moderate or higher, ensuring meaningful savings: +On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only charges devices when volatility is moderate or higher, ensuring meaningful savings: ```yaml automation: - - alias: "Water Heater - Best Price (Moderate+ Volatility)" - description: "Heat water during Best Price period, but only on days with meaningful price differences" + - alias: "Home Battery - Charge During Best Price (Moderate+ Volatility)" + description: "Charge home battery during Best Price periods, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period @@ -40,24 +40,24 @@ automation: - condition: template value_template: > {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') | float(0) >= 15 }} - # Optional: Check water temperature is below target + # Only charge if battery has capacity - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 + entity_id: sensor.home_battery_level + below: 90 action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - service: notify.mobile_app data: - message: "Water heater started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" + message: "Home battery charging during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" ``` **Why this works:** - On moderate+ volatility days (CV >= 15%), Best Price periods offer worthwhile savings - On low-volatility days (CV < 15%), price differences are minimal (typically < 3 ct/kWh span) -- Water heaters are ideal for price-based automation: high consumption (2-3 kW), thermal storage allows flexible timing -- User can manually boost temperature anytime if needed +- Home batteries are ideal for price-based automation: high consumption (5-10 kW), purpose-built for price arbitrage +- Battery can discharge during peak prices for additional savings or grid support **Volatility threshold guide:** - CV < 15%: Low volatility - minimal price variation @@ -84,17 +84,17 @@ automation: below: 20 # Optional: Check water temperature - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 # Only heat if below 55°C + entity_id: sensor.home_battery_level + below: 90 # Only heat if below 55°C action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - delay: hours: 2 # Heat for 2 hours - service: switch.turn_off target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge ``` **Why this works:** diff --git a/docs/user/versioned_docs/version-v0.24.0/automation-examples.md b/docs/user/versioned_docs/version-v0.24.0/automation-examples.md index 4237b6d..8227344 100644 --- a/docs/user/versioned_docs/version-v0.24.0/automation-examples.md +++ b/docs/user/versioned_docs/version-v0.24.0/automation-examples.md @@ -25,12 +25,12 @@ These examples show how to handle low-volatility days where period classificatio ### Use Case: Only Act on Meaningful Price Variations -On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when volatility is moderate or higher, ensuring meaningful savings: +On days with low price variation (coefficient of variation < 15%), the difference between "cheap" and "expensive" periods is minimal. This automation only charges devices when volatility is moderate or higher, ensuring meaningful savings: ```yaml automation: - - alias: "Water Heater - Best Price (Moderate+ Volatility)" - description: "Heat water during Best Price period, but only on days with meaningful price differences" + - alias: "Home Battery - Charge During Best Price (Moderate+ Volatility)" + description: "Charge home battery during Best Price periods, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period @@ -40,24 +40,24 @@ automation: - condition: template value_template: > {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') | float(0) >= 15 }} - # Optional: Check water temperature is below target + # Only charge if battery has capacity - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 + entity_id: sensor.home_battery_level + below: 90 action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - service: notify.mobile_app data: - message: "Water heater started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" + message: "Home battery charging during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ state_attr('sensor.tibber_home_volatility_today', 'coefficient_of_variation') }}%)" ``` **Why this works:** - On moderate+ volatility days (CV >= 15%), Best Price periods offer worthwhile savings - On low-volatility days (CV < 15%), price differences are minimal (typically < 3 ct/kWh span) -- Water heaters are ideal for price-based automation: high consumption (2-3 kW), thermal storage allows flexible timing -- User can manually boost temperature anytime if needed +- Home batteries are ideal for price-based automation: high consumption (5-10 kW), purpose-built for price arbitrage +- Battery can discharge during peak prices for additional savings or grid support **Volatility threshold guide:** - CV < 15%: Low volatility - minimal price variation @@ -84,17 +84,17 @@ automation: below: 20 # Optional: Check water temperature - condition: numeric_state - entity_id: sensor.water_heater_temperature - below: 55 # Only heat if below 55°C + entity_id: sensor.home_battery_level + below: 90 # Only heat if below 55°C action: - service: switch.turn_on target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge - delay: hours: 2 # Heat for 2 hours - service: switch.turn_off target: - entity_id: switch.water_heater + entity_id: switch.home_battery_charge ``` **Why this works:**