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 27: Linha 27:
 
# o formato dessas mensagens
 
# o formato dessas mensagens
 
# o comportamento do protocolo
 
# o comportamento do protocolo
 +
 +
= CoAP =
 +
 +
* '''Port UDP:''' 5683
 +
* '''Endereço IPv6:''' 2804:1454:1004:312:206:4fff:fe49:b7e4
 +
 +
<syntaxhighlight lang=python>
 +
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)
 +
</syntaxhighlight>

Edição das 16h20min 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)