¡Bienvenido!

¡Comparta y comente sobre contenido e ideas acerca de Ignition! Este foro está dedicado a la comunidad hispana, con el objetivo de que exista un espacio en Español. 

Inscribirse

Esta pregunta ha sido marcada
2 Respuestas
225 Vistas

Buenos días, 


Mi consulta es la siguiente: 


Estoy utilizando la tabla de Status de Alarma en Perspective. Me gustaría utilizar el Display Path como parámetro de filtro dentro del extension function de la tabla. 


Utilizando el parametro de alarmEvent.get('displayPath') estoy teniendo problemas, no me filtra las alarmas, de hecho no me devuelve nada. 


Les adjunto el código sencillo que he estado utilizando para probar esto: 


def filterAlarm(self, alarmEvent):
displayPath = alarmEvent.get('displayPath')

Nodo1Selected = self.custom.Nodo1

if displayPath == 'Nodo 1' and Nodo1Selected:
return True
else:
return False

El "Nodo1Selected" es un checkbox que se selecciona para filtrar las alarmas también. 

Sin embargo, cuando utilizo alguna otra propiedad de las alarmas, como el "Label" o algun associated Data que se cree si me logra filtrar las alarmas. 

¿Hay alguna restricción al utilizar el displayPath como propiedad es este párametro de alarmEvent.get()?

Avatar
Descartar
Autor

Hola Eduardo, 


Muchas gracias por la información. 

Al final la solución fue utilizar la funcion str() para convertir el displayPath a String

displayPath = str(alarmEvent.get('displayPath'))

Gracias por la ayuda

Avatar
Descartar

Hola Oscar, un placer saludarle.


El displayPath si no ha sido configurado en la alarma es igual a un string vacío, esto puede ser un poco confuso, ya que la tabla de estatus de las alarmas lo que hacen es que si no se ha configurado muestran el source path en el displayPath ( Perspective - Alarm Status Table | Ignition User Manual (inductiveautomation.com) ), por lo que si no planeas configurar ninguno de los displayPath de las alarmas debes realizar el filtro comparando con el source en vez del displayPath de la siguiente forma:

sourcePath = alarmEvent.get("source")

En caso de que si estés configurando un displayPath lo ideal es cambiar el tipo de dato, ya que la propiedad displayPath devuelve un resultado del tipo StringPath que es distinto a un string  (StringPath (inductiveautomation.com)) por lo que la comparación con strings puede fallar si esta no se convierte de la siguiente forma:

displayPath = alarmEvent.get('displayPath').toString()

También veo que el código presentado utiliza la expresión:

displayPath == "Nodo 1"

Desconozco los detalles de la aplicación que realizas, por lo que puede ser que esto sí se encuentre correcto, nada más por si acaso hago la aclaración que en los strings al buscar igualdad estos deben de ser exactamente igual, para buscar similitud o buscar si se encuentra dentro del string principal se deben usar otros operadores o métodos de strings como in o find()


Espero que esta información sea de ayuda.

Avatar
Descartar