From 8b46174667a711d1d371749b9caf1e9895a50450 Mon Sep 17 00:00:00 2001 From: sophof Date: Mon, 22 Aug 2022 09:02:05 +0200 Subject: [PATCH] Add NZBGet speed limit sensor (#77104) * Added sensor for download rate limit * Added test for speed limit --- homeassistant/components/nzbget/sensor.py | 8 ++++++++ tests/components/nzbget/__init__.py | 1 + tests/components/nzbget/test_sensor.py | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/homeassistant/components/nzbget/sensor.py b/homeassistant/components/nzbget/sensor.py index a1097389020..941c528f544 100644 --- a/homeassistant/components/nzbget/sensor.py +++ b/homeassistant/components/nzbget/sensor.py @@ -74,6 +74,11 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = ( name="Uptime", device_class=SensorDeviceClass.TIMESTAMP, ), + SensorEntityDescription( + key="DownloadLimit", + name="Speed Limit", + native_unit_of_measurement=DATA_RATE_MEGABYTES_PER_SECOND, + ), ) @@ -127,6 +132,9 @@ class NZBGetSensor(NZBGetEntity, SensorEntity): elif "DownloadRate" in sensor_type and value > 0: # Convert download rate from Bytes/s to MBytes/s self._native_value = round(value / 2**20, 2) + elif "DownloadLimit" in sensor_type and value > 0: + # Convert download rate from Bytes/s to MBytes/s + self._native_value = round(value / 2**20, 2) elif "UpTimeSec" in sensor_type and value > 0: uptime = utcnow().replace(microsecond=0) - timedelta(seconds=value) if not isinstance(self._attr_native_value, datetime) or abs( diff --git a/tests/components/nzbget/__init__.py b/tests/components/nzbget/__init__.py index 331b45e3de8..4446ac0cd55 100644 --- a/tests/components/nzbget/__init__.py +++ b/tests/components/nzbget/__init__.py @@ -49,6 +49,7 @@ MOCK_STATUS = { "PostPaused": False, "RemainingSizeMB": 512, "UpTimeSec": 600, + "DownloadLimit": 1000000, } MOCK_HISTORY = [ diff --git a/tests/components/nzbget/test_sensor.py b/tests/components/nzbget/test_sensor.py index 290414ab0ff..9cedf29c82e 100644 --- a/tests/components/nzbget/test_sensor.py +++ b/tests/components/nzbget/test_sensor.py @@ -40,6 +40,12 @@ async def test_sensors(hass, nzbget_api) -> None: "post_processing_paused": ("PostPaused", "False", None, None), "queue_size": ("RemainingSizeMB", "512", DATA_MEGABYTES, None), "uptime": ("UpTimeSec", uptime.isoformat(), None, SensorDeviceClass.TIMESTAMP), + "speed_limit": ( + "DownloadLimit", + "0.95", + DATA_RATE_MEGABYTES_PER_SECOND, + None, + ), } for (sensor_id, data) in sensors.items():