You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# ISP Speed Notifier
An automated tool to monitor, record, and alert you about your Internet Service Provider's (ISP) performance inconsistencies.
## Why this exists?
I'm extremely annoyed at my ISP! Their service has been extremely inconsistent, speeds fluctuating drastically through the day, so I decided to create this tool in order to document how inconsistent their service is.
## Features
- **Automated Speed Tests**: Runs periodically to check your download, upload, and ping speeds.
- **Historical Data Logging**: Saves all test results to a local SQLite database (`speed_history.db`) for tracking performance over time.
- **Discord Alerts**: Automatically sends a webhook notification to a Discord channel if your speeds drop below your configured minimum thresholds.
- **Rich Notifications**: Discord alerts include an image of the speed test result, specific metrics, and which server was used.
- **Configurable**: Easily adjust minimum thresholds and testing intervals via a `.env` file.
## Prerequisites
- Python 3.8+
- [Discord Webhook URL](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks) (Optional, for alerts)
## Setup Instructions
1. **Clone the repository** (if you haven't already):
```bash
git clone https://github.com/yourusername/ISP-Speed-Notifier.git
cd ISP-Speed-Notifier
```
2. **Install dependencies**:
```bash
pip install -r requirements.txt
```
3. **Configure the application**:
- Copy the example environment file:
```bash
cp .env.example .env
```
- Edit the `.env` file with your specific requirements:
- `MIN_DOWNLOAD_SPEED`: The minimum acceptable download speed in Mbps before an alert is triggered.
- `MIN_UPLOAD_SPEED`: The minimum acceptable upload speed in Mbps.
- `TEST_INTERVAL`: How often the test should run (in minutes).
- `DISCORD_WEBHOOK_URL`: Your Discord channel webhook URL.
## Usage
### Run as a Background Service
To run the automated scheduler that will periodically test and monitor your speeds:
```bash
python main.py
```
This will initialize the database, perform an immediate speed test, and then continue running based on your configured `TEST_INTERVAL`.
### Run a Single Manual Test
If you just want to run a one-off test without the scheduler or alerting system:
```bash
python speed_test.py
```
## Reviewing Historical Data
All results are stored locally in `speed_history.db`. You can use any standard SQLite viewer (like [DB Browser for SQLite](https://sqlitebrowser.org/)) to open this file and view, graph, or export your historical speed data.
About
Keep tabs on your ISP. Perform speed test through the day and perform different actions when the speed goes below a predetermined threshold.