Presencia de cosa
Para soportar la amplia variedad de dispositivos que se conectan a ThingWorx Platform, el concepto de "conectado" se ha cambiado de "actualmente enlazado mediante un websocket" a "normalidad de conexión", que se conoce como presencia de cosa. La presencia de cosa permite indicar cuándo la conexión de una cosa es "normal", según el comportamiento esperado del dispositivo.
Los dispositivos AlwaysOn de ThingWorx (que ejecutan una aplicación basada en ThingWorx Edge SDK o ThingWorx Edge MicroServer) enlazan WebSockets. Si no se han configurado para estar fuera de línea durante un período de tiempo, siempre están disponibles para recibir mensajes de ThingWorx Platform. Por otro lado, los dispositivos agente de Axeda eMessage sondean periódicamente la plataforma ("ping") y pueden recibir mensajes de la plataforma solo cuando están conectados y enlazados. La presencia de cosa soporta ambos tipos principales de dispositivos.
La presencia de cosa es comparable en todas las categorías de dispositivos y la soportan todas las interfaces de ThingWorx. Por ejemplo, puede que una organización de servicio desee crear un tablero en el que se indiquen todos los dispositivos que están disponibles para las llamadas de servicio o todos los dispositivos que están fuera de línea inesperadamente. La extensión SCM de ThingWorx utiliza la presencia de cosa para determinar si un dispositivo está conectado "normalmente" (verificando una propiedad denominada isReporting), de manera que se pueda seleccionar e implementar un paquete en un dispositivo.
Es importante comprender que la presencia de cosa no intenta diagnosticar la condición general de un dispositivo. La presencia de cosa se presenta como una propiedad booleana singular que permite a ThingWorx proporcionar una experiencia unificada en la amplia variedad de activos.
Cómo funciona
En términos generales, cualquier dispositivo que se defina como RemoteThing tiene los siguientes atributos nuevos:
Tipo
Nombre
Descripción
Propiedad
isReporting
Permite identificar si se determina que un dispositivo esté disponible para comunicaciones "normales" en función de la "estrategia de informes" aplicada.
Propiedad
reportingLastChange
Permite identificar cuándo se modificó por última vez el valor isReporting.
Propiedad
reportingLastEvaluation
Permite identificar cuando tuvo lugar la última evaluación de isReporting.
Configuración
reportingStrategy
Cosa que permite definir el algoritmo para determinar si un dispositivo emite informes.
Servicio
EvaluateReporting
Permite evaluar si un dispositivo emite informes y definir la propiedad isReporting según corresponda.
Servicio
SetReportingStrategy
Permite definir la estrategia que se utiliza para evaluar si un dispositivo emite informes.
Servicio
GetReportingStrategy
Permite obtener la estrategia que se utiliza actualmente para evaluar si un dispositivo emite informes.
El algoritmo exacto para determinar si un dispositivo emite informes depende de la cosa ReportingStrategy específica. Sin embargo, el proceso general es el siguiente:
1. El servicio EvaluateReporting se activa mediante algún evento.
2. EvaluateReporting llama posteriormente al servicio ReportingAlgorithm en la cosa de estrategia.
3. El servicio ReportingAlgorithm devuelve un booleano, según el algoritmo específico.
4. La propiedad isReporting se define en función de los resultados del servicio ReportingAlgorithm.
Servicio EvaluateReporting
En el servicio EvaluateReporting se toman los siguientes parámetros:
eventName: el nombre del evento que ha causado la reevaluación del estado de emisión de informes.
eventTime: hora en que se ha producido el evento.
source: nombre de la cosa que ha generado el evento.
sourceProperty: propiedad de origen del evento.
eventData: datos del evento.
Todos los parámetros de EvaluateReporting() se transfieren directamente a ReportingStrategy.ReportingAlgorithm().
Cuando este servicio se ejecuta durante el enlace o desenlace de una cosa:
El valor de eventName es BindingEvent.
El elemento eventData contiene una única fila con un único valor bajo la clave de isBound, que indica si la cosa se ha enlazado o desenlazado (true para el enlace, false para el desenlace).
Si se produce un problema durante este servicio (incluido en ReportingAlgorithm), la cosa se actualiza a "no emite informes" y se añade un mensaje en ApplicationLog.
¿Fue esto útil?