Skip to content

Commit cf9eeae

Browse files
authored
Merge pull request #6 from ndrwrbgs/new_sensors
2 parents 6cfcd26 + f7dcb57 commit cf9eeae

3 files changed

Lines changed: 92 additions & 2 deletions

File tree

custom_components/ookla_speedtest/__init__.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,21 @@
1717

1818
from .const import (
1919
ATTR_DOWNLOAD,
20+
ATTR_DOWNLOAD_LATENCY_IQM,
21+
ATTR_DOWNLOAD_LATENCY_LOW,
22+
ATTR_DOWNLOAD_LATENCY_HIGH,
23+
ATTR_DOWNLOAD_LATENCY_JITTER,
2024
ATTR_ISP,
2125
ATTR_JITTER,
2226
ATTR_PING,
27+
ATTR_PING_LOW,
28+
ATTR_PING_HIGH,
2329
ATTR_SERVER,
2430
ATTR_UPLOAD,
31+
ATTR_UPLOAD_LATENCY_IQM,
32+
ATTR_UPLOAD_LATENCY_LOW,
33+
ATTR_UPLOAD_LATENCY_HIGH,
34+
ATTR_UPLOAD_LATENCY_JITTER,
2535
CONF_MANUAL,
2636
CONF_SCAN_INTERVAL,
2737
CONF_SERVER_ID,
@@ -91,15 +101,33 @@ async def _async_update_data(self) -> dict[str, Any] | None:
91101
_LOGGER.debug("Result from speedtest invocation: %s", result)
92102

93103
return {
104+
# ping { jitter, latency, low, high}
94105
ATTR_PING: round(result["ping"]["latency"], 2),
106+
ATTR_JITTER: round(result["ping"]["jitter"], 2),
107+
ATTR_PING_LOW: round(result["ping"]["low"], 2),
108+
ATTR_PING_HIGH: round(result["ping"]["high"], 2),
109+
# download { bandwidth, bytes, elapsed, latency { iqm, low, high, jitter }}
95110
ATTR_DOWNLOAD: round(result["download"]["bandwidth"] * 8 / 1000000, 2),
111+
ATTR_DOWNLOAD_LATENCY_IQM: round(result["download"]["latency"]["iqm"], 2),
112+
ATTR_DOWNLOAD_LATENCY_LOW: round(result["download"]["latency"]["low"], 2),
113+
ATTR_DOWNLOAD_LATENCY_HIGH: round(result["download"]["latency"]["high"], 2),
114+
ATTR_DOWNLOAD_LATENCY_JITTER: round(result["download"]["latency"]["jitter"], 2),
115+
# upload { bandwidth, bytes, elapsed, latency { iqm, low, high, jitter }}
96116
ATTR_UPLOAD: round(result["upload"]["bandwidth"] * 8 / 1000000, 2),
97-
ATTR_JITTER: round(result["ping"]["jitter"], 2),
117+
ATTR_UPLOAD_LATENCY_IQM: round(result["upload"]["latency"]["iqm"], 2),
118+
ATTR_UPLOAD_LATENCY_LOW: round(result["upload"]["latency"]["low"], 2),
119+
ATTR_UPLOAD_LATENCY_HIGH: round(result["upload"]["latency"]["high"], 2),
120+
ATTR_UPLOAD_LATENCY_JITTER: round(result["upload"]["latency"]["jitter"], 2),
121+
# isp
122+
ATTR_ISP: result["isp"],
123+
# interface { internalIp, name, macAddr, isVpn, externalIp }
124+
# server { id, host, port, name, location, country, ip }
98125
ATTR_SERVER: (
126+
# produces: Boost Mobile (Chicago, IL, United States)
99127
f"{result['server']['name']} "
100128
f"({result['server']['location']}, {result['server']['country']})"
101129
),
102-
ATTR_ISP: result["isp"],
130+
# result { id, url, persisted }
103131
}
104132
except subprocess.CalledProcessError as e:
105133
_LOGGER.error("Speedtest failed: %s. Command: %s", e.stderr, " ".join(cmd))

custom_components/ookla_speedtest/const.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,18 @@
1919

2020
# Sensor attributes
2121
ATTR_PING = "ping"
22+
ATTR_PING_LOW = "ping low"
23+
ATTR_PING_HIGH = "ping high"
2224
ATTR_DOWNLOAD = "download"
25+
ATTR_DOWNLOAD_LATENCY_IQM = "ping during download"
26+
ATTR_DOWNLOAD_LATENCY_LOW = "ping low during download"
27+
ATTR_DOWNLOAD_LATENCY_HIGH = "ping high during download"
28+
ATTR_DOWNLOAD_LATENCY_JITTER = "jitter during download"
2329
ATTR_UPLOAD = "upload"
30+
ATTR_UPLOAD_LATENCY_IQM = "ping during upload"
31+
ATTR_UPLOAD_LATENCY_LOW = "ping low during upload"
32+
ATTR_UPLOAD_LATENCY_HIGH = "ping high during upload"
33+
ATTR_UPLOAD_LATENCY_JITTER = "jitter during upload"
2434
ATTR_JITTER = "jitter"
2535
ATTR_SERVER = "server"
2636
ATTR_ISP = "isp"

custom_components/ookla_speedtest/sensor.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,21 @@
2020
from . import SpeedtestCoordinator
2121
from .const import (
2222
ATTR_DOWNLOAD,
23+
ATTR_DOWNLOAD_LATENCY_IQM,
24+
ATTR_DOWNLOAD_LATENCY_LOW,
25+
ATTR_DOWNLOAD_LATENCY_HIGH,
26+
ATTR_DOWNLOAD_LATENCY_JITTER,
2327
ATTR_ISP,
2428
ATTR_JITTER,
2529
ATTR_PING,
30+
ATTR_PING_LOW,
31+
ATTR_PING_HIGH,
2632
ATTR_SERVER,
2733
ATTR_UPLOAD,
34+
ATTR_UPLOAD_LATENCY_IQM,
35+
ATTR_UPLOAD_LATENCY_LOW,
36+
ATTR_UPLOAD_LATENCY_HIGH,
37+
ATTR_UPLOAD_LATENCY_JITTER,
2838
DOMAIN,
2939
)
3040

@@ -43,6 +53,30 @@ async def async_setup_entry(
4353
OoklaSpeedtestSensor(
4454
coordinator, entry, ATTR_PING, "Ping", UnitOfTime.MILLISECONDS, "mdi:speedometer"
4555
),
56+
OoklaSpeedtestSensor(
57+
coordinator, entry, ATTR_PING_LOW, "Ping Min", UnitOfTime.MILLISECONDS, "mdi:speedometer", enabled_default = False
58+
),
59+
OoklaSpeedtestSensor(
60+
coordinator, entry, ATTR_PING_HIGH, "Ping Max", UnitOfTime.MILLISECONDS, "mdi:speedometer", enabled_default = False
61+
),
62+
OoklaSpeedtestSensor(
63+
coordinator, entry, ATTR_DOWNLOAD_LATENCY_IQM, "Download Ping", UnitOfTime.MILLISECONDS, "mdi:speedometer", enabled_default = False
64+
),
65+
OoklaSpeedtestSensor(
66+
coordinator, entry, ATTR_DOWNLOAD_LATENCY_LOW, "Download Ping Min", UnitOfTime.MILLISECONDS, "mdi:speedometer", enabled_default = False
67+
),
68+
OoklaSpeedtestSensor(
69+
coordinator, entry, ATTR_DOWNLOAD_LATENCY_HIGH, "Download Ping Max", UnitOfTime.MILLISECONDS, "mdi:speedometer", enabled_default = False
70+
),
71+
OoklaSpeedtestSensor(
72+
coordinator, entry, ATTR_UPLOAD_LATENCY_IQM, "Upload Ping", UnitOfTime.MILLISECONDS, "mdi:speedometer", enabled_default = False
73+
),
74+
OoklaSpeedtestSensor(
75+
coordinator, entry, ATTR_UPLOAD_LATENCY_LOW, "Upload Ping Min", UnitOfTime.MILLISECONDS, "mdi:speedometer", enabled_default = False
76+
),
77+
OoklaSpeedtestSensor(
78+
coordinator, entry, ATTR_UPLOAD_LATENCY_HIGH, "Upload Ping Max", UnitOfTime.MILLISECONDS, "mdi:speedometer", enabled_default = False
79+
),
4680
OoklaSpeedtestSensor(
4781
coordinator,
4882
entry,
@@ -67,6 +101,24 @@ async def async_setup_entry(
67101
UnitOfTime.MILLISECONDS,
68102
"mdi:pulse",
69103
),
104+
OoklaSpeedtestSensor(
105+
coordinator,
106+
entry,
107+
ATTR_DOWNLOAD_LATENCY_JITTER,
108+
"Download Jitter",
109+
UnitOfTime.MILLISECONDS,
110+
"mdi:pulse",
111+
enabled_default = False,
112+
),
113+
OoklaSpeedtestSensor(
114+
coordinator,
115+
entry,
116+
ATTR_UPLOAD_LATENCY_JITTER,
117+
"Upload Jitter",
118+
UnitOfTime.MILLISECONDS,
119+
"mdi:pulse",
120+
enabled_default = False,
121+
),
70122
OoklaSpeedtestSensor(
71123
coordinator, entry, ATTR_SERVER, "Server", None, "mdi:server"
72124
),

0 commit comments

Comments
 (0)