Compartir a través de


Tutorial de la solución preconfigurada de supervisión remota

La solución preconfigurada de supervisión remota del Conjunto de aplicaciones de IoT es una implementación de una solución de supervisión integral para varias máquinas en ubicaciones remotas. La solución combina servicios clave de Azure para proporcionar una implementación genérica del escenario de negocio. Puede usar la solución como punto de partida para su propia implementación, así como personalizarla para cumplir sus requisitos empresariales específicos.

Este artículo le guiará a través de algunos de los elementos clave de la solución de supervisión remota para que pueda entender cómo funciona. Esta información le ayuda a:

  • Solucionar problemas de la solución.
  • Planear cómo personalizar la solución para satisfacer sus propios requisitos específicos.
  • Diseñar una solución de IoT propia que utilice servicios de Azure.

Arquitectura lógica

El diagrama siguiente describe los componentes lógicos de la solución preconfigurada:

Arquitectura lógica

Microservicios y contenedores de Docker

Supervisión remota es la primera de nuestras soluciones preconfiguradas que aprovecha una arquitectura de microservicios. La solución está disponible tanto en .NET como en Java. Los microservicios han surgido como un patrón frecuente para lograr escalabilidad y flexibilidad (permitiendo que los contenedores se escalen por separado) sin poner en peligro la velocidad de desarrollo. Los microservicios compartimentan el código y proporcionan interfaces bien definidas, lo que facilitan la compresión de la solución y aumentan su flexibilidad. También expande aún más opciones para los asociados que desean ampliar nuestros actuales aceleradores de soluciones para compilar soluciones terminadas que se pueden monetizar.

Más información acerca de los contenedores de Docker

Dispositivos simulados

En la solución preconfigurada, el dispositivo simulado representa un dispositivo de refrigeración (por ejemplo, el aire acondicionado del edificio o una unidad de tratamiento de aire en instalaciones). Al implementar la solución preconfigurada, también aprovisiona automáticamente cuatro dispositivos simulados que se ejecutan en Azure WebJob. Los dispositivos simulados facilitan la experimentación del comportamiento de la solución sin necesidad de implementar ningún dispositivo físico. Para implementar un dispositivo físico real, consulte el tutorial Conectar el dispositivo a la solución preconfigurada de supervisión remota (Windows).

Mensajes de dispositivo a nube

Cada dispositivo simulado puede enviar los siguientes tipos de mensajes a IoT Hub:

Message Descripción
Inicio Cuando el dispositivo se inicia, envía un mensaje de información del dispositivo que contiene información acerca de sí mismo al back-end. Estos datos incluyen el identificador de dispositivo y una lista de los comandos y los métodos que admite.
Presencia Un dispositivo envía periódicamente un mensaje de presencia para notificar si el dispositivo puede detectar o no la presencia de un sensor.
Telemetría Un dispositivo envía periódicamente un mensaje de telemetría que informa de los valores simulados de temperatura y humedad recopilados a partir de los sensores simulados del dispositivo.

Nota

La solución almacena la lista de comandos admitidos por el dispositivo en una base de datos de Cosmos DB, no en el dispositivo gemelo.

Propiedades y dispositivos gemelos

Los dispositivos simulados envían las siguientes propiedades del dispositivo al gemelo en IoT Hub como propiedades notificadas. El dispositivo envía propiedades notificadas al iniciarse y en respuesta a un comando o un método Change Device State.

Propiedad Propósito
Config.TelemetryInterval Frecuencia (segundos) con la que el dispositivo envía la telemetría
Config.TemperatureMeanValue Especifica el valor medio de la telemetría de temperatura simulada
Device.DeviceID Identificador que se proporciona o asigna cuando se crea un dispositivo en la solución
Device.DeviceState Estado notificado por el dispositivo
Device.CreatedTime La hora en la que se creó el dispositivo en la solución
Device.StartupTime Hora en que se inició el dispositivo
Device.LastDesiredPropertyChange El número de versión del último cambio de propiedad deseado
Device.Location.Latitude Ubicación de la latitud del dispositivo
Device.Location.Longitude Ubicación de la longitud del dispositivo
System.Manufacturer Fabricante del dispositivo
System.ModelNumber Número de modelo del dispositivo
System.SerialNumber Número de serie del dispositivo
System.FirmwareVersion Versión actual del firmware del dispositivo
System.Platform Arquitectura de la plataforma del dispositivo
System.Processor Procesador que ejecuta el dispositivo
System.InstalledRAM Cantidad de RAM instalada en el dispositivo

El simulador propaga estas propiedades en los dispositivos simulados con valores de ejemplo. Cada vez que el simulador inicializa un dispositivo simulado, el dispositivo envía los metadatos previamente definidos a IoT Hub como propiedades notificadas. Solo el dispositivo puede actualizar las propiedades notificadas. Para cambiar una propiedad notificada, establezca una propiedad deseada en el portal de la solución. Es responsabilidad del dispositivo:

  1. Recuperar de forma periódica las propiedades deseadas desde IoT Hub.
  2. Actualizar su configuración con el valor de la propiedad deseada.
  3. Devolver el nuevo valor al concentrador como una propiedad notificada.

Desde el panel de la solución, puede usar las propiedades deseadas para establecer propiedades en un dispositivo mediante el dispositivo gemelo. Normalmente, un dispositivo lee un valor de la propiedad deseada desde el concentrador para actualizar su estado interno y notificar el cambio de vuelta como una propiedad notificada.

Nota

El código del dispositivo simulado solo usa las propiedades deseadas Desired.Config.TemperatureMeanValue y Desired.Config.TelemetryInterval para actualizar las propiedades notificadas devueltas a IoT Hub. Todas las demás solicitudes de cambio de la propiedad deseada se omiten en el dispositivo simulado.

Métodos

Los dispositivos simulados pueden controlar los siguientes métodos (métodos directos) invocados desde el portal de la solución a través de IoT Hub:

Método Descripción
InitiateFirmwareUpdate Indica al dispositivo que realice una actualización del firmware
Reboot Indica al dispositivo que se reinicie
FactoryReset Indica al dispositivo que realice un restablecimiento de fábrica

Algunos métodos utilizan las propiedades notificadas para informar sobre el progreso. Por ejemplo, el método InitiateFirmwareUpdate simula la ejecución de la actualización de forma asincrónica en el dispositivo. El método vuelve inmediatamente al dispositivo, mientras la tarea asincrónica continúa devolviendo las actualizaciones de estado al panel de la solución con las propiedades notificadas.

Comandos

Los dispositivos simulados pueden controlar los siguientes comandos (mensajes de la nube al dispositivo) enviados desde el portal de la solución a través de IoT Hub:

Get-Help Descripción
PingDevice Envía un ping al dispositivo para comprobar si está activo
StartTelemetry Inicia el envío de telemetría del dispositivo.
StopTelemetry Detiene el dispositivo que envía la telemetría.
ChangeSetPointTemp Cambia el valor del punto fijo alrededor del cual se generan los datos aleatorios.
DiagnosticTelemetry Desencadena el simulador de dispositivos para enviar un valor de telemetría adicional (externalTemp).
ChangeDeviceState Cambia una propiedad de estado extendido del dispositivo y envía el mensaje de información de dispositivo desde el dispositivo.

Nota

Para ver una comparación de estos comandos (mensajes de la nube al dispositivo) y métodos (métodos directos), consulte Guía de comunicación de nube a dispositivo.

IoT Hub

IoT hub ingiere los datos enviados desde los dispositivos en la nube y los pone a disposición de los trabajos de Azure Stream Analytics (ASA). Cada trabajo de transmisión de ASA utiliza un grupo de consumidores independiente de IoT Hub para leer la transmisión de mensajes de los dispositivos.

La instancia de IoT Hub en la solución también:

  • Mantiene un registro de identidades que almacena los identificadores y las claves de autenticación de todos los dispositivos que se pueden conectar al portal. Puede habilitar y deshabilitar dispositivos a través del registro de identidades.
  • Envía comandos a los dispositivos en nombre del portal de la solución.
  • Invoca los métodos de los dispositivos en nombre del portal de la solución.
  • Mantiene los dispositivos gemelos para todos los dispositivos registrados. Un dispositivo gemelo almacena los valores de la propiedad notificados por un dispositivo. Un dispositivo gemelo también almacena las propiedades deseadas, establecidas en el portal de la solución, para que el dispositivo las recupere la siguiente vez que se conecte.
  • Programa trabajos para establecer las propiedades de varios dispositivos o invocar métodos en varios dispositivos.

Azure Stream Analytics

En la solución de supervisión remota, Azure Stream Analytics (ASA) envía los mensajes de los dispositivos recibidos por IoT Hub a otros componentes back-end para su procesamiento o almacenamiento. Diferentes trabajos de ASA realizan funciones específicas en función del contenido de los mensajes.

Trabajo 1: información de dispositivo filtra los mensajes de información del dispositivo desde la transmisión de mensajes entrantes y los envía a un punto de conexión de Centro de eventos. Un dispositivo envía mensajes de información de dispositivo al inicio y como respuesta a un comando SendDeviceInfo . Este trabajo utiliza la siguiente definición de consulta para identificar mensajes de información de dispositivo :

SELECT * FROM DeviceDataStream Partition By PartitionId WHERE  ObjectType = 'DeviceInfo'

Este trabajo envía su resultado a un centro de eventos para su posterior procesamiento.

Trabajo 2: reglas evalúa los valores de telemetría de temperatura y humedad entrantes según los umbrales por dispositivo. Los valores de umbral se establecen en el editor de reglas disponible en el panel de la solución. Cada par de valor/dispositivo se almacena en la marca de tiempo de un blob que se lee en Stream Analytics como datos de referencia. El trabajo compara cualquier valor no vacío con el umbral establecido para el dispositivo. Si supera la condición ">", el trabajo genera un evento de alarma que indica que se supera el umbral y proporciona los valores de dispositivo, valor y marca de tiempo. Este trabajo utiliza la definición de la consulta siguiente para identificar los mensajes de telemetría que desencadenan una alarma:

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

El trabajo envía su resultado a un centro de eventos para su posterior procesamiento y guarda los detalles de cada alerta en Blob Storage, en donde el portal de la solución puede leer la información de la alerta.

Trabajo 3: Telemetría opera en el flujo de la telemetría del dispositivo entrante de dos formas distintas. La primera envía todos los mensajes de telemetría desde los dispositivos al almacenamiento de blobs persistente para su almacenamiento a largo plazo. La segunda calcula los valores de humedad medios, mínimos y máximos sobre una ventana deslizante de cinco minutos y envía estos datos al almacenamiento de blobs. El portal de la solución lee los datos de telemetría de Blob Storage para rellenar los gráficos. Este trabajo utiliza la siguiente definición 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)

Event Hubs

Los trabajos de información del dispositivo y reglas de ASA, envían sus datos a Event Hubs para que los reenvíe de forma confiable al procesador de eventos que se ejecuta en WebJob.

Almacenamiento de Azure

La solución utiliza el almacenamiento de blobs de Azure para conservar todos los datos de telemetría resumidos y sin procesar de los dispositivos de la solución. El portal lee los datos de telemetría de Blob Storage para rellenar los gráficos. Para mostrar las alertas, el portal de la solución lee los datos de Blob Storage que registran cuándo los valores de telemetría superan los valores de umbral configurados. La solución también utiliza Blob Storage para registrar los valores de umbral establecidos en el portal de la solución.

Trabajos web

Además de hospedar los simuladores de dispositivos, las instancias de WebJobs de la solución también hospedan el procesador de eventos que se ejecuta en una instancia de Azure WebJob que controla las respuestas de los comandos. Utiliza mensajes de respuesta de los comandos para actualizar el historial de los comandos de dispositivo (almacenado en la base de datos de Cosmos DB).

Cosmos DB

La solución utiliza una base de datos de Cosmos DB para almacenar información sobre los dispositivos conectados a la solución. Esta información incluye el historial de los comandos enviados a los dispositivos desde el portal de la solución y de los métodos invocados desde el portal de la solución.

Portal de solución

El portal de la solución es una aplicación web que se implementa como parte de la solución preconfigurada. Las páginas principales del portal de la solución son el panel y la lista de dispositivos.

Panel

Esta página de la aplicación web usa controles javascript de PowerBI (consulte el repositorio de imágenes de PowerBI) para ver los datos de telemetría de los dispositivos. La solución utiliza el trabajo de telemetría de ASA para escribir estos datos en el almacenamiento de blobs.

Lista de dispositivos

Desde esta página del portal de la solución puede hacer lo siguiente:

  • Aprovisionar un dispositivo nuevo. Esta acción establece el identificador único del dispositivo y genera la clave de autenticación. Escribe la información sobre el dispositivo en el registro de identidades de IoT Hub y en la base de datos de Cosmos DB específica para la solución.
  • Administrar las propiedades del dispositivo. Esta acción incluye las propiedades de visualización existentes y la actualización con nuevas propiedades.
  • Enviar comandos a un dispositivo.
  • Ver el historial de comandos de un dispositivo.
  • Habilitar y deshabilitar dispositivos.

Pasos siguientes

Las siguientes entradas de blog de TechNet proporcionan detalles adicionales acerca de la solución preconfigurada de supervisión remota:

Puede continuar su introducción al Conjunto de aplicaciones de IoT con la lectura de los siguientes artículos: