Conteúdo


Desenvolva um monitor Raspberry Pi 2 com controle remoto para aplicativos IBM Cloud

Use Node.js para um projeto da Internet of Things que conecte dispositivos e aplicativos por meio da IBM IoT Foundation

Comments

Muito exagero cerca a Internet of Things (IoT), e com o exagero, vêm os jargões da moda e enxames de MID (medo, incerteza e dúvida) que ofuscam conceitos simples. Não se intimide. Como desenvolvedor de JavaScript, você já tem todas as habilidades necessárias para explorar o admirável mundo do desenvolvimento de IoT agora mesmo. Este tutorial ajuda a começar a usar IoT por meio de um projeto prático.

Depois de uma breve introdução a alguns dos padrões básicos de IoT e da IBM Internet of Things Foundation (IoT Foundation), você implementará dois desses padrões. Você programará um objeto— funcional remoto um dispositivo Raspberry Pi 2 — para monitorar um aplicativo hospedado no IBM Cloud. E escreverá um aplicativo que possa ser executado na linha de comando do PC para ativar e desativar o monitoramento remotamente no Raspberry Pi 2. Seus dispositivos e aplicativos se conectarão e se comunicarão por meio da IoT Foundation. Você também implementará um aplicativo de geração de gráficos no IBM Cloud que possa visualizar as estatísticas coletadas do seu monitor (ou monitores; é possível implementar tantos quanto desejar). Toda a codificação será feita com Node.js.

Para continuar, é necessário:

Três padrões de IoT

O que é possível fazer com uma rede de dispositivos de comunicação inteligentes? Nesta área de possibilidades ilimitadas, três padrões de caso de uso vêm à mente: monitoramento, controle remoto e comunicação entre objetos.

Monitoramento

A Figura 1 ilustra o conceito de dados de monitoramento coletados por objetos IoT (dispositivos).

Figura 1. Monitoramento sobre a IoT
Diagram illustrating monitoring via the IoT
Diagram illustrating monitoring via the IoT

Na Figura 1, os dispositivos coletam dados por meio de sensores integrados ou outras entradas e enviam-nos pela Internet para monitoramento, coleta, armazenamento e análise por aplicativos em espera.

Exemplos de monitoramento incluem:

  • Um sensor de movimento pode contar o número de passos que uma pessoa dá.
  • Um monitor de frequência cardíaca pode relatar os batimentos do coração de uma pessoa e um sensor biométrico mais sofisticado pode monitorar continuamente outros sinais vitais. Os dados acumulados podem ser usados em pesquisa médica ou em análise offline adicional.
  • Um veículo ou um drone pode relatar sua posição geográfica, consumo de combustível, aceleração e outras métricas.
  • Um forno inteligente pode relatar sua temperatura atual, a temperatura interna da carne que está sendo assada (por meio de um termômetro para carne) e o tempo atual até a refeição ficar pronta.
  • Sensores de proximidade inteligentes em torno do perímetro de uma casa podem enviar seu status para acionar uma câmera, luzes ou outros alertas.

O exemplo neste tutorial usa um Raspberry Pi 2 posicionado remotamente para monitorar a operação de um aplicativo hospedado em IBM Cloud.

Controle remoto

O segundo padrão óbvio que vem à mente é o controle remoto de dispositivos, conforme ilustra a Figura 2.

Figura 2. Controle remoto por meio da IoT
Diagram illustrating remote control via the IoT
Diagram illustrating remote control via the IoT

Na Figura 2, um aplicativo de controle remoto envia comandos pela Internet para um dispositivo de destino entre muitos. O dispositivo de destino recebe comandos pela Internet e, ao recebê-los, executa-os, talvez para controlar motores, comutadores, luzes e assim por diante.

Pense:

  • Ligar o sistema de aquecimento da sua casa usando o computador do escritório ou seu smartphone
  • Dirigir um carro robô LEGO através de um labirinto em uma competição a milhares de quilômetros de distância
  • Um aplicativo de despacho conduzindo drones de entrega entre coordenadas de pontos de referência, de armazéns a clientes

O exemplo neste tutorial mostra como escrever rapidamente um aplicativo que ative e desative o monitoramento em um Raspberry Pi 2 posicionado remotamente.

Comunicação entre objetos

Um padrão de operações não tão óbvio na IoT são as comunicações entre máquinas. Nesse cenário, os dispositivos podem monitorar e controlar um ao outro, como ilustra a Figura 3.

Figura 3. Comunicações entre dispositivos pela IoT
Diagram illustrating thing-to-thing communication via the IoT
Diagram illustrating thing-to-thing communication via the IoT

Na Figura 3, um aplicativo proxy auxilia nas comunicações entre dispositivos. Um dispositivo pode enviar mensagens contendo dados ou comandos destinados a outro dispositivo pela Internet para o aplicativo proxy. O aplicativo proxy então encaminha a mensagem ao dispositivo de destino de volta pela Internet para execução ou processamento.

Imagine:

  • Um medidor de energia inteligente que pode escurecer uma sala repleta de luz para atingir uma meta de consumo de energia predefinida pelo usuário.
  • Um sistema de detecção de umidade no solo que sinaliza ao sprinkler para irrigar adequadamente.
  • Um programador de estação de TV automatizado que transmite edições de diferentes durações de um programa de TV conforme a audiência monitorada em tempo real.
  • Um painel de camuflagem camaleão que obtém dados de uma rede de sensores de ambiente inteligentes e câmeras com diferentes pontos de vista para disfarçar-se dinamicamente.
  • Um sistema de provisionamento para um aplicativo global que ativa mais ou menos recursos de computação conforme o tempo de resposta medido coletado de dispositivos instalados globalmente

Implementar comunicação entre dispositivos está além do escopo deste tutorial.

A IoT Foundation em poucas palavras

A IoT Foundation é uma nuvem à qual seus dispositivos — não importa quantos ou quão simples — podem ser conectar e comunicar a qualquer momento. A Figura 4 mostra a função desempenhada pela IOT Foundation no seu mundo conectado de objetos.

Figura 4. Visualização simplificada da IoT Foundation
Simplified IoT Foundation diagram
Simplified IoT Foundation diagram

O valor agregado oferecido pela IOT Foundation inclui:

Se os seus objetos estiverem conectados à Internet, eles sempre poderão se comunicar com a IOT Foundation.

  • Uma rede sempre disponível de proxies, brokers e servidores conectáveis pela Internet. Se os seus objetos estiverem conectados à Internet, eles sempre poderão se comunicar com a IOT Foundation.
  • Para objetos que enviam dados de monitoramento a intervalos regulares, armazenamento praticamente ilimitado de dados para posterior resumo e análise pelos seus próprios serviços e software. (Por padrão, um serviço interno chamado Historian manipula o armazenamento de dados.)
  • Acesso autenticado protegido para todos os dispositivos registrados e para seus aplicativos hospedados em IBM Cloud ou outras plataformas.
  • Interconexões escaláveis, gerenciadas, confiáveis e de alta velocidade entre os pontos de entrada dos dispositivos, corpo de dados acumulados e recursos de processamento dentro do ecossistema IBM Cloud.
  • Um amplo conjunto de ferramentas, modelos e fórmulas para a rápida criação de projetos de monitoramento, controle remoto ou objeto a objeto por proxy protegidos.

Também é possível hospedar e gerenciar seu próprio conjunto de proxies, brokers e servidores. Mas segurança, gerenciamento e garantia de disponibilidade de rede e hardware podem se tornar uma enorme empreitada em tempo integral que o distrai do seu foco principal.

Na Figura 4, observe que a IoT Foundation consiste em uma rede MQTT protegida junto com serviços de valor agregado que podem ser acessados por meio de APIs HTTP (tipo REST). MQTT (que significa de modo amplo Message Queue Telemetry Transport) é um protocolo leve desenvolvido sobre TCP. O MQTT oferece semântica simples de publicar-assinar para mensagens trocadas por TCP. Versões desse protocolo maduro estão evoluindo há mais de uma década. Em 2013, a Versão 3.1 foi enviada para o OASIS, um órgão internacional de padrões. Cada vez mais, a Versão 3.1.1 está sendo implementada em redes IoT globais modernas. A parte do cliente do MQTT pode ser prontamente implementada em processadores integrados de 16 e de 32 bits populares com suporte para TCP. Um cliente com requisitos mínimos pode ser implementado com muito pouca sobrecarga de código, tornando-o ideal para o lado dos objetos de uma rede IoT. O protocolo em si também impõe mínima sobrecarga de transmissão ao TCP. A beleza do MQTT está na sua simplicidade. Para desenvolvedores já familiarizados com o padrão publicar-assinar — como uma interface addListener— a curva de aprendizado de MQTT é zero. A melhor maneira de entender o valor do MQTT é trabalhar com ele, como você fará em breve.

Um aplicativo da web para monitorar

O código do aplicativo que você monitorará (uma aplicativo bruto feito para representar qualquer aplicativo IBM Cloud em execução) está no diretório bluemixwebapp do código de amostra, pronto para ser implementado no seu ambiente IBM Cloud. O aplicativo exibe um formulário simples com dois campos, como mostra a Figura 5.

Figura 5. Formulário de incluir item no aplicativo da web que você monitorará
Screenshot of the web app's UI
Screenshot of the web app's UI

O monitor Raspberry Pi 2 acessará esse formulário, preencherá os campos de item e quantidade e então os enviará. O aplicativo da web então exibirá uma mensagem de confirmação (mostrando o nome e a quantidade do item), de modo similar à apresentada na Figura 6.

Figura 6. Página de resultado no aplicativo da web monitorado
Screenshot of confirmation message from web app
Screenshot of confirmation message from web app

O monitor Raspberry Pi 2 varrerá a página de resultados para validar a mensagem de confirmação antes de relatar o status do aplicativo e o tempo de acesso à IoT Foundation. (Estou usando tempo de acesso para indicar o tempo total para preparar uma solicitação, enviar a solicitação, aguardar a resposta e fazer a varredura. O tempo de resposta, o valor mais variável, é principalmente responsável por variações no tempo de acesso).

Da CLI do Cloud Foundry, conecte-se ao IBM Cloud, efetue login e implemente o aplicativo no seu ambiente IBM Cloud:

cf api https://api.ng.bluemix.net
cf login -u user_name -o org_name -s space_name
cf push your web app name -m 128M

Verifique se o aplicativo da web está funcionando acessando a URL do aplicativo da web do IBM Cloud em um navegador. O código de monitoramento do Raspberry Pi deve conhecer essa URL para acessar o aplicativo da web, portanto, altere a primeira linha do arquivo raspi/monitortask.js do código de amostra para refletir o nome:

var MonitoredBluemixURL = 'http://your web app name.mybluemix.net/';

Raspberry Pi de segunda geração

O Raspberry Pi 2 é a segunda geração do famoso computador Linux de US$ 35. Quando Eben Upton e colaboradores decidiram pela primeira vez produzir alguns computadores financeiramente acessíveis para ajudar a ensinar crianças a programar, eles nunca sonharam em vender 5 milhões de unidades em três anos e tornar-se parte da história da computação.

O Raspberry Pi 2 é uma plataforma de computador incrível, capaz de executar os principais sistemas operacionais modernos, como Ubuntu e Windows® 10. Diferente do Raspberry Pi da primeira geração, o Raspberry Pi 2 apresenta uma CPU de 900 MHz de quatro núcleos ARM Cortex-A7 (o original tinha uma CPU ARMv6 de um único núcleo) e 1 GB de RAM (o original tinha apenas 512 MB ou 256 MB). O Raspberry Pi 2 tem uma pontuação de seis a 20 vezes melhor que o original em avaliações de desempenho. Também tem quatro portas USB para mouse, teclado e acessórios; uma entrada para cartão MicroSD para inicializar imagens de sistema operacional; uma porta HDMI para conectar-se diretamente a monitores ou TVs; e uma porta de Ethernet para conexão de rede. A Figura 7 mostra o Raspberry Pi 2 à direita, ao lado do Raspberry Pi de primeira geração.

Figura 7. Raspberry Pi 2 de alta eficiência em comparação à edição clássica
Photo comparison of Raspberry Pi 2 and classic edition
Photo comparison of Raspberry Pi 2 and classic edition

Desenvolvendo um monitor de aplicativo IBM Cloud do Raspberry Pi 2

Você está pronto para começar a desenvolver um monitor funcional para um aplicativo da web hospedado em IBM Cloud em um Raspberry Pi 2. Por padrão, o monitor tenta acessar o aplicativo da web IBM Cloud monitorado a cada 60 segundos e mede o tempo de acesso. É possível incluir qualquer número desses monitores à IoT por meio da IOT Foundation (sob um agrupamento chamado de organização).

Transformando o Raspberry Pi 2 em um monitor remoto

Há uma variedade de imagens de sistema operacional para executar no Raspberry Pi 2, incluindo Debian, Ubuntu e (em breve) Windows 10. Raspbian, o sistema operacional padrão para Pi, é uma ramificação customizada do Debian Wheezy para Pi. As liberações do Raspbian geralmente estão à frente de outros sistemas operacionais no suporte a novo hardware Pi. O código deste tutorial foi desenvolvido no Raspbian com data de 16/02/2015.

Depois de ter sua imagem Raspbian funcionando, instale a última versão do Node.js disponível no Pi e no seu centro de comando (o console do PC Linux). O código de amostra é baseado em Node.js v0.12.0.

Conecte-se do centro de comando ao Raspberry Pi 2 (via ssh ou telnet, por exemplo) e transfira o conteúdo da pasta raspi do código de amostra (via scp ou wget) para seu Raspberry Pi 2. O código em execução no Raspberry Pi 2 irá:

  1. autenticar e conectar-se à rede IoT Foundation MQTT e manter a conexão ativa.
  2. Assinar os comandos usando um tópico iot-2/cmd/+/fmt/+ curinga, que possibilita suspender ou reiniciar o monitoramento remotamente.
  3. A cada 60 segundos, iniciar uma sessão de navegador controlada, acessar o aplicativo da web hospedado em IBM Cloud preenchendo e enviando um formulário e então analisar os resultados para verificar se o aplicativo da web está sendo executado corretamente.
  4. Publicar o tempo de acesso e o status da Etapa 3 como um evento accesstime para a IoT Foundation via tópico do MQTT iot-2/evt/itemsvc/fmt/json .
  5. Se um comando de suspensão for recebido, parar de monitorar o aplicativo da web no ciclo atual.
  6. Se um comando de continuar for recebido, continuar o monitoramento no próximo ciclo.

Adicionando monitores Raspberry Pi à sua organização de IoT

A maneira mais rápida de fazer a IoT Foundation funcionar a seu favor é usando o painel do IBM Cloud:

  1. Em seu navegador, efetue login no IBM Cloud e use o tempo de execução do SDK para Node.js para criar um novo aplicativo da web Cloud Foundry (que depois será substituído pelo aplicativo de visualização gráfica). Seu aplicativo deve ter um nome exclusivo no IBM Cloud.
  2. Verifique se o aplicativo recém-criado está funcionando.
  3. Volte para o painel do IBM Cloud. Inclua uma instância de serviço da Internet of Things e ligue-a ao seu novo aplicativo. Remonte o aplicativo, se necessário.
  4. Na página de visão geral do aplicativo, clique no bloco do serviço Internet of Things.
  5. Clique em Launch dashboard para ativar o painel da IoT Foundation. (Você pode desejar adicioná-lo aos favoritos para acesso posterior.)
  6. No painel da IoT, é possível visualizar o nome da sua organização na parte superior. Anote esse nome, que será necessário mais tarde para todo o código. Sua organização é seu agrupamento de dispositivos e aplicativos IoT.
  7. Clique na guia People . Clique em Add Person e inclua seu ID IBM para que possa acessar diretamente sua organização por meio desse painel da IOT Foundation (sem passar pelo painel do IBM Cloud) a qualquer momento.
  8. Clique na guia Devices . Inclua um dispositivo do tipo rasp2monitor e o ID de dispositivo euro001 para incluir o monitor Raspberry Pi 2 à sua organização. Clique em Continue.
  9. Na última página de incluir dispositivo, é possível ver suas credenciais, incluindo um auth-token que o Raspberry Pi 2 autenticará para a IoT Foundation. Copie o valor auth-token . Ele será necessário mais tarde e não poderá ser gerado novamente. Clique em Done.
  10. Clique na guia API Keys e inclua uma nova chave de API. Sua chave e token de autenticação são exibidos como na Figura 8. Tome nota dessas credenciais, que não poderão ser geradas novamente. As credenciais serão usadas pelo aplicativo de controle remoto para suspender ou continuar o monitoramento entre dispositivos.
Figura 8. Gerando novas credenciais de API com o painel da IoT Foundation
Screenshot fo generating new API credentials
Screenshot fo generating new API credentials

Conectando-se à rede IoT Foundation MQTT

O MQTT é desenvolvido sobre TCP. A conexão de MQTT pode usar uma conexão TCP ou TLS. O código do monitor usa TLS:

tls://myorg.messaging.internetofthings.ibmcloud.com:8883

TLS adiciona criptografia de ponta a ponta às conexões. Os dados transmitidos entre o dispositivo e a plataforma IoT Foundation são criptografados da mesma maneira que o tráfego HTTPS comum do navegador. O TLS também verifica se você está de fato conectado ao servidor nomeado. No momento, há suporte para TLS 1.2 e MQTT 3.1.1 na IoT Foundation.

Como alternativa, é possível usar uma conexão não criptografada por meio da URL do TCP:

tcp://myorg.messaging.internetofthings.ibmcloud.com:1883

O Raspberry Pi 2 tem poder de computação de sobra. Porém, em um dispositivo mínimo, a carga de computação de criptografia TLS adicional pode ser pesada demais, tornando TCP não criptografado a única opção viável.

Em vez de especificar um URI TCP ou TLS com um número de porta, para MQTT sobre TLS, também é possível usar:

mqtts://myorg.messaging.internetofthings.ibmcloud.com

Ou para conexões MQTT sobre TCP:

mqtt://myorg.messaging.internetofthings.ibmcloud.com

Espaço de tópico da IoT Foundation

Em MQTT genérico, um cliente (seja um dispositivo ou um aplicativo) pode publicar e assinar qualquer tópico sem restrições. Um tópico é apenas uma cadeia de caractere de texto em qualquer formato. Qualquer mensagem (e também uma cadeia de caractere de texto em qualquer formato, frequentemente chamada de carga útil) publicada em um tópico é enviada a todos os assinantes.

A IoT Foundation impõe um espaço de tópico restrito, diferente para aplicativos e dispositivos, para proteger dispositivos contra vazamentos de dados (e prevenir que dispositivos espiões ou maliciosos roubem dados alheios). Quando um dispositivo publica e assina um tópico MQTT, ele tem acesso a um espaço de tópico diferente do que um aplicativo.

A Figura 9 mostra os recursos assimétricos de um dispositivo versus um aplicativo ao acessar a IoT Foundation.

Figura 9. Capacidades de aplicativos versus dispositivos na IoT Foundation
Diagram comparing device capability against application capability on IoT Foundation
Diagram comparing device capability against application capability on IoT Foundation

Na Figura 9, aplicativos autenticados podem enviar comandos e receber eventos de qualquer dispositivo ou aplicativo na organização; porém, um dispositivo autenticado somente pode assinar seus próprios comandos e eventos.

Na IoT Foundation, você distingue comandos usando filtros de tópico. Por exemplo, o tópico para um aplicativo assinar eventos de um dispositivo de monitoramento pode ser:

iot-2/type/rasp2monitor/id/euro001/evt/itemsvc/fmt/json

O tipo de dispositivo (rasp2monitor) e o ID do dispositivo (euro001) são ambos indicados explicitamente.

Um aplicativo pode usar curingas ('+') para assinar eventos originados de vários dispositivos:

iot-2/type/+/id/+/evt/itemsvc/fmt/json

Um tópico de comando destinado a um dispositivo, enviado de um aplicativo, pode ter este formato:

iot-2/type/rasp2monitor/id/euro001/cmd/operation/fmt/json

Observe a referência explícita ao tipo de dispositivo (rasp2monitor) e ao ID (euro001).

Para um dispositivo publicar um evento, não é necessário especificar o tipo ou o ID do dispositivo no tópico, pois a IoT Foundation já tem essa informação. Por exemplo, o dispositivo euro001 pode publicar um evento por meio de um tópico:

iot-2/evt/itemsvc/fmt/json

Ou assinar comandos destinados ao dispositivo com um tópico:

iot-2/cmd/operations/fmt/json

No piclient.js, o código do monitor assina e verifica um comando suspenso. Porém, é possível estender prontamente o código para incluir mais comandos para atender aos seus requisitos.

Formato da mensagem da IoT Foundation

No MQTT, as mensagens (ou seja, cargas úteis) enviadas a um tópico podem ser cadeias de caracteres de texto em qualquer formato. Com a IoT Foundation, também é possível usar cargas úteis que consistam em cadeias de caracteres de texto de qualquer formato. Contudo, se você seguir o formato de mensagem da IoT Foundation, serviços com valor agregado, como o Historian, ficam disponíveis — porque a IoT Foundation pode analisar seus dados.

O formato de mensagem da IoT Foundation requer apenas objetos JSON codificados em UTF-8 com um nó de nível superior de d. Os campos no nó d podem ser numéricos ou cadeias de caracteres. Um nó de nível superior ts contendo uma sequência de registros de data e hora ISO8601 é opcional. No piclient.js, as mensagens enviadas à IoT Foundation estão de acordo com o formato da IoT Foundation. Aqui está uma mensagem de tempo de acesso típica enviada pelo piclient.js:

{   
  "d":{
       "accesstime":2248,
       "status":"ok"
      },
  "ts": "2015-03-27T01:39:47.789Z"
}

Autenticação do cliente

O cliente MQTT do monitor Raspberry Pi 2 autentica-se com a IoT Foundation por meio de um auth-token (veja a Etapa 9 de Adicionando monitores Raspberry Pi à sua organização de IoT). Esse token é gerado apenas uma vez ao registrar inicialmente o dispositivo. Passa por aplicação de salt e hash durante a geração e não pode ser recuperado (porque a IoT Foundation não armazena os valores reais do token). Se as suas credenciais forem perdidas ou comprometidas, será possível revogá-las e então registrar o dispositivo para um novo token — porém, para o dispositivo conectar-se com sucesso, será preciso também enviar o novo token para o dispositivo físico (recuperando fisicamente o dispositivo ou abrindo-o para acesso remoto e então alterando o código conforme instruído no próximo parágrafo).

No Raspberry Pi 2, edite o arquivo piclient.js e modifique a chamada connect() para usar seu próprio auth-token e nome de organização (salvos na Etapa 6 de Adicionando monitores Raspberry Pi à sua organização de IoT):

var client = mqtt.connect(
    'tls://your organization.messaging.internetofthings.ibmcloud.com:8883', 
    {  
      clientId:  'd:your organization:rasp2monitor:euro001',
      username:  'use-token-auth', 
      password:  'your auth-token'
    }
);

Instalando uma pilha de kit da web

O piclient.js usa o módulo monitortask.js para realizar trabalho de monitoramento. O monitortask.js tenta acessar o aplicativo da web que está sendo monitorado por meio da pilha do kit da web PhantomJS. Essa cadeia de ferramentas — consistindo em PhantomJS, CasperJSe Spooky— possibilita script baseado em Node.js e automação de um kit da web sem interface com o usuário (que é como um navegador sem a GUI). O PhantomJS é o kit da web sem interface com o usuário (mecanismo do navegador) com APIs de controle. O CasperJS utiliza amplamente essas APIs enquanto oferece script de alto nível para testes e automação. O Spooky faz o bootstrap do CasperJS e atua como uma ponte de chamada de procedimento remoto (RPC) entre instâncias do Node.js e do CasperJS.

Antes de usar a pilha do PhantomJS, é necessário instalá-la no Raspberry Pi 2. Siga esta sequência:

  1. Instale o PhantomJS. No momento da redação, os binários ARM Linux não faziam parte da compilação do PhantomJS automatizada. Por sorte, graças a Nils Måsén (piksel) da comunidade de Raspberry Pi, um binário para PhantomJS está disponível. Esse binário precisar estar no seu PATH.
  2. Instale o CasperJS globalmente com npm install -g casperjs. (CasperJS deve ser instalado globalmente para o Spooky funcionar do modo correto.) A instalação do CasperJS detectará que o PhantomJS já está instalado e não tentará fazer o download de binários Intel não funcionais.
  3. Instale o Spooky executando npm install no diretório em que o piclient.js reside.

Iniciando o monitor

Agora você está pronto para começar a monitorar o aplicativo da web em execução:

node piclient.js

Para manter o piclient.js em execução o tempo todo no Raspberry Pi 2, resistindo até mesmo a desligamento e reinicialização do sistema, é possível usar um gerenciador de processo Node.js como PM2 ou forever.

Suspendendo e continuando o monitoramento remotamente

O código para a ferramenta de linha de comando que suspende (ou continua) o monitoramento está no diretório de controle remoto do código de amostra. É possível executar essa ferramenta no console do centro de comando (PC) (não em um dispositivo de monitoramento Raspberry Pi 2).

Para poder usar a ferramenta, é necessário atualizar o código em remotecontrol/sendcmd.js com as credenciais da chave de API (da Etapa 10 de Adicionando monitores Raspberry Pi à sua organização de IoT) e o nome da sua organização:

var client  = mqtt.connect(
     'mqtts://your organization.messaging.internetofthings.ibmcloud.com', 
     {
         clientId:'a:your organization:adminapp',
         username:'your API key', 
         password:'your API auth token'
    }
);

A sintaxe geral para executar a ferramenta de controle remoto é:

node sendcmd.js suspend | resume device ID

Por exemplo, para suspender o monitoramento em um monitor em execução com o dispositivo I euro001:

node sendcmd.js  suspend  euro001

E para continuar o monitoramento no mesmo dispositivo:

node sendcmd.js resume euro001

sendcmd.js conecta-se à IoT Foundation como um aplicativo (ou seja, pode enviar comandos a todos os dispositivos em uma organização); então publica o comando da operação especificada para o dispositivo especificado.

Gerando o gráfico das estatísticas de tempo de acesso do serviço Historian

A Figura 10 mostra um gráfico do tempo de acesso do monitor euro001 no campo. É possível ver uma desaceleração do acesso no primeiro ponto de dados e uma quebra durante a qual o monitoramento foi suspenso (remotamente por meio de sendcmd.js).

Figura 10. Visualização gráfica das estatísticas de tempo de acesso
Screenshot of access-time graph
Screenshot of access-time graph

Esse aplicativo de visualização chama as APIs HTTP da IoT Foundation para acessar informações sobre dispositivos e a sua organização IoT e buscar dados de tempo de acesso históricos capturados pelo serviço Historian. Esse aplicativo Node.js Express usa diagramas Rickshaw para exibir gráficos.

O aplicativo é do repositório IBM Messaging GitHub. É possível implementá-lo no seu ambiente IBM Cloud seguindo estas etapas:

  1. Execute git clone https://github.com/ibm-messaging/iot-visualization.git.
  2. Altere o diretório para iot-visualization e edite o arquivo manifest.yml para usar seu próprio nome de aplicativo — o nome de aplicativo da Etapa 1 de Adicionando monitores Raspberry Pi à sua organização de IoT. Essa mudança fará a implementação sobrescrever o aplicativo padrão. O aplicativo já tem a sua organização IoT Foundation ligada a ele e as credenciais da chave de API disponíveis do ambiente.
  3. Execute o comando cf push para implementar seu aplicativo.

Conclusão

Em algumas horas, você concluiu um projeto de IoT prático adequado às suas habilidades de JavaScript e Node.js. Monitores como o que você desenvolveu neste tutorial podem ser enviados para o campo (talvez globalmente), para locais em que usuários comuns do seu aplicativo IBM Cloud residem. Então é possível monitorar e analisar periodicamente o tempo de atividade e o tempo de acesso do aplicativo para obter insight importante sobre os níveis de serviço oferecidos às suas populações de usuários geograficamente diversas.

Com a habilidade de criar, monitorar e controlar milhares de objetos inteligentes localizados em qualquer lugar, com quais novos aplicativos você pode sonhar? Essa é a pergunta fundamental para um aplicativo de IoT de alto nível. Pela primeira vez na história, podemos aproveitar nossa sabedoria acumulada sobre desenvolvimento e design em um novo universo de objetos físicos conectados — controlando-os, interagindo com eles e auxiliando-os a realizar tarefas da vida real. Ao fazer isso, podemos mudar o mundo.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cloud computing, Desenvolvimento móvel, Linux, Internet of Things
ArticleID=1024963
ArticleTitle=Desenvolva um monitor Raspberry Pi 2 com controle remoto para aplicativos IBM Cloud
publish-date=12292015