Compartilhar via


Usar telemetria dinâmica com a solução pré-configurada de monitoramento remoto

A telemetria dinâmica permite que você visualize qualquer telemetria enviada à solução pré-configurada de monitoramento remoto. Os dispositivos simulados que implantam a solução pré-configurada enviam telemetria de temperatura e umidade, que pode ser visualizada no painel. Se você personalizar os dispositivos simulados existentes, criar novos dispositivos simulados ou conectar dispositivos físicos à solução pré-configurada, será possível enviar outros valores de telemetria, como a temperatura externa, RPM ou velocidade do vento. Em seguida, você pode visualizar essa telemetria adicional no painel.

Este tutorial usa um dispositivo Node.js simples simulado que você pode facilmente modificar a fim de experimentar a telemetria dinâmica.

Para concluir este tutorial, você precisará de:

  • Uma assinatura do Azure ativa. Se você não tiver uma conta, poderá criar uma conta de avaliação gratuita em apenas alguns minutos. Para obter detalhes, consulte 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 é possível instalar o Node.js.

Provisionar a solução

Se você já não tiver provisionado a solução pré-configurada de monitoramento remoto em sua conta:

  1. Entre no azureiotsuite.com usando as credenciais da sua conta do Azure e clique em + para criar uma solução.
  2. Clique em Selecionar no bloco Monitoramento remoto.
  3. Digite um Nome de solução para a solução pré-configurada de monitoramento remoto.
  4. Selecione a Região e a Assinatura que você deseja usar para provisionar a solução.
  5. Clique em Criar Solução para iniciar o processo de provisionamento. Este processo normalmente leva vários minutos para ser executado.

Aguarde o processo de provisionamento ser concluído

  1. Clique no bloco da sua solução com o status Provisionamento .
  2. Observe os estados de Provisionamento à medida que os serviços do Azure são implantados em sua assinatura do Azure.
  3. Após o provisionamento ser concluído, o status será alterado para Pronto.
  4. Clique no bloco para ver os detalhes da solução no painel à direita.

Observação

Se estiver tendo problemas para implantar a solução pré-configurada, dê uma olhada em Permissões no site azureiotsuite.com e nas Perguntas frequentes. Se os problemas persistirem, crie um tíquete de serviço no portal.

Há detalhes que você esperaria ver e que não estão listados para sua solução? Envie sugestões de recursos no User Voice.

Configurar o dispositivo Node.js simulado

  1. No painel de monitoramento remoto, clique em + Adicionar um dispositivo e adicione um dispositivo personalizado. Anote o nome de host do Hub IoT, id do dispositivo e chave do dispositivo. Você precisará deles mais tarde neste tutorial ao preparar o aplicativo cliente de dispositivo remote_monitoring.js.

  2. Certifique-se de que o Node.js versão 0.12.x ou posterior esteja instalado no computador 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 o Node.js no Linux, confira Instalação do Node.js por meio do gerenciador de pacotes.

  3. Após a instalação do Node.js, clone a versão mais recente do repositório azure-iot-sdks em seu computador de desenvolvimento. Sempre use a ramificação mestre para a versão mais recente das bibliotecas e exemplos.

  4. Em sua cópia local do repositório azure-iot-sdks, copie os dois arquivos a seguir da pasta node/device/samples em uma pasta vazia em seu computador de desenvolvimento:

    • packages.json
    • remote_monitoring.js
  5. Abra o arquivo remote_monitoring.js e procure a seguinte definição de variável:

    var connectionString = "[IoT Hub device connection string]";
    
  6. Substitua a [cadeia de conexão de dispositivo do Hub IoT] pela cadeia de conexão do seu dispositivo. Use os valores de seu nome de host do Hub IoT, ID do dispositivo e chave de dispositivo que você anotou na etapa 1. Uma cadeia de conexão do dispositivo tem o seguinte formato:

    HostName={your IoT Hub hostname};DeviceId={your device id};SharedAccessKey={your device key}
    

    Se o nome de host do Hub IoT for contoso e a ID de dispositivo for mydevice, a cadeia de conexão se parecerá com este snippet:

    var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="
    
  7. Salve o arquivo. Execute os seguintes comandos em um shell ou prompt de comando na pasta que contém os 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 existentes simulados:

O painel padrão

Se você selecionar dispositivo simulado Node.js executado na seção anterior, verá a telemetria de temperatura, umidade e temperatura externa:

Adicionar temperatura externa ao painel

A solução de monitoramento remoto detecta automaticamente o tipo de telemetria adicional de temperatura externa e o adiciona ao gráfico no painel.

Adicionar um tipo de telemetria

A próxima etapa é substituir a telemetria gerada pelo dispositivo simulado Node.js por um novo conjunto de valores:

  1. Interrompa o dispositivo simulado Node.js digitando Ctrl + C no prompt de comando ou no shell.

  2. No arquivo remote_monitoring.js, você pode ver os valores de dados base para a telemetria existente de temperatura, umidade e temperatura externa. 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;
    
  3. 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. Torne o valor de rpm aleatório adicionando uma linha de código após as aleatorizações existentes da seguinte maneira:

    temperature += generateRandomIncrement();
    externalTemperature += generateRandomIncrement();
    humidity += generateRandomIncrement();
    rpm += generateRandomIncrement();
    
  4. Adicione o novo valor de rpm à carga JSON que o dispositivo envia ao Hub IoT:

    var data = JSON.stringify({
      'DeviceID': deviceId,
      'Temperature': temperature,
      'Humidity': humidity,
      'ExternalTemperature': externalTemperature,
      'RPM': rpm
    });
    
  5. Execute o dispositivo Node.js simulado usando o seguinte comando:

    node remote_monitoring.js

  6. Observe o novo tipo de telemetria RPM exibido no gráfico no painel:

Adicionar RPM ao painel

Observação

Talvez seja necessário desabilitar e, em seguida, habilitar o dispositivo Node.js na página Dispositivos no painel, para ver a alteração imediatamente.

Personalizar a exibição do painel

A mensagem Informações do Dispositivo 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 de deviceMetaData no arquivo remote_monitoring.js a fim de incluir uma definição de Telemetria logo após a definição de Comandos. O seguinte snippet de código mostra a definição Comandos (não se esqueça de adicionar um , 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'
}]

Observação

A solução de monitoramento remoto usa uma correspondência que diferencia maiúsculas e minúsculas a fim de comparar a definição de metadados com os dados no fluxo de telemetria.

A adição de uma definição de Telemetria , como mostra o snippet de código acima, 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 mostra o snippet 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:

Personalizar a legenda do gráfico

Observação

Talvez seja necessário desabilitar e, em seguida, habilitar 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 cada série de dados no fluxo de telemetria. Você pode usar os metadados Informações do Dispositivo para suprimir a exibição de tipos de telemetria específicos no gráfico.

Para fazer com que o gráfico mostre apenas a telemetria de Temperatura e Umidade, omita ExternalTemperature dos metadados de Telemetria de Informações do Dispositivo 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 Externa não aparece mais no gráfico:

Filtrar a telemetria no painel

Essa alteração afeta somente a exibição do gráfico. Os valores de ExternalTemperature ainda são armazenados e disponibilizados para o processamento de qualquer back-end.

Observação

Talvez seja necessário desabilitar e, em seguida, habilitar o dispositivo Node.js na página Dispositivos no painel, para ver a alteração imediatamente.

Tratar erros

Para que um fluxo de dados seja exibido no gráfico, seu Tipo nos metadados Informações do Dispositivo deve corresponder ao tipo de dados dos valores de telemetria. Por exemplo, se os metadados especificarem que o Tipo de dados de unidade é int e um double 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óximas etapas

Agora que você já viu como usar a telemetria dinâmica, saiba mais sobre como as soluções pré-configuradas usam das informações do dispositivo: Metadados de informações de dispositivo na solução pré-configurada de monitoramento remoto.