@@ -878,7 +878,7 @@ def optimise_charge_limit(self, window_n, record_charge_windows, charge_window,
878878 metric += metric_diff
879879
880880 self .debug_enable = was_debug
881- if self .debug_enable :
881+ if self .debug_enable or 1 :
882882 self .log ("Tried soc {} for window {} gives import battery {} house {} export {} min_soc {} cost {} metric {} metricmid {} metric10 {}" .format
883883 (try_soc , window_n , self .dp2 (import_kwh_battery ), self .dp2 (import_kwh_house ), self .dp2 (export_kwh ), self .dp2 (soc_min ), self .dp2 (cost ), self .dp2 (metric ), self .dp2 (metricmid ), self .dp2 (metric10 )))
884884
@@ -1021,15 +1021,21 @@ def update_pred(self):
10211021 charge_start_time = datetime .strptime (self .get_state (self .args ['charge_start_time' ]), "%H:%M:%S" )
10221022 charge_end_time = datetime .strptime (self .get_state (self .args ['charge_end_time' ]), "%H:%M:%S" )
10231023
1024+
10241025 # Compute charge window minutes start/end just for the next charge window
10251026 self .charge_start_time_minutes = charge_start_time .hour * 60 + charge_start_time .minute
10261027 self .charge_end_time_minutes = charge_end_time .hour * 60 + charge_end_time .minute
1028+
10271029 if self .charge_end_time_minutes < self .charge_start_time_minutes :
1028- self .charge_end_time_minutes += 60 * 24
1030+ # As windows wrap, if end is in the future then move start back, otherwise forward
1031+ if self .charge_end_time_minutes > self .minutes_now :
1032+ self .charge_start_time_minutes -= 60 * 24
1033+ else :
1034+ self .charge_end_time_minutes += 60 * 24
10291035
10301036 # Construct charge window from the GivTCP settings
10311037 self .charge_window = []
1032- minute = self .charge_start_time_minutes
1038+ minute = max ( 0 , self .charge_start_time_minutes ) # Max is here is start could be before midnight now
10331039 minute_end = self .charge_end_time_minutes
10341040
10351041 while minute < self .forecast_minutes :
0 commit comments