diff --git a/README.md b/README.md index db21d58..5da9010 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PV Opt: Home Assistant Solar/Battery Optimiser v3.17.0 +# PV Opt: Home Assistant Solar/Battery Optimiser v3.17.1

This documentation needs updating!

@@ -270,6 +270,7 @@ And add the `client_user` and `client_password` keys to `secrets.yaml` like this That's it. AppDaemon is up and running. There is futher documentation for the on the [Add-on](https://github.com/hassio-addons/addon-appdaemon/blob/main/appdaemon/DOCS.md) and for [AppDaemon](https://appdaemon.readthedocs.io/en/latest/) +

12. Install PV Opt from HACS

0. Make sure HACS "Enable AppDaemon apps discovery & tracking" is enabled - under integrations in HA https://hacs.xyz/docs/categories/appdaemon_apps/ @@ -621,6 +622,16 @@ The dashboards also depend on the following Frontend components from HACS: - apexcharts-card +

Known Issues

+ +

Docker MariaDB Cache Size

+ +If you are using MariaDB for your database in a standalone container (ie Docker or Proxmox) rather than the Home Assistnt Add-On you may find that AppDaemon struggles to pull in enough history with the default cache settings. + +MariaDB defaults to an in memory cache of 10MB. increasing `innodb_buffer_pool_size` to will allow more history to be transferred. This setting does not appear to be available in the Add-On configuration. + +Full details are here: https://github.com/fboundy/pv_opt/issues/270 +

Development - Adding Additional Inverters: the PV Opt API

PV Opt is designed to be pluggable. A simple API is used to control inverters. This is defined as follows: diff --git a/apps/pv_opt/config/config.yaml b/apps/pv_opt/config/config.yaml index bbff045..0c868c0 100644 --- a/apps/pv_opt/config/config.yaml +++ b/apps/pv_opt/config/config.yaml @@ -119,36 +119,36 @@ pv_opt: # ======================================== # Octopus account parameters # ======================================== - octopus_auto: False # Read tariffs from the Octopus Energy integration. If successful this over-rides the following parameters + # octopus_auto: False # Read tariffs from the Octopus Energy integration. If successful this over-rides the following parameters # octopus_account: !secret octopus_account # octopus_api_key: !secret octopus_api_key - manual_import_tariff: True - manual_import_tariff_name: Test Importe - manual_import_tariff_tz: GB - manual_import_tariff_standing: 43 - manual_import_tariff_unit: - - period_start: "00:00" - price: 4.2 - - period_start: "05:00" - price: 9.7 - - period_start: "16:00" - price: 77.0 - - period_start: "19:00" - price: -2.0 - - manual_export_tariff: True - manual_export_tariff_name: Test Export - manual_export_tariff_tz: GB - manual_export_tariff_unit: - - period_start: "01:00" - price: 14.2 - - period_start: "03:00" - price: 19.7 - - period_start: "16:00" - price: 50.0 - - period_start: "14:00" - price: 0.0 + # manual_import_tariff: True + # manual_import_tariff_name: Test Importe + # manual_import_tariff_tz: GB + # manual_import_tariff_standing: 43 + # manual_import_tariff_unit: + # - period_start: "00:00" + # price: 4.2 + # - period_start: "05:00" + # price: 9.7 + # - period_start: "16:00" + # price: 77.0 + # - period_start: "19:00" + # price: -2.0 + + # manual_export_tariff: True + # manual_export_tariff_name: Test Export + # manual_export_tariff_tz: GB + # manual_export_tariff_unit: + # - period_start: "01:00" + # price: 14.2 + # - period_start: "03:00" + # price: 19.7 + # - period_start: "16:00" + # price: 50.0 + # - period_start: "14:00" + # price: 0.0 # The following Can be omitted if either of the above options is working correctly: diff --git a/apps/pv_opt/pv_opt.py b/apps/pv_opt/pv_opt.py index a685d24..8a410db 100644 --- a/apps/pv_opt/pv_opt.py +++ b/apps/pv_opt/pv_opt.py @@ -12,7 +12,7 @@ from numpy import nan import re -VERSION = "3.17.0" +VERSION = "3.17.1" OCTOPUS_PRODUCT_URL = r"https://api.octopus.energy/v1/products/" @@ -183,7 +183,7 @@ "default": 4.0, "attributes": { "min": 0.0, - "max": 10.0, + "max": 20.0, "step": 0.5, "mode": "slider", }, @@ -1032,7 +1032,6 @@ def _check_tariffs(self): self.log( f" {direction.title()}: {tariff.name:40s} Start: {tariff.start().strftime(DATE_TIME_FORMAT_LONG)} End: {z} " ) - self.log(tariff.to_df().to_string()) if "AGILE" in tariff.name: self.agile = True if "INTELLI" in tariff.name: @@ -1232,9 +1231,10 @@ def _load_args(self, items=None): self.yaml_config[item] = self.config[item] elif "id_" in item: - self.log(f">>> Test: {self.entity_exists('update.home_assistant_core_update')}") - for v in values: - self.log(f">>> {item} {v} {self.entity_exists(v)}") + if self.debug: + self.log(f">>> Test: {self.entity_exists('update.home_assistant_core_update')}") + for v in values: + self.log(f">>> {item} {v} {self.entity_exists(v)}") if min([self.entity_exists(v) for v in values]): if len(values) == 1: self.config[item] = values[0] diff --git a/apps/pv_opt/pvpy.py b/apps/pv_opt/pvpy.py index afe5bab..325f349 100644 --- a/apps/pv_opt/pvpy.py +++ b/apps/pv_opt/pvpy.py @@ -190,13 +190,6 @@ def to_df(self, start=None, end=None, **kwargs): use_day_ahead = kwargs.get("day_ahead", ((start > time_now) or (end > time_now))) - # self.get_octopus(area=self.area, period_from=start, period_to=end) - # self.log(f">>> Name: {self.name}") - # self.log(f">>> Export: {self.export}") - # self.log(f">>> Manual: {self.manual}") - # self.log(f">>> Start: {start}") - # self.log(f">>> End: {end}") - if self.eco7: df = pd.concat( [pd.DataFrame(x).set_index("valid_from")["value_inc_vat"] for x in [self.day, self.night]],