3.1 KiB
3.1 KiB
📡 WiFi ETL Pipeline
🚧 Em construção 🚧 Este projeto está em desenvolvimento. Este primeiro commit contém a estrutura base do pipeline ETL.
🧠 Visão Geral
Este projeto tem como objetivo realizar a ingestão periódica de dados de duas APIs distintas:
- API de Autenticação (WiFeed) → Nome, CPF, sexo, MAC
- API do Access Point (Ruijie) → MAC, tempo conectado, AP
Os dados serão cruzados pelo MAC Address e persistidos em um banco PostgreSQL para análise e consulta.
⚙️ Arquitetura
flowchart TD
A["Cron (Docker)\na cada 5 minutos"]
B["Python ETL Script"]
C["API Autenticação\nnome, cpf, sexo, MAC"]
D["API do AP\nMAC, tempo, AP"]
E["Transform\nmerge pelo MAC"]
F["PostgreSQL\nusers + sessions"]
A --> B
B --> C
B --> D
C --> E
D --> E
E --> F
Fluxo
- Execução automática a cada 5 minutos (cron via Docker)
- Extração dos dados das APIs
- Transformação (merge pelo MAC + normalização)
- Carga no banco PostgreSQL
🏗️ Estrutura do Projeto
app/
├── core/ # Configurações e conexão com banco
│ ├── config.py
│ └── db.py
│
├── extractor/ # Extração das APIs externas
│ ├── ruijie.py
│ └── wifeed.py
│
├── transform/ # Regras de transformação
│ └── merge_mac.py
│
├── load/ # Persistência no banco
│ └── load_database.py
│
└── main.py # Orquestrador do pipeline
infra/
├── Dockerfile
├── docker-compose.yml
└── crontab
.env.example
requirements.txt
README.md
🚀 Como executar
⚠️ Observação: o projeto ainda está em fase inicial e algumas partes podem não estar totalmente implementadas.
1. Clonar o repositório
git clone <seu-repo>
cd wifi-etl
2. Configurar variáveis de ambiente
Crie um .env baseado no exemplo:
cp .env.example .env
Preencha com suas credenciais:
DB_HOST=
DB_PORT=5432
DB_NAME=
DB_USER=
DB_PASSWORD=
RUIJIE_BASE_URL=
RUIJIE_API_KEY=
WIFEED_BASE_URL=
WIFEED_API_KEY=
3. Subir o ambiente
docker-compose up --build -d
4. Execução
O pipeline será executado automaticamente a cada 5 minutos via cron.
🗄️ Modelo de Dados (planejado)
Tabela: users
- nome
- cpf
- sexo
- mac
Tabela: sessions
- mac
- access_point
- tempo_conectado
- timestamp
🔄 Processo ETL
Extract
Coleta dados das APIs Ruijie e WiFeed
Transform
- Normalização de dados
- Merge pelo MAC Address
Load
Inserção e/ou atualização no PostgreSQL
📦 Tecnologias
- Python
- Docker
- PostgreSQL
- Requests
📌 Roadmap
- Estrutura inicial do projeto
- Integração com APIs
- Implementação do transform (merge por MAC)
- Persistência no banco
- Logging e tratamento de erros
- Deploy automatizado (CI/CD)