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

De MediaWiki do Campus São José
Revisão de 17h32min de 21 de maio de 2019 por Msobral (discussão | contribs) (→‎CoAP)
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 CoAP. Esse protocolo foi desenhado para serviços web em dispositivos com restrições de recursos, tendo em mente aplicações da Internet das Coisas (IoT). As unidades de aquisição de dados se comportam como clientes CoAP, o servidor de coleta é um servidor CoAP.


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 CoAP: 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. Implementar um cliente CoAP para o envio das 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

CoAP

  • Port UDP: 5683
  • Endereço IPv6 (micro do professor): 2804:1454:1004:312:206:4fff:fe49:b7e4


  • Exemplo de criação de socket UDP IPv6:
    import socket
    
    # define endereço e port do destino
    destino = ('2804:1454:1004:312:206:4fff:fe49:b7e4', 5683)
    
    # cria socket UDP sobre IPv6
    sock = socket(socket.AF_INET6, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    
    # Vincula o socket ao endereço IPv6 este host, e a um port 
    # escolhido pelo sistema operacional
    s.bind(('::', 0))
    
    # envio mensagem pro destino
    s.sendto(b'xyzabc123', destino)
    


O servidor CoAP de teste pode ser instalado assim:

  1. Instale o pacote Python aio-coap:
    sudo pip3 install aiocoap
    
  2. Copie este script Python que implementa o servidor de demonstração (descompacte-o).
  3. Execute o servidor com este comando:
    python3 coaps.py
    
    ... e ele iniciará escutando no port UDP 5683 (e com IPv6).