|
17 | 17 |
|
18 | 18 | from .const import ( |
19 | 19 | ATTR_DOWNLOAD, |
| 20 | + ATTR_DOWNLOAD_LATENCY_IQM, |
| 21 | + ATTR_DOWNLOAD_LATENCY_LOW, |
| 22 | + ATTR_DOWNLOAD_LATENCY_HIGH, |
| 23 | + ATTR_DOWNLOAD_LATENCY_JITTER, |
20 | 24 | ATTR_ISP, |
21 | 25 | ATTR_JITTER, |
22 | 26 | ATTR_PING, |
| 27 | + ATTR_PING_LOW, |
| 28 | + ATTR_PING_HIGH, |
23 | 29 | ATTR_SERVER, |
24 | 30 | ATTR_UPLOAD, |
| 31 | + ATTR_UPLOAD_LATENCY_IQM, |
| 32 | + ATTR_UPLOAD_LATENCY_LOW, |
| 33 | + ATTR_UPLOAD_LATENCY_HIGH, |
| 34 | + ATTR_UPLOAD_LATENCY_JITTER, |
25 | 35 | CONF_MANUAL, |
26 | 36 | CONF_SCAN_INTERVAL, |
27 | 37 | CONF_SERVER_ID, |
@@ -91,15 +101,33 @@ async def _async_update_data(self) -> dict[str, Any] | None: |
91 | 101 | _LOGGER.debug("Result from speedtest invocation: %s", result) |
92 | 102 |
|
93 | 103 | return { |
| 104 | + # ping { jitter, latency, low, high} |
94 | 105 | 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 }} |
95 | 110 | 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 }} |
96 | 116 | 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 } |
98 | 125 | ATTR_SERVER: ( |
| 126 | + # produces: Boost Mobile (Chicago, IL, United States) |
99 | 127 | f"{result['server']['name']} " |
100 | 128 | f"({result['server']['location']}, {result['server']['country']})" |
101 | 129 | ), |
102 | | - ATTR_ISP: result["isp"], |
| 130 | + # result { id, url, persisted } |
103 | 131 | } |
104 | 132 | except subprocess.CalledProcessError as e: |
105 | 133 | _LOGGER.error("Speedtest failed: %s. Command: %s", e.stderr, " ".join(cmd)) |
|
0 commit comments