Partilhar via


Criar uma regra personalizada na solução pré-configurada de monitorização remota

Introdução

Nas soluções pré-configuradas, pode configurar regras que disparam quando um valor de telemetria para um dispositivo atinge um limiar específico. A utilização de telemetria dinâmica com a solução pré-configurada de monitorização remota descreve como pode adicionar valores de telemetria personalizados, como externalTemperature à sua solução. Este artigo mostra-lhe como criar regras personalizadas para tipos de telemetria dinâmicos na sua solução.

Este tutorial utiliza um simples dispositivo simulado Node.js para gerar telemetria dinâmica para enviar para a solução pré-configurada. Em seguida, adicione regras personalizadas na solução Visual Studio RemoteMonitoring e implemente esta parte traseira personalizada para a sua subscrição Azure.

Para concluir este tutorial, precisa de:

  • 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, consulte Avaliação Gratuita do Azure.
  • Node.js versão 0.12.x ou mais tarde para criar um dispositivo simulado.
  • Visual Studio 2015 ou Visual Studio 2017 para modificar a solução pré-configurada com as suas novas regras.

Aprovisionar a solução

Se ainda não aprovisionou a solução pré-configurada de monitorização remota na sua conta:

  1. Inscreva-se para azureiotsuite.com usando as credenciais de conta Azure e clique + para criar uma solução.
  2. Clique em Selecionar no mosaico Monitorização remota.
  3. Introduza o Nome da solução para sua solução pré-configurada de monitorização remota.
  4. Selecione a Região e a Subscrição que pretende utilizar para aprovisionar a solução.
  5. 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

  1. Clique no mosaico da sua solução com o estado Aprovisionamento.
  2. 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.
  3. Depois de ter concluído o aprovisionamento, o estado passa para Pronto.
  4. 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.

Tome nota do nome da solução que escolheu para a sua implantação. Precisa deste nome de solução mais tarde neste tutorial.

Configure o dispositivo simulado Node.js

  1. No painel de monitorização remoto, clique + Adicione um dispositivo e adicione um dispositivo personalizado. Tome nota do nome de hospedeiro Hub IoT, identificação do dispositivo e chave do dispositivo. Precisa deles mais tarde neste tutorial quando preparar a aplicação do cliente do dispositivo remote_monitoring.js.

  2. Certifique-se de que Node.js versão 0.12.x ou posteriormente instalada na sua máquina de desenvolvimento. Corra node --version num pedido de comando ou numa concha para verificar a versão. Para obter informações sobre a utilização de um gestor de pacotes para instalar Node.js no Linux, consulte instalar Node.js através do gestor do pacote.

  3. Quando tiver instalado Node.js, clone a versão mais recente do repositório azure-iot-sdk-node para a sua máquina de desenvolvimento. Utilize sempre o ramo principal para a versão mais recente das bibliotecas e amostras.

  4. A partir da sua cópia local do repositório azure-iot-sdk-node , copie os dois ficheiros seguintes da pasta nó/dispositivo/amostras para uma pasta vazia na sua máquina de desenvolvimento:

    • pacotes.json
    • remote_monitoring.js
  5. Abra o ficheiro remote_monitoring.js e procure a seguinte definição variável:

    var connectionString = "[IoT Hub device connection string]";
    
  6. Substitua [Hub IoT cadeia de ligação do dispositivo] com a cadeia de ligação do dispositivo. Utilize os valores para o seu Hub IoT nome de hospedeiro, id do dispositivo e chave do dispositivo que fez notar no passo 1. Uma cadeia de ligação do dispositivo tem o seguinte formato:

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

    Se o seu nome de Hub IoT é contoso e o seu dispositivo de id é mydevice, a sua cadeia de ligação parece o seguinte corte:

    var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="
    
  7. Guarde o ficheiro. Executar os seguintes comandos numa concha ou pedido de comando na pasta que contém estes ficheiros para instalar as embalagens necessárias e, em seguida, executar a aplicação da amostra:

    npm install
    node remote_monitoring.js
    

Observe a telemetria dinâmica em ação

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

The default dashboard

Se selecionar o dispositivo simulado Node.js que executou na secção anterior, vê-se a temperatura, humidade e telemetria de temperatura externa:

Add external temperature to the dashboard

A solução de monitorização remota deteta automaticamente o tipo de telemetria de temperatura externa adicional e adiciona-a à tabela no painel de instrumentos.

Pode parar a aplicação Node.js consola quando tiver verificado que está a enviar telemetria ExternalTemperature para a solução pré-configurada. Mantenha a janela da consola aberta porque executou esta Node.js aplicação de consola novamente depois de adicionar a regra personalizada à solução.

Locais de armazenamento de regras

A informação sobre as regras é persistiu em dois locais:

  • DeviceRulesNormalizedTable – Esta tabela armazena uma referência normalizada às regras definidas pelo portal da solução. Quando o portal da solução apresenta as regras do dispositivo, consulta esta tabela para as definições de regras.
  • DeviceRules blob – Esta bolha armazena todas as regras definidas para todos os dispositivos registados e é definida como uma entrada de referência para os trabalhos do Azure Stream Analytics.   Quando atualiza uma regra existente ou define uma nova regra no portal da solução, tanto a tabela como o blob são atualizados para refletir as alterações. A definição de regra exibida no portal provém da loja de mesa, e a definição de regra referenciada pelos trabalhos stream Analytics vem da bolha.

Atualizar a solução de Visual Studio remoteMonitoring

Os seguintes passos mostram como modificar a solução de Visual Studio RemoteMonitoring para incluir uma nova regra que utiliza a telemetria ExternalTemperature enviada a partir do dispositivo simulado:

  1. Se ainda não o fez, clone o repositório de monitorização remota azure-iot-remote para um local adequado na sua máquina local utilizando o seguinte comando Git:

    git clone https://github.com/Azure/azure-iot-remote-monitoring.git
    
  2. Em Visual Studio, abra o ficheiro RemoteMonitoring.sln a partir da sua cópia local do repositório de monitorização remota azure-iot-remote.

  3. Abra o ficheiro Infrastructure\Models\DeviceRuleBlobEntity.cs e adicione uma propriedade externalTemperature da seguinte forma:

    public double? Temperature { get; set; }
    public double? Humidity { get; set; }
    public double? ExternalTemperature { get; set; }
    
  4. No mesmo ficheiro, adicione uma propriedade externalTemperatureRuleOutput da seguinte forma:

    public string TemperatureRuleOutput { get; set; }
    public string HumidityRuleOutput { get; set; }
    public string ExternalTemperatureRuleOutput { get; set; }
    
  5. Abra o ficheiro Infrastructure\Models\DeviceRuleDataFields.cs e adicione a seguinte propriedade ExternalTemperature após a propriedade de humidade existente:

    public static string ExternalTemperature
    {
    

    obter { devolução "ExternalTemperature"; } } ```

  1. No mesmo ficheiro, atualize o método _availableDataFields para incluir externalTemperature da seguinte forma:

    private static List<string> _availableDataFields = new List<string>
    {                    
        Temperature, Humidity, ExternalTemperature
    };
    

7. Abra o ficheiro Infrastructure\Repository\DeviceRulesRepository.cs e modificar o método BuildBlobEntityListFromTableRows da seguinte forma:

```csharp
else if (rule.DataField == DeviceRuleDataFields.Humidity)
{
    entity.Humidity = rule.Threshold;
    entity.HumidityRuleOutput = rule.RuleOutput;
}
else if (rule.DataField == DeviceRuleDataFields.ExternalTemperature)
{
  entity.ExternalTemperature = rule.Threshold;
  entity.ExternalTemperatureRuleOutput = rule.RuleOutput;
}
```

Reconstruir e recolocar a solução.

Pode agora implementar a solução atualizada para a sua subscrição Azure.

  1. Abra uma solicitação de comando elevada e navegue até à raiz da sua cópia local do repositório de monitorização remota azure-iot-remote.

  2. Para implementar a sua solução atualizada, executar o seguinte comando substituindo {nome de implementação} com o nome da sua implementação de solução pré-configurada que observou anteriormente:

    build.cmd cloud release {deployment name}
    

Atualizar o trabalho stream Analytics

Quando a implementação estiver concluída, pode atualizar o trabalho stream Analytics para utilizar as novas definições de regras.

  1. No portal do Azure, navegue para o grupo de recursos que contém os seus recursos de solução pré-configurados. Este grupo de recursos tem o mesmo nome especificado para a solução durante a implantação.

  2. Navegue para o trabalho {deployment name}-Rules Stream Analytics.

3. Clique em Stop para impedir que o trabalho de Stream Analytics funciona. (Deve esperar que o trabalho de streaming pare antes de poder editar a consulta).

4. Clique em Consulta. Editar a consulta para incluir a declaração SELECT para ExternalTemperature. A amostra a seguir mostra a consulta completa com a nova declaração SELECT :

```
WITH AlarmsData AS 
(
SELECT
     Stream.IoTHub.ConnectionDeviceId AS DeviceId,
     'Temperature' as ReadingType,
     Stream.Temperature as Reading,
     Ref.Temperature as Threshold,
     Ref.TemperatureRuleOutput as RuleOutput,
     Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
     Ref.Temperature IS NOT null AND Stream.Temperature > Ref.Temperature
 
UNION ALL
 
SELECT
     Stream.IoTHub.ConnectionDeviceId AS DeviceId,
     'Humidity' as ReadingType,
     Stream.Humidity as Reading,
     Ref.Humidity as Threshold,
     Ref.HumidityRuleOutput as RuleOutput,
     Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
     Ref.Humidity IS NOT null AND Stream.Humidity > Ref.Humidity
 
UNION ALL
 
SELECT
     Stream.IoTHub.ConnectionDeviceId AS DeviceId,
     'ExternalTemperature' as ReadingType,
     Stream.ExternalTemperature as Reading,
     Ref.ExternalTemperature as Threshold,
     Ref.ExternalTemperatureRuleOutput as RuleOutput,
     Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
     Ref.ExternalTemperature IS NOT null AND Stream.ExternalTemperature > Ref.ExternalTemperature
)
 
SELECT *
INTO DeviceRulesMonitoring
FROM AlarmsData
 
SELECT *
INTO DeviceRulesHub
FROM AlarmsData
```
  1. Clique em Guardar para alterar a consulta de regras atualizada.

  2. Clique em Começar a iniciar o trabalho stream Analytics a funcionar novamente.

Adicione a sua nova regra no painel de instrumentos

Pode agora adicionar a regra externaltemperature a um dispositivo no painel de instrumentos de solução.

  1. Navegue até ao portal da solução.

2. Navegue para o painel dispositivos .

3. Localize o dispositivo personalizado criado que envia telemetria ExternalTemperature e no painel 'Detalhes do Dispositivo ', clique em Adicionar Regra.

4. Selecione externalTemperature no Campo de Dados.

  1. Definir limiar para 56. Em seguida, clique em Guardar e ver as regras.

  2. Volte ao painel para ver o histórico do alarme.

  3. Na janela da consola que deixou aberta, inicie a aplicação Node.js consola para começar a enviar dados de telemetria ExternalTemperature .

8. Note que a tabela De Histórico de Alarmes mostra novos alarmes quando a nova regra é acionada.  

Informações adicionais

Mudar o operador > é mais complexo e vai além dos passos delineados neste tutorial. Embora possa alterar o trabalho stream Analytics para usar o operador que quiser, refletir que o operador no portal da solução é uma tarefa mais complexa.

Passos seguintes

Agora que viu como criar regras personalizadas, pode aprender mais sobre as soluções pré-configuradas: