diff --git a/apps/predbat/predbat.py b/apps/predbat/predbat.py index f1bf80f6..ec48abb3 100644 --- a/apps/predbat/predbat.py +++ b/apps/predbat/predbat.py @@ -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" @@ -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) @@ -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