Compartilhar via


Usar 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 de vento. Em seguida, você pode visualizar essa telemetria adicional no painel.

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

Para concluir este tutorial, você precisará:

  • Uma assinatura ativa do Azure. 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, no qual você pode instalar Node.js.

Provisionar a solução

Se você ainda não provisionou a solução pré-configurada de monitoramento remoto em sua conta:

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

Aguarde a conclusão do processo de provisionamento

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

Observação

Se você estiver encontrando problemas ao implantar a solução pré-configurada, examine as Permissões de no site azureiotsuite.com e as perguntas frequentes . Se os problemas persistirem, crie um ticket de serviço no portal .

Há detalhes que você esperaria ver que não estão listados para sua solução? Dê sugestões de funcionalidades em User Voice.

Configurar o dispositivo simulado Node.js

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

  2. Verifique se Node.js versão 0.12.x ou posterior está instalada em seu 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 Node.js no Linux, consulte Instalando Node.js por meio do gerenciador de pacotes.

  3. Quando você tiver instalado Node.js, clone a versão mais recente do repositório azure-iot-sdk-node para seu computador de desenvolvimento. Sempre use o branch principal para a versão mais recente das bibliotecas e exemplos.

  4. Na sua cópia local do repositório azure-iot-sdk-node, copie os seguintes dois arquivos da pasta node/device/samples para uma pasta vazia no 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 [cadeia de conexão de dispositivo do IoT Hub] pela sua cadeia de conexão do dispositivo. Use os valores para o nome do host do Hub IoT, a ID do dispositivo e a 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 o nome do host do Hub IoT for contoso e sua ID do dispositivo for mydevice, sua cadeia de conexão será semelhante ao seguinte trecho de código:

    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 esses arquivos para instalar os pacotes necessários e, em seguida, execute o aplicativo de exemplo:

    npm install
    node remote_monitoring.js
    

Observar a telemetria dinâmica em ação

O painel mostra a telemetria de temperatura e umidade dos dispositivos simulados existentes:

O painel padrão

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

Adicionar temperatura externa ao painel

A solução de monitoramento remoto detecta automaticamente o tipo de telemetria de temperatura externa adicional e adiciona-o 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 terminal.

  2. No arquivo remote_monitoring.js, você pode ver os valores de dados base 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;
    
  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. Randomize o valor de rpm adicionando uma linha de código após as randomizações existentes da seguinte maneira:

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

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

    node remote_monitoring.js

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

Adicionar RPM ao painel

Observação

Talvez seja necessário desabilitar e 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 Device-Info pode incluir metadados sobre a telemetria que o dispositivo pode enviar ao Hub IoT. Esses metadados podem especificar os tipos de telemetria que o dispositivo envia. Modifique o valor deviceMetaData no arquivo remote_monitoring.js para incluir uma definição de Telemetria seguindo a definição de Comandos . O snippet de código a seguir mostra a definição de Comandos (certifique-se 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 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 snippet 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 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 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 todas as séries de dados no fluxo de telemetria. Você pode usar os metadados do Device-Info 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 Informações do DispositivoTelemetria 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 ao Ar Livre não é mais exibida no gráfico:

Filtrar a telemetria do painel

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.

Observação

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

Gerenciar erros

Para que um fluxo de dados seja exibido no gráfico, seu Tipo nos metadados do Device-Info deve corresponder ao tipo de dados dos valores de telemetria. Por exemplo, se os metadados especificam que o tipo de dados de umidade é int e um valor double é encontrado no fluxo de telemetria, então 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ê viu como usar a telemetria dinâmica, saiba mais sobre como as soluções pré-configuradas usam informações do dispositivo: metadados de informações do dispositivo na solução pré-configurada de monitoramento remoto.