Skip to content

Commit c2ba639

Browse files
authored
fix: use existing override and limits when setting new ones (#406)
* fix: use existing override and limits when setting new ones * version bump
1 parent 7ce6777 commit c2ba639

File tree

2 files changed

+72
-10
lines changed

2 files changed

+72
-10
lines changed

openevsehttp/__main__.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ async def set_override(
397397
raise UnsupportedFeature
398398
url = f"{self.url}override"
399399

400-
data: dict[str, Any] = {}
400+
data: dict[str, Any] = await self.get_override()
401401

402402
if state not in ["active", "disabled", None]:
403403
_LOGGER.error("Invalid override state: %s", state)
@@ -644,7 +644,6 @@ def _version_check(self, min_version: str, max_version: str = "") -> bool:
644644
return False
645645

646646
# HTTP Posting of grid voltage
647-
648647
async def grid_voltage(self, voltage: int | None = None) -> None:
649648
"""Send pushed sensor data to grid voltage."""
650649
if not self._version_check("4.0.0"):
@@ -665,7 +664,6 @@ async def grid_voltage(self, voltage: int | None = None) -> None:
665664
_LOGGER.debug("Voltage posting response: %s", response)
666665

667666
# Self production HTTP Posting
668-
669667
async def self_production(
670668
self,
671669
grid: int | None = None,
@@ -743,7 +741,7 @@ async def set_limit(
743741
raise UnsupportedFeature
744742

745743
url = f"{self.url}limit"
746-
data: Dict[str, Any] = {}
744+
data: Dict[str, Any] = await self.get_limit()
747745
valid_types = ["time", "energy", "soc", "range"]
748746

749747
if limit_type not in valid_types:

tests/test_main.py

Lines changed: 70 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,19 @@ async def test_wifi_serial(fixture, expected, request):
860860
async def test_set_current(test_charger, mock_aioclient, caplog):
861861
"""Test v4 Status reply."""
862862
await test_charger.update()
863+
value = {
864+
"state": "active",
865+
"charge_current": 0,
866+
"max_current": 0,
867+
"energy_limit": 0,
868+
"time_limit": 0,
869+
"auto_release": True,
870+
}
871+
mock_aioclient.get(
872+
TEST_URL_OVERRIDE,
873+
status=200,
874+
body=json.dumps(value),
875+
)
863876
mock_aioclient.post(
864877
TEST_URL_OVERRIDE,
865878
status=200,
@@ -875,6 +888,20 @@ async def test_set_current_error(
875888
):
876889
"""Test v4 Status reply."""
877890
await test_charger.update()
891+
value = {
892+
"state": "active",
893+
"charge_current": 0,
894+
"max_current": 0,
895+
"energy_limit": 0,
896+
"time_limit": 0,
897+
"auto_release": True,
898+
}
899+
mock_aioclient.get(
900+
TEST_URL_OVERRIDE,
901+
status=200,
902+
body=json.dumps(value),
903+
repeat=True,
904+
)
878905
mock_aioclient.post(
879906
TEST_URL_OVERRIDE,
880907
status=200,
@@ -913,6 +940,19 @@ async def test_set_current_v2(
913940

914941
await test_charger_dev.update()
915942
value = {"msg": "OK"}
943+
value = {
944+
"state": "active",
945+
"charge_current": 0,
946+
"max_current": 0,
947+
"energy_limit": 0,
948+
"time_limit": 0,
949+
"auto_release": True,
950+
}
951+
mock_aioclient.get(
952+
TEST_URL_OVERRIDE,
953+
status=200,
954+
body=json.dumps(value),
955+
)
916956
mock_aioclient.post(
917957
TEST_URL_OVERRIDE,
918958
status=200,
@@ -1257,6 +1297,20 @@ async def test_set_override(
12571297
):
12581298
"""Test set override function."""
12591299
await test_charger.update()
1300+
value = {
1301+
"state": "active",
1302+
"charge_current": 0,
1303+
"max_current": 0,
1304+
"energy_limit": 0,
1305+
"time_limit": 0,
1306+
"auto_release": True,
1307+
}
1308+
mock_aioclient.get(
1309+
TEST_URL_OVERRIDE,
1310+
status=200,
1311+
body=json.dumps(value),
1312+
repeat=True,
1313+
)
12601314
mock_aioclient.post(
12611315
TEST_URL_OVERRIDE,
12621316
status=200,
@@ -1265,7 +1319,10 @@ async def test_set_override(
12651319
with caplog.at_level(logging.DEBUG):
12661320
status = await test_charger.set_override("active")
12671321
assert status == {"msg": "OK"}
1268-
assert "Override data: {'auto_release': True, 'state': 'active'}" in caplog.text
1322+
assert (
1323+
"Override data: {'state': 'active', 'charge_current': 0, 'max_current': 0, 'energy_limit': 0, 'time_limit': 0, 'auto_release': True}"
1324+
in caplog.text
1325+
)
12691326

12701327
mock_aioclient.post(
12711328
TEST_URL_OVERRIDE,
@@ -1274,7 +1331,7 @@ async def test_set_override(
12741331
)
12751332
status = await test_charger.set_override("active", 30)
12761333
assert (
1277-
"Override data: {'auto_release': True, 'state': 'active', 'charge_current': 30}"
1334+
"Override data: {'state': 'active', 'charge_current': 30, 'max_current': 0, 'energy_limit': 0, 'time_limit': 0, 'auto_release': True}"
12781335
in caplog.text
12791336
)
12801337
mock_aioclient.post(
@@ -1284,7 +1341,8 @@ async def test_set_override(
12841341
)
12851342
status = await test_charger.set_override(charge_current=30)
12861343
assert (
1287-
"Override data: {'auto_release': True, 'charge_current': 30}" in caplog.text
1344+
"Override data: {'state': 'active', 'charge_current': 30, 'max_current': 0, 'energy_limit': 0, 'time_limit': 0, 'auto_release': True}"
1345+
in caplog.text
12881346
)
12891347
mock_aioclient.post(
12901348
TEST_URL_OVERRIDE,
@@ -1293,7 +1351,7 @@ async def test_set_override(
12931351
)
12941352
status = await test_charger.set_override("active", 30, 32)
12951353
assert (
1296-
"Override data: {'auto_release': True, 'state': 'active', 'charge_current': 30, 'max_current': 32}"
1354+
"Override data: {'state': 'active', 'charge_current': 30, 'max_current': 32, 'energy_limit': 0, 'time_limit': 0, 'auto_release': True}"
12971355
in caplog.text
12981356
)
12991357
mock_aioclient.post(
@@ -1303,7 +1361,7 @@ async def test_set_override(
13031361
)
13041362
status = await test_charger.set_override("active", 30, 32, 2000)
13051363
assert (
1306-
"Override data: {'auto_release': True, 'state': 'active', 'charge_current': 30, 'max_current': 32, 'energy_limit': 2000}"
1364+
"Override data: {'state': 'active', 'charge_current': 30, 'max_current': 32, 'energy_limit': 2000, 'time_limit': 0, 'auto_release': True}"
13071365
in caplog.text
13081366
)
13091367
mock_aioclient.post(
@@ -1313,7 +1371,7 @@ async def test_set_override(
13131371
)
13141372
status = await test_charger.set_override("active", 30, 32, 2000, 5000)
13151373
assert (
1316-
"Override data: {'auto_release': True, 'state': 'active', 'charge_current': 30, 'max_current': 32, 'energy_limit': 2000, 'time_limit': 5000}"
1374+
"Override data: {'state': 'active', 'charge_current': 30, 'max_current': 32, 'energy_limit': 2000, 'time_limit': 5000, 'auto_release': True}"
13171375
in caplog.text
13181376
)
13191377

@@ -1697,6 +1755,12 @@ async def test_set_limit(
16971755
):
16981756
"""Test set limit."""
16991757
await test_charger_modified_ver.update()
1758+
mock_aioclient.get(
1759+
TEST_URL_LIMIT,
1760+
status=200,
1761+
body='{"type": "energy", "value": 10}',
1762+
repeat=True,
1763+
)
17001764
mock_aioclient.post(
17011765
TEST_URL_LIMIT,
17021766
status=200,

0 commit comments

Comments
 (0)