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:
- Uma placa Raspberry Pi Zero W funcional (com Raspbian instalado e conectividade com a Internet já funcionando) com cartão de memória (mínimo recomendado: 16GB, preferencialmente classe 10)
- Uma fonte de alimentação 5V / 2A micro-USB
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.
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.
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.
Na tela que surgir, clique em “Gerar Senha”, conforme mostra a figura 4.
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).
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.
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.
Gostou deste post sobre a plataforma IoT Konker e como utiliza-la com a Raspberry Pi Zero W? Deixe seu comentário logo abaixo.
Muito legal Pedro,
Eu gostaria de ver mais post sobre MQQT, é possível?
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/
Bom dia Pedro,
Muito legal seu artigo, vou experimentar o Konker em uns testes meus.
Valeu pela dica
Abraço
Willians, muito obrigado pela leitura e elogio. A plataforma é boa, tenho certeza que gostará dela.
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