Esta é uma API que executa testes de velocidade da internet usando o speedtest
, armazena os resultados em um banco de dados MySQL e mostra os dados mais recentes em um widget no pfSense.
As seguintes dependências são necessárias para o funcionamento da API:
Flask
: Framework web para Python.mysql-connector-python
: Conector MySQL para Python.python-dotenv
: Carrega variáveis de ambiente a partir de um arquivo.env
.pytz
: Módulo para manipulação de fusos horários.
Para realizar os testes de velocidade, você precisa instalar o speedtest
.
Informações de instalação estão disponíveis em: Speedtest CLI Installation.
Após a instalação use os comandos:
speedtest --accept-license
speedtest --accept-gdpr
-
Acesse o MariaDB:
Abra o terminal e execute o seguinte comando para acessar o MariaDB:
mysql -u root -p
-
Criar o Banco de Dados:
CREATE DATABASE speedtest_db; USE speedtest_db;
-
Criar a tabela
test_results
:CREATE TABLE test_results ( id INT AUTO_INCREMENT PRIMARY KEY, timestamp DATETIME NOT NULL, ping_latency FLOAT NOT NULL, download_bandwidth BIGINT NOT NULL, upload_bandwidth BIGINT NOT NULL, packet_loss FLOAT NOT NULL, server_name VARCHAR(255) NOT NULL, location VARCHAR(255) NOT NULL, country VARCHAR(255) NOT NULL );
-
Criar o usuário de serviço e permitir acesso:
CREATE USER 'seu_usuario'@'localhost' IDENTIFIED BY 'suasenha'; GRANT ALL PRIVILEGES ON speedtest_db.* TO 'seu_usuario'@'localhost';
-
Instale as dependências usando PIP:
pip install -r requirements.txt
-
Edite o arquivo
.env
:- Renomeie o
.env.example
para.env
e ajuste as informações necessárias.
- Renomeie o
-
Crie um cron para rodar o teste a cada 10 minutos:
- Abra o crontab:
crontab -e
- Insira a linha ao final do arquivo:
*/10 * * * * /usr/bin/python3 /caminhodoclone/app.py
- Salve e saia do arquivo.
-
Crie um serviço para a API:
- Crie um arquivo chamado
apidataspeedtest.service
no diretório/etc/systemd/system/
:
sudo nano /etc/systemd/system/apidataspeedtest.service
- Adicione o seguinte conteúdo ao arquivo:
[Unit] Description=API dados SpeedTest After=network.target [Service] ExecStart=/usr/bin/python3 /caminhodoclone/api.py WorkingDirectory=/caminhodoclone/ StandardOutput=journal StandardError=journal Restart=always [Install] WantedBy=multi-user.target
- Certifique-se de substituir
/caminhodoclone/api.py
pelo caminho real do seu arquivoapi.py
.
- Crie um arquivo chamado
-
Habilite e inicie o serviço:
sudo systemctl enable apidataspeedtest.service sudo systemctl start apidataspeedtest.service
-
Verifique o status do serviço:
sudo systemctl status apidataspeedtest.service
- Execute o comando:
curl -o /usr/local/www/widgets/widgets/speedtest.widget.php https://raw.githubusercontent.com/itsfks/speedtest-widget-pfsense/refs/heads/main/pfsensewidget.php