2021-09-30 06:28:04 +00:00
|
|
|
"""Constants used by Speedtest.net."""
|
2021-08-02 15:00:25 +00:00
|
|
|
from __future__ import annotations
|
|
|
|
|
2021-11-25 21:23:48 +00:00
|
|
|
from collections.abc import Callable
|
2021-09-30 06:28:04 +00:00
|
|
|
from dataclasses import dataclass
|
2021-11-25 21:23:48 +00:00
|
|
|
from typing import Final
|
2021-07-22 10:25:54 +00:00
|
|
|
|
2021-12-20 16:16:20 +00:00
|
|
|
from homeassistant.components.sensor import SensorEntityDescription, SensorStateClass
|
2021-12-04 12:43:48 +00:00
|
|
|
from homeassistant.const import (
|
|
|
|
DATA_RATE_MEGABITS_PER_SECOND,
|
|
|
|
TIME_MILLISECONDS,
|
|
|
|
Platform,
|
|
|
|
)
|
2020-02-13 16:52:58 +00:00
|
|
|
|
2021-07-22 10:25:54 +00:00
|
|
|
DOMAIN: Final = "speedtestdotnet"
|
2020-06-10 16:33:48 +00:00
|
|
|
|
2021-07-22 10:25:54 +00:00
|
|
|
SPEED_TEST_SERVICE: Final = "speedtest"
|
2019-02-04 08:47:04 +00:00
|
|
|
|
2021-09-30 06:28:04 +00:00
|
|
|
|
|
|
|
@dataclass
|
|
|
|
class SpeedtestSensorEntityDescription(SensorEntityDescription):
|
|
|
|
"""Class describing Speedtest sensor entities."""
|
|
|
|
|
|
|
|
value: Callable = round
|
|
|
|
|
|
|
|
|
|
|
|
SENSOR_TYPES: Final[tuple[SpeedtestSensorEntityDescription, ...]] = (
|
|
|
|
SpeedtestSensorEntityDescription(
|
2021-08-02 15:00:25 +00:00
|
|
|
key="ping",
|
|
|
|
name="Ping",
|
2021-08-12 15:40:55 +00:00
|
|
|
native_unit_of_measurement=TIME_MILLISECONDS,
|
2021-12-20 16:16:20 +00:00
|
|
|
state_class=SensorStateClass.MEASUREMENT,
|
2021-08-02 15:00:25 +00:00
|
|
|
),
|
2021-09-30 06:28:04 +00:00
|
|
|
SpeedtestSensorEntityDescription(
|
2021-08-02 15:00:25 +00:00
|
|
|
key="download",
|
|
|
|
name="Download",
|
2021-08-12 15:40:55 +00:00
|
|
|
native_unit_of_measurement=DATA_RATE_MEGABITS_PER_SECOND,
|
2021-12-20 16:16:20 +00:00
|
|
|
state_class=SensorStateClass.MEASUREMENT,
|
2022-02-05 13:19:37 +00:00
|
|
|
value=lambda value: round(value / 10**6, 2),
|
2021-08-02 15:00:25 +00:00
|
|
|
),
|
2021-09-30 06:28:04 +00:00
|
|
|
SpeedtestSensorEntityDescription(
|
2021-08-02 15:00:25 +00:00
|
|
|
key="upload",
|
|
|
|
name="Upload",
|
2021-08-12 15:40:55 +00:00
|
|
|
native_unit_of_measurement=DATA_RATE_MEGABITS_PER_SECOND,
|
2021-12-20 16:16:20 +00:00
|
|
|
state_class=SensorStateClass.MEASUREMENT,
|
2022-02-05 13:19:37 +00:00
|
|
|
value=lambda value: round(value / 10**6, 2),
|
2021-08-02 15:00:25 +00:00
|
|
|
),
|
|
|
|
)
|
2020-06-10 16:33:48 +00:00
|
|
|
|
2021-07-22 10:25:54 +00:00
|
|
|
CONF_SERVER_NAME: Final = "server_name"
|
|
|
|
CONF_SERVER_ID: Final = "server_id"
|
|
|
|
CONF_MANUAL: Final = "manual"
|
|
|
|
|
|
|
|
ATTR_BYTES_RECEIVED: Final = "bytes_received"
|
|
|
|
ATTR_BYTES_SENT: Final = "bytes_sent"
|
|
|
|
ATTR_SERVER_COUNTRY: Final = "server_country"
|
|
|
|
ATTR_SERVER_ID: Final = "server_id"
|
|
|
|
ATTR_SERVER_NAME: Final = "server_name"
|
2020-06-10 16:33:48 +00:00
|
|
|
|
|
|
|
|
2021-07-22 10:25:54 +00:00
|
|
|
DEFAULT_NAME: Final = "SpeedTest"
|
|
|
|
DEFAULT_SCAN_INTERVAL: Final = 60
|
|
|
|
DEFAULT_SERVER: Final = "*Auto Detect"
|
2020-06-10 16:33:48 +00:00
|
|
|
|
2021-07-22 10:25:54 +00:00
|
|
|
ATTRIBUTION: Final = "Data retrieved from Speedtest.net by Ookla"
|
2020-06-10 16:33:48 +00:00
|
|
|
|
2021-07-22 10:25:54 +00:00
|
|
|
ICON: Final = "mdi:speedometer"
|
2020-06-10 16:33:48 +00:00
|
|
|
|
2021-12-04 12:43:48 +00:00
|
|
|
PLATFORMS: Final = [Platform.SENSOR]
|