O projeto Sistema de Monitoramento em Tempo Real de Qualidade de Água de um Rio faz parte da chamada pública CGI.br/NIC.br/Ceweb.br nº 01/2019 Mover-Se na Web – Articulação Pró-Brumadinho
Neste projeto foi desenvolvido um protótipo de estação de monitoramento de qualidade da água de baixo custo utilizando a plataforma Arduino/ESP que se comunica com um sistema web desenvolvido com a framework Django, Bootstrap e PWA. Ao todo o projeto é composto por três componentes principais: (i) a aplicação web, (ii) o hardware que compõem a estação de monitoramento, (iii) e o firmware que foi desenvolvido para a placa LILYGO® TTGO T-SIM7000G.
- Criação de Usuário
- Cadastro de Estação
- Cadastro de Nascente
- Cadastro de Alerta
- Visualização de Perfil
- Cadastro Manual de Dados
- API para Recebimento de Dados
- Visualização de Dados Históricos
- Carregamento Solar*
- Desligamento Programado para Economia de Energia (Deep Sleep)*
- Envio de Dados via WiFI*
* Estação de Monitoramento (Hardware / Firmware).
- Visitante: Qualquer pessoa que acesse ao sistema web sem possuir um usuário cadastrado no sistema.
- Usuário Comum: Qualquer pessoa que tenha um usuário cadastrado no sistema. O usuário pode cadastrar dados em estações já criadas pelo administrador.
- Administrador: Qualquer pessoa que tenha um usuário cadastrado no sistema com a permissão de administrador. Essa permissão o habilita a acessar o painel de administração. O administrador será notificado quando um usuário solicitar o cadastro no sistema.
- Django
- Progressive Web App (PWA)
- Bootstrap
- Placa ESP32 (LILYGO® TTGO T-SIM7000G)
* Funcionalidade de Alerta
# Clone este repositório
$ git clone https://github.com/cewebbr/mover-se_monitoramento-qualidade-agua
# Acesse a pasta do projeto no terminal
$ cd mover-se_monitoramento-qualidade-agua/web
# Instale as dependências
$ pip install -r requirements.txt
Na pasta web/bws/bws
há o arquivo .env
padrão que será utilizado na execução do projeto. Há também o arquvo .env-prod
com um exemplo
de configuração utilizando o banco de dados PostgreSQL.
.env
DEBUG=on
PROD=off
SECRET_KEY='o01wgdlan@h0w#re(&kk03bgzf*!afrz^vy*ifhk9g(rmcb!(s'
ALLOWED_HOSTS=['*']
DATABASE_URL=sqlite:///db.sqlite3
CELERY_BROKER_URL="redis://localhost:6379"
EMAIL_HOST_USER=""
EMAIL_HOST_PASSWORD=""
EMAIL_HOST="smtp.gmail.com"
DEFAULT_FROM_EMAIL=""
O .env
padrão não possui configuração de servidor SMTP e o banco utilizado é o Sqlite3. O envio de e-mail faz parte de algumas funcionalidades (aleta, troca de senha...), mas não impede da aplicação funcionar. Recomenda-se usar o sendgrid como backend para envio de e-mail.
# Execute o comando para criar a base de dados na pasta web/bws
$ python manage.py migrate --run-syncdb
# Criação um administrador do sistema
$ python manage.py createsuperuser
# Execute a aplicação com o sevidor de desenvolvimento
$ python manage.py runserver
O servidor inciará na porta 8000. Acesse < http://localhost:8000 > para visualizar a aplicação funcionando.
Para criar entidades do projeto, acesse o sistema com as credenciais do administrador criadas no passo 3 e acesse o painel de administração. Será necessário criar Sensores, Tipos de Estações e Estações. Além de vincular os sensores existentes às estações criadas.
A fucionalidade de alerta é implementada utilizando a framework Celery. Para que essa funcionalidade seja ativada é importante que exista uma banco de dados Redis executando segundo as informações configuradas no arquivo .env
.
Antes de iniciar a rotina que irá ficar checando os dados enviados para o sistema, se faz necessário criar no banco de dados a entrada da tarefa assíncrona. Essa configuração deve ser feita apenas uma única vez da seguinte forma: acesse o painel de administração e clique em 'Periodic Task'. Adicione uma nova tarefa com as seguintes informações:
Name: <Coloque o nome que desejar>
Task (registered): asynctask.tasks.cron_read_alerts
Interval Schedule: 1 hours
Em seguida, clique no botão "Save".
Para executar o servidor do Celery, acesse a pasta principal (web/bws
) e digite o comando abaixo:
$ celery -A bws worker --beat --scheduler django --loglevel DEBUG
ou execute o script web/bws/startcelery.sh
$ ./startcelery.sh
- Arduino IDE
- LILYGO® TTGO T-SIM7000G
- Mini Painel Solar
- Sensor PH
- Sensor Temperatura
- Caixa de Proteção IP68
- Jumpers
O projeto de hardware requer a utilização dos componentes eletrônicos descritos anteriormente. Em posse deles, o usuário deve montar a estação de monitoramento seguindo o esquemático disponível (aqui). Após o hardware montado, o Arduino IDE deve ser configurado seguindo o passo a passo descrito em ArduinoIDE.md.
Caso seja encotrado algum problema na reprodução dos passos anteriores ou na execução do projeto, entre em contato com Rodrigo Lira através do contato disponível na seção "Equipe responsável pelo projeto".
- Gabriel Lima - IFPE Campus Paulista - Pessoa desenvolvedora - [email protected]
- Gaston Gouveia - IFPE Campus Paulista - Pessoa desenvolvedora - [email protected]
- Rodrigo Lira - IFPE Campus Paulista - Coordenador - [email protected]
O Centro de Estudos sobre Tecnologias Web (Ceweb.br) foi criado como um departamento do Núcleo de Informação e Coordenação do Ponto BR (NIC.br) para viabilizar a participação da comunidade brasileira no desenvolvimento global da Web e subsidiar a formulação de políticas públicas. O Ceweb.br nasce inspirado pelos princípios e projetos já desenvolvidos pelo Escritório Brasileiro do W3C (World Wide Web Consortium), hospedado e apoiado pelo NIC.br no Brasil desde 2008, com a missão de promover atividades que estimulem o uso de tecnologias abertas e padronizadas na Web.
O Núcleo de Informação e Coordenação do Ponto BR - NIC.br foi criado para implementar as decisões e os projetos do Comitê Gestor da Internet no Brasil - CGI.br, que é o responsável por coordenar e integrar as iniciativas e serviços da Internet no País.
O Comitê Gestor da Internet no Brasil tem a atribuição de estabelecer diretrizes estratégicas relacionadas ao uso e desenvolvimento da Internet no Brasil e diretrizes para a execução do registro de Nomes de Domínio, alocação de Endereço IP (Internet Protocol) e administração pertinente ao Domínio de Primeiro Nível ".br". Também promove estudos e recomenda procedimentos para a segurança da Internet e propõe programas de pesquisa e desenvolvimento que permitam a manutenção do nível de qualidade técnica e inovação no uso da Internet
- Amanda Marques
- Ana Eliza
- Beatriz Rocha
- Caroline Burle
- Diego Cerqueira
- Diogo Cortiz
- Juliana Ribeiro
- Reinaldo Ferraz
- Selma de Morais
- Vagner Diniz