Obrigado por considerar contribuir para o projeto ESP32-CAM Flood Monitor! Este documento fornece diretrizes para contribuições.
- Código de Conduta
- Como Posso Contribuir?
- Configuração do Ambiente
- Processo de Desenvolvimento
- Padrões de Código
- Processo de Pull Request
Este projeto adota o Contributor Covenant. Ao participar, você concorda em manter este código. Por favor, reporte comportamentos inaceitáveis para gabriel.passos@unesp.br.
Antes de criar um relatório de bug:
- Verifique a lista de issues
- Certifique-se de estar usando a versão mais recente
- Colete informações sobre o ambiente (ESP-IDF version, Python version, OS)
Para reportar um bug:
- Use o template de issue para bugs
- Inclua logs detalhados
- Descreva os passos para reproduzir
- Indique o comportamento esperado vs atual
Melhorias são rastreadas como issues do GitHub. Para sugerir:
- Use um título claro e descritivo
- Forneça uma descrição detalhada da melhoria sugerida
- Explique por que seria útil para a maioria dos usuários
- Liste exemplos de como seria usada
- Fork o repositório
- Crie uma branch (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Add: nova funcionalidade X') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
# ESP-IDF
esp-idf >= 5.0
# Python
python >= 3.8
pip install -r requirements.txt
# Hardware
- ESP32-CAM AI-Thinker
- FTDI USB-Serial# Clone o repositório
git clone https://github.com/seu-usuario/espCam_imageAnalysis.git
cd espCam_imageAnalysis
# ⚠️ ATENÇÃO: Use setup manual até ferramentas serem testadas
# Configure o ambiente manualmente:
cd src/firmware
idf.py build
cd ../server
python3 -m venv venv
source venv/bin/activate
pip install paho-mqtt matplotlib numpy scipy pillow
# ⚠️ Scripts automatizados ainda em BETA (não testados)
# ./tools/build/setup.sh # ← NÃO USE ainda✅ Componentes Testados:
- Firmware ESP32-CAM: Ambas versões (INTELLIGENT/SIMPLE) funcionando
- Servidor Python: Monitor científico estável
- Comunicação MQTT: Testada e estável
🚧 Componentes em Beta (NÃO testados):
- Scripts em
/tools/: Ferramentas de build, deployment, análise - Testes automatizados: Suite de testes ainda não validada
- CI/CD: Pipeline GitHub Actions não testado
Para contribuir com segurança:
- Use compilação manual do firmware via
idf.py - Execute servidor diretamente com
python3 mqtt_data_collector.py - Evite scripts automatizados até serem devidamente testados
- Teste suas mudanças manualmente antes de enviar PR
- Use o estilo K&R para chaves
- Identação: 4 espaços
- Nomes de funções: snake_case
- Constantes: UPPER_CASE
- Comentários em português são aceitos
// Exemplo
esp_err_t process_image_data(camera_fb_t *fb) {
if (!fb) {
ESP_LOGE(TAG, "Frame buffer inválido");
return ESP_ERR_INVALID_ARG;
}
// Processamento aqui
return ESP_OK;
}- Siga PEP 8
- Use type hints quando possível
- Docstrings obrigatórias para funções públicas
def process_mqtt_data(topic: str, payload: dict) -> bool:
"""
Processa dados MQTT recebidos.
Args:
topic: Tópico MQTT
payload: Dados em formato dict
Returns:
bool: True se processado com sucesso
"""
pass-
Certifique-se que:
- O código compila sem warnings
- Os testes passam
- A documentação foi atualizada
- O CHANGELOG.md foi atualizado
-
Título do PR:
feat:para novas funcionalidadesfix:para correçõesdocs:para documentaçãotest:para testesrefactor:para refatoração
-
Descrição deve incluir:
- Motivação para a mudança
- Descrição detalhada da implementação
- Screenshots/logs se aplicável
- Issues relacionadas
Use Conventional Commits:
feat: adiciona detecção de anomalias no buffer histórico
fix: corrige vazamento de memória na PSRAM
docs: atualiza guia de instalação para ESP-IDF 5.1
test: adiciona testes unitários para compare.c
refactor: otimiza algoritmo de comparação RGB565
Antes de submeter:
# Testes unitários
cd esp32
idf.py test
# Testes de integração
cd ../scripts
./run_tests.sh
# Análise estática
cppcheck esp32/main/
pylint server/- Atualize o README.md se necessário
- Documente novas APIs em
/docs/api/ - Adicione exemplos em
/examples/ - Atualize o CHANGELOG.md
- Abra uma discussion
- Entre em contato: gabriel.passos@unesp.br
- Consulte a documentação
Obrigado por contribuir! 🎉