https://github.com/hellyaxs/phs-uabj
Sistema de Inventário e Movimentação com RFID
https://github.com/hellyaxs/phs-uabj
docker fastapi mosquitto-mqtt-broker python
Last synced: 5 months ago
JSON representation
Sistema de Inventário e Movimentação com RFID
- Host: GitHub
- URL: https://github.com/hellyaxs/phs-uabj
- Owner: hellyaxs
- Created: 2025-05-07T17:04:31.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-30T01:44:26.000Z (11 months ago)
- Last Synced: 2025-08-15T20:18:21.619Z (10 months ago)
- Topics: docker, fastapi, mosquitto-mqtt-broker, python
- Language: Python
- Homepage:
- Size: 111 KB
- Stars: 0
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto Hardware e software
Este projeto é uma demonstração de integração com o broker MQTT Mosquitto usando Python.
## 🚀 Tecnologias





## 📋 Pré-requisitos
- Python 3.8+
- Docker
- Docker Compose
## 🔧 Instalação
### Usando Docker Compose
1. Clone o repositório:
```bash
git clone https://github.com/seu-usuario/demo_mosquitto.git
cd demo_mosquitto
```
2. Configure as variáveis de ambiente:
```bash
# Copie o arquivo de exemplo
cp .env.example .env
# Edite o arquivo .env com suas configurações
nano .env
```
3. Execute o projeto com Docker Compose:
```bash
docker-compose up -d
```
O projeto estará disponível em:
- Aplicação: http://localhost:8000
- MQTT Broker: localhost:1883
### 🔐 Usuário Padrão
O sistema automaticamente cria um usuário padrão através das migrations do Alembic:
- **Email**: `admin@exemplo.com`
- **Senha**: `senha123`
- **Nome**: `Administrador`
**Nota**: O usuário padrão é criado automaticamente durante a execução das migrations do banco de dados.
### 🧪 Testando a Persistência
Para testar se a persistência de mensagens está funcionando corretamente:
```bash
# Instalar dependência para o teste
pip install paho-mqtt
# Executar o script de teste
python test_persistencia.py
```
O script irá:
1. Publicar mensagens com QoS 1
2. Simular um serviço offline
3. Conectar um novo subscriber
4. Verificar se as mensagens foram recuperadas
### 📊 Monitoramento
Para verificar os logs e dados persistentes:
```bash
# Ver logs do Mosquitto
docker logs demo_mosquitto-mosquitto-1
# Entrar no container para verificar dados
docker exec -it demo_mosquitto-mosquitto-1 sh
ls -la /mosquitto/data/
tail -f /mosquitto/log/mosquitto.log
```
### Desenvolvimento Local
1. Clone o repositório:
```bash
git clone https://github.com/seu-usuario/demo_mosquitto.git
cd demo_mosquitto
```
2. Crie e ative um ambiente virtual:
```bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
.\venv\Scripts\activate # Windows
```
3. Instale as dependências:
```bash
pip install -r requirements.txt
```
4. Execute o projeto:
```bash
fastapi dev src/main.py
```
## 🔧 Tecnologias Utilizadas
| Componente | Tecnologia | Descrição |
|----------------|------------|----------------------------------------------|
| Aplicação | Python | Aplicação principal com FastAPI |
| Broker MQTT | Mosquitto | Broker MQTT para comunicação em tempo real |
| Container | Docker | Containerização da aplicação |
## 📋 Funcionalidades
### ✅ Persistência de Mensagens MQTT
- **Mensagens persistentes**: As mensagens são armazenadas em disco mesmo quando não há clientes conectados
- **Recuperação automática**: Quando o serviço volta online, recebe todas as mensagens não processadas
- **QoS configurável**: Suporte a diferentes níveis de qualidade de serviço (0, 1, 2)
- **Mensagens retidas**: Suporte a mensagens que são enviadas automaticamente para novos subscribers
| Orquestração | Docker Compose | Gerenciamento dos containers |
| Banco de Dados | PostgreSQL | Armazenamento persistente de dados |
---
## 📁 Estrutura do Projeto
```tree
demo_mosquitto/
├── migrations/ # Migrations do banco de dados
├── src/
│ ├── domain/ # Entidades e regras de negócio
│ ├── repository/ # Camada de acesso a dados
│ ├── services/ # Serviços e lógica de aplicação
│ ├── events/ # Handlers de eventos e mensagens MQTT
│ ├── config/ # Configurações da aplicação
│ │ ├── database/
│ │ ├── mosquitto/
│ │ └── settings.py
│ └── main.py # Ponto de entrada da aplicação
├── docs/ # Documentação adicional
├── Dockerfile
├── docker-compose.yaml
├── requirements.txt
├── .env.example # Variaveis de ambiente do projeto
└── README.md
```
## 🤝 Como Contribuir
1. Faça um Fork do projeto
2. Crie uma Branch para sua Feature (`git checkout -b feature/AmazingFeature`)
3. Faça o Commit das suas mudanças (`git commit -m 'Add some AmazingFeature'`)
4. Faça o Push para a Branch (`git push origin feature/AmazingFeature`)
5. Abra um Pull Request
## 📝 Padrões de Código
- Siga o guia de estilo PEP 8 para Python
- Mantenha os testes atualizados
- Documente novas funcionalidades
- Use mensagens de commit descritivas
## 📄 Licença
Este projeto está sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.