Skip to content

Commit b916d23

Browse files
mqtt: publish price difference updates immediately (#347)
1 parent 352eee7 commit b916d23

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

src/batcontrol/core.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,6 +1041,8 @@ def api_set_min_price_difference(self, min_price_difference: float):
10411041
logger.info(
10421042
'API: Setting min price difference to %.3f', min_price_difference)
10431043
self.min_price_difference = min_price_difference
1044+
if self.mqtt_api is not None:
1045+
self.mqtt_api.publish_min_price_difference(min_price_difference)
10441046

10451047
def api_set_min_price_difference_rel(
10461048
self, min_price_difference_rel: float):
@@ -1054,6 +1056,10 @@ def api_set_min_price_difference_rel(
10541056
'API: Setting min price rel difference to %.3f',
10551057
min_price_difference_rel)
10561058
self.min_price_difference_rel = min_price_difference_rel
1059+
if self.mqtt_api is not None:
1060+
self.mqtt_api.publish_min_price_difference_rel(
1061+
min_price_difference_rel
1062+
)
10571063

10581064
def api_set_production_offset(self, production_offset: float):
10591065
""" Set production offset percentage from external API request.

tests/batcontrol/test_core.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,24 @@ def test_run_clears_override_and_publishes_inactive_state(self, run_dispatch_set
650650
assert bc.api_overwrite is False
651651
assert bc.mqtt_api.publish_api_override_active.call_args_list[-1] == call(False)
652652

653+
def test_api_set_min_price_difference_publishes_immediately(self, run_dispatch_setup):
654+
bc, _mock_inverter, _fake_logic = run_dispatch_setup
655+
bc.mqtt_api = MagicMock()
656+
657+
bc.api_set_min_price_difference(0.075)
658+
659+
assert bc.min_price_difference == 0.075
660+
bc.mqtt_api.publish_min_price_difference.assert_called_once_with(0.075)
661+
662+
def test_api_set_min_price_difference_rel_publishes_immediately(self, run_dispatch_setup):
663+
bc, _mock_inverter, _fake_logic = run_dispatch_setup
664+
bc.mqtt_api = MagicMock()
665+
666+
bc.api_set_min_price_difference_rel(0.15)
667+
668+
assert bc.min_price_difference_rel == 0.15
669+
bc.mqtt_api.publish_min_price_difference_rel.assert_called_once_with(0.15)
670+
653671
def test_refresh_static_values_publishes_current_control_state(self, run_dispatch_setup):
654672
bc, _mock_inverter, _fake_logic = run_dispatch_setup
655673
bc.mqtt_api = MagicMock()

0 commit comments

Comments
 (0)