Esta semana comecei a fazer alguns testes com um projeto novo da fundação Eclipse. Trata-se do Ponte (https://www.eclipse.org/ponte), uma implementação em Node.js (http://nodejs.org) que permite o envio e recepção de dados utilizado 3 protocolos diferentes: MQTT, HTTP e CoAP.
Outra característica importante desta aplicação é a persistência dos dados, atualmente com suporte para o MongoDB, Redis e LevelDB. Isso define o Ponte como um broker máquina a máquina de múltiplos protocolos para IoT.
O procedimento de instalação e bem simples, só precisei atualizar o Node.js em meu Windows e executar o comando npm install ponte -g.
Após a instalação executei o comando ponte –version para checar a instalação e a versão. Uma lista dos comandos disponíveis pode ser obtida com o comando ponte –help.
-h, –help output usage information
-V, –version output the version number
-o, –observe Observe the given resource
-n, –no-new-line No new line at the end of the stream
-p, –payload <payload> The payload for POST and PUT requests
-b, –block2 <option> set the block2 size option
-q, –quiet Do not print status codes of received packets
-c, –non-confirmable non-confirmable
-t, –timeout <seconds> The maximum send time in seconds
-T, –show-timing Print request time, handy for simple performance tests
-O, –coap-option <key,value> Add COAP-Option to the request (repeatable)
Para iniciar a aplicação você pode usar o comando ponte -m 1883 onde 1883 é o número da porta. Se quiser uma inicialização com log use o comando ponte -v. Quando você habilita o log (verbose), é possível ver em qual porta cada protocolo estará escutando. A configuração padrão é:
- MQTT 1883;
- HTTP 3000;
- CoAp 5683.
Meu primeiro teste foi utilizando um client MQTT (TT3) para publicar uma mensagem e obter esta mensagem via HTTP (Postman). Configurei o tópico “test” para envio das mensagens. Para poder obter a mensagem via HTTP, você deve usar a opção reter as mensagens em seu client MQTT.
Já do lado HTTP basta fazer uma requisição GET para http://localhost:3000/resources/test e obter a última mensagem.
Em seguida, minha tentativa foi fazer o oposto, agora enviando via HTTP e recebendo via MQTT. Para enviar via HTTP basta fazer um requisição PUT para http://localhost:3000/resources/test e enviar a mensagem desejada. Até aqui tudo funcionou muito bem.
Agora falta um teste, utilizando o protocolo CoAP. Para isso utilizei o coap-cli (http://github.com/mcollina/coap-cli) disparando o seguinte comando:
echo ‘Message 1 from CoAP’ | coap put coap://localhost/r/test
Sensacional, consegui obter a mensagem tanto via MQTT quanto HTTP.
Esta primeira etapa etapa foi concluída e a aplicação Ponte se saiu bem nos testes, atendendo sua proposta.
As configurações e persistência de dados fica para um artigo futuro.
O projeto e mais informações você pode obter em https://github.com/eclipse/ponte.