filipecavalc / People-Counting

Repositorio destinado para documentação e disponibilização do projeto People Counting desenvolvido desenvolvido para aplicação no ambiente do Ecomuseu na matéria de Engenharia de software II no curso de ciência da computação UNIOESTE FOZ

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

People Counting

Repositorio destinado para documentação e disponibilização do projeto People Counting desenvolvido para aplicação no ambiente do Ecomuseu na matéria de Engenharia de software II no curso de ciência da computação UNIOESTE FOZ

Inspirações

Este projeto nasceu a partir da percepção da carência de informações sobre o comportamento dos visitantes dentro do ambiente do ecomuseu. A partir dessa carência será desenvolvido um conjunto de tecnologias que permitirá o mapeamento do comportamento dos visitantes envolvendo:

  • Horario de entrada e saída
  • Tempo de permanencia no ecomuseu
  • Número de visitas

Arquitetura da Solução


DIAGRAMA DA ARQUITETURA

Descrição da solução

O objetivo da solução é a contagem de visitantes que entram no parque e tempo médio da visita. As tecnologias que serão utilizadas são:

ESP8266

ESP8266 é um microcontrolador muito comum para projetos de IOT (Internet Of Things ou Internet das Coisas) que também é uma tecnologia que será utilizada para o projeto. O objetivo do é atuar como um sniffer não malicioso, com a unica intenção de capturar os MACADDRESS dos dispositivos proximos juntamente com o horario. Essa informação capturada pelo ESP8266 vai ser disparada para um servidor MQTT que ira tratar e salvar esse dado no banco de dados.
DIAGRAMA DO ESP8266

MQTT

É conhecido como Message Queuing Telemetry Transport. O MQTT é um protocolo desenvolvido para mensagens leves, ou seja, com foco em pequenas informações como a de sensores e pequenos dispositivos moveis, possui alta latencia e é otimizado para redes TCP/IP não confiáveis. O MQTT trabalha com um conceito de publicadores e inscritos, onde publicadores são os sensores e pequenos dispositivos que fornecem os dados e os inscritos são bancos de dados ou dispositivos variados que leem os dados em tempo real que o broker recebe e fazem os tratamentos que quiserem.
DIAGRAMA DO MQTT

Hardware projetado

Este é o esquemático do harware a ser projetado.
ESQUEMA DO PROJETO DO HARDWARE

Esta é a imagem do protótipo desenvolvido para testes.
PROTÓTIPO DO HARWARE

Códigos para os ESP8266's

São dois códigos diferentes:

Coleta dos dados

Sniffer code

Lógica

  • Inicializa a porta serial;
  • Configura o modo de operação para Station
  • Desabilita o modo "promiscuous" do ESP8266
  • Realiza conexão em um acess point para obter internet
  • Sincroniza o relogio para vincular o tempo em que os dados estão sendo coletados
  • Configura o callback do metodo que coleta os dados
    • Monta os dados em formato JSON
    • Envia os dados em formato JSON para a saída Serial
  • Habilita o modo "promiscuous" do ESP8266
  • Configura o temporizador de retorno de chamada do canal

Envio dos dados para o Broker MQTT

MQTT post code

Lógica

  • Inicializa porta serial
  • Configura o modo de operação para Station
  • Realiza conexão em um acess point para obter internet
  • Conecta ao broker MQTT
  • Loop
    • Espera o buffer do Serial receber dados
    • Quando recebe dados na porta serial:
      • Checa a conexão com WiFi
        • Se não estiver conectado tenta restabelecer a conexão
      • Checa a conexão com o broker MQTT
        • Se não estiver conectado tenta restabelecer a conexão
    • Envia os dados para o broker MQTT

Código para salvar dados que passam pelo broker no MongoDB

Como Iniciar o script

MongoDB config file

Script de tratamento dos dados

Este código realiza a conexão com o broker para "ouvir" a passagem dos dados e salvar no banco de dados. Os dados da mensagem devem estar sendo enviados no padrão JSON, dados fora do formato JSON serão recusados e não serão salvos.

About

Repositorio destinado para documentação e disponibilização do projeto People Counting desenvolvido desenvolvido para aplicação no ambiente do Ecomuseu na matéria de Engenharia de software II no curso de ciência da computação UNIOESTE FOZ


Languages

Language:C++ 76.4%Language:JavaScript 23.6%