Sentinela é um orquestrador Python para monitoramento de dados meteorológicos (INMET/local), análise de zonas (temperatura, umidade, vento, chuva, radiação, pressão) e envio de notificações via WhatsApp. Projetado para execução periódica via cron (intervalo padrão: 5 minutos).
- sentinela/
- main.py — Orquestrador principal
- config.py — Configurações centrais
- database.py — Acesso ao banco de dados (sqlite / sincronização)
- state_manager.py — Controle de estados e anti-spam
- zona_*.py — Regras por zona (temperatura, chuva, etc.)
- message_composer.py — Montagem de mensagens/relatórios
- send_whatsapp.py — Wrapper para envio via WhatsApp
- states.json — Estado runtime (normalmente ignorado no git)
- api/
- api_clima.py
- mysql_config.py
- sincro_db/
- clima_uberlandia.db — banco sqlite (NÃO comitar no repositório)
- Python 3.10+ (testado em 3.11)
- pip
- Virtualenv / venv recomendado
- Acesso à internet para API INMET (Config.API_URL)
- Credenciais / configuração do envio WhatsApp (ver
send_whatsapp.py)
-
Na máquina/servidor:
cd /var/www/clima python3 -m venv venv source venv/bin/activate pip install -r requirements.txtSe não existir
requirements.txt, instale manualmente as libs necessárias (requests, mysql-connector-python, etc.) -
Ajuste configurações:
- Edite
sentinela/config.pyse necessário (STATION_ID, WHATSAPP_NUMBERS etc.) - Prefira variáveis de ambiente para credenciais sensíveis (ex.: DB, tokens).
- Edite
-
Entrar no diretório da aplicação:
cd /var/www/clima/sentinela source ../venv/bin/activate # ajuste conforme seu venv python3 main.py -
Saída de logs por padrão vai para STDOUT — o cron sugerido (abaixo) redireciona para arquivo.
Executa a cada 5 minutos (ajuste paths conforme seu ambiente):
*/5 * * * * cd /var/www/clima/sentinela && /usr/bin/python3 main.py >> /var/www/clima/sentinela/main.log 2>&1
- NÃO versionar bancos de dados, arquivos com credenciais ou estados runtime.
- Armazenar credenciais em variáveis de ambiente ou um cofre (Vault).
- Se já comitou arquivos sensíveis, remova-os do histórico (BFG ou git filter-repo) e rotacione credenciais.
- Verifique que
api/venv,sentinela/__pycache__,*.db,*.logestates.jsonestejam ignorados pelo git.
- Sem leituras: verifique conectividade com a API e permissões ao DB.
- Erros ao enviar WhatsApp: rode
send_whatsapp.pycom-mpara debug. - Logs:
sentinela/main.logcontém saída agregada quando executado via cron.
- Abra issue descrevendo o problema/feature.
- Crie branch com prefixo
feature/oufix/. - Faça PR com descrição e testes.
Coloque aqui a licença do projeto (ex.: MIT) ou remova seção se quiser manter privado.
Repo mantido por: SistemasVox