Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion homeassistant/components/asuswrt/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
MAX_RETRY_TIME = 900

SECRET_GROUP = "Password or SSH Key"
SENSOR_TYPES = ["upload_speed", "download_speed", "download", "upload"]
SENSOR_TYPES = ["devices", "upload_speed", "download_speed", "download", "upload"]

CONFIG_SCHEMA = vol.Schema(
{
Expand Down
21 changes: 20 additions & 1 deletion homeassistant/components/asuswrt/sensor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
"""Asuswrt status sensors."""
import logging

from aioasuswrt.asuswrt import AsusWrt

from homeassistant.const import DATA_GIGABYTES, DATA_RATE_MEGABITS_PER_SECOND
from homeassistant.helpers.entity import Entity

Expand All @@ -18,6 +20,8 @@ async def async_setup_platform(hass, config, add_entities, discovery_info=None):

devices = []

if "devices" in discovery_info:
devices.append(AsuswrtDevicesSensor(api))
if "download" in discovery_info:
devices.append(AsuswrtTotalRXSensor(api))
if "upload" in discovery_info:
Expand All @@ -35,10 +39,12 @@ class AsuswrtSensor(Entity):

_name = "generic"

def __init__(self, api):
def __init__(self, api: AsusWrt):
"""Initialize the sensor."""
self._api = api
self._state = None
self._attributes = None
self._devices = None
self._rates = None
self._speed = None

Expand All @@ -54,10 +60,23 @@ def state(self):

async def async_update(self):
"""Fetch status from asuswrt."""
self._devices = await self._api.async_get_connected_devices()
self._rates = await self._api.async_get_bytes_total()
self._speed = await self._api.async_get_current_transfer_rates()


class AsuswrtDevicesSensor(AsuswrtSensor):
"""Representation of a asuswrt download speed sensor."""

_name = "Asuswrt Devices Connected"

async def async_update(self):
"""Fetch new state data for the sensor."""
await super().async_update()
if self._devices:
self._state = len(self._devices)


class AsuswrtRXSensor(AsuswrtSensor):
"""Representation of a asuswrt download speed sensor."""

Expand Down
8 changes: 7 additions & 1 deletion tests/components/asuswrt/test_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,13 @@
CONF_PROTOCOL: "ssh",
CONF_USERNAME: "fake_user",
CONF_PASSWORD: "fake_pass",
CONF_SENSORS: "upload",
CONF_SENSORS: [
"devices",
"download_speed",
"download",
"upload_speed",
"upload",
],
}
}

Expand Down