Funciones de zonas
Use las geocercas que ya tiene en Navixy dentro de los flujos de IoT Logic para actuar cuando un dispositivo entre o salga de un área, o para registrar en qué área se encuentra.
Las funciones de zona permiten que un flujo reaccione según dónde está un dispositivo, usando las zonas que ya tiene en Navixy. Usted hace referencia a una zona en lugar de describir un área con coordenadas, de modo que los límites sigan siendo los mismos que ya usa para Alertas y Reportes.
Qué función necesita
Actuar sobre una zona particular, cuando un dispositivo está dentro de ella, entra en ella o sale de ella
inGeofence(), enterGeofence(), leaveGeofence(). Consulte Reaccionar a una zona
Averiguar en qué zona está un dispositivo, sin nombrar una de antemano
geofenceName(). Consulte Registrar la zona actual
Debe crear zonas en Navixy antes de poder referenciarlas en expresiones de IoT Logic. Para crear o administrar zonas, consulte Zonas.
geofenceName() es una opción de pago, vendida por separado. Está desactivada por defecto para cada cuenta, y su proveedor de servicios la habilita por cuenta a solicitud. Las otras tres funciones no se ven afectadas y no necesitan ninguna opción adicional.
Póngase en contacto con su proveedor de servicios para que la active. Consulte Antes de comenzar.
Reaccionar a una zona
Use estas tres funciones cuando ya sepa qué zona es relevante. Cada una responde sí o no para la mayoría de los paquetes de datos que envía el dispositivo, de modo que un flujo pueda enviar esos datos por una rama o por otra. En algunos paquetes, una función no puede responder, y en su lugar devuelve un valor vacío. Consulte Cuando una función de zona no da respuesta.
inGeofence(id)
El dispositivo está ahora dentro de la zona
enterGeofence(id)
El dispositivo acaba de cruzar hacia el interior de la zona
leaveGeofence(id)
El dispositivo acaba de cruzar hacia fuera de la zona
Las agrega a la condición de un IF/THEN Lógica Nodo id es el ID numérico de la zona en su cuenta de Navixy, y un selector lo completa por usted, así que rara vez lo escribe a mano. Consulte Cómo añadir una condición de zona.
Cuando una función de zona no da respuesta
inGeofence(), enterGeofence(), y leaveGeofence() devuelven un valor vacío en lugar de sí o no cuando no pueden responder. Una función no puede responder en estos casos:
El paquete de datos no lleva coordenadas. Una posición de baja calidad sigue siendo evaluada, así que una señal GPS débil devuelve un sí o no real.
La zona se eliminó de su cuenta de Navixy, o quedó inaccesible, después de guardar el flujo. Si una zona ya falta cuando guarda el flujo, en cambio se rechaza al guardar.
Un valor vacío detiene la condición de la que forma parte. Cuando la función es la condición completa, los datos van por la ruta ELSE. Ese enrutamiento suele ser lo que usted quiere. Cuando la función se combina con cualquier otra cosa, el valor vacío puede detener toda la condición, incluidos los términos que sí tenían valores. Para que el resto de la condición siga funcionando, compare la función con == true:
Para la regla completa, consulte Valores faltantes en expresiones.
Sintaxis
Este es el formato que inserta automáticamente el selector de zonas. El nombre de la zona aparece como un comentario para facilitar la lectura, pero no afecta la evaluación.
inGeofence() acepta dos parámetros más, por lo que puede probar una posición anterior en lugar de la actual:
El segundo parámetro indica de qué paquete de datos tomar la posición, contando hacia atrás desde el actual. El tercero indica si se deben contar los paquetes que no contienen posición. Ambos son opcionales y siguen la misma convención que la value() función.
enterGeofence() y leaveGeofence() toman el ID de la zona y nada más. Ambas comparan la posición actual con la anterior, por lo que no hay índice que elegir. Un flujo que pasa un segundo parámetro a cualquiera de las dos funciones no puede guardarse, y el error nombra la función.
Mantenga el índice en el rango de 0 a 11. inGeofence() acepta un índice mayor, se guarda sin error y luego devuelve un valor vacío para cada paquete.
No envuelva una función de zona dentro de value(). El primer parámetro de value() es un nombre de atributo, no una expresión, por lo que una llamada como value("inGeofence(35229)", 1, 'valid') busca un atributo con ese nombre literal y siempre devuelve un valor vacío.
Para value() obtener detalles de la función, consulte expresiones y sintaxis de IF/THEN Lógica.
Cómo añadir una condición de zona
El campo de expresión en el IF/THEN Lógica panel de configuración del nodo incluye un selector dedicado de zonas
, separado del autocompletado estándar de autocompletado de atributos. Lista todas las zonas definidas en su cuenta de Navixy, agrupadas por nombre e ID.
Para agregar una función de zona a su expresión:
Busque y seleccione una zona
Escriba parte del nombre de la zona para filtrar la lista. Cada zona aparece tres veces, una por cada función disponible. Seleccione la entrada que combine la zona que necesita con la función que coincida con su condición:
inGeofence- úsela cuando necesite comprobar si un dispositivo se encuentra actualmente dentro de la zona seleccionada.enterGeofence- úsela cuando necesite detectar que un dispositivo pasó de fuera de la zona seleccionada a su interior.leaveGeofence- úsela cuando necesite detectar que un dispositivo pasó del interior de la zona seleccionada al exterior.
El selector inserta la llamada completa a la función en la posición del cursor en el campo de expresión.
Combinar con otras condiciones si es necesario
Use operadores lógicos para combinar la función de zona con otras condiciones. Consulte Ejemplos de condiciones.
El selector inserta solo las tres funciones basadas en ID. Para usar geofenceName(), escríbala usted mismo en el campo.
Ejemplos de condiciones
Registrar la zona actual
geofenceName() le indica en qué zona está un dispositivo, en lugar de probar una zona que usted eligió de antemano. Devuelve el nombre como texto, y usted almacena ese texto en un atributo propio.
Una sola fórmula cubre todas las zonas que tenga. No construye una cadena de comprobaciones por zona, y no edita el flujo cada vez que agrega una zona. Esto es lo que contiene el atributo para un vehículo de reparto que reporta durante el día:
Paquete de datos
zona_actual
08:14
Garaje principal
09:02
(vacío)
09:47
Sitio del cliente 3
Usted lo crea como un atributo calculado en un Iniciar atributo Nodo. A partir de ahí se comporta como cualquier otro atributo calculado: aparece en Analizador de datos, puede mostrarse en la plataforma como un sensor personalizado y puede reenviarse a un sistema externo.
Antes de comenzar
La opción debe estar activada en su cuenta. geofenceName() se vende por separado y está desactivado de forma predeterminada para todos. Póngase en contacto con su proveedor de servicios y pídale que habilite la función de nombre de Zona para su cuenta. Ayuda citar el nombre interno de la función, iot_logic_Zona_search.
Hasta que se habilite, no se puede guardar un flujo que use la función. El Nodo se marca con este error:
Elimine la función del nodo para guardar el flujo, o espere hasta que su proveedor de servicios active la opción.
También necesita zonas para buscar.
Hay al menos una zona en su cuenta. Consulte Zonas.
Para buscar solo una parte de sus zonas, etiquételas. Consulte Usar etiquetas y Etiquetas.
Agregue el atributo
Cree un atributo calculado de la manera habitual, como se describe en Administrar atributos, e ingrese una de las fórmulas a continuación en el Fórmula campo.
Escriba usted mismo el nombre de la función. El atributo de autocompletado no ofrece geofenceName, y el selector de zonas está disponible solo en el IF/THEN Lógica nodo.
Fórmulas
Las dos primeras formas cubren la mayoría de los casos. La tercera lee una posición anterior en lugar de la actual.
geofenceName()
El nombre de cualquier zona en la que se encuentre actualmente el dispositivo
geofenceName('depots')
El nombre de una Zona etiquetada depósitos en la que el dispositivo se encuentra actualmente
geofenceName('', 1, 'valid')
El nombre de cualquier Zona en la que estuvo el dispositivo en el paquete de datos anterior
Los tres parámetros son opcionales:
La etiquetaLa etiqueta, en primer lugar, limita la búsqueda a las Zonas que usted etiquetó con ese nombre. No importa si está en mayúsculas o minúsculas, y una etiqueta vacía significa todas las Zonas. Etiquetar es importante cuando usted tiene muchas Zonas y solo algunas son significativas para este atributo, por ejemplo depósitos, pero no sitios de clientes.
El número de paquete, en segundo lugar, indica hasta dónde mirar hacia atrás:
0es el paquete que se está procesando,1el anterior, y así sucesivamente. Omítalo para la posición actual.El filtro de posición, el tercero, es
'válido'para omitir los paquetes que no contenían posición, o'todos'para contarlos. Omítalo y los paquetes sin posición se contarán.
Para conocer los límites exactos de cada parámetro, consulte función de nombre de Zona en la documentación de la API de IoT Logic.
Lo que devuelve
El atributo contiene el nombre de la zona como texto, o un valor vacío cuando no hay un nombre que devolver. Está vacío cuando:
El dispositivo está fuera de todas las zonas buscadas.
El paquete de datos no contiene posición.
Ninguna zona de su cuenta tiene la etiqueta que usted proporcionó.
Un valor vacío se ve igual en los tres casos. En una fórmula, este valor vacío se escribe como null, que es como el ejemplo de enrutamiento de abajo lo comprueba.
Para obtener texto legible en lugar de un vacío, agregue un valor de respaldo con el ?: operador:
Cuando una posición cae dentro de dos zonas superpuestas, la función devuelve uno de los dos nombres. Navixy no prioriza las zonas superpuestas, y se devuelve el mismo nombre mientras el dispositivo permanezca en la superposición.
Ejemplos de fórmulas
Preguntas frecuentes
¿Dónde encuentro el ID de la zona?
El selector de zonas muestra en la lista el nombre y el ID numérico de cada zona. También puede encontrar el ID en la interfaz de zonas de Navixy. Cuando selecciona una zona en el selector, el ID se inserta automáticamente en la expresión.
¿Puedo almacenar una comprobación de zona en un atributo?
Sí. Las cuatro funciones funcionan tanto en una fórmula de atributo como en una condición de enrutamiento. geofenceName() es la opción natural, porque le proporciona texto legible. Las otras tres le dan un valor de sí o no, o un valor vacío cuando la posición se desconoce. Un valor de sí o no suele ser más útil para el enrutamiento que para el almacenamiento.
El selector de zonas solo aparece en el IF/THEN Lógica nodo, por lo que en una fórmula de atributo usted escribe la función y el ID de la zona.
¿Por qué no puedo guardar un flujo que usa zonaName?
geofenceName() es una opción de pago y está desactivada de forma predeterminada. Póngase en contacto con su proveedor de servicios para que la habilite en su cuenta. Consulte Antes de comenzar.
¿Qué sucede si se elimina la zona referenciada?
Si una zona referenciada en una expresión se elimina de su cuenta de Navixy, la función ya no puede responder y devuelve un valor vacío. En un IF/THEN Lógica nodo que usa la función por sí solo, los datos fluyen por la conexión ELSE. El nodo almacena su propio atributo como un valor vacío, no como falso. En una condición que combina la función con otros términos, el valor vacío puede detener toda la condición. En un Iniciar atributo nodo, el atributo no tiene valor para ese paquete. Consulte Valores faltantes en expresiones.
El flujo sigue ejecutándose, pero ya no puede guardarlo hasta que corrija la expresión. Volver a guardarlo falla con Nodo "<node title>" (#<node id>) contiene geozonas inexistentes o inaccesibles. Actualice o elimine la expresión para restaurar tanto el enrutamiento como la capacidad de guardar.
¿inGeofence evalúa la posición GPS actual del dispositivo?
Sí. inGeofence() comprueba la posición informada en el paquete de datos actual frente a los límites de la Zona. Cada paquete se evalúa de forma independiente, por lo que el resultado refleja la posición del dispositivo en el momento en que se recibió ese paquete. Un paquete que no contiene posición obtiene un valor vacío en lugar de true o falso.
¿Cuál es la diferencia entre inGeofence y enterGeofence?
inGeofence() Devuelve true para cada paquete que informa una posición dentro de la geocerca. enterGeofence() Devuelve true solo para el paquete que registra el momento en que el dispositivo entró en la Zona. Use inGeofence cuando necesite aplicar lógica a todos los datos desde dentro del área. Use enterGeofence cuando necesite reaccionar específicamente al evento de cruzar el límite.
¿Por qué el atributo geofenceName siempre está vacío?
Revise estas causas en orden:
La opción no está activada para su cuenta. Un flujo guardado anteriormente sigue ejecutándose y la función devuelve un valor vacío para cada paquete. Vea Antes de comenzar.
La etiqueta que proporcionó no está asignada a ninguna zona. Los nombres de las etiquetas deben coincidir con una etiqueta que exista en su cuenta.
El dispositivo realmente está fuera de todas las zonas que buscó.
Tiene una cantidad muy grande de zonas y la fórmula no pasa ninguna etiqueta. Pase una etiqueta para buscar un conjunto más pequeño. El umbral exacto está en función de nombre de Zona.
Última actualización
¿Te fue útil?
