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:
- Inscreva-se para azureiotsuite.com usando as credenciais de conta 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.
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
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.
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.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.
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
Abra o ficheiro remote_monitoring.js e procure a seguinte definição variável:
var connectionString = "[IoT Hub device connection string]";
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 ... =="
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:
Se selecionar o dispositivo simulado Node.js que executou na secção anterior, vê-se a temperatura, humidade e telemetria de temperatura externa:
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:
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
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.
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; }
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; }
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"; } } ```
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.
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.
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.
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.
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
```
Clique em Guardar para alterar a consulta de regras atualizada.
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.
- 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.
Definir limiar para 56. Em seguida, clique em Guardar e ver as regras.
Volte ao painel para ver o histórico do alarme.
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: