Skip to content

Commit bc3d638

Browse files
authored
feat: add support to control led brightness (#389)
* feat: add support to control led brightness * formatting * remove return value * linting * formatting * update tests * formatting
1 parent f181215 commit bc3d638

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

openevsehttp/__main__.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -827,6 +827,28 @@ async def list_claims(self) -> Any:
827827
response = await self.process_request(url=url, method="get") # noqa: E501
828828
return response
829829

830+
async def set_led_brightness(self, level: int) -> None:
831+
"""Set LED brightness level."""
832+
if not self._version_check("4.1.0"):
833+
_LOGGER.debug("Feature not supported for older firmware.")
834+
raise UnsupportedFeature
835+
836+
url = f"{self.url}config"
837+
data: dict[str, Any] = {}
838+
839+
data["led_brightness"] = level
840+
_LOGGER.debug("Setting LED brightness to %s", level)
841+
await self.process_request(url=url, method="post", data=data) # noqa: E501
842+
843+
@property
844+
def led_brightness(self) -> str:
845+
"""Return charger led_brightness."""
846+
if not self._version_check("4.1.0"):
847+
_LOGGER.debug("Feature not supported for older firmware.")
848+
raise UnsupportedFeature
849+
assert self._config is not None
850+
return self._config["led_brightness"]
851+
830852
@property
831853
def hostname(self) -> str:
832854
"""Return charger hostname."""

tests/test_main.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1834,3 +1834,38 @@ async def test_checks_count(fixture, expected, request):
18341834
await charger.update()
18351835
status = charger.checks_count
18361836
assert status == expected
1837+
1838+
1839+
async def test_led_brightness(test_charger_new, test_charger_v2, caplog):
1840+
"""Test led_brightness reply."""
1841+
await test_charger_new.update()
1842+
status = test_charger_new.led_brightness
1843+
assert status == 125
1844+
1845+
await test_charger_v2.update()
1846+
with pytest.raises(UnsupportedFeature):
1847+
with caplog.at_level(logging.DEBUG):
1848+
status = await test_charger_v2.led_brightness
1849+
assert "Feature not supported for older firmware." in caplog.text
1850+
1851+
1852+
async def test_set_led_brightness(
1853+
test_charger_new, test_charger_v2, mock_aioclient, caplog
1854+
):
1855+
"""Test set_led_brightness reply."""
1856+
await test_charger_new.update()
1857+
value = '{"msg": "OK"}'
1858+
mock_aioclient.post(
1859+
TEST_URL_CONFIG,
1860+
status=200,
1861+
body=value,
1862+
)
1863+
with caplog.at_level(logging.DEBUG):
1864+
await test_charger_new.set_led_brightness(255)
1865+
assert "Setting LED brightness to 255" in caplog.text
1866+
1867+
await test_charger_v2.update()
1868+
with pytest.raises(UnsupportedFeature):
1869+
with caplog.at_level(logging.DEBUG):
1870+
await test_charger_v2.set_led_brightness(255)
1871+
assert "Feature not supported for older firmware." in caplog.text

0 commit comments

Comments
 (0)