Conteúdo
- Introdução
- O que você precisa para desenvolver seu app
- Visão geral do kit iniciante do Connected Vehicle
- Etapa 1. Criar uma instância de serviços Internet of Things no IBM Cloud
- Etapa 2. Configurar a organização na IoT Foundation
- Etapa 3. Fazer o download, configurar e implementar o kit iniciante
- Etapa 4. Criar e configurar o Geospatial Analytics
- Etapa 5. Usar o aplicativo Testador
- Etapa 6. Criar um aplicativo analítico Node-RED
- Etapa 7. Criar uma chave virtual fob no Node-RED
- Etapa 8. Publique um tweet dos eventos geo-espaciais com o Node-RED
- Conclusão
- Recursos para download
- Temas relacionados
- Comentários
Desenvolva um aplicativo Internet of Things para carro conectado com o Geospatial Analytics
Com o Geospatial Analytics e Node.js no IBM Cloud, implemente e estenda um kit iniciante de veículo conectado
Quer construir um aplicativo para a Internet of Things (IoT) no IBM Cloud?™? É mais fácil do que você imagina. A maioria dos aplicativos IoT consiste em três peças: uma coisa conectada, um aplicativo para ver e gerenciar a coisa, e análise para detectar eventos acionados por essa coisa. O serviço Internet of Things no IBM Cloud — O IoT Foundation — facilita a conexão de alguma coisa a aplicativos e serviços de análise de dados. Para demonstrar o quão fácil é, desenvolvi um kit iniciante IoT para carros conectados. O kit Veículo Conectado consiste em três partes:
- Um simulador de veículos (um app Node.js)
- Aplicativos HTML5 para visualizar e gerenciar os veículos em um mapa
- O serviço Geospatial Analytics no IBM Cloud, e o Node-RED para análise
Este tutorial o guiará através da configuração e implementação do kit iniciante de Veículo Conectado no IBM Cloud e desenvolver análises com o serviço Geospatial Analytics e Node-RED.
“O aplicativo Connected Vehicle usa o IoT Foundations para mensagens em tempo quase real entre veículos simulados e o Mapa e aplicativos de Testador.”
O que você precisa para desenvolver seu app
- Uma conta IBM Cloud e um DevOps Services , ambas vinculadas ao seu ID IBM
- As ferramentas de linha de comando interface da linha de comandos do Cloud Foundry
- Um entendimento básico de JavaScript
Execute o aplicativo Obtenha o código
Visão geral do kit iniciante do Connected Vehicle
O aplicativo Connected Vehicle que você irá configurar e implementar possui três componentes:
- simulador de veículos Node.js
- Aplicativo de mapas HTML5
- Aplicativo de testador HTML5
Esses três componentes usam o IBM Internet of Things Foundation (IoT Foundation) para publicar/assinar mensagens em tempo real com o protocolo MQTT. Os veículos simulados publicam dados de telemetria com frequência (duas mensagens por segundo) e assinam um tópico de comando por onde aceitam comandos (por exemplo, "set speed to 60") a partir do aplicativo do testador. O aplicativo de Mapa assina o tópico de telemetria do veículo para exibir a posição e status em tempo real. O aplicativo do Testador permite publicar comandos de controle para os veículos e notificações no app de Mapa.
Esse diagrama de visão geral mostra os relacionamentos entre os componentes do aplicativo:

Clique para ver a imagem maior
Etapa 1. Criar uma instância de serviços Internet of Things no IBM Cloud
- Efetue login no IBM Cloud. No painel, clique em ADICIONAR UM SERVIÇO. Escolha Internet of Things a partir do catálogo de serviços. Escolha o plano selecionado Grátis e clique em CRIAR para criar o serviço.
- Selecione o serviço recém-criado em seu painel, depois clique no botão ATIVAR no canto superior direito da página.
- Agora você está no painel IoT Foundation, onde poderá registrar dispositivos,
gerar chaves API para aplicativos, visualizar seu uso e convidar outros para a
organização:
Etapa 2. Configurar a organização na IoT Foundation
O aplicativo Connected Vehicle usa o IoT Foundation para mensagens próximas ao tempo real entre veículos simulados e os aplicativos Mapa e Testador. Para facilitar essa comunicação, você primeiro precisa registrar os dispositivos e gerar uma chave API para os aplicativos.
Com o simulador de veículos, você pode modelar vários veículos de uma única instância de tempo de execução Node.js. IoT Foundation trata cada simulador de veículos como um dispositivo. Você irá eventualmente executar três simuladores de veículos, portanto, a primeira etapa é registrar esses simuladores manualmente para obter credenciais de acesso:
- A partir da página do Dispositivo do painel da organização, clique em
Incluir Dispositivo. No campo Tipo de
Dispositivo , clique em Criar um tipo de
dispositivo... e insira
veículo
no campo abaixo do Tipo de Dispositivo . Insira um ID do dispositivo de qualquer comprimento que será único para esta organização (por exemplo, ABC) e clique em Continuar: - A próxima página exibe as credenciais para seu dispositivo. Anote-as! Por
exemplo:
org=o4ze1w type=vehicle id=ABC auth-method=token auth-token=5QK1rWHG9JhDw-rs+S
- Crie mais dois dispositivos (por exemplo, DEF e GHI), e anote as credenciais. Você irá configurar o kit iniciante com essas informações.
- A partir do painel da organização, clique na guia Chaves API Key e selecione Nova Chave API. Copie a chave e o token. Os aplicativos Mapa e Testador usarão essas credenciais para se conectarem ao IoT Foundation
Etapa 3. Fazer o download, configurar e implementar o kit iniciante
O código-fonte para o kit iniciante IoT é armazenado no bryancboyd |projeto iot-vehicle-geospatial-starter-kit nos Serviços DevOps. É possível obter sua própria cópia do código de várias maneiras, inclusive:
- Criando seu próprio projeto usando a opção BIFURCAR PROJETO na página de projetos.
- Clonando o repositório Git.
Se estiver familiarizado com qualquer desses métodos, você pode obter sua própria cópia do código usando esses métodos. Caso contrário, siga as instruções para criar um arquivo ZIP do código e faça o download para seu PC:
- Role para cima e clique no botão desse tutorial Obtenha o código .
- No the bryancboyd | projeto iot-connected-vehicle-starter-kit, clique em EDITAR CÓDIGO.
- Destaque a raiz da árvore de origem e clique em Arquivo >Exportar > Zip a partir do menu: Salve o arquivo transferido localmente.
- Extraia o arquivo ZIP.
- Em seu projeto local, abra o arquivo manifest.yml. Escolha um nome global único
de aplicativo (por exemplo,
bryancboyd-trafficsim
) e insira o nome para os campos host e na nome . Configure o número de instâncias para4
, e salve o arquivo. - Abra config/settings.js. Esse aquivo armazena todos os dados de configuração de
dispositivos e chaves API.
- Para o
iot_deviceType
, insiraveículo
. - Para o
iot_deviceOrg
, insira seu ID de organização de seis caracteres (por exemplo,O4ze1w
). - Para o
iot_deviceSet
, insira o ID e tokens para os três dispositivos que você registrou. - Para o
iot_apiKey
, insira a chave API que você criou. - Para o
iot_apiToken
, insira o token de chave API. - Mantenha os valores padrão para
notifyTopic
e nainputTopic
; esses são parâmetros de configuração usados pelo serviço Geospatial Analytics.
- Para o
- Salve suas mudanças.
- A partir do diretório-raiz de seu aplicativo extraído, digite
cf login
. Siga os prompts, inserindohttps://api.ng.bluemix.net
para o endpoint do API e seu endereço de e-mail e senha IBM Cloud IBM ID como credenciais de login. Caso tenha mais de uma organização IBM Cloud e espaço disponível, você também terá de escolher esses. - Tipo
cf push
para implementar seu aplicativo no IBM Cloud. - Após seu aplicativo ser implementado, execute o aplicativo Mapa em
http://app-name.mybluemix.net. Você verá três veículos simulados se
movendo no mapa. Clique em um veículo para ver os dados de telemetria:
- Cada simulador pode simular vários veículos. A contagem é controlada por uma
variável de ambiente IBM Cloud:
VEHICLE_COUNT
. Tipocf set-env <app-name> VEHICLE_COUNT 5
para aumentar o número total de veículos para 15.
Etapa 4. Criar e configurar o Geospatial Analytics
Usando o serviço IBM Cloud Geospatial Analytics, você pode monitorar onde cada veículo insere ou deixa uma região de geofence definida. O aplicativo Mapa pode interagir com o serviço, permitindo criar e excluir graficamente geofences de forma dinâmica:
- No painel do IBM Cloud de seu novo aplicativo, clique em ADICIONAR UM SERVIÇO. Escolha Geospatial Analytics a partir do catálogo de serviços. Escolha o plano selecionado Grátis e clique em CRIAR para ligar o serviço a seu aplicativo.
- O aplicativo do kit iniciante inclui APIs para iniciar e parar o Geospatial Analytics com a organização IoT Foundation configurada e credenciais de mensagem. Para iniciar o serviço, navegue até http://app-name .mybluemix.net/GeospatialService_start e aguarde até que a página mostre que foi concluído com êxito (isso pode levar 30-45 segundos).
- Abra o aplicativo Mapa e crie algumas geofences. Clique no botão
Alerta (o ícone de ponto de exclamação) na barra de
ferramentas para iniciar o processo de criação de geofence, e arraste as alças e
bordas até posicionar o geofence. Para criar o geofence, clique no círculo preto
central para abrir o menu de contexto, depois clique em Criar:
O serviço Geospatial Analytics adiciona esse geofence à lista de regiões vigiadas e publica uma mensagem MQTT através do IoT Foundation sempre que um veículo entrar ou sair da área. O aplicativo Mapa consome a mensagem e exibe uma sobreposição sobre o veículo no mapa:

Clique para ver a imagem maior
Para excluir o geofence, selecione a região e clique em Excluir.
Etapa 5. Usar o aplicativo Testador
O aplicativo Testador envia comandos aos veículos simulados e ao aplicativo de mapa.
O simulador de veículos se inscreve para comandos do tipo setProperty
e
dinamicamente muda suas próprias propriedades, velocidade e estado. O aplicativo
Mapa se inscreve para comandos do tipo addOverlay
e exibe dinamicamente
um pop-up de texto sobre o veículo.
- Abra o aplicativo Mapa e o aplicativo Testador (http://app-name .mybluemix.net/tester) lado a lado para que você possa ver ambas as páginas.
- Para configurar o comando
setProperty
, selecione um veículo e insira o ID no formulário inferior no aplicativo testador. Insira uma propriedade develocidade
e um valor de100
e clique em Atualizar Propriedade. Você verá o tópico MQTT e a carga útil contendo o comando no aplicativo Testador e o veículo irá mudar sua velocidade para 100 mph.- Observação: Os veículos simulam um conjunto de
propriedades estáticas (localização, velocidade,
estado e tipo) e propriedades customizadas. É possível
usar o API
setProperty
para dinamicamente adicionar/mudar/excluir uma propriedade customizada em um veículo. Para adicionar uma propriedade, publique uma propriedade que ainda não existe (por exemplo,DriverWindow = UP
). Para excluir uma propriedade, atualize a propriedade com um valor de uma sequência vazia; o veículo deixará de incluir a propriedade em sua mensagem de telemetria:
- Observação: Os veículos simulam um conjunto de
propriedades estáticas (localização, velocidade,
estado e tipo) e propriedades customizadas. É possível
usar o API
- Para configurar o comando
addOverlay
: No aplicativo Testador, use o formulário superior para exibir uma mensagem sobre um veículo:
Etapa 6. Criar um aplicativo analítico Node-RED
É possível usar o texto padrão Node-RED no IBM Cloud para estender o kit iniciante com análises básicas. O Node-RED é uma ferramenta visual para conectar eventos em casos de uso do IoT. Com o Node-RED, você pode projetar fluxos de lógica que se ligam uma variedade de entradas (como MQTT, TCP e HTTP) a saídas (como MQTT, HTTP, Twitter, MongoDB, e Cloudant) para adicionar rapidamente análises leves:
- Implemente o aplicativo de texto padrão do Node-RED no IBM Cloud: Em seu painel
IBM Cloud, clique em ADICIONAR APLICATIVO e escolha o texto
padrão do Internet of Things Foundation. Forneça um nome e nome do host
exclusivos (por exemplo,
bryancboyd-nodered
) e clique em CRIAR. - Quando o aplicativo estiver em execução, clique em LIGAR UM SERVIÇO e escolha o serviço Internet of Things que você criou na Etapa 1.
- Após os estágios do aplicativo, abra a tela do Node-RED em http:// node-red-app.mybluemix.net/red/.
- O texto padrão IoT para aplicativos Nose-RED começa com um fluxo padrão. Selecione os nós na tela e exclua-os.
- Desenvolva um fluxo para monitorar a telemetria para todos os veículos: Arraste
um nó de entrada ibmiot da paleta à esquerda para a tela.
Arraste um nó de depuração para a direita do nó ibmiot e
conecte os dois nós. Dê um clique duplo no nó ibmiot e
configure-o como segue:
- Para o Autenticação, selecione IBM Cloud Service.
- Para o Tipo de Entrada, selecione Evento de Dispositivo.
- Para o Tipo de Dispositivo, insira
veículo
. - Para o Id do Dispositivo, selecione Todas .
- Para o Evento, insira
telemetria
. - Para o Formato, insira
json
. - Para o Nome,, insira
telemetria
.
- Clique em Implemente (canto superior direito da página) e
selecione o painel depuração . Se a configuração foi realizada
com sucesso e o aplicativo do kit inciante estiver sendo executado, você verá as
cargas úteis MQTT para os veículos conectados no painel de depuração:
- Se a sua variável de ambiente
VEHICLE_COUNT
estiver configurada para um valor maior que1
, os dados de telemetria para osVEHICLE_COUNT
veículos são contidos em um único array. Para modificar o fluxo para filtrar para um único veículo (por exemplo, ABC-2), adicione um nó de função no meio de seu fluxo, dê um clique duplo e preencha com o seguinte código:var data = msg.payload; for (var i in data) { if (data[i].id == "ABC-2") { msg.payload = data[i]; return msg; } }
- Conecte o fluxo e clique em Implemente. Você deve agora ver
dados para um único veículo em seu painel de depuração:
Etapa 7. Criar uma chave virtual fob no Node-RED
Depois, use o Node-RED para desenvolver um controle remoto simples para
trancar/destrancar um veículo. Você utilizará dois nós injetar : um
para destrancar o veículo, e o outro para trancá-lo. Para cada operação, você
publicará um comando setProperty
para a propriedade
lockState
com um valor de trancado
ou
destrancado
, depois publique um comando addOverlay
para exibir uma notificação no aplicativo Mapa:
- Vá até seu fluxo Node-RED e arraste dois nós de entrada injetar
para a tela do Node-RED. Edite cada nó e configure uma carga útil de cadeia de
caracteres:
trancado
para um,destrancado
para o outro. Essa carga útil será o valor enviado no comandosetProperty
: - Adicione um nó de função ao fluxo e ligue ambos os nós injetar a ele. Essa
função desenvolverá e publicará dois comandos para o IoT Foundation: um para
configurar o estado do veículo, o outro para exibir uma mensagem sobreposta no
aplicativo Mapa. Use o seguinte código:
var commandValue = msg.payload; var setPropertyMsg = { deviceId: "ABC", deviceType: "vehicle", eventOrCommandType: "setProperty", format: "json", payload: JSON.stringify({ "id": "ABC-2", "property": "lockState", "value": commandValue }) } var addOverlayMsg = { deviceId: "tester", deviceType: "api", eventOrCommandType: "addOverlay", format: "json", payload: JSON.stringify({ "id": "ABC-2", "text": commandValue, "duration": 5000 }) } return [ [setPropertyMsg, addOverlayMsg] ];
- Adicione um nó de saída ibmiot ao fluxo, após o nó de função. O
nó de função irá sobrescrever muitos dos valores de configuração no nó ibmiot;
marcaremos esses campos com um valor "simulado" de
substituição
. Dê um clique duplo no nó ibmiot e configure-o como segue:- Para o Autenticação, selecione IBM Cloud Service.
- Para o Tipo de Entrada, selecione Comando de Dispositivo.
- Para o Tipo de Dispositivo, insira
substituição
. - Para o Id do Dispositivo, insira
substituição
. - Para o Tipo de Comando, insira
substituição
. - Para o Formato, insira
json
. - Para Dado, insira
substituição
. - Para o Nome, , insira
comandos
.
- Implemente o aplicativo (clique em Implementar no canto
superior direito da página) e clique no botão nos nós de injeção enquanto
observa o aplicativo de Mapa. É possível ver a propriedade
lockState
atualizar para o veículo ABC-2 e uma mensagem de "destrancado" aparece no mapa:
Etapa 8. Publique um tweet dos eventos geo-espaciais com o Node-RED
Com o serviço IBM Cloud Geospatial Analytics, você pode criar polígonos de geofences no aplicativo de Mapa e receber eventos IoT Foundations quando um veículo entra ou sai de uma região. O aplicativo de Mapa já assina este tópico de evento e exibe mensagens como uma sobreposição de notificação sobre o veículo. Esse tópico de evento geo-espacial pode ser assinado por vários aplicativos, e pode ser um bloco de construção usado para criar cenários mais complexos, como — por exemplo, uma caixa delimitadora para motoristas jovens, avisando seus pais sempre que o filho sai de uma zona "aprovada". Ou detectar quando seu veículo entrou em um geofence próximo à sua casa e notificar o sistema de automação de sua casa para se preparar para sua chegada.
É possível usar o Node-RED para ligar alertas de geofence a outros aplicativos e APIs. Neste fluxo, você publicará um tweet ao receber uma mensagem de notificação de geofence para um veículo específico:
- Solte um nó de entrada ibmiot na tela. Dê um clique duplo no nó
ibmiot e configure-o conforme descrito abaixo:
- Para a Autenticação, selecione IBM Cloud Service.
- Para o Tipo de Entrada, selecione Comando de Dispositivo.
- Para o Tipo de Dispositivo , insira
api
. - Para o Id do Dispositivo, insira
geo-espacial
. - Para o Tipo de Comando, insira
geoAlert
. - Para o Formato, insira
json
. - Para o Nome, insira
comandos
.
- Adicione um nó de função após o nó de entrada ibmiot. Essa função filtrará os
dados retornados do serviço geo-espacial e continuará a execução do fluxo
somente se o veículo para o alerta corresponde com um ID especificado. Use o
seguinte código (se desejado, substitua o ID com um veículo em seu ambiente),
ligue a função ao nó de depuração e implemente:
msg.payload = { time: msg.payload.time, id: msg.payload.deviceInfo.id, lon: msg.payload.deviceInfo.location.longitude, lat: msg.payload.deviceInfo.location.latitude, eventType: msg.payload.eventType region: msg.payload.regionId } if (msg.payload.id == "ABC-3") { return msg; }
- Depois, arraste um nó de saída twitter para a tela e conecte a
saída da função para a entrada deste nó. É possível usar o nó do twitter para
configurar uma conta Twitter existente usando o OAuth e depois publicar um tweet
sobre os conteúdos da
msg.payload
. Entre em sua conta Twitter e modifique o nó de função para desenvolver a mensagem para o Twitter:msg.payload = { time: msg.payload.time, id: msg.payload.deviceInfo.id, lon: msg.payload.deviceInfo.location.longitude, lat: msg.payload.deviceInfo.location.latitude, eventType: msg.payload.eventType, region: msg.payload.regionId } if (msg.payload.id == "ABC-3") { var verb = "exited"; if (msg.payload.eventType == "Entry") { verb = "entered"; } msg.payload = "Vehicle " + msg.payload.id + " has " + verb + " region " + msg.payload.region + "!"; return msg; }
- Implemente o aplicativo.
Agora o Node-RED publicará um tweet sempre que seu veículo atravessar um geofence:

Clique para ver a imagem maior
Conclusão
Construir um aplicativo IoT com os serviços Internet of Things e Geospatial Analytics no IBM Cloud é simples e fácil. Agora tente: Estenda o kit iniciante do Connected Vehicle com outros serviços IBM Cloud, aplicativos móveis, até mesmo sensores físicos.
Recursos para download
Temas relacionados
- Veja o IBM Cloud em ação
- Criar aplicativos com o aplicativo iniciante da Internet of Things
- Introdução ao Geospatial Analytics
- Monitorar dispositivos móveis com o serviço Geospatial Analytics
- Interface da linha de comandos
- Geospatial Analytics
- O serviço Internet of Things
- O iniciador Node-RED
- Internet of Things
- Node.js
- Big data e análise de dados
Comentários
Acesse ou registre-se para adicionar e acompanhar os comentários.