Implementación de dispositivos y procedimientos recomendados para IoT Central

En este artículo se proporciona información sobre cómo implementar dispositivos que se conectan a la aplicación de IoT Central. También incluye algunos procedimientos recomendados. Para más información sobre el proceso de conexión general, consulte Conectar un dispositivo.

Para ver una muestra del código de implementación de dispositivo, consulte Tutorial: Creación y conexión de un aplicación cliente a una aplicación de Azure IoT Central.

Implementación del dispositivo

Los dispositivos que se conectan a IoT Central deben seguir las convenciones de IoT Plug and Play. Una de estas convenciones es que un dispositivo debe enviar el identificador de modelo del modelo de dispositivo que implementa cuando se conecta. El identificador de modelo permite a la aplicación de IoT Central asignar el dispositivo a la plantilla de dispositivo correcta.

Una plantilla de dispositivo IoT Central incluye un modelo que especifica los comportamientos que debe implementar un dispositivo de ese tipo. Estos comportamientos incluyen telemetría, propiedades y comandos.

Cada modelo tiene un identificador de modelo de dispositivo gemelo (DTMI) único, como dtmi:com:example:Thermostat;1. Cuando un dispositivo se conecta a IoT Central, envía el DTMI del modelo que implementa. IoT Central puede asignar la plantilla de dispositivo correcta con el dispositivo.

IoT Plug and Play define un conjunto de convenciones que cualquier dispositivo debe seguir cuando implementa un modelo DTDL (lenguaje de definición de gemelos digitales).

Los SDK de dispositivos IoT de Azure incluyen compatibilidad con las convenciones de IoT Plug and Play.

Device model (Modelo de dispositivo)

Un modelo de dispositivo se define mediante el lenguaje de modelado DTDL V2. Este lenguaje le permite definir:

  • La telemetría que envía el dispositivo. La definición incluye el nombre y el tipo de datos de la telemetría. Por ejemplo, un dispositivo envía telemetría de temperatura como un valor double.
  • Las propiedades que el dispositivo notifica a IoT Central. Una definición de propiedad incluye su nombre y tipo de datos. Por ejemplo, un dispositivo informa del estado de una válvula como un valor booleano.
  • Las propiedades que el dispositivo puede recibir desde IoT Central. Opcionalmente, puede marcar una propiedad como grabable. Por ejemplo, IoT Central envía una temperatura de destino como un valor double a un dispositivo.
  • Los comandos a los que responde el dispositivo. La definición incluye el nombre del comando y los nombres y tipos de datos de todos los parámetros. Por ejemplo, un dispositivo responde a un comando de reinicio que especifica la cantidad de segundos que hay que esperar antes de reiniciar.

Nota:

IoT Central define algunas extensiones en el lenguaje DTDL v2. Para más información, consulte extensión de IoT Central.

Un modelo de DTDL puede ser sin componentes o de varios componentes:

  • Sin modelo de componente: un modelo sencillo no utiliza componentes insertados o en cascada. Toda la telemetría, las propiedades y los comandos se definen en un único componente raíz. Para ver un ejemplo, consulte el modelo de termostato.
  • Modelo de varios componentes: Un modelo más complejo que incluye dos o más componentes. Estos componentes incluyen un único componente raíz y uno o más componentes anidados. Para ver un ejemplo, consulte el modelo de controlador de temperatura.

Sugerencia

Puede importar y exportar un modelo de dispositivo o interfaz individual completos de una plantilla de dispositivo de IoT Central como un archivo DTDL v2.

Para más información sobre los modelos de dispositivo, vea Guía de modelado de IoT Plug and Play.

Convenciones

Un dispositivo debe seguir las convenciones de IoT Plug and Play cuando intercambia datos con IoT Central. Entre las convenciones se incluyen las siguientes:

  • Enviar el DTMI cuando se conecte a IoT Central.
  • Enviar cargas y metadatos JSON con formato correcto a IoT Central.
  • Responder correctamente a comandos y propiedades grabables desde IoT Central.
  • Seguir las convenciones de nomenclatura para los comandos de componentes.

Nota:

En la actualidad, IoT Central no es completamente compatible con los tipos de datos Array y Geospatial de DTDL.

Para más información sobre las convenciones de IoT Plug and Play, consulte Convenciones de IoT Plug and Play.

Para más información sobre el formato de los mensajes JSON que un dispositivo intercambia con IoT Central, consulte Cargas de telemetría, propiedades y comandos.

SDK de dispositivo

Use uno de los SDK de dispositivo Azure IoT para implementar el comportamiento del dispositivo. El código debe:

  • Registrar el dispositivo en DPS y usar la información de DPS para conectarse al centro de IoT Hub interno en la aplicación IoT Central.
  • Anunciar el DTMI del modelo que el dispositivo implementa.
  • Enviar telemetría en el formato que especifica el modelo de dispositivo. IoT Central usa el modelo de la plantilla de dispositivo para determinar cómo utilizar la telemetría para las visualizaciones y el análisis.
  • Sincronizar los valores de propiedad entre el dispositivo e IoT Central. El modelo especifica los nombres de propiedad y los tipos de datos de modo que IoT Central pueda mostrar la información.
  • Implementar controladores de comandos para los comandos especificados en el modelo. El modelo especifica los nombres de comandos y los parámetros que el dispositivo debe usar.

Para obtener más información sobre el rol de las plantillas de dispositivo, consulte ¿Qué son las plantillas de dispositivo?

En la tabla siguiente se resume cómo las características de los dispositivos de Azure IoT Central se asignan a las características de IoT Hub:

Azure IoT Central Azure IoT Hub
Telemetría Mensajería del dispositivo a la nube
Comandos sin conexión Mensajería de la nube a un dispositivo
Propiedad Propiedades notificadas de dispositivos gemelos
Propiedad (grabable) Propiedades deseadas y notificadas de dispositivos gemelos
Get-Help Métodos directos

Protocolos de comunicación

Los protocolos de comunicación que un dispositivo puede usar para conectarse a IoT Central incluyen MQTT, AMQP y HTTPS. A nivel interno, IoT Central usa una instancia de IoT Hub para permitir la conectividad del dispositivo. Para más información sobre los protocolos de comunicación que admite IoT Hub para la conectividad de los dispositivos, consulte Selección de un protocolo de comunicación.

Si el dispositivo no puede usar ninguno de los protocolos admitidos, utilice Azure IoT Edge para realizar la conversión de protocolos. IoT Edge es compatible con otros escenarios de inteligencia perimetral para descargar el procesamiento desde la aplicación de Azure IoT Central.

Marcas de tiempo de telemetría

De manera predeterminada, IoT Central usa la hora de puesta en cola de los mensajes cuando muestra datos de telemetría en paneles y gráficos. La hora de puesta en cola de los mensajes se establece internamente cuando IoT Central recibe el mensaje del dispositivo.

Un dispositivo puede establecer la propiedad iothub-creation-time-utc cuando crea un mensaje para enviarlo a IoT Central. Si esta propiedad está presente, IoT Central la usa cuando muestra datos de telemetría en paneles y gráficos.

Puede exportar la hora de puesta en cola y la propiedad iothub-creation-time-utc al exportar datos de telemetría desde la aplicación de IoT Central.

Para obtener más información sobre las propiedades de los mensajes, consulte Propiedades del sistema de los mensajes de IoT Hub del dispositivo a la nube.

procedimientos recomendados

Estas recomendaciones muestran cómo implementar dispositivos para aprovechar las ventajas de la recuperación ante desastres integrada de alta disponibilidad y el escalado automático en IoT Central.

Control de errores de conexión

Con fines de escalado o recuperación ante desastres, IoT Central puede actualizar sus centros de IoT subyacentes. Para mantener la conectividad, el código del dispositivo debe controlar los errores de conexión específicos mediante el establecimiento de una conexión con un nuevo punto de conexión de IoT Hub.

Si el dispositivo recibe alguno de los errores siguientes al conectarse, debe reaprovisionarse con DPS para obtener una nueva cadena de conexión. Estos errores significan que la cadena de conexión ya no es válida:

  • Punto de conexión de IoT Hub inaccesible.
  • Token de seguridad expirado.
  • Dispositivo deshabilitado en IoT Hub.

Si el dispositivo obtiene alguno de los errores siguientes al conectarse, debe usar una estrategia de retroceso para volver a intentar la conexión. Estos errores significan que la cadena de conexión sigue siendo válida, pero hay condiciones transitorias que evitan que el dispositivo se conecte:

  • Dispositivo bloqueado por el operador.
  • Error interno 500 del servicio.

Para obtener más información sobre los códigos de error de los dispositivos, vea Solución de problemas de conexiones de dispositivos.

Para obtener más información sobre cómo implementar reconexiones automáticas, consulte Administración de reconexiones de dispositivo para crear aplicaciones resistentes.

Prueba de las funcionalidades de conmutación por error

La CLI de Azure permite probar las capacidades de conmutación por error del código del dispositivo. El comando de la CLI funciona cambiando temporalmente un registro de dispositivo a un centro de IoT interno diferente. Para verificar que la conmutación por error del dispositivo ha funcionado, compruebe que el dispositivo sigue enviando telemetría y responde a los comandos.

Para ejecutar la prueba de conmutación por error del dispositivo, ejecute el siguiente comando:

az iot central device manual-failover \
    --app-id {Application ID of your IoT Central application} \
    --device-id {Device ID of the device you're testing} \
    --ttl-minutes {How to wait before moving the device back to it's original IoT hub}

Sugerencia

Para buscar el identificador de la aplicación, vaya a Administración> de aplicación en la aplicación de IoT Central.

Si el comando se ejecuta correctamente, verá una salida similar al siguiente ejemplo:

Command group 'iot central device' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
  "hubIdentifier": "6bd4...bafa",
  "message": "Success! This device is now being failed over. You can check your device'’'s status using 'iot central device registration-info' command. The device will revert to its original hub at Tue, 18 May 2021 11:03:45 GMT. You can choose to failback earlier using device-manual-failback command. Learn more: https://aka.ms/iotc-device-test"
}

Para más información sobre el comando de la CLI, consulte az iot central device manual-failover.

Ahora puede comprobar que la telemetría del dispositivo sigue llegando a la aplicación IoT Central.

Sugerencia

Para ver código de dispositivo de ejemplo que controla las conmutaciones por error en varios lenguajes de programación, consulte Clientes de alta disponibilidad de IoT Central.

Pasos siguientes

Algunos pasos siguientes sugeridos son: