O que seria o protocolo CoAP?

Como funciona

O protocolo CoAP(Constrained Application Protocol) é um modelo de protocolo HTTP que se baseia em conexão UDP(principal característica) voltado para a comunicação Máquina-a-Máquina(M2M) e Internet das Coisas(IoT). Tem como diferencial o fato de facilitar a comunicação de dispositivo com recursos restritos de processamento e memória.

O CoAP utiliza a porta 5683, protocolo UDP.

Tal protocolo segue um modelo cliente/servidor. Os clientes fazer os pedidos aos servidores, o servidor envia de volta a resposta.

Os clientes podem realizar GET, PUT, POST e DELETE nos recursos, porém o Guardião utiliza os seguintes métodos:

Método Utilidade
GET Utilizado para acompanhar os dados publicados.
PUT Utilizado para publicar alterações.

Como testar?

Para rodar os testes é possível utilizar o aplicativo coap-cli

Uma das aplicações que podem ser utilizadas para realizar testes utilizado o CoAP é o coap-cli, que é uma aplicação open-source que permite tal comunicação, tanto realizado o envio de mensagem, bem como "ficar lendo" as mensagens enviadas.

Para realizar a instalação siga o tutorial: CoAP Cli.

A aplicação após instalada apenas adiciona o comando coap.

Dispositivo de Coleta

Como realizar o envio dos dados coletados

Para realizar a coleta de dados, deverá ser utilizado a URL /gcs//collect/.

Os dados deverão ser enviadas em formato JSON, com todos os valores que se deseja armazenar para realização da coleta bem como dados de validação/identificação do usuário.

$ coap put coap://guardiao.cl/gcs/IOTWBS/collect/IOTWBS0001 -p '{"data":{"temperatura":10,"umidade":30,"luminosidade":15},"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}'
Parâmetro Significado Valor no Exemplo
put Método de envio dos dados, utilizando o HTTP PUT. -
url URL do protocolo CoAP, contendo o prefixo e número de série do dispositivo. coap://guardiao.cl/gcs/IOTWBS/collect/IOTWBS0001
-p Dados em formato JSON para envio. {"data":{"temperatura":10,"humidade":30,"luminosidade":15},"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}

Os dados enviados através do -p, segue formato JSON e exige o seguinte modelo de dados:

Dado Significado
data Dados para envio, em formato variado, baseado no padrão JSON.
auth Informações de autenticação.
auth:apiKey Número da ApiKey do projeto para autenticação.
auth:email O e-mail do usuário cadastrado ao projeto.
{"data":{"temperatura":10,"umidade":30,"luminosidade":15},"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}

Como acompanhar os dados coletados

Através do comando coap é possível acompanhar os dados que estão sendo enviados e coloca o comando em modo de "escuta", ou seja, realizar o comando GET, e acompanhar os dados enviados.

$ coap get coap://guardiao.cl/gcs/IOTWBS/collect/IOTWBS0001 -p '{"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}' -o
Parâmetro Significado Valor no Exemplo
get Método de recebimento dos dados, utilizando o HTTP GET. -
url URL do protocolo CoAP, contendo o prefixo e número de série do dispositivo. coap://guardiao.cl/gcs/IOTWBS/collect/IOTWBS0001
-o Habilitar modo de escuta para acompanhar dados enviados. -
-p Dados de autenticação para permitir a coleta de dados. {"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}

Gatilhos

Como realizar a alteração de gatilho

Para realizar a alteração do gatilho, deverá ser utilizado a URL /gcs//trigger/.

Os dados deverão ser enviadas em formato JSON, com o estado desejado e com as informações de autenticação para envio da alteração.

Para habilitar o gatilho, utilize o seguinte modelo:

$ coap put coap://guardiao.cl/gcs/IOTWBS/trigger/IOTWBS0002 -p '{"data":{“state”:”on"},"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}'

Para desabilitar o gatilho, basta apenas mudar o state:

$ coap put coap://guardiao.cl/gcs/IOTWBS/trigger/IOTWBS0002 -p '{"data":{“state”:”off"},"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}'
Parâmetro Significado Valor no Exemplo
put Método de envio dos dados, utilizando o HTTP PUT. -
url URL do protocolo CoAP, contendo o prefixo e número de série do dispositivo. coap://guardiao.cl/gcs/IOTWBS/trigger/IOTWBS0002
-p Dados em formato JSON para envio. {"data":{“state”:”on"},"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}

Os dados enviados através do -p, segue formato JSON e exige o seguinte modelo de dados:

Dado Significado
data:state O valor para envio deve ser: "on"/"off". Para habilitar/desativar o gatilho.
auth Informações de autenticação.
auth:apiKey Número da ApiKey do projeto para autenticação.
auth:email O e-mail do usuário cadastrado ao projeto.

Como assinar as alterações do gatilho

Através do comando coap é possível acompanhar os dados que estão sendo enviados e coloca o comando em modo de "escuta", ou seja, realizar o comando GET, e acompanhar os dados enviados.

$ coap get coap://guardiao.cl/gcs/IOTWBS/trigger/IOTWBS0002 -p '{"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}' -o
Parâmetro Significado Valor no Exemplo
get Método de recebimento dos dados, utilizando o HTTP GET. -
url URL do protocolo CoAP, contendo o prefixo e número de série do dispositivo. coap://guardiao.cl/gcs/IOTWBS/trigger/IOTWBS0002
-o Habilitar modo de escuta para acompanhar dados enviados. -
-p Dados de autenticação para permitir a coleta de dados. {"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}

Atuadores

Apenas acompanhando alterações

Para realizar o acompanhamento de alteração dos dados, e no caso do atuador, apenas escutar as alterações, deverá ser utilizado a URL /gcs//actuator/.

Os dados deverão ser requisitados em formato JSON contendo apenas a validação/identificação do usuário.

$ coap get coap://guardiao.cl/gcs/IOTWBS/actuator/IOTWBS0003 -p '{"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}' -o
Parâmetro Significado Valor no Exemplo
get Método de recebimento dos dados, utilizando o HTTP GET. -
url URL do protocolo CoAP, contendo o prefixo e número de série do dispositivo. coap://guardiao.cl/gcs/IOTWBS/actuator/IOTWBS0003
-o Habilitar modo de escuta para acompanhar dados enviados. -
-p Dados de autenticação para permitir a coleta de dados. {"auth":{"apiKey":"497aa991-d8e6-4bb6-ad17-f01a13648333","email":"suporte@webonesystem.com.br"}}

Os dados enviados através do -p, segue formato JSON e exige o seguinte modelo de dados:

Dado Significado
auth Informações de autenticação.
auth:apiKey Número da ApiKey do projeto para autenticação.
auth:email O e-mail do usuário cadastrado ao projeto.