mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-06-02 16:26:50 +00:00
129 lines
4.4 KiB
Markdown
129 lines
4.4 KiB
Markdown
---
|
||
title: Speedtest.net
|
||
description: How to integrate Speedtest.net within Home Assistant.
|
||
ha_category:
|
||
- System Monitor
|
||
- Sensor
|
||
ha_release: 0.13
|
||
ha_iot_class: Cloud Polling
|
||
ha_config_flow: true
|
||
ha_codeowners:
|
||
- '@rohankapoorcom'
|
||
- '@engrbm87'
|
||
ha_domain: speedtestdotnet
|
||
---
|
||
|
||
The `speedtestdotnet` integration uses the [Speedtest.net](https://speedtest.net/) web service to measure network bandwidth performance.
|
||
|
||
By default, a speed test will be run every hour. The user can change the update frequency in the configuration by defining the `scan_interval` for a speed test to run.
|
||
|
||
Most Speedtest.net servers require TCP port 8080 outbound to function. Without this port open you may experience significant delays or no results at all. See note on their [help page](https://www.speedtest.net/help).
|
||
|
||
## Configuration
|
||
|
||
Set up the integration through **Configuration -> Integrations -> Speedtest.net**. Once configured you can select the server to run the test against, from the options menu. You can also change the update interval and optionally disable auto-update.
|
||
|
||
|
||
To import the configuration from `configuration.yaml` refer to the below example.
|
||
|
||
```yaml
|
||
# Example configuration.yaml entry
|
||
speedtestdotnet:
|
||
```
|
||
|
||
For the `server_id` check the list of [available servers](https://speedtest.net/speedtest-servers.php).
|
||
|
||
{% configuration %}
|
||
server_id:
|
||
description: Specify the speed test server to perform the test against.
|
||
required: false
|
||
type: integer
|
||
scan_interval:
|
||
description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)."
|
||
required: false
|
||
default: 60 minutes
|
||
type: time
|
||
manual:
|
||
description: "`true` or `false` to turn manual mode on or off. Manual mode will disable scheduled speed tests."
|
||
required: false
|
||
type: boolean
|
||
default: false
|
||
{% endconfiguration %}
|
||
|
||
## Integration Sensors
|
||
|
||
The following sensors are added by the integration:
|
||
|
||
sensors:
|
||
- Ping sensor: Reaction time in ms of your connection (how fast you get a response after you’ve sent out a request).
|
||
- Download sensor: The download speed (Mbit/s).
|
||
- Upload sensor: The upload speed (Mbit/s).
|
||
|
||
### Time period dictionary example
|
||
|
||
```yaml
|
||
scan_interval:
|
||
# At least one of these must be specified:
|
||
days: 0
|
||
hours: 0
|
||
minutes: 3
|
||
seconds: 30
|
||
milliseconds: 0
|
||
```
|
||
|
||
### Service
|
||
|
||
Once loaded, the `speedtestdotnet` integration will expose a service (`speedtestdotnet.speedtest`) that can be called to run a Speedtest.net speed test on demand. This service takes no parameters. This can be useful if you have enabled manual mode.
|
||
|
||
```yaml
|
||
action:
|
||
service: speedtestdotnet.speedtest
|
||
```
|
||
|
||
This integration uses [speedtest-cli](https://github.com/sivel/speedtest-cli) to gather network performance data from Speedtest.net.
|
||
Please be aware of the potential [inconsistencies](https://github.com/sivel/speedtest-cli#inconsistency) that this integration may display.
|
||
|
||
## Examples
|
||
|
||
In this section you will find some real-life examples of how to use this component.
|
||
|
||
### Run periodically
|
||
|
||
Every half hour of every day:
|
||
|
||
```yaml
|
||
# Example configuration.yaml entry
|
||
speedtestdotnet:
|
||
scan_interval:
|
||
minutes: 30
|
||
```
|
||
|
||
### Using as a trigger in an automation
|
||
|
||
{% raw %}
|
||
```yaml
|
||
# Example configuration.yaml entry
|
||
automation:
|
||
- alias: "Internet Speed Glow Connect Great"
|
||
trigger:
|
||
- platform: template
|
||
value_template: "{{ states('sensor.speedtest_download')|float >= 10 }}"
|
||
action:
|
||
- service: shell_command.green
|
||
|
||
- alias: "Internet Speed Glow Connect Poor"
|
||
trigger:
|
||
- platform: template
|
||
value_template: "{{ states('sensor.speedtest_download')|float < 10 }}"
|
||
action:
|
||
- service: shell_command.red
|
||
```
|
||
{% endraw %}
|
||
|
||
## Notes
|
||
|
||
- When running on Raspberry Pi the maximum speed is limited by the LAN adapter. The Raspberry Pi 3+ models come with a Gigabit LAN adapter which supports a [maximum throughput](https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/) of 300 Mbit/s.
|
||
- Running this integration can have negative effects on the system's performance as it requires a fair amount of memory.
|
||
- If run frequently, this integration has the ability to use a considerable amount of data. Frequent updates should be avoided on bandwidth-capped connections.
|
||
- While the speedtest is running your network capacity is fully utilized. This may have a negative effect on other devices using the network such as gaming consoles or streaming boxes.
|