Skip to content

Commit 69e4b41

Browse files
Minor fix to published filtered window only
1 parent 3702d38 commit 69e4b41

1 file changed

Lines changed: 22 additions & 19 deletions

File tree

predbat.py

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -916,8 +916,6 @@ def run_prediction(self, charge_limit, charge_window, discharge_window, discharg
916916
self.set_state("predbat.soc_kw_best_h8", state=self.dp3(predict_soc[60*8]), attributes = {'friendly_name' : 'Predicted SOC kwh best + 8h', 'state_class': 'measurement', 'unit_of_measurement': 'kwh', 'icon' : 'mdi:battery'})
917917
self.set_state("predbat.soc_kw_best_h12", state=self.dp3(predict_soc[60*12]), attributes = {'friendly_name' : 'Predicted SOC kwh best + 12h', 'state_class': 'measurement', 'unit_of_measurement': 'kwh', 'icon' : 'mdi:battery'})
918918
self.set_state("predbat.best_soc_min_kwh", state=self.dp3(soc_min), attributes = {'friendly_name' : 'Predicted minimum SOC best', 'state_class': 'measurement', 'unit_of_measurement': 'kwh', 'icon' : 'mdi:battery-arrow-down-outline'})
919-
self.publish_charge_limit(charge_limit, charge_window, charge_limit_percent, best=True)
920-
self.publish_discharge_limit(discharge_window, discharge_enable, best=True)
921919
self.set_state("predbat.best_export_energy", state=self.dp3(export_kwh), attributes = {'results' : export_kwh_time, 'friendly_name' : 'Predicted exports best', 'state_class': 'measurement', 'unit_of_measurement': 'kwh', 'icon': 'mdi:transmission-tower-export'})
922920
self.set_state("predbat.best_load_energy", state=self.dp3(load_kwh), attributes = {'friendly_name' : 'Predicted load best', 'state_class': 'measurement', 'unit_of_measurement': 'kwh', 'icon' : 'mdi:home-lightning-bolt'})
923921
self.set_state("predbat.best_pv_energy", state=self.dp3(pv_kwh), attributes = {'results' : pv_kwh_time, 'friendly_name' : 'Predicted PV best', 'state_class': 'measurement', 'unit_of_measurement': 'kwh', 'icon': 'mdi:solar-power'})
@@ -1926,24 +1924,29 @@ def update_pred(self):
19261924
self.discharge_enable_best[window_n] = best_discharge
19271925

19281926

1929-
# Final simulation of best, do 10% and normal scenario
1930-
best_metric10, self.charge_limit_percent_best10, import_kwh_battery10, import_kwh_house10, export_kwh10, soc_min10, soc10 = self.run_prediction(self.charge_limit_best, self.charge_window_best, self.discharge_window_best, self.discharge_enable_best, load_minutes, pv_forecast_minute10, save='best10')
1931-
best_metric, self.charge_limit_percent_best, import_kwh_battery, import_kwh_house, export_kwh, soc_min, soc = self.run_prediction(self.charge_limit_best, self.charge_window_best, self.discharge_window_best, self.discharge_enable_best, load_minutes, pv_forecast_minute, save='best')
1932-
self.log("Best charging limit socs {} export {} gives import battery {} house {} export {} metric {} metric10 {}".format
1933-
(self.charge_limit_best, self.discharge_enable_best, self.dp2(import_kwh_battery), self.dp2(import_kwh_house), self.dp2(export_kwh), self.dp2(best_metric), self.dp2(best_metric10)))
1934-
1935-
# Filter out any unused charge windows
1936-
if self.get_arg('set_charge_window', False):
1937-
self.charge_limit_best, self.charge_window_best = self.discard_unused_charge_slots(self.charge_limit_best, self.charge_window_best, self.reserve)
1938-
self.log("Filtered charge windows {} {} reserve {}".format(self.charge_limit_best, self.charge_window_best, self.reserve))
1939-
else:
1940-
self.log("Unfiltered charge windows {} {} reserve {}".format(self.charge_limit_best, self.charge_window_best, self.reserve))
1927+
if self.get_arg('calculate_best', False):
1928+
# Final simulation of best, do 10% and normal scenario
1929+
best_metric10, self.charge_limit_percent_best10, import_kwh_battery10, import_kwh_house10, export_kwh10, soc_min10, soc10 = self.run_prediction(self.charge_limit_best, self.charge_window_best, self.discharge_window_best, self.discharge_enable_best, load_minutes, pv_forecast_minute10, save='best10')
1930+
best_metric, self.charge_limit_percent_best, import_kwh_battery, import_kwh_house, export_kwh, soc_min, soc = self.run_prediction(self.charge_limit_best, self.charge_window_best, self.discharge_window_best, self.discharge_enable_best, load_minutes, pv_forecast_minute, save='best')
1931+
self.log("Best charging limit socs {} export {} gives import battery {} house {} export {} metric {} metric10 {}".format
1932+
(self.charge_limit_best, self.discharge_enable_best, self.dp2(import_kwh_battery), self.dp2(import_kwh_house), self.dp2(export_kwh), self.dp2(best_metric), self.dp2(best_metric10)))
1933+
1934+
# Filter out any unused charge windows
1935+
if self.get_arg('set_charge_window', False):
1936+
self.charge_limit_best, self.charge_window_best = self.discard_unused_charge_slots(self.charge_limit_best, self.charge_window_best, self.reserve)
1937+
self.log("Filtered charge windows {} {} reserve {}".format(self.charge_limit_best, self.charge_window_best, self.reserve))
1938+
else:
1939+
self.log("Unfiltered charge windows {} {} reserve {}".format(self.charge_limit_best, self.charge_window_best, self.reserve))
19411940

1942-
# Filter out any unused discharge windows
1943-
if self.get_arg('set_discharge_window', False) and self.discharge_window_best:
1944-
# Filter out the windows we disabled
1945-
self.discharge_enable_best, self.discharge_window_best = self.discard_unused_discharge_slots(self.discharge_enable_best, self.discharge_window_best)
1946-
self.log("Discharge windows now {} {}".format(self.discharge_enable_best, self.discharge_window_best))
1941+
# Filter out any unused discharge windows
1942+
if self.get_arg('set_discharge_window', False) and self.discharge_window_best:
1943+
# Filter out the windows we disabled
1944+
self.discharge_enable_best, self.discharge_window_best = self.discard_unused_discharge_slots(self.discharge_enable_best, self.discharge_window_best)
1945+
self.log("Discharge windows now {} {}".format(self.discharge_enable_best, self.discharge_window_best))
1946+
1947+
# Publish charge and discharge window best
1948+
self.publish_charge_limit(self.charge_limit_best, self.charge_window_best, self.charge_limit_percent_best, best=True)
1949+
self.publish_discharge_limit(self.discharge_window_best, self.discharge_enable_best, best=True)
19471950

19481951
status = "Idle"
19491952
for inverter in self.inverters:

0 commit comments

Comments
 (0)