Mudanças entre as edições de "PTC29008: Projeto 2: Sistema de aquisição de dados"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 49: Linha 49:
 
s.sendto(b'xyzabc123', destino)
 
s.sendto(b'xyzabc123', destino)
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
O servidor CoAP de teste pode ser instalado assim:
 +
 +
# Instale o pacote Python [https://aiocoap.readthedocs.io/en/0.2-for-readthedocs/ aio-coap]: <syntaxhighlight lang=bash>
 +
sudo pip3 install aio-coap
 +
</syntaxhighlight>
 +
# Copie [http://tele.sj.ifsc.edu.br/~msobral/ptc/coaps.tgz este script Python] que implementa o servidor de demonstração (descompacte-o).
 +
# Execute o servidor com este comando: <syntaxhighlight lang=bash>
 +
python3 coaps.py
 +
</syntaxhighlight>... e ele iniciará escutando no port UDP 5683 (e com IPv6).

Edição das 17h07min de 21 de maio de 2019

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: 2804:1454:1004:312:206:4fff:fe49:b7e4
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 aio-coap
    
  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).