Modelo del dispositivo
El modelo de dispositivo describe los metadatos y las características de gestión de un dispositivo y se almacena en la base de datos de IoT dispositivos de la herramienta, la fuente principal de información sobre los dispositivos.
Las aplicaciones y los dispositivos gestionados pueden enviar actualizaciones, incluidos los cambios de ubicación o el progreso de una actualización de firmware a la base de datos del dispositivo. Tan pronto como la IoT herramienta recibe estas actualizaciones, se actualiza la base de datos y la información queda disponible para las aplicaciones.
Identificación de dispositivo
Cada dispositivo tiene un atributo typeId y un atributo deviceId. Normalmente, typeId representa el modelo del dispositivo, mientras que deviceId puede representar su número de serie. En su IoT organización, la combinación de typeId y deviceId debe ser única para cada dispositivo.
Además de estos atributos, la IoT herramienta construye otro identificador para cada dispositivo. Este identificador se denomina clientId. clientId se basa en su organizationId y en los valores typeId y deviceId del dispositivo. clientId proporciona una forma de identificar de forma exclusiva un dispositivo individual. Los caracteres que se pueden utilizar en estos identificadores están restringidos, de modo que sean compatibles con protocolos de comunicación y API REST.
También se pueden utilizar los siguientes identificadores de dispositivos opcionales:
- deviceInfo.manufacturer
- deviceInfo.serialNumber
- deviceInfo.model
- deviceInfo.deviceClass
- deviceInfo.description
Para obtener más información sobre los identificadores y ver descripciones de sus identificadores comparativos en otros estándares de gestión de dispositivos, consulte Atributos.
Tipos de identificadores y dispositivos
Cada dispositivo conectado a la IoT herramienta está asociado a un tipo de dispositivo. Los tipos de dispositivos son grupos de dispositivos que comparten características o comportamientos.
Un tipo de dispositivo tiene un conjunto de atributos. Cuando se añade un dispositivo a la IoT herramienta, los atributos de su tipo de dispositivo se utilizan como plantilla. Si el dispositivo tiene un valor, se utilizará dicho valor. Si el dispositivo no tiene un valor, se utilizará el valor de tipo de dispositivo. Por ejemplo, el tipo de dispositivo puede tener un valor para el atributo deviceInfo.fwVersion, que refleja la versión de firmware en el momento de la fabricación. Este valor se copia del tipo de dispositivo a los dispositivos a medida que se añaden. Cuando se añade un dispositivo, si el valor deviceInfo.fwVersion existe, no se sobrescribe.
Cuando se actualiza un atributo de un tipo de dispositivo, solo los nuevos dispositivos registrados heredan las modificaciones realizadas en la plantilla de tipo de dispositivo.
Atributos
La siguiente tabla muestra la lista de atributos que se pueden aplicar a los dispositivos en la IoT herramienta. Los atributos en cursiva pueden aplicarse también a tipos de dispositivo.
Clave:
- API: Se puede actualizar mediante API
- DMA: Se puede actualizar mediante Device Management Agent
- R: De solo lectura
- W: Grabación y lectura
- A: Anexo
| Atributo | Tipo | Descripción | API | DMA |
|---|---|---|---|---|
| clientId | serie | El ID de cliente utilizado con las conexiones MQTT | R | - |
| typeId | serie | Tipo de dispositivo | R | - |
| deviceId | serie | ID de dispositivo | R | - |
| classId | serie | Clase de dispositivo ("Dispositivo" o "Pasarela") | R | - |
| gatewayTypeId | serie | El ID de tipo de la pasarela que este dispositivo utiliza | R | - |
| gatewayId | serie | El ID de dispositivo de la pasarela que este dispositivo utiliza | R | - |
| status.alert | booleano | Indica si el dispositivo tiene una alerta | W | - |
| deviceInfo.serialNumber | serie | Número de serie del dispositivo | W | W |
| deviceInfo.manufacturer | serie | Fabricante del dispositivo | W | W |
| deviceInfo.model | serie | Modelo del dispositivo | W | W |
| deviceInfo.deviceClass | serie | Clase del dispositivo | W | W |
| deviceInfo.description | serie | Nombre descriptivo del dispositivo | W | W |
| deviceInfo.fwVersion | serie | La versión de firmware que se sabe que está en el dispositivo | W | W |
| deviceInfo.hwVersion | serie | Versión de hardware del dispositivo | W | W |
| deviceInfo.descriptiveLocation | serie | La ubicación descriptiva, como por ejemplo una sala, número de edificio o una región geográfica | W | W |
| metadata | complejo | Metadatos de formato libre | W | W |
| added.auth.id | serie | ID que ha añadido el dispositivo | R | - |
| added.dateTime | serie | ISO8601 date-time: Fecha y hora a la que se ha añadido el dispositivo | R | - |
| refs.diag.errorCodes | serie | URI de extensión de diagnóstico para los códigos de error, si está presente | R | - |
| refs.diag.logs | serie | URI de extensión de diagnóstico para los registros, si está presente | R | - |
| refs.location | serie | URI de extensión de ubicación, si está presente | R | - |
| refs.mgmt | serie | URI de extensión de gestión de dispositivos, si está presente | R | - |
Atributos ampliados
Además de los atributos principales mencionados anteriormente en la sección Atributos, hay atributos adicionales que se tratan como extensiones del modelo de dispositivo principal. Las consultas simples sobre el dispositivo devuelven información del modelo básico de dispositivo, pero no las ampliaciones. La información sobre las ampliaciones debe solicitarse de forma específica.
| Nombre de ampliación | Prefijo de atributos | Finalidad |
|---|---|---|
| Diagnósticos | diag | Registros de errores e información de diagnóstico |
| Ubicación | ubicación | Ubicación del dispositivo, potencialmente se actualiza de forma periódica |
| Gestión de dispositivos | gest | Acciones de gestión de dispositivos, como por ejemplo actualización de firmware |
Ampliación de diagnóstico
Los atributos de diagnóstico son opcionales y solo están presentes en dispositivos que tienen información de registro de errores. Estos atributos están destinados a diagnosticar problemas del dispositivo, no a solucionar problemas de conectividad con la IoT herramienta. La cantidad de información que se almacena en atributos de diagnóstico puede ser grande y, por lo tanto, se debe consultar específicamente.
La información de registro de diagnóstico se almacena como una matriz de entradas. Cada entrada consta de un mensaje, una indicación de la gravedad, una indicación de fecha y hora y una matriz de bytes de datos opcional. Puede agregar entradas utilizando una API. Sin embargo, la adición de entradas puede hacer que se pierdan las entradas anteriores para mantener el tamaño de los registros de diagnóstico gestionables.
| Atributo | Tipo | Descripción | API | DMA |
|---|---|---|---|---|
| diag.errorCodes | Matriz de enteros | Matriz de códigos de error | A | A |
| diag.log | matriz | Matriz de datos de diagnóstico | A | A |
| diag.log.message | serie | Mensaje de diagnóstico | - | - |
| diag.log.timestamp | serie | ISO8601 date-time: fecha y hora de la entrada de registro | - | - |
| diag.log.logData | serie | byte: Datos de diagnóstico, codificados en base64 | - | - |
| diag.log.severity | número | Gravedad del mensaje 0: informativo, 1: aviso, 2: error | - | - |
Ampliación de ubicación
Los atributos de ubicación son opcionales y solo están presentes en dispositivos que tienen información de ubicación. La información de ubicación se almacena por separado para permitir el uso de mecanismos de almacenamiento que sean más aptos para la información dinámica que puede ser importante cuando se actualiza la información con frecuencia, por ejemplo para un dispositivo móvil.
Para las soluciones que toman importancia significativa en actualizaciones de ubicación frecuentes, se espera que la ubicación se trate como parte de la carga útil de sucesos del dispositivo, lo que permite tasas de actualización superiores, almacenamiento histórico más simple y análisis de datos más sencillo.
| Atributo | Tipo | Descripción | API | DMA |
|---|---|---|---|---|
| location.longitude | número | Longitud en grados decimales con WGS84 | W | W |
| location.latitude | número | Latitud en grados decimales con WGS84 | W | W |
| location.elevation | número | Elevación en metros con WGS84 | W | W |
| location.measuredDateTime | serie | ISO8601 date-time: Fecha y hora de la medición de ubicación | W | W |
| location.updatedDateTime | serie | ISO8601 date-time: Fecha y hora | R | |
| location.accuracy | número | Exactitud de la posición en metros | W | W |
Ampliación de gestión de dispositivos
Los atributos de gestión solo están presentes para los dispositivos gestionados. Cuando un dispositivo gestionado pasa a estar inactivo, deja de estar gestionado y los atributos mgmt. se suprimen. Los mgmt. atributos son establecidos por la IoT herramienta como resultado del procesamiento de las solicitudes de gestión de dispositivos. Estos atributos no se pueden grabar directamente utilizando la API.
Los dispositivos tienen un ciclo de vida de gestión, que está definido por su estado como dispositivos gestionados. El agente de gestión de dispositivos en el dispositivo se encarga de enviar una solicitud de Manage Device utilizando el protocolo de gestión de dispositivos. Para tratar con dispositivos anómalos en grandes poblaciones de dispositivos, se puede establecer un dispositivo gestionado para enviar una solicitud de Manage Device de forma regular. Un dispositivo gestionado pasa a estado inactivo si esta solicitud no se envía a la IoT herramienta durante un periodo de tiempo especificado. Para facilitar esta funcionalidad, la solicitud de Manage Device tiene un parámetro opcional de tiempo de vida. Cuando la IoT herramienta recibe una solicitud de gestión de dispositivos que tiene establecido el parámetro de duración, calcula el tiempo que transcurrirá antes de que sea necesaria otra solicitud de gestión de dispositivos y lo almacena en el mgmt.dormantDateTime atributo.
| Atributo | Tipo | Descripción | API | DMA |
|---|---|---|---|---|
| mgmt.dormant | booleano | Indica si el dispositivo está inactivo | R | - |
| mgmt.dormantDateTime | serie | ISO8601 date-time: fecha y hora a las que el dispositivo gestionado pasa a estar inactivo | R | - |
| mgmt.lastActivityDateTime | serie | ISO8601 date-time: fecha y hora de la actividad más reciente, que se actualiza de forma periódica | R | - |
| mgmt.supports.deviceActions | booleano | Indica si el dispositivo admite las acciones Reboot y Factory Reset | R | - |
| mgmt.supports.firmwareActions | booleano | Indica si el dispositivo admite las acciones Firmware Download y Firmware Update | R | - |
| mgmt.firmware.version | serie | La versión del firmware que se encuentra en el dispositivo | R | W |
| mgmt.firmware.name | serie | El nombre del firmware que se utiliza en el dispositivo | R | W |
| mgmt.firmware.uri | serie | URI desde el que se puede descargar la imagen de firmware | R | W |
| mgmt.firmware.verifier | serie | El verificador, como una suma de comprobación de la imagen de firmware que se utiliza para validar su integridad | R | W |
| mgmt.firmware.state | número | Indica el estado de la descarga de firmware | R | W |
| mgmt.firmware.updateStatus | número | Indica el estado de la actualización | R | W |
| mgmt.firmware.updatedDateTime | serie | ISO8601 date-time: Fecha de la actualización más reciente | R | - |