Passo a passo da solução pré-configurada de monitoramento remoto
A solução pré-configurada de monitoramento remoto do IoT Suite é uma implementação de uma solução de monitoramento de ponta a ponta para vários computadores em execução em locais remotos. A solução combina os principais serviços do Azure para fornecer uma implementação genérica de cenário de negócios. Você pode usar a solução como um ponto de partida para sua própria implementação e personalizá-la para atender às suas próprias necessidades de negócios específicas.
Este artigo explica alguns dos principais elementos da solução de monitoramento remoto para que você possa entender como ela funciona. Esse conhecimento ajuda a:
- Solucionar problemas na solução.
- Planejar como personalizar a solução para atender a seus próprios requisitos específicos.
- Criar sua própria solução IoT que usa os serviços do Azure.
Arquitetura lógica
O seguinte diagrama descreve os componentes lógicos da solução pré-configurada:
Microsserviços e contêineres do Docker
Monitoramento remoto é a primeira das nossas soluções pré-configuradas a utilizar uma arquitetura de microsserviços. A solução está disponível no .NET e Java. Os microsserviços foram lançados como um padrão predominante para obter flexibilidade e escala (permitindo que os contêineres sejam escalados individualmente), sem comprometer a velocidade de desenvolvimento. Os microserviços separam o código e fornecem interfaces bem definidas tornando a solução mais fácil de entender e menos monolítica. Também expandem opções para parceiros que desejam estender nosso aceleradores de solução atuais para criar soluções acabadas que podem ser monetizadas.
Saiba mais sobre os contêineres do Docker
Dispositivos simulados
Na solução pré-configurada, o dispositivo simulado representa um dispositivo de resfriamento (como um ar-condicionado para edifícios ou uma unidade de tratamento de ar para instalações). Ao implantar a solução pré-configurada, você também provisiona automaticamente quatro dispositivos simulados que são executados em um Trabalho Web do Azure. Os dispositivos simulados facilitam a exploração do comportamento da solução sem a necessidade de implantar dispositivos físicos. Para implantar um dispositivo físico real, consulte o tutorial Conectar o dispositivo à solução pré-configurada de monitoramento remoto.
Mensagens do dispositivo para a nuvem
Cada dispositivo simulado pode enviar os seguintes tipos de mensagens ao Hub IoT:
Mensagem | Descrição |
---|---|
Inicialização | Quando o dispositivo é iniciado, ele envia uma mensagem de informações do dispositivo com informações sobre ele mesmo para o back-end. Esses dados incluem a identificação do dispositivo e uma lista de comandos e métodos que o dispositivo oferece suporte. |
Presença | Um dispositivo envia periodicamente uma mensagem de presença para relatar se o dispositivo pode detectar a presença de um sensor. |
Telemetria | Um dispositivo envia periodicamente uma mensagem de telemetria que relata os valores simulados de temperatura e umidade coletados nos sensores simulados do dispositivo. |
Observação
A solução armazena a lista de comandos com suporte pelo dispositivo em banco de dados Cosmos DB e não no dispositivo gêmeo.
Propriedades e dispositivos gêmeos
Os dispositivos simulados enviam as seguintes propriedades do dispositivo para o gêmeo no hub IoT como propriedades relatadas. O dispositivo envia propriedades relatadas na inicialização e em resposta a um comando ou método Alterar Estado do Dispositivo.
Propriedade | Finalidade |
---|---|
Config.TelemetryInterval | Frequência (segundos) em que o dispositivo envia telemetria |
Config.TemperatureMeanValue | Especifica o valor médio para a telemetria de temperatura simulada |
Device.DeviceID | A Id que é fornecida ou atribuída quando um dispositivo é criado na solução |
Device.DeviceState | Estado relatado pelo dispositivo |
Device.CreatedTime | Hora de criação do dispositivo na solução |
Device.StartupTime | Hora de que início do dispositivo |
Device.LastDesiredPropertyChange | O número de versão da última propriedade desejada é alterado |
Device.Location.Latitude | Localização de latitude do dispositivo |
Device.Location.Longitude | Localização de longitude do dispositivo |
System.Manufacturer | Fabricante do dispositivo |
System.ModelNumber | O número do modelo do dispositivo |
System.SerialNumber | Número de série do dispositivo |
System.FirmwareVersion | Versão atual do firmware no dispositivo |
System.Platform | Arquitetura da plataforma do dispositivo |
System.Processor | Processador que executa o dispositivo |
System.InstalledRAM | Quantidade de RAM instalada no dispositivo |
O simulador propaga essas propriedades em dispositivos simulados com valores de exemplo. Sempre que o simulador inicializa um dispositivo simulado, o dispositivo posta os metadados predefinidos no Hub IoT como propriedades relatadas. As propriedades relatadas só podem ser atualizadas pelo dispositivo. Para alterar uma propriedade relatada, você pode definir uma propriedade desejada no portal de solução. É responsabilidade do dispositivo:
- Recuperar periodicamente as propriedades desejadas do hub IoT.
- Atualizar sua configuração com o valor da propriedade desejada.
- Enviar o novo valor para o hub como uma propriedade relatada.
No painel de solução, você pode usar propriedades desejadas para definir propriedades em um dispositivo usando o dispositivo gêmeo. Normalmente, um dispositivo lê um valor de propriedade desejada do hub para atualizar seu estado interno e relatar a alteração como uma propriedade relatada.
Observação
O código do dispositivo simulado usa apenas as propriedades Desired.Config.TemperatureMeanValue e Desired.Config.TelemetryInterval desejadas para atualizar as propriedades relatadas enviadas de volta ao Hub IoT. Todas as outras solicitações de alteração de propriedade desejados são ignoradas no dispositivo simulado.
Métodos
Os dispositivos simulados podem lidar com os seguintes métodos (métodos diretos) chamados do portal de solução por meio do hub IoT:
Método | Descrição |
---|---|
InitiateFirmwareUpdate | Instrui o dispositivo a realizar uma atualização de firmware |
Reinicialização | Instrui o dispositivo a reinicializar |
FactoryReset | Instrui o dispositivo a executar uma redefinição de fábrica |
Alguns métodos usam propriedades relatadas para relatar o progresso. Por exemplo, o método InitiateFirmwareUpdate simula a execuçã da atualização de maneira assíncrona no dispositivo. O método retorna imediatamente no dispositivo, enquanto a tarefa assíncrona continua a enviar atualizações de status de volta para o painel de solução usando as propriedades relatadas.
Comandos
Os dispositivos simulados podem lidar com os seguintes comandos (mensagens de nuvem para dispositivos) enviados a partir do portal de solução por meio do hub IoT:
Comando | Descrição |
---|---|
PingDevice | Envia um ping ao dispositivo para verificar se ele está ativo |
StartTelemetry | Inicia o dispositivo que envia a telemetria |
StopTelemetry | Interrompe o dispositivo de enviar a telemetria |
ChangeSetPointTemp | Altera o valor de ponto definido em torno do qual os dados aleatórios são gerados |
DiagnosticTelemetry | Dispara o simulador de dispositivo para enviar um valor de telemetria adicional (externalTemp) |
ChangeDeviceState | Altera uma propriedade estendida do estado do dispositivo e envia a mensagem de informações do dispositivo |
Observação
Para obter uma comparação desses comandos (mensagens da nuvem para o dispositivo) e métodos (métodos diretos), consulte Orientação para comunicações entre o dispositivo e a nuvem.
Hub IoT
O hub IoT consome os dados enviados dos dispositivos para a nuvem e os disponibiliza para os trabalhos do Stream Analytics do Azure (ASA). Cada trabalho de fluxo do ASA usa um grupo separado de consumidores do Hub IoT para ler o fluxo de mensagens dos dispositivos.
O hub IoT na solução também:
- Mantém um registro de identidade que armazena as ids e chaves de autenticação de todos os dispositivos permitidas para se conectar ao portal. Você pode habilitar e desabilitar dispositivos por meio do registro de identidade.
- Envia comandos para os dispositivos em nome do portal de solução.
- Chama métodos em seus dispositivos em nome do portal de solução.
- Mantém dispositivos gêmeos para todos os dispositivos registrados. Um dispositivo gêmeo armazena os valores de propriedade relatados por um dispositivo. Um dispositivo gêmeo também armazena propriedades desejadas, definidas no portal de solução para o dispositivo recuperar ao lado se conectar.
- Agenda trabalhos para definir propriedades para vários dispositivos ou chama métodos em vários dispositivos.
Stream Analytics do Azure
Na solução de monitoramento remoto, o Stream Analytics do Azure (ASA) envia mensagens do dispositivo recebidas pelo hub IoT para outros componentes de back-end para o processamento ou armazenamento. Diferentes trabalhos do ASA executam funções específicas com base no conteúdo das mensagens.
Trabalho 1: as Informações do Dispositivo filtram as mensagens de informações do dispositivo a partir do fluxo de mensagens de entrada e enviam-nas para um ponto de extremidade do Hubs de Eventos. Um dispositivo envia mensagens de informações do dispositivo na inicialização e em resposta a um comando SendDeviceInfo . Esse trabalho usa a seguinte definição de consulta para identificar as mensagens de informações do dispositivo :
SELECT * FROM DeviceDataStream Partition By PartitionId WHERE ObjectType = 'DeviceInfo'
Esse trabalho envia a saída a um Hub de Eventos para processamento adicional.
Trabalho 2: as Regras avaliam os valores de telemetria da temperatura e da umidade de entrada em relação aos limites de cada dispositivo. Os valores de limite são definidos no editor de regras disponível no portal da solução. Cada par de dispositivo/valor é armazenado por carimbo de data/hora em um blob que o Stream Analytics lê como Dados de Referência. O trabalho compara qualquer valor não vazio com o limite definido para o dispositivo. Se exceder a condição '>', o trabalho gerará um evento de alarme que indica que o limite foi excedido e fornecerá os valores de dispositivo, valor e carimbo de data/hora. Esse trabalho usa a seguinte definição de consulta para identificar mensagens de telemetria que devem disparar um alarme:
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
)
SELECT *
INTO DeviceRulesMonitoring
FROM AlarmsData
SELECT *
INTO DeviceRulesHub
FROM AlarmsData
O trabalho envia a saída a um Hub de Eventos para processamento adicional e salva os detalhes de cada alerta no armazenamento de blobs, em que o portal da solução pode ler as informações do alerta.
Trabalho 3: a Telemetria opera no fluxo de entrada da telemetria do dispositivo de duas maneiras. A primeira envia todas as mensagens de telemetria dos dispositivos ao armazenamento de blobs persistente para armazenamento de longo prazo. A segunda calcula os valores de umidade média, mínima e máxima em uma janela deslizante de cinco minutos e envia os dados para o armazenamento de blobs. O portal da solução lê os dados de telemetria do armazenamento de blobs para popular os gráficos. Esse trabalho usa a seguinte definição de consulta:
WITH
[StreamData]
AS (
SELECT
*
FROM [IoTHubStream]
WHERE
[ObjectType] IS NULL -- Filter out device info and command responses
)
SELECT
IoTHub.ConnectionDeviceId AS DeviceId,
Temperature,
Humidity,
ExternalTemperature,
EventProcessedUtcTime,
PartitionId,
EventEnqueuedUtcTime,
*
INTO
[Telemetry]
FROM
[StreamData]
SELECT
IoTHub.ConnectionDeviceId AS DeviceId,
AVG (Humidity) AS [AverageHumidity],
MIN(Humidity) AS [MinimumHumidity],
MAX(Humidity) AS [MaxHumidity],
5.0 AS TimeframeMinutes
INTO
[TelemetrySummary]
FROM [StreamData]
WHERE
[Humidity] IS NOT NULL
GROUP BY
IoTHub.ConnectionDeviceId,
SlidingWindow (mi, 5)
Hubs de Eventos
Os trabalhos do ASA de informações do dispositivo e regras enviam seus dados para os Hubs de Eventos para um encaminhamento confiável ao Processador de Eventos em execução no Trabalho Web.
Armazenamento do Azure
A solução usa o armazenamento de blobs do Azure para persistir todos os dados de telemetria brutos e resumidos dos dispositivos na solução. O portal lê os dados de telemetria do armazenamento de blobs para popular os gráficos. Para exibir alertas, o portal da solução lê os dados do armazenamento de blobs que registra quando os valores de telemetria excederam os valores de limite configurados. A solução também usa o armazenamento de blobs para registrar os valores de limite definidos no portal da solução.
WebJobs
Além de hospedar os simuladores de dispositivo, os Trabalhos Web na solução também hospedam o Processador de Eventos em execução em um Trabalho Web do Azure que lida com as respostas do comando. Ele usa mensagens de resposta de comando para atualizar o histórico de comandos do dispositivo (armazenados no banco de dados Cosmos DB).
Cosmos DB
A solução usa um banco de dados Cosmos DB para armazenar informações sobre os dispositivos conectados à solução. Essas informações incluem o histórico de comandos enviados aos dispositivos no portal de solução e os métodos invocados do portal de solução.
Portal de solução
O portal de solução é um aplicativo Web implantado como parte da solução pré-configurada. As páginas principais no portal de solução são o painel e a lista de dispositivos.
Painel
Esta página no aplicativo Web usa os controles javascript do PowerBI (veja Repositório PowerBI-visuals) para visualizar os dados de telemetria dos dispositivos. A solução usa o trabalho de telemetria do ASA para gravar os dados de telemetria no armazenamento de blobs.
Lista de dispositivos
Nesta página no portal de solução, você pode:
- Provisione um novo dispositivo. Esta ação define a id do dispositivo exclusiva e gera a chave de autenticação. Ela grava as informações sobre o dispositivo no registro de identidade do Hub IoT e no banco de dados Cosmos DB específico da solução.
- Gerencie propriedades de dispositivo. Esta ação inclui a exibição de propriedades existentes e a atualização com novas propriedades.
- Envie comandos para um dispositivo.
- Exiba o histórico de comandos de um dispositivo.
- Habilite e desabilite dispositivos.
Próximas etapas
As postagens de blog do TechNet abaixo fornecem mais detalhes sobre a solução pré-configurada de monitoramento remoto:
- IoT Suite - Under the Hood - Remote Monitoring (Monitoramento remoto)
- IoT Suite - Remote Monitoring - Adding Live and Simulated Devices (Adicionando dispositivos ativos e simulados)
Você pode continuar a introdução ao IoT Suite lendo os seguintes artigos: