Use a telemetria dinâmica com a solução pré-configurada de monitoramento remoto
A telemetria dinâmica permite visualizar qualquer telemetria enviada para a solução pré-configurada de monitoramento remoto. Os dispositivos simulados que são implantados com a solução pré-configurada enviam telemetria de temperatura e umidade, que você pode visualizar no painel. Se você personalizar dispositivos simulados existentes, criar novos dispositivos simulados ou conectar dispositivos físicos à solução pré-configurada, poderá enviar outros valores de telemetria, como temperatura externa, RPM ou velocidade do vento. Em seguida, você pode visualizar essa telemetria adicional no painel.
Este tutorial usa um dispositivo simples Node.js simulado que você pode modificar facilmente para experimentar a telemetria dinâmica.
Para concluir este tutorial, você precisará:
- Uma subscrição ativa do Azure. Se não tiver uma conta, pode criar uma de avaliação gratuita em apenas alguns minutos. Para obter mais detalhes, veja Avaliação Gratuita do Azure.
- Node.js versão 0.12.x ou posterior.
Você pode concluir este tutorial em qualquer sistema operacional, como Windows ou Linux, onde você pode instalar Node.js.
Aprovisionar a solução
Se ainda não aprovisionou a solução pré-configurada de monitorização remota na sua conta:
- Entre no azureiotsuite.com usando suas credenciais de conta do Azure e clique para + criar uma solução.
- Clique em Selecionar no mosaico Monitorização remota.
- Introduza o Nome da solução para sua solução pré-configurada de monitorização remota.
- Selecione a Região e a Subscrição que pretende utilizar para aprovisionar a solução.
- Clique em Criar Solução para iniciar o processo de aprovisionamento. Este processo ação demora vários minutos para ser executado.
Aguarde até a conclusão do processo de aprovisionamento
- Clique no mosaico da sua solução com o estado Aprovisionamento.
- Tenha em atenção os Estados de aprovisionamento uma vez que os serviços do Azure estão implementados na sua subscrição do Azure.
- Depois de ter concluído o aprovisionamento, o estado passa para Pronto.
- Clique no mosaico para ver os detalhes da sua solução no painel da direita.
Nota
Se tiver problemas com a implementação da solução pré-configurada, consulte Permissions on the azureiotsuite.com site (Permissões no site azureiotsuite.com) e as FAQ. Se os problemas persistirem, crie um pedido de serviço no portal.
Pretendia ver certos detalhes que não se encontram listados para a sua solução? Dê-nos a suas sugestões de funcionalidades através de A Voz do Utilizador.
Configurar o dispositivo simulado Node.js
No painel de monitorização remota, clique em + Adicionar um dispositivo e, em seguida, adicione um dispositivo personalizado. Anote o nome do host do Hub IoT, a ID do dispositivo e a chave do dispositivo. Você precisará deles mais tarde neste tutorial, quando preparar o aplicativo cliente de dispositivo remote_monitoring.js.
Certifique-se de que Node.js versão 0.12.x ou posterior esteja instalada na sua máquina de desenvolvimento. Execute
node --version
em um prompt de comando ou em um shell para verificar a versão. Para obter informações sobre como usar um gerenciador de pacotes para instalar Node.js no Linux, consulte Instalando Node.js via gerenciador de pacotes.Quando tiver instalado o Node.js, clone a versão mais recente do repositório azure-iot-sdk-node para sua máquina de desenvolvimento. Sempre use a ramificação principal para a versão mais recente das bibliotecas e exemplos.
Da sua cópia local do repositório azure-iot-sdk-node, copie os dois arquivos a seguir da pasta node/device/samples para uma pasta vazia em sua máquina de desenvolvimento:
- packages.json
- remote_monitoring.js
Abra o arquivo remote_monitoring.js e procure a seguinte definição de variável:
var connectionString = "[IoT Hub device connection string]";
Substitua [Cadeia de conexão de dispositivo do Hub IoT] pela cadeia de conexão do dispositivo. Use os valores para seu nome de host do Hub IoT, ID do dispositivo e chave do dispositivo que você anotou na etapa 1. Uma cadeia de conexão de dispositivo tem o seguinte formato:
HostName={your IoT Hub hostname};DeviceId={your device id};SharedAccessKey={your device key}
Se seu nome de host do Hub IoT for contoso e sua ID de dispositivo for mydevice, sua cadeia de conexão será semelhante ao seguinte trecho:
var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="
Guarde o ficheiro. Execute os seguintes comandos em um shell ou prompt de comando na pasta que contém esses arquivos para instalar os pacotes necessários e, em seguida, execute o aplicativo de exemplo:
npm install node remote_monitoring.js
Observe a telemetria dinâmica em ação
O painel mostra a telemetria de temperatura e umidade dos dispositivos simulados existentes:
Se você selecionar o Node.js dispositivo simulado executado na seção anterior, verá a telemetria de temperatura, umidade e temperatura externa:
A solução de monitoramento remoto deteta automaticamente o tipo adicional de telemetria de temperatura externa e o adiciona ao gráfico no painel.
Adicionar um tipo de telemetria
O próximo passo é substituir a telemetria gerada pelo dispositivo simulado Node.js por um novo conjunto de valores:
Pare a Node.js dispositivo simulado digitando Ctrl+C no prompt de comando ou shell.
No arquivo remote_monitoring.js, você pode ver os valores de dados básicos para a telemetria de temperatura, umidade e temperatura externa existentes. Adicione um valor de dados base para rpm da seguinte maneira:
// Sensors data var temperature = 50; var humidity = 50; var externalTemperature = 55; var rpm = 200;
O dispositivo simulado Node.js usa a função generateRandomIncrement no arquivo remote_monitoring.js para adicionar um incremento aleatório aos valores de dados base. Randomize o valor rpm adicionando uma linha de código após as randomizações existentes da seguinte maneira:
temperature += generateRandomIncrement(); externalTemperature += generateRandomIncrement(); humidity += generateRandomIncrement(); rpm += generateRandomIncrement();
Adicione o novo valor rpm à carga JSON que o dispositivo envia para o Hub IoT:
var data = JSON.stringify({ 'DeviceID': deviceId, 'Temperature': temperature, 'Humidity': humidity, 'ExternalTemperature': externalTemperature, 'RPM': rpm });
Execute o Node.js dispositivo simulado usando o seguinte comando:
node remote_monitoring.js
Observe o novo tipo de telemetria RPM exibido no gráfico do painel:
Nota
Talvez seja necessário desativar e, em seguida, ativar o dispositivo Node.js na página Dispositivos no painel para ver a alteração imediatamente.
Personalizar a exibição do painel
A mensagem Device-Info pode incluir metadados sobre a telemetria que o dispositivo pode enviar para o Hub IoT. Esses metadados podem especificar os tipos de telemetria enviados pelo dispositivo. Modifique o valor deviceMetaData no arquivo remote_monitoring.js para incluir uma definição de Telemetria seguindo a definição de Comandos. O trecho de código a seguir mostra a definição de Comandos (certifique-se de adicionar uma ,
após a definição de Comandos ):
'Commands': [{
'Name': 'SetTemperature',
'Parameters': [{
'Name': 'Temperature',
'Type': 'double'
}]
},
{
'Name': 'SetHumidity',
'Parameters': [{
'Name': 'Humidity',
'Type': 'double'
}]
}],
'Telemetry': [{
'Name': 'Temperature',
'Type': 'double'
},
{
'Name': 'Humidity',
'Type': 'double'
},
{
'Name': 'ExternalTemperature',
'Type': 'double'
}]
Nota
A solução de monitoramento remoto usa uma correspondência que não diferencia maiúsculas de minúsculas para comparar a definição de metadados com os dados no fluxo de telemetria.
Adicionar uma definição de Telemetria , conforme mostrado no trecho de código anterior, não altera o comportamento do painel. No entanto, os metadados também podem incluir um atributo DisplayName para personalizar a exibição no painel. Atualize a definição de metadados de telemetria conforme mostrado no trecho a seguir:
'Telemetry': [
{
'Name': 'Temperature',
'Type': 'double',
'DisplayName': 'Temperature (C*)'
},
{
'Name': 'Humidity',
'Type': 'double',
'DisplayName': 'Humidity (relative)'
},
{
'Name': 'ExternalTemperature',
'Type': 'double',
'DisplayName': 'Outdoor Temperature (C*)'
}
]
A captura de tela a seguir mostra como essa alteração modifica a legenda do gráfico no painel:
Nota
Talvez seja necessário desativar e, em seguida, ativar o dispositivo Node.js na página Dispositivos no painel para ver a alteração imediatamente.
Filtrar os tipos de telemetria
Por padrão, o gráfico no painel mostra todas as séries de dados no fluxo de telemetria. Você pode usar os metadados Device-Info para suprimir a exibição de tipos específicos de telemetria no gráfico.
Para fazer com que o gráfico mostre apenas a telemetria Temperatura e Umidade, omita ExternalTemperature dos metadados da Telemetria Device-Info da seguinte maneira:
'Telemetry': [
{
'Name': 'Temperature',
'Type': 'double',
'DisplayName': 'Temperature (C*)'
},
{
'Name': 'Humidity',
'Type': 'double',
'DisplayName': 'Humidity (relative)'
},
//{
// 'Name': 'ExternalTemperature',
// 'Type': 'double',
// 'DisplayName': 'Outdoor Temperature (C*)'
//}
]
A Temperatura exterior já não é apresentada no gráfico:
Essa alteração afeta apenas a exibição do gráfico. Os valores de dados ExternalTemperature ainda são armazenados e disponibilizados para qualquer processamento de back-end .
Nota
Talvez seja necessário desativar e, em seguida, ativar o dispositivo Node.js na página Dispositivos no painel para ver a alteração imediatamente.
Processar erros
Para que um fluxo de dados seja exibido no gráfico, seu Tipo nos metadados Device-Info deve corresponder ao tipo de dados dos valores de telemetria. Por exemplo, se os metadados especificarem que o Tipo de dados de umidade é int e um duplo for encontrado no fluxo de telemetria, a telemetria de umidade não será exibida no gráfico. No entanto, os valores de umidade ainda são armazenados e disponibilizados para qualquer processamento de back-end.
Próximos passos
Agora que você já viu como usar a telemetria dinâmica, pode saber mais sobre como as soluções pré-configuradas usam as informações do dispositivo: Metadados de informações do dispositivo na solução pré-configurada de monitoramento remoto.