Ir para o conteúdo

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.
  • 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

  1. Documentação do Django - https://www.djangoproject.com/
  2. Guia React Native - https://reactnative.dev/
  3. Documentação do PostgreSQL - https://www.postgresql.org/docs/
  4. Guia MQTT - https://mqtt.org/
  5. 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