PTC29008: Projeto 2: Sistema de aquisição de dados

De MediaWiki do Campus São José
Revisão de 19h37min de 29 de setembro de 2020 por Msobral (discussão | contribs)
Ir para navegação Ir para pesquisar

Próxima aula


No projeto 2 será desenvolvido um protótipo de um sistema de aquisição de dados. Cada unidade de aquisição de dados, representada por um kit baseado em RaspberryPi 3, é responsável por coletar dados de monitoramento e enviá-los para um servidor de coleta. A comunicação entre as unidades e o servidor se dá por links sem-fio ponto-a-ponto, implantados com o protocolo do projeto 1. A figura a seguir ilustra um cenário desse sistema de aquisição de dados remotos.

PTC-Proj2-aquisicao-dados.jpg
O sistema de aquisição de dados remotos


Nesse sistema, a transmissão de mensagens de dados através dos links sem-fio faz uso do protocolo MQTT. Esse protocolo foi desenhado com um serviço do tipo publisher-subscriber voltado a dispositivos com restrições de recursos, tendo em mente aplicações da Internet das Coisas (IoT). Em linhas gerais, as unidades de aquisição de dados se comportam como publicadores MQTT, o servidor de coleta é um assinante.


O projeto tem por objetivo geral implementar a unidade de aquisição de dados, a qual monitora dados ambientais e os envia para o servidor de coleta. Os objetivos específicos são:

  1. Especificar um protocolo de aplicação, que deve estar fundado no protocolo MQTT: esse protocolo de aplicação deve ser capaz de:
    1. Configurar a unidade de aquisição de dados
    2. Transmitir mensagens contendo dados monitorados
  2. Selecionar e usar uma implementação do MQTT, com a finalidade de enviar as mensagens de aquisição de dados
  3. Usar uma técnica de codificação de mensagens que possibilite o intercâmbio de dados entre sistemas heterogêneos

A especificação do protocolo de aplicação

A especificação deve descrever:

  1. o serviço oferecido
  2. as mensagens do protocolo
  3. o formato dessas mensagens
  4. o comportamento do protocolo

Formato das mensagens da aplicação

As mensagens da aplicação são de dois tipos:

  • Configuração: trocadas no início da sessão, servem para identificar os sensores e o período de amostragem e transmissão de dados. Seu conteúdo é formado pelo seguinte:
    periodo: INTEIRO
    Lista de nomes de sensores: LISTA DE STRING
    
  • Dados: contêm os valores amostrados dos sensores, e têm este formato:
    Lista de amostras dos sensores: LISTA DE <STRING,INTEIRO,TIMESTAMP>
    


A especificação e codificação das mensagens deve ser feita usando Protocol Buffers:


As trocas de mensagens entre unidade de sensores e servidor de coleta é feita sempre por iniciativa da unidade de sensores, de acordo com uma MEF.


Como será usado MQTT, o comportamento da aplicação pode explorar o seguinte:

  • não são necessárias confirmações de mensagens de dados
  • a identificação da unidade de sensores pode ser feita por um tópico. Isso evita que mensagens da unidade de coleta sejam transmitidas para todas unidades de sensores desnecessariamente
  • o serviço de configuração seja identificado por um tópico específico