Projeto de Subsistema de Software - Alimentador Automático de Pets
Arquitetura de Software
O sistema será composto por um backend desenvolvido em Python/Django, que centraliza as configurações e monitoramento do alimentador, e um aplicativo móvel desenvolvido em React Native para interação dos usuários com o sistema. Além disso, a integração com a ESP32 permitirá controlar os componentes físicos, como a liberação de ração e o sistema de filtragem de água. Toda a infraestrutura do backend será hospedada em uma instância AWS EC2, garantindo alta disponibilidade e escalabilidade.
O backend Django gerencia as funcionalidades principais:
- Armazenamento e Controle: Gerenciamento das configurações do sistema de alimentação e filtragem.
- Monitoramento em Tempo Real: Registro dos níveis de ração e água, com visualização em dashboards.
- Alertas: Geração de notificações automáticas para o usuário em caso de níveis baixos ou falhas.
- API REST e Comunicação MQTT: Disponibilização de APIs REST para o aplicativo móvel e utilização do protocolo MQTT para comunicação em tempo real com a ESP32.
- Banco de Dados: Armazenamento em PostgreSQL, incluindo configurações, históricos de uso e dados de monitoramento.
Interface
O sistema contará com um aplicativo móvel construído com React Native, oferecendo uma interface responsiva e moderna, disponível para dispositivos iOS e Android. As principais funcionalidades incluem:
- Agendamento de Alimentação: Configuração de horários para liberação de ração.
- Monitoramento do Sistema: Visualização em tempo real dos níveis de ração e água.
- Configuração do Sistema: Ajuste de parâmetros do sistema de filtragem de água e alimentação.
- Alertas e Notificações: Exibição de alertas críticos, como níveis baixos de ração ou água.
Guia de Estilo
- Cores: Uso de tons suaves, como azuis e brancos, para transmitir frescor e confiabilidade.
- Tipografia: Fontes sans-serif modernas e legíveis.
- Elementos Visuais: Ícones intuitivos e botões acessíveis para fácil navegação.
- Design Dinâmico: Estilo adaptável ao tema "pets", incluindo animações leves.
Comunicação com a ESP32
A comunicação entre o backend e a ESP32 será realizada via protocolo MQTT, permitindo:
- Mensagens Assíncronas: Transmissão em tempo real de dados dos sensores e comandos de controle.
- Tópicos MQTT: Uso de tópicos para organização, como
pet/feeder/data
para envio de dados do alimentador. - Segurança: Implementação de autenticação para o broker MQTT (Mosquitto), configurado na instância AWS EC2.
A ESP32 será responsável por:
- Sensores: Monitoramento contínuo dos níveis de ração e água.
- Controle de Ação: Liberação de ração e ativação do sistema de filtragem conforme comandos recebidos.
- Notificações: Envio de alertas para o backend em caso de falhas.
Backend em Python/Django
O backend será implementado com as seguintes características:
- Estrutura de Banco de Dados:
- Utilização de PostgreSQL para armazenar:
- Configurações do alimentador.
- Dados históricos de níveis de ração e água.
- Logs de ações e eventos do sistema.
- Utilização de PostgreSQL para armazenar:
- API REST:
- Endpoints protegidos por autenticação JWT.
- Rotas para gerenciamento de configurações, consulta de dados e envio de comandos.
- Gerenciamento de Dados:
- Scripts para subscrição MQTT e persistência de dados recebidos no banco.
- Integração com o serviço de notificações do sistema para alertas automáticos.
Infraestrutura na AWS
A aplicação será hospedada em uma instância AWS EC2, com as seguintes configurações:
- Configuração de Rede:
- Porta 1883 aberta para o broker MQTT.
- Porta 8000 aberta para acesso à API REST.
- Serviços Complementares:
- Configuração de Mosquitto como broker MQTT.
- Sistema de backups automáticos para o banco PostgreSQL.
Aplicativo React Native
O aplicativo permitirá:
- Sincronização com o Backend:
- Integração via API REST para consumir dados do backend.
- Notificações push utilizando serviços como Firebase.
- Modo Offline:
- Cache de dados críticos para funcionamento limitado sem conexão.
- UI Dinâmica:
- Interface adaptativa com animações leves para melhorar a experiência do usuário.
Software Embarcado na ESP32
O código embarcado será responsável por:
- Monitoramento de Sensores:
- Leitura contínua dos níveis de ração e água.
- Execução de Comandos:
- Liberação de ração e ativação do sistema de filtragem conforme instruções.
- Comunicação Segura:
- Envio de mensagens via MQTT com autenticação e criptografia.
Referências
- Documentação do Django - https://www.djangoproject.com/
- Guia React Native - https://reactnative.dev/
- Documentação do PostgreSQL - https://www.postgresql.org/docs/
- Guia MQTT - https://mqtt.org/
- AWS EC2 Documentation - https://aws.amazon.com/ec2/
Tabela de Versionamento
Versão | Data | Descrição | Responsável |
---|---|---|---|
1.0 | 12/11/2024 | Criação do documento inicial. | Lude Ribeiro |
1.1 | 12/11/2024 | Atualização de acordo com as definições de arquitetura e tecnologias | Lude Ribeiro |