Conhecendo a Konker IoT: utilizando a plataforma com uma Raspberry Pi Zero W 5

A Internet das Coisas (Internet of Things – IoT) é um dos acontecimentos da tecnologia que podemos dizer, sem dúvidas, que é algo sem volta. Os benefícios inerentes ao uso de IoT, sobretudo o ganho de produtividade e qualidade de controle e monitoramento de processos, são coisas sem precedentes. O ecossistema IoT é formado, basicamente, de 4 itens: hardware (sensores, atuadores, microcontroladores, memórias, etc), software embarcado para o hardware, conectividade e, por último mas não menos importante, plataforma IoT. Fica a cargo da plataforma IoT gerar valor com as informações colhidas dos dispositivos do ecossistema IoT, o que significa transformar as informações por eles geradas em dados relevantes e úteis para tomadas de decisão. Em suma, a plataforma IoT é o que, de fato, o cliente de um projeto IoT irá utilizar para monitorar o processo que deseja e planejar onde agir para melhorar tal processo. Dada a importância de uma plataforma IoT, este artigo irá tratar do assunto, mostrando a plataforma Konker IoT e como utiliza-la (para fins de exemplificação) com uma Raspberry Pi Zero W.

Material necessário

Para reproduzir este projeto você precisará de:

A plataforma Konker IoT

A plataforma Konker IoT é uma plataforma do tipo PaaS (Plataform as a Service). Ou seja, é uma plataforma modelada de forma a centralizar as informações utilizadas para tomada de decisão de seus projetos IoT, dispondo de ferramentas que deixam o cliente livre de ter que implementar um framework, bancos de dados e tudo mais inerente ao meio. Dessa forma, permite a prototipagem e uso real / em produção de forma rápida e simples. Logo, a plataforma fica a cargo de “resolver o backend” e, ao cliente, fica a parte de utilizar dos recursos oferecidos de forma fácil e rápida, de forma que ele possa focar no seu projeto / negócio principal (core business).

Dentre as opções de conectividade com a plataforma, se encontram o MQTT e requisições HTTP. Portanto, se um hardware / dispositivo é capaz de trabalhar com MQTT ou com requisições HTTP, este pode ser integrado em um projeto utilizando a plataforma. Para o projeto deste post, será utilizado o MQTT, sendo o projeto escrito utilizando linguagem Python.

Em termos de custo, é importante ressaltar que apesar a plataforma não ser totalmente grátis, há um plano free. As limitações deste plano são vinculadas ao número de dispositivos conectados (máximo de 5 dispositivos) e de mensagens / dados enviados salvos (máximo de 300 mensagens ficam salvas). Ou seja, para validações de projetos IoT e para rodar pequenos projetos IoT, o plano free atende sem problemas.

Para conhecer mais sobre a plataforma, visite o site oficial.

Cadastro no plano free da plataforma Konker IoT e cadastro de um dispositivo

Para fazer o cadastro no plano free da plataforma, basta seguir o procedimento abaixo:

Acesse o site oficial da plataforma (http://www.konkerlabs.com/).

Vá até a parte dos planos e, na opção Starter, clique em “Comece grátis”, conforme assinalado na figura 1.

Figura 1 - planos da plataforma Konkerlabs

Irá surgir um formulário solicitando seus dados para cadastro na plataforma. Preencha-os e clique em “Create Account”.

Você receberá um e-mail com link para ativar seu cadastro. Acesse tal link e o cadastro está feito!
A partir desse momento você já consegue fazer login na plataforma.

Uma vez cadastrado no plano free da plataforma, você já pode começar a utiliza-la. Para isso, a primeira coisa a ser feita é o cadastro de um dispositivo na plataforma. Isso é preciso pois para um dispositivo interagir com a plataforma, a conexão com a mesma utiliza um usuário e senha únicos por dispositivo. Para cadastrar um dispositivo, siga o procedimento abaixo.

À esquerda da tela principal/inicial da plataforma, clique na opção “Dispositivos”.

Uma tela com a lista de dispositivos cadastrados irá se abrir. Como você ainda não possui dispositivos cadastrados, a lista estará vazia.
Nesta tela, clique no botão “Novo”, conforme mostrado na figura 2.

Figura 2 - adicionar novo dispositivo (imagem obtida de: https://konker.atlassian.net/wiki/spaces/DEV/pages/28180518/Guia+de+Uso+da+Plataforma+Konker#GuiadeUsodaPlataformaKonker-Dispositivo)

A seguir uma tela surgirá solicitando os dados dos dispositivos. Os campos contidos na tela são:
– ID / Device ID: identificador único desejado do dispositivo (como um número serial, por exemplo).
– Nome: nome do dispositivo. Este nome servirá para referenciar-se ao dispositivo na plataforma.
– Descrição: breve descrição do dispositivo.
– Ativo: ligue este switch. Isso fará com que o dispositivo seja apto a enviar e receber informações da plataforma. Preencha as informações e clique no botão “Salvar”.

Após a confirmação de que o dispositivo foi cadastrado clique em “Voltar”. A tela com a lista de dispositivos cadastrados irá surgir novamente, porém agora com o dispositivo que acabou de cadastrar.

Agora é o momento de gerar o usuário e senha do dispositivo criado.
Nesta tela, clique no botão “Conectar”, ao lado do nome do seu dispositivo, conforme mostra a figura 3.

Figura 3 - dispositivo cadastrado (imagem obtida de: https://konker.atlassian.net/wiki/spaces/DEV/pages/28180518/Guia+de+Uso+da+Plataforma+Konker#GuiadeUsodaPlataformaKonker-Dispositivo)

Na tela que surgir, clique em “Gerar Senha”, conforme mostra a figura 4.

Figura 4 - geração de usuário e senha para o dispositivo adicionado (imagem obtida de: https://konker.atlassian.net/wiki/spaces/DEV/pages/28180518/Guia+de+Uso+da+Plataforma+Konker#GuiadeUsodaPlataformaKonker-Dispositivo)

Um aviso irá surgir. Nele, o usuário e senha do dispositivo será mostrado, conforme ilustra a figura 5.
Atenção: Copie e salve estas informações de usuário e senha  em local seguro! Não será possível recuperá-las no futuro (caso perca estas informações, um novo usuário e senha para o dispositivo deverá ser gerado).

Figura 5 - usuário e senha do dispositivo adicionado (imagem baseada na mostrada em: https://konker.atlassian.net/wiki/spaces/DEV/pages/28180518/Guia+de+Uso+da+Plataforma+Konker#GuiadeUsodaPlataformaKonker-Dispositivo)

Pronto! Agora você está apto a fazer a Raspberry Pi enviar informações como sendo o dispositivo que acabou de cadastrar.

Instalação das bibliotecas

Como será utilizado o protocolo MQTT para comunicação da Raspberry Pi Zero W com a plataforma Konker IoT, é necessário que seja instalada a respectiva biblioteca (para Python, linguagem que o projeto deste post foi escrito). Para isso, utilize os comandos abaixo:

cd ~
git clone https://github.com/eclipse/paho.mqtt.python
cd paho.mqtt.python
python setup.py install

Envio de informações para a plataforma Konker IoT via MQTT – pontos importantes

Todas as informações a serem enviadas para a plataforma IoT Konker via MQTT precisam ser enviadas para um tópico composto de:

/pub/USUARIO_DO_DISPOSITIVO/TIPO_DE_INFORMACAO_ENVIADA

Onde:

  • /pub/: parte fixa/obrigatória
  • USUARIO_DO_DISPOSITIVO: usuário do seu dispositivo, conforme visto no item 7 do tópico “Cadastro no plano free da plataforma e cadastro de um dispositivo” deste post.
  • TIPO_DE_INFORMACAO_ENVIADA: nome/tipo da informação enviada (exemplos: temperatura, distancia, pressão, etc.)

Supondo que um usuário de um dispositivo que envie temperatura seja, por exemplo, abcd1234xyz, um bom tópico seria: /pub/abcd1234xyz/temperatura

Ainda, na plataforma IoT Konker, ao TIPO_DE_INFORMACAO_ENVIADA dá-se o nome de canal. A plataforma agrupa, automaticamente, por canal as informações recebidas, o que facilita muito a visualização dos dados enviados.

Código-fonte do projeto

Abaixo está o código-fonte do projeto. O projeto consiste em enviar a temperatura do processador da Raspberry Pi Zero W para a plataforma a cada cinco segundos. Copie-o e salve-o como temperatura_konkerlabs.py

IMPORTANTE:
não se esqueça de colocar o usuário e senha de seu dispositivo nos lugares demarcados no código. Se isso não for feito, as informações não serão enviadas à plataforma.

import paho.mqtt.client as mqtt
import json
import time
import subprocess

#usuario e senha do dispositivo na plataforma Konkerlabs
usuario_konkerlabs = "COLOQUE_O_USUARIO_DO_DISPOSITIVO_AQUI"
senha_konkerlabs = "COLOQUE_A_SENHA_DO_DISPOSITIVO_AQUI"
topico_publish = "pub/"+usuario_konkerlabs+"/temperatura"

#Funcao: obtem temperatura do processador
#Parametros: nenhum
#Retorno: temperatura (float)
def mede_temp_processador():    
    cur_tempcpu = "cat /sys/class/thermal/thermal_zone0/temp"
    tempcpu = subprocess.check_output(cur_tempcpu, shell=True)
    cputempCelsius = str(float(tempcpu)/1000)
    print "[DEBUG] Temperatura do processador: "+cputempCelsius+"C"
    return float(tempcpu)

#------------------
#Programa principal
#------------------
client = mqtt.Client()
client.username_pw_set(usuario_konkerlabs, senha_konkerlabs)
client.connect("mqtt.demo.konkerlabs.net", 1883)

while True:
    #obtem a temperatura do processador
    temperatura_processador = mede_temp_processador()

    #envia o valor da temperatura do processador para a plataforma Konkerlabs
    payload_json = json.dumps({"temperature": temperatura_processador, "unit": "celsius"})
    client.publish(topico_publish, payload_json)

    #aguarda cinco segundos ate a proxima leitura de temperatura do processador
    time.sleep(5)

Projeto em ação

Para ver os dados enviados pelo projeto na forma de gráfico, siga o procedimento abaixo:

À esquerda da tela principal da plataforma, clique na opção “Dispositivos”.

Na lista de dispositivos, clique na opção “Mensagem” na linha correspondente ao seu dispositivo, conforme mostra a figura 6.

Figura 6 - visualização das informações enviadas pela Raspberry Pi Zero W (imagem obtida de: https://konker.atlassian.net/wiki/spaces/DEV/pages/28180518/Guia+de+Uso+da+Plataforma+Konker#GuiadeUsodaPlataformaKonker-Dispositivo)

Na tela que surgir, escolha no campo Canal a opção “temperatura” e no campo Métrica a opção “celsius”.
Feito isso, as informações de temperatura na forma gráfica irão aparecer logo abaixo, assim como cada mensagem enviada (lembrando que a plataforma sempre registra as 300 mais recentes mensagens enviadas pelo dispositivo, por limitação do plano free), conforme ilustra a figura 7.

FIgura 7 - informações enviadas, dispostas de forma gráfica e raw (exatamente conforme enviadas)

Gostou deste post sobre a plataforma IoT Konker e como utiliza-la com a Raspberry Pi Zero W? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

5 Comentários

  1. Muito legal Pedro,
    Eu gostaria de ver mais post sobre MQQT, é possível?

    1. Alexandre, boa tarde. Obrigado pela leitura e elogio.

      Aqui no blog há algumas postagens que abordam o MQTT. Segue uma de exemplo: https://www.makerhero.com/blog/controle-monitoramento-iot-nodemcu-e-mqtt/

  2. Bom dia Pedro,

    Muito legal seu artigo, vou experimentar o Konker em uns testes meus.

    Valeu pela dica

    Abraço

    1. Willians, muito obrigado pela leitura e elogio. A plataforma é boa, tenho certeza que gostará dela.

  3. Olá Pedro,
    boa noite …
    muito legal seu artigo — apenas uma correção …

    os 300 ptos de dados que você menciona como limite são apenas no CSV exportado diretamente na interface.

    se fizer as consultas via API não tem limite no número de dados — são pelo menos 3 meses de dados garantidos de armazenamento.

    pode ver mais como na documentação da API aqui:

    https://api.demo.konkerlabs.net/v1/swagger-ui.html#!/events/listUsingGET_9

    abs