# ------------------------------------------------------------------ # This is an example configuration, please modify it # ------------------------------------------------------------------ --- 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 #template: True # Currency, symbol for main currency second symbol for 1/100s e.g. $ c or £ p or e c currency_symbols: - '£' - 'p' # When True predbat records to a local database db_enable: True db_days: 30 db_mirror_ha: True db_primary: True # 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 # Sets the maximum period of zero load before the gap is filled, default 30 minutes # To disable set it to 1440 load_filter_threshold: 30 # # If you enable ge_cloud_data then the load/import and export data will be fetches from the GE cloud instead of from GivTCP sensors # this is usually less efficient and of course prone to internet downtime, but could be useful if you lost your GivTCP data # Set the serial to the inverter serial to pull the data from and the key to your API key # When this is set load_today, import_today and export_today are not used # ge_cloud_data: True ge_cloud_key: 'xxxxx' ge_cloud_direct: True ge_cloud_automatic: True # # Controls/status - must by 1 per inverter # num_inverters: 1 # # Inverter max AC limit (one per inverter). E.g for a 3.6kw inverter set to 3600 # If you have a second inverter for PV only please add the two values together inverter_limit: - 3600 #inverter_limit_charge: # - input_number.boiler_flow_max # - input_number.boiler_flow_max # 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 # 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: - 25 # Workaround to limit the maximum reserve setting, some inverters won't allow 100% to be set # Comment out if your inverter allows 100% # inverter_reserve_max : 98 # 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) # The example below is from GE 9.5kwh battery with latest firmware and gen1 inverter battery_charge_power_curve: 100 : 0.15 99 : 0.15 98 : 0.23 97 : 0.3 96 : 0.42 95 : 0.49 94 : 0.55 93 : 0.69 92 : 0.79 91 : 0.89 90 : 0.96 battery_discharge_power_curve: 4: 1.0 # 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: 6.2 # 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 # If using PredAI you will need to subtract this inside PredAI also #car_charging_energy: 're:(sensor.myenergi_zappi_[0-9a-z]+_charge_added_session|sensor.wallbox_portal_added_energy)' # Defines the number of cars modelled by the system, set to 0 for no car num_cars: 1 # 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 Intelligent Octopus 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 # One entry per car car_charging_planned: - 'on' 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' - 'waiting' # In some cases car planning is difficult (e.g. Ohme with Intelligent doesn't report slots) # The car charging now can be set to a sensor to indicate the car is charging and to plan # for it to charge during this 30 minute slot #car_charging_now: # - off # Positive responses for car_charging_now car_charging_now_response: - 'yes' - 'on' - 'true' # To make planned car charging more accurate, either using car_charging_planned or the Octopus Energy plugin, # specify your battery size in kwh, charge limit % and current car battery soc % sensors/values. # If you have Intelligent Octopus the battery size and limit will be extracted from the Octopus Energy plugin 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 # - 75 #car_charging_limit: # - 're:number.tsunami_charge_limit' # - 75 #car_charging_soc: # - 're:sensor.tsunami_battery' # - 15 # When true only one car can charge at once, when False multiple cars can charge at once #car_charging_exclusive: # - True octopus_saving_session_octopoints_per_penny: 8 # Octopus free session points to the free session Sensor in the Octopus plugin # Note: You must enable this event sensor in the Octopus Integration in Home Assistant for it to work octopus_free_url: 'http://octopus.energy/free-electricity' # 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 import and export sensors octopus_api_key: 'xxxx' octopus_api_account: 'A-yyyyy' # Standing charge in pounds, can be set to a sensor or manually entered (e.g. 0.50 is 50p) # The default below will pick up the standing charge from the Octopus Plugin # The standing charge only impacts the cost graphs and doesn't change the way Predbat plans # If you don't want to show the standing charge then just delete this line or set to zero #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 zero rate #rates_import: # - start: "23:30:00" # end: "05:30:00" # rate: 7.5 # - start: "05:30:00" # end: "23:30:00" # rate: 26.78 #rates_export: # - rate: 15.0 # Alert feeds alerts: url: "https://feeds.meteoalarm.org/feeds/meteoalarm-legacy-atom-united-kingdom" event: "(Yellow|Orange|Red).*(Wind|Snow|Fog|Rain|Thunderstorm|Avalanche|Frost|Heat|Coastal event|Flood|Forestfire|Ice|Low temperature|Storm|Tornado|Tsunami|Volcano|Wildfire)" severity: "Severe|Extreme" certainty: "Likely|Expected" keep: 40 # 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-L/standard-unit-rates" #rates_import_octopus_url : "https://api.octopus.energy/v1/products/AGILE-24-10-01/electricity-tariffs/E-1R-AGILE-24-10-01-L/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-L/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-L/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-L/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: '2025-02-11' # start: '14:00:00' # end: '16:30:00' # rate: 0 # load_scaling: 1.0 # To improve on saving sessions avoid export during peak periods #rates_export_override: # - start: '17:00:00' # end: '19:00:00' # rate_increment: -1 # 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: - 5 - 6 - 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 # Include one value for each days_previous value, each weighting on a separate line. # If any days_previous's that are not given a weighting they will assume a default weighting of 1. days_previous_weight: - 1 # Number of hours forward to forecast, best left as-is unless you have specific reason forecast_hours: 48 # Specify the devices that notifies are sent to, the default is 'notify' which goes to all #notify_devices: # - mobile_app_treforsiphone12_2 # 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 # 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 # If using PredAI you will need to subtract this inside PredAI also # iboost_energy_today: 'sensor.xxxx' # Gas rates for comparison #metric_octopus_gas: 're:(sensor.(octopus_energy_|)gas_[0-9a-z]+_[0-9a-z]+_current_rate)' #rates_gas: # rate: 9.9 # 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: True #futurerate_adjust_export: False #futurerate_peak_start: "16:00:00" #futurerate_peak_end: "19:00:00"