-
-
Notifications
You must be signed in to change notification settings - Fork 47
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
342 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,342 @@ | ||
pred_bat: | ||
module: predbat | ||
class: PredBat | ||
|
||
# Sets the prefix for all created entities in HA - only change if you want to run more than once instance | ||
prefix: predbat | ||
|
||
# Timezone to work in | ||
timezone: Europe/London | ||
|
||
# XXX: Template configuration, delete this line once you have set up for your system | ||
# template: True | ||
|
||
# If you are using Predbat outside of HA then set the HA URL and Key (long lived access token here) | ||
#ha_url: 'http://homeassistant.local:8123' | ||
#ha_key: 'xxx' | ||
|
||
# Currency, symbol for main currency second symbol for 1/100s e.g. $ c or £ p or e c | ||
currency_symbols: | ||
- '£' | ||
- 'p' | ||
|
||
# Number of threads to use in plan calculation | ||
# Can be auto for automatic, 0 for off or values 1-N for a fixed number | ||
threads: auto | ||
|
||
# | ||
# Sensors, currently more than one can be specified and they will be summed up automatically | ||
# however if you have two inverters only set one of them as they will both read the same. | ||
# | ||
inverter_type: "SA" | ||
num_inverters: 1 | ||
# | ||
# Controls/status - must by 1 per inverter | ||
# | ||
|
||
# Max inverter power from battery | ||
battery_rate_max: | ||
- 3000 | ||
# Battery capacity in kWh | ||
soc_max: | ||
- 6.5 | ||
|
||
# Solar Assistant specific parameters (This is for a Growatt inverter configured, change to yours): | ||
|
||
load_today: | ||
- sensor.growatt_spa_load_energy | ||
import_today: | ||
- sensor.growatt_spa_grid_energy_in | ||
export_today: | ||
- sensor.growatt_spa_grid_energy_out | ||
pv_today: | ||
- sensor.growatt_spa_pv_energy | ||
battery_voltage: | ||
- sensor.growatt_spa_battery_voltage | ||
|
||
# This is disabled by default in the Solax integration so it must be manually enabled. | ||
inverter_time: | ||
- sensor.date_time | ||
|
||
# This is disabled by default in the Solax integration so it must be manually enabled. | ||
battery_power: | ||
- sensor.growatt_spa_battery_power | ||
pv_power: | ||
- sensor.growatt_spa_pv_power | ||
soc_percent: | ||
- sensor.growatt_spa_battery_state_of_charge | ||
|
||
# reserve: | ||
# - number.growatt_spa_grid_first_stop_discharge | ||
|
||
battery_min_soc: | ||
- number.growatt_spa_grid_first_stop_discharge | ||
|
||
# energy_control_switch: | ||
- select.growatt_spa_work_mode_priority | ||
|
||
# Service for start/stop | ||
charge_start_service: | ||
service: select.select_option | ||
entity_id: select.growatt_spa_work_mode_priority | ||
option: "Battery first" | ||
charge_stop_service: | ||
service: select.select_option | ||
entity_id: select.growatt_spa_work_mode_priority | ||
option: "Load first" | ||
discharge_start_service: | ||
service: select.select_option | ||
entity_id: select.growatt_spa_work_mode_priority | ||
option: "Grid first" | ||
|
||
# Inverter max AC limit (one per inverter) | ||
# If you have a second inverter for PV only please add the two values together | ||
inverter_limit: 3245 | ||
|
||
# Export limit is a software limit set on your inverter that prevents exporting above a given level | ||
# When enabled Predbat will model this limit | ||
#export_limit: | ||
# - 3600 | ||
# - 3600 | ||
# | ||
# The maximum rate the inverter can charge and discharge the battery can be overwritten, this will change | ||
# the register programming and thus cap the max rates. The default is to use the maximum supported rates (recommended) | ||
# | ||
inverter_limit_charge: | ||
- 3000 | ||
inverter_limit_discharge: | ||
- 3000 | ||
|
||
|
||
# Some inverters don't turn off when the rate is set to 0, still charge or discharge at around 200w | ||
# The value can be set here in watts to model this (doesn't change operation) | ||
#inverter_battery_rate_min: | ||
# - 100 | ||
|
||
# Some batteries tail off their charge rate at high soc% | ||
# enter the charging curve here as a % of the max charge rate for each soc percentage. | ||
# the default is 1.0 (full power) | ||
#battery_charge_power_curve: | ||
# 91 : 0.91 | ||
# 92 : 0.81 | ||
# 93 : 0.71 | ||
# 94 : 0.62 | ||
# 95 : 0.52 | ||
# 96 : 0.43 | ||
# 97 : 0.33 | ||
# 98 : 0.24 | ||
# 99 : 0.24 | ||
# 100 : 0.24 | ||
|
||
# Inverter clock skew in minutes, e.g. 1 means it's 1 minute fast and -1 is 1 minute slow | ||
# Separate start and end options are applied to the start and end time windows, mostly as you want to start late (not early) and finish early (not late) | ||
# Separate discharge skew for discharge windows only | ||
inverter_clock_skew_start: 0 | ||
inverter_clock_skew_end: 0 | ||
inverter_clock_skew_discharge_start: 0 | ||
inverter_clock_skew_discharge_end: 0 | ||
|
||
# Clock skew adjusts the Appdaemon time | ||
# This is the time that Predbat takes actions like starting discharge/charging | ||
# Only use this for workarounds if your inverter time is correct but Predbat is somehow wrong (AppDaemon issue) | ||
# 1 means add 1 minute to AppDaemon time, -1 takes it away | ||
clock_skew: 0 | ||
|
||
# Solcast cloud interface, set this or the local interface below | ||
#solcast_host: 'https://api.solcast.com.au/' | ||
#solcast_api_key: 'xxxx' | ||
#solcast_poll_hours: 8 | ||
|
||
# Set these to match solcast sensor names if not using the cloud interface | ||
# The regular expression (re:) makes the solcast bit optional | ||
# If these don't match find your own names in Home Assistant | ||
pv_forecast_today: re:(sensor.(solcast_|)(pv_forecast_|)forecast_today) | ||
pv_forecast_tomorrow: re:(sensor.(solcast_|)(pv_forecast_|)forecast_tomorrow) | ||
pv_forecast_d3: re:(sensor.(solcast_|)(pv_forecast_|)forecast_(day_3|d3)) | ||
pv_forecast_d4: re:(sensor.(solcast_|)(pv_forecast_|)forecast_(day_4|d4)) | ||
|
||
# car_charging_energy defines an incrementing sensor which measures the charge added to your car | ||
# is used for car_charging_hold feature to filter out car charging from the previous load data | ||
# Automatically set to detect Wallbox and Zappi, if it doesn't match manually enter your sensor name | ||
# Also adjust car_charging_energy_scale if it's not in kwH to fix the units | ||
# car_charging_energy: 're:(sensor.myenergi_zappi_[0-9a-z]+_charge_added_session|sensor.wallbox_portal_added_energy)' | ||
|
||
num_cars: 0 | ||
|
||
# car_charging_planned is set to a sensor which when positive indicates the car will charged in the upcoming low rate slots | ||
# This should not be needed if you use Octopus Intelligent Slots which will take priority if enabled | ||
# The list of possible values is in car_charging_planned_response | ||
# Auto matches Zappi and Wallbox, or change it for your own | ||
# car_charging_planned: | ||
# - 're:(sensor.wallbox_portal_status_description|sensor.myenergi_zappi_[0-9a-z]+_plug_status)' | ||
# - 'connected' | ||
|
||
# car_charging_planned_response: | ||
# - 'yes' | ||
# - 'on' | ||
# - 'true' | ||
# - 'connected' | ||
# - 'ev connected' | ||
# - 'charging' | ||
# - 'paused' | ||
# - 'waiting for car demand' | ||
# - 'waiting for ev' | ||
# - 'scheduled' | ||
# - 'enabled' | ||
# - 'latched' | ||
# - 'locked' | ||
# - 'plugged in' | ||
|
||
# To make planned car charging more accurate, either using car_charging_planned or Octopus Intelligent | ||
# specify your battery size in kwh, charge limit % and current car battery soc % sensors/values | ||
# If you have intelligent the battery size and limit will be extracted from Intelligent directly | ||
# Set the car SOC% if you have it to give an accurate forecast of the cars battery levels | ||
# One entry per car if you have multiple cars | ||
# car_charging_battery_size: | ||
# - 75 | ||
# car_charging_limit: | ||
# - 're:number.tsunami_charge_limit' | ||
# car_charging_soc: | ||
# - 're:sensor.tsunami_battery' | ||
|
||
# If you have Octopus intelligent, enable the intelligent slot information to add to pricing | ||
# Will automatically disable if not found, or comment out to disable fully | ||
# When enabled it overrides the 'car_charging_planned' feature and predict the car charging based on the intelligent plan (unless octopus intelligent charging is False) | ||
# This matches either the intelligent slot from the Octopus Plugin or from the Intelligent plugin | ||
|
||
octopus_intelligent_slot: 're:(binary_sensor.octopus_energy_([0-9a-z_]+|)_intelligent_dispatching)' | ||
octopus_ready_time: 're:(time.octopus_energy_([0-9a-z_]+|)_intelligent_target_time)' | ||
octopus_charge_limit: 're:(number.octopus_energy([0-9a-z_]+|)_intelligent_charge_target)' | ||
|
||
# Carbon Intensity data from National grid | ||
carbon_intensity: 're:(sensor.carbon_intensity_uk)' | ||
|
||
# Example alternative configuration for Ohme integration release >=v0.6.1 | ||
#octopus_intelligent_slot: 'binary_sensor.ohme_slot_active' | ||
#octopus_ready_time: 'time.ohme_target_time' | ||
#octopus_charge_limit: 'number.ohme_target_percent' | ||
|
||
# Set this to False if you use Octopus Intelligent slot for car planning but when on another tariff e.g. Agile | ||
#octopus_slot_low_rate: False | ||
|
||
# Octopus saving session points to the saving session Sensor in the Octopus plugin, when enabled saving sessions will be at the assumed | ||
# Rate is read automatically from the add-in and converted to pence using the conversion rate below (default is 8) | ||
octopus_saving_session: 're:(binary_sensor.octopus_energy([0-9a-z_]+|)_saving_session(s|))' | ||
octopus_saving_session_octopoints_per_penny: 8 | ||
|
||
# Energy rates | ||
# Please set one of these three, if multiple are set then Octopus is used first, second rates_import/rates_export and latest basic metric | ||
|
||
# Set import and export entity to point to the Octopus Energy plugin | ||
# automatically matches your meter number assuming you have only one | ||
# Will be ignored if you don't have the sensor | ||
# Or manually set it to the correct sensor names e.g: | ||
# sensor.octopus_energy_electricity_xxxxxxxxxx_xxxxxxxxxxxxx_current_rate | ||
# sensor.octopus_energy_electricity_xxxxxxxxxx_xxxxxxxxxxxxx_export_current_rate | ||
metric_octopus_import: 're:(sensor.(octopus_energy_|)electricity_[0-9a-z]+_[0-9a-z]+_current_rate)' | ||
metric_octopus_export: 're:(sensor.(octopus_energy_|)electricity_[0-9a-z]+_[0-9a-z]+_export_current_rate)' | ||
|
||
# Standing charge can be set to a sensor (e.g. Octopus) or manually entered in pounds here (e.g. 0.50 is 50p) | ||
metric_standing_charge: 're:(sensor.(octopus_energy_|)electricity_[0-9a-z]+_[0-9a-z]+_current_standing_charge)' | ||
|
||
# Or set your actual rates across time for import and export | ||
# If start/end is missing it's assumed to be a fixed rate | ||
# Gaps are filled with 0 | ||
# rates_import: | ||
# - start: "23:30:00" | ||
# end: "05:30:00" | ||
# rate: 7.5 | ||
# - start: "05:30:00" | ||
# end: "23:30:00" | ||
# rate: 30.0 | ||
|
||
# rates_export: | ||
# - rate: 15.0 | ||
|
||
# Can be used instead of the plugin to get import rates directly online | ||
# Overrides metric_octopus_import and rates_import | ||
# rates_import_octopus_url : "https://api.octopus.energy/v1/products/FLUX-IMPORT-23-02-14/electricity-tariffs/E-1R-FLUX-IMPORT-23-02-14-A/standard-unit-rates" | ||
# rates_import_octopus_url : "https://api.octopus.energy/v1/products/AGILE-FLEX-BB-23-02-08/electricity-tariffs/E-1R-AGILE-FLEX-BB-23-02-08-A/standard-unit-rates" | ||
|
||
# Overrides metric_octopus_export and rates_export | ||
# rates_export_octopus_url: "https://api.octopus.energy/v1/products/FLUX-EXPORT-BB-23-02-14/electricity-tariffs/E-1R-FLUX-EXPORT-BB-23-02-14-A/standard-unit-rates" | ||
# rates_export_octopus_url: "https://api.octopus.energy/v1/products/AGILE-OUTGOING-BB-23-02-28/electricity-tariffs/E-1R-AGILE-OUTGOING-BB-23-02-28-A/standard-unit-rates/" | ||
# rates_export_octopus_url: "https://api.octopus.energy/v1/products/OUTGOING-FIX-12M-BB-23-02-09/electricity-tariffs/E-1R-OUTGOING-FIX-12M-BB-23-02-09-A/standard-unit-rates/" | ||
|
||
# Import rates can be overridden with rate_import_override | ||
# Export rates can be overridden with rate_export_override | ||
# Use the same format as above, but a date can be included if it just applies for a set day (e.g. Octopus power ups) | ||
# This will override even the Octopus plugin rates if enabled | ||
# | ||
#rates_import_override: | ||
# - date: '2023-09-10' | ||
# start: '14:00:00' | ||
# end: '14:30:00' | ||
# rate: 5 | ||
|
||
# For pv estimate, leave blank for central estimate, or add 10 for 10% curve (worst case) or 90 or 90% curve (best case) | ||
# If you use 10 then disable pv_metric10_weight below | ||
# pv_estimate: 10 | ||
|
||
# Days previous is the number of days back to find historical load data | ||
# Recommended is 7 to capture day of the week but 1 can also be used | ||
# if you have more history you could use 7 and 14 (in a list) but the standard data in HA only lasts 10 days | ||
days_previous: | ||
- 7 | ||
|
||
|
||
# Days previous weight can be used to control the weighting of the previous load points, the values are multiplied by their | ||
# weights and then divided through by the total weight. E.g. if you used 1 and 0.5 then the first value would have 2/3rd of the weight and the second 1/3rd | ||
days_previous_weight: | ||
- 1 | ||
|
||
# Number of hours forward to forecast, best left as-is unless you have specific reason | ||
forecast_hours: 30 | ||
|
||
# The number of hours ahead to count in charge planning (for cost estimates) | ||
# It's best to set this on your charge window repeat cycle (24) but you may want to set it higher for more variable | ||
# tariffs like Agile | ||
forecast_plan_hours: 30 | ||
|
||
# Specify the devices that notifies are sent to, the default is 'notify' which goes to all | ||
#notify_devices: | ||
# - mobile_app_treforsiphone12_2 | ||
|
||
# Set the frequency in minutes that this plugin is run | ||
# recommend something that divides by 60 (5, 10 or 15) or you won't trigger at the start of energy price slots | ||
run_every: 5 | ||
|
||
# Battery scaling makes the battery smaller (e.g. 0.9) or bigger than its reported | ||
# If you have an 80% DoD battery that falsely reports it's kwh then set it to 0.8 to report the real figures | ||
battery_scaling: 1.0 | ||
|
||
# Can be used to scale import and export data, used for workarounds | ||
import_export_scaling: 1.0 | ||
|
||
# Export triggers: | ||
# For each trigger give a name, the minutes of export needed and the energy required in that time | ||
# Multiple triggers can be set at once so in total you could use too much energy if all run | ||
# Creates an entity called 'binary_sensor.predbat_export_trigger_<name>' which will be turned On when the condition is valid | ||
# connect this to your automation to start whatever you want to trigger | ||
export_triggers: | ||
- name: 'large' | ||
minutes: 60 | ||
energy: 1.0 | ||
- name: 'small' | ||
minutes: 15 | ||
energy: 0.25 | ||
|
||
# Nordpool market energy rates | ||
#futurerate_url: 'https://dataportal-api.nordpoolgroup.com/api/DayAheadPrices?date=DATE&market=N2EX_DayAhead&deliveryArea=UK¤cy=GBP' | ||
#futurerate_adjust_import: False | ||
#futurerate_adjust_export: False | ||
#futurerate_peak_start: "16:00:00" | ||
#futurerate_peak_end: "19:00:00" | ||
#futurerate_peak_premium_import: 14 | ||
#futurerate_peak_premium_export: 6.5 | ||
|
||
# If you have a sensor that gives the energy consumed by your solar diverter then add it here | ||
# this will make the predictions more accurate. It should be an incrementing sensor, it can reset at midnight or not | ||
# It's assumed to be in Kwh but scaling can be applied if need be | ||
#iboost_energy_today: 'sensor.xxxxx' | ||
#iboost_energy_scaling: 1.0 |