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
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
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 é 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.
É 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.
Este é o esquemático do harware a ser projetado.
Esta é a imagem do protótipo desenvolvido para testes.
São dois códigos diferentes:
- 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
- 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
- Checa a conexão com WiFi
- Envia os dados para o broker MQTT
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.