Skip to content

Commit

Permalink
Bugfix wrap of charge/discharge window times (#407)
Browse files Browse the repository at this point in the history
* Fix wrap condition on charge & discharge window

---------

Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
  • Loading branch information
springfall2008 and pre-commit-ci-lite[bot] authored Dec 2, 2023
1 parent 25643de commit ba74749
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion apps/predbat/predbat.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import appdaemon.plugins.hass.hassapi as hass
import adbase as ad

THIS_VERSION = "v7.13.21"
THIS_VERSION = "v7.13.22"
TIME_FORMAT = "%Y-%m-%dT%H:%M:%S%z"
TIME_FORMAT_SECONDS = "%Y-%m-%dT%H:%M:%S.%f%z"
TIME_FORMAT_OCTOPUS = "%Y-%m-%d %H:%M:%S%z"
Expand Down Expand Up @@ -8041,6 +8041,11 @@ def execute_plan(self):
)
minutes_start = inverter.charge_start_time_minutes

# Avoid having too long a period to configure as registers only support 24-hours
if (minutes_start < self.minutes_now) and ((minutes_end - minutes_start) >= 24 * 60):
minutes_start = int(self.minutes_now / 30) * 30
self.log("Move on charge window start time to avoid wrap - new start {}".format(self.time_abs_str(minutes_start)))

# Check if end is within 24 hours of now and end is in the future
if (minutes_end - self.minutes_now) < 24 * 60 and minutes_end > self.minutes_now:
charge_start_time = self.midnight_utc + timedelta(minutes=minutes_start)
Expand Down Expand Up @@ -8127,6 +8132,11 @@ def execute_plan(self):
)
minutes_start = inverter.discharge_start_time_minutes

# Avoid having too long a period to configure as registers only support 24-hours
if (minutes_start < self.minutes_now) and ((minutes_end - minutes_start) >= 24 * 60):
minutes_start = int(self.minutes_now / 30) * 30
self.log("Move on discharge window start time to avoid wrap - new start {}".format(self.time_abs_str(minutes_start)))

discharge_start_time = self.midnight_utc + timedelta(minutes=minutes_start)
discharge_end_time = self.midnight_utc + timedelta(minutes=(minutes_end + 1)) # Add in 1 minute margin to allow Predbat to restore ECO mode
discharge_soc = (self.discharge_limits_best[0] * self.soc_max) / 100.0
Expand Down

0 comments on commit ba74749

Please sign in to comment.