> For the complete documentation index, see [llms.txt](https://docs.kiloiot.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kiloiot.io/kilo-docs-es/kilo-iot-server/rules-engine/troubleshooting.md).

# Solución de problemas del motor de reglas

Soluciona errores de reglas en Kilo IoT — nodos faltantes, CEL no válido, adjunto de límite, límites de despliegue.

Esta página cubre los problemas más comunes que encontrarás al crear, desplegar y gestionar reglas de automatización: errores de validación de compilación, problemas en tiempo de ejecución y límites de la plataforma.

## Errores de compilación

Cuando haces clic en **Guardar y compilar** en la Barra lateral de resultados de compilación, la plataforma valida todo el diagrama antes de producir un artefacto. Si la validación falla, aparecen mensajes de error en la barra lateral. Aquí tienes los errores que puedes ver, qué los causa y cómo solucionarlos.

| Error                                           | Causa                                                                                                    | Solución                                                                                                                                                                                                                                        |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Falta el evento de inicio                       | El diagrama no tiene ningún nodo de Evento de inicio                                                     | Arrastra un Evento de inicio desde la paleta al lienzo. Toda regla debe comenzar con exactamente un Evento de inicio.                                                                                                                           |
| Falta el evento de fin                          | El diagrama no tiene ningún nodo de Evento de fin                                                        | Añade al menos un Evento de fin. Cada ruta de ejecución debe terminar en un Evento de fin.                                                                                                                                                      |
| Múltiples eventos de inicio                     | Hay más de un Evento de inicio en el lienzo                                                              | Elimina los Eventos de inicio adicionales. Una regla solo puede tener un punto de entrada.                                                                                                                                                      |
| Sin flujo de salida                             | Un nodo no tiene ninguna flecha de salida (y no es un Evento de fin)                                     | Conecta el nodo al siguiente paso del flujo de trabajo. Todo nodo no terminal necesita un flujo de salida.                                                                                                                                      |
| Evento de inicio sin flujo de salida            | El Evento de inicio no está conectado a ningún nodo                                                      | Dibuja un flujo de secuencia desde el Evento de inicio hasta el primer nodo de procesamiento de tu regla.                                                                                                                                       |
| Falta la condición                              | Una rama de una compuerta exclusiva no tiene asignada ninguna expresión de condición CEL                 | Abre las propiedades de la compuerta y añade una expresión CEL a cada rama que no sea la predeterminada. Una rama debe estar marcada como predeterminada (la predeterminada no requiere condición).                                             |
| Expresión no válida                             | Una expresión CEL contiene un error de sintaxis                                                          | Comprueba si la expresión tiene paréntesis sin cerrar, comillas faltantes alrededor de cadenas o operadores incorrectos. Consulta [Referencia de CEL](/kilo-docs-es/kilo-iot-server/rules-engine/cel-reference.md) para ver la sintaxis válida. |
| La condición debe devolver un bool              | Una expresión de condición de compuerta devuelve un valor no booleano                                    | Las condiciones de la compuerta deben evaluarse a `true` o `false`. Usa operadores de comparación (`>`, `<`, `==`, `!=`, `>=`, `<=`) o operadores lógicos (`&&`, `\|\|`, `!`).                                                                  |
| Evento de borde no conectado                    | Hay un Evento de error de borde en el lienzo, pero no está conectado a un nodo de tarea                  | Arrastra el Evento de error de borde sobre una Tarea de script, Establecer alarma o un nodo de Enriquecimiento. Debe estar conectado visualmente al borde de una tarea.                                                                         |
| Destino de salida del evento de borde           | El flujo de salida de un Evento de error de borde apunta a algo distinto de una tarea o un Evento de fin | Redirige la ruta de error a una tarea (el paso de manejo) o a un Evento de fin.                                                                                                                                                                 |
| El flujo predeterminado no debe tener condición | El flujo marcado como predeterminado de la compuerta sigue teniendo una condición CEL                    | Elimina la condición del flujo predeterminado. El flujo predeterminado se ejecuta precisamente cuando nada más coincide, así que no lleva su propia expresión.                                                                                  |
| La compuerta debe dividir o fusionar            | Una compuerta exclusiva tiene exactamente un flujo de entrada y uno de salida                            | Una compuerta tiene que tomar una decisión (dos o más flujos de salida) o volver a unir rutas (dos o más de entrada). Una compuerta de paso no hace nada: elimínala y conecta los nodos directamente.                                           |
| ID de elemento duplicado                        | Dos elementos en el lienzo comparten un identificador                                                    | Normalmente es el resultado de importar o editar externamente un diagrama. Elimina y vuelve a añadir uno de los dos elementos.                                                                                                                  |
| Parámetro de entrada o salida no compatible     | El parámetro de entrada o salida de un nodo no es una expresión CEL                                      | Las entradas y salidas solo aceptan expresiones CEL. Vuelve a introducir el parámetro en el panel de propiedades.                                                                                                                               |
| Parámetro de Ejecutar comando no válido         | Un nodo de Ejecutar comando tiene un parámetro sin nombre, sin valor o con un nombre usado dos veces     | Abre el panel de propiedades del nodo y asigna a cada parámetro un nombre único y un valor o una expresión.                                                                                                                                     |
| Tipo de elemento desconocido                    | Hay un nodo no reconocido en el lienzo                                                                   | Elimina el elemento desconocido y reemplázalo con un tipo de nodo compatible de la paleta. Esto puede ocurrir si un diagrama fue importado o modificado externamente.                                                                           |

### Resolución de errores de compilación

1. Lee el mensaje de error en la Barra lateral de resultados de compilación: identifica el problema y, a menudo, el nodo concreto.
2. Cierra la barra lateral y corrige el problema en el lienzo.
3. Haz clic en **Compilar** de nuevo para volver a validar.

Pueden aparecer varios errores al mismo tiempo. Corrígelos todos antes de volver a intentar la compilación.

## Problemas comunes

### "Creé un desencadenador, pero no pasa nada"

Un desencadenador guardado solo supervisa su condición. No contiene una alarma, un comando ni otra respuesta, y no se adjunta automáticamente a una regla.

**Qué hacer:**

1. Vuelve a la **pestaña Reglas** y crea o edita la regla que debe responder.
2. Selecciona el Evento de inicio, haz clic en su lápiz y establece **Fuente de inicio** en **Condición de desencadenador**.
3. Selecciona el desencadenador guardado y haz clic en **Guardar** en la parte inferior del panel del Evento de inicio.
4. Añade los nodos de respuesta y luego guarda la regla desde la barra de herramientas del editor.
5. Compila la regla e implementa su artefacto desde la pestaña **Artefactos** .

Consulta [De un desencadenador a una regla en ejecución](/kilo-docs-es/kilo-iot-server/rules-engine/triggers.md#from-a-trigger-to-a-running-rule) para ver el flujo de trabajo completo.

### "Mi desencadenador no aparece en el Evento de inicio"

El **Condición de desencadenador** campo aparece solo después de cambiar la fuente del Evento de inicio **Fuente de inicio** de **Lectura del sensor** en **Condición de desencadenador**. Enumera los desencadenadores guardados de la organización actual y, por ahora, solo carga la primera página de resultados.

**Qué hacer:**

* Confirma que el desencadenador se creó en la misma organización que la regla.
* Confirma que **Condición de desencadenador** está seleccionado como la Fuente de inicio.
* Si el desencadenador existe pero está más allá de la primera página, todavía no se puede seleccionar desde este campo.

### "La regla está bloqueada y no puedo editarla"

Otro miembro del equipo está editando la regla en este momento. El icono de candado en la fila de la regla muestra quién tiene el bloqueo y cuándo expira.

**Qué hacer:**

* Espera a que expire el bloqueo. La expiración del bloqueo se muestra en la interfaz en la información emergente del candado.
* Contacta con la persona que tiene el bloqueo y pídele que guarde y salga.
* Si la persona que tiene el bloqueo no está disponible y tú eres el propietario de la organización, puedes forzar el desbloqueo de la regla desde la lista de Reglas. Consulta [Editar bloqueos y traspasos del equipo](/kilo-docs-es/kilo-iot-server/rules-engine/edit-locks-and-team-handoffs.md) para más detalles.

### "La compilación se realizó correctamente, pero la regla no se está ejecutando"

Compilar e implementar son pasos separados. Una compilación correcta crea un artefacto, pero el artefacto no se implementa automáticamente.

**Qué hacer:**

1. Ve a la **Artefactos** pestaña de la página del motor de reglas.
2. Encuentra la compilación que acabas de crear.
3. Haz clic en **Desplegar** para iniciar el procesamiento de la regla de su sensor o fuente de desencadenador seleccionada.

### "La regla se detuvo forzosamente"

La plataforma supervisa el estado de la ejecución. Si una regla encuentra errores sostenidos durante la ejecución, se detiene automáticamente para evitar fallos en cascada. El artefacto muestra el estado **Detenido forzosamente** (rojo) en la pestaña Artefactos.

**Qué hacer:**

1. Abre la regla en el editor y revisa la lógica.
2. Comprueba si los sensores referenciados siguen activos y reportando datos.
3. Verifica que todas las expresiones CEL sean válidas para las formas de datos reales que producen tus sensores.
4. Comprueba los nodos de Enriquecimiento: es posible que el sensor de destino se haya eliminado o esté fuera de línea.
5. Corrige el problema, crea un nuevo artefacto e impleméntalo.

Consulta [Seguridad de emergencia](/kilo-docs-es/kilo-iot-server/rules-engine/builds-artifacts-and-deployment.md#emergency-safety) para más detalles.

### "El enriquecimiento sigue fallando"

El nodo de Enriquecimiento obtiene la lectura más reciente de otro sensor. Si ese sensor está sin conexión, eliminado o nunca ha reportado datos, el enriquecimiento falla.

**Qué hacer:**

* Verifica que el sensor de destino existe y está reportando datos activamente.
* Adjunta un **Evento de error de borde** al nodo de Enriquecimiento para que la regla gestione el fallo con elegancia en lugar de detenerse por completo. Consulta [Patrón 4: enriquecimiento a prueba de errores](/kilo-docs-es/kilo-iot-server/rules-engine/automation-patterns.md#pattern-4-error-safe-enrichment).

### "Falló el guardado automático"

Una interrupción de red o un problema temporal del servidor impidió el guardado automático.

**Qué hacer:**

* Aparece un cuadro de diálogo con dos opciones: **Reintentar** (vuelve a intentar guardar) o **Volver a la regla** (vuelve a la lista de Reglas sin guardar los últimos cambios).
* Prueba **Reintentar** primero. Si sigue fallando repetidamente, guarda manualmente usando el **Guardar** botón.
* Si el guardado manual también falla, comprueba tu conexión de red.

### "No puedo restaurar una regla de la papelera"

Es posible que la regla haya superado el período de retención de la papelera y se haya eliminado permanentemente.

**Qué hacer:**

* Comprueba la pestaña **Papelera** . Si la regla ya no aparece en la lista, se ha eliminado permanentemente y no se puede recuperar.
* Si la regla sigue en la pestaña Papelera pero la restauración falla, comprueba si tu organización ha alcanzado el límite de reglas de su suscripción. Restaurar una regla cuenta dentro de la cuota de reglas activas.

### "Restauré por accidente la versión equivocada"

Restaurar una versión no destruye nada. La restauración crea una nueva versión actual y la versión que estaba activa antes se conserva en el historial.

**Qué hacer:**

1. Abre el **Historial** .
2. Encuentra la versión que estaba activa antes de la restauración accidental.
3. Véala (icono de ojo) y haz clic en **Restaurar esta versión** para hacerla actual de nuevo.

## Sesiones de depuración

### "Inicié una sesión de depuración y no pasa nada"

Una sesión de depuración carga la regla, coloca la ejecución en el Evento de inicio y espera a que actúes. No ejecuta la regla por sí sola.

**Qué hacer:**

1. Mira en la parte inferior del lienzo la barra de herramientas de depuración. Flota sobre el diagrama; no está en la barra de encabezado junto a Guardar y compilar.
2. Pulsa **Ejecutar (F10)** para ejecutar hasta el primer punto de interrupción o el final, o **Avanzar un paso (F9)** para avanzar un elemento.
3. Comprueba que la sesión está activa: el Evento de inicio tiene un contorno azul y el panel de depuración de la derecha muestra tus variables iniciales.

Consulta [Depuración de reglas](/kilo-docs-es/kilo-iot-server/rules-engine/debugging-rules.md#the-session-starts-paused).

### "Un elemento está resaltado en rojo"

Un contorno rojo marca el elemento que generó el error más reciente: no es un punto de interrupción (un pequeño punto rojo sobre el elemento) ni la posición actual (un contorno azul). Empieza por la expresión de ese elemento.

**Qué hacer:**

1. Abre las propiedades del elemento y lee su expresión.
2. Comprueba que cada nombre que utiliza existe en la pestaña Variables. Una expresión que lea `vars.RH` fallará si no se proporcionó nada llamado `RH` como contexto inicial o si lo produjo un nodo anterior.
3. Comprueba la pestaña `vars.` el prefijo está presente: `RH > 70` no es lo mismo que `vars.RH > 70`.
4. Comprueba que la expresión devuelve el tipo correcto. Una condición de compuerta debe producir `true` o `false`.
5. Pega la expresión en **Evaluar** en la pestaña Observación para probarla con el estado actual.

### "La compuerta no tomó ninguna rama"

Dos causas distintas, con soluciones distintas.

**Una condición no pudo evaluarse.** Si alguna condición de la compuerta da error —la mayoría de las veces porque hace referencia a una variable que no está ahí—, la compuerta se detiene con un error y la regla no avanza más. No **lo** deja pasar al flujo predeterminado. La compuerta aparecerá con un contorno rojo; sigue los pasos anteriores.

**Ninguna condición coincidió y no hay predeterminado.** Si todas las condiciones devolvieron falso y ningún flujo está marcado como predeterminado, la ejecución no tiene a dónde ir. Abre la compuerta, elige el flujo alternativo y haz clic en **Establecer como predeterminado**.

### "Los botones de depuración están deshabilitados"

Los controles de avance están disponibles mientras la sesión está en pausa. Se deshabilitan mientras la regla se está ejecutando, mientras un cuadro de diálogo de Efecto secundario espera una respuesta y después de que una regla no haya podido cargarse. Detener sigue disponible en todo momento.

Si la regla no pudo cargarse, inicia una nueva sesión.

### "Mis puntos de interrupción desaparecieron"

Dos causas:

* **Usaste Ejecutar ignorando puntos de interrupción (F11).** Desactiva todos los puntos de interrupción y los deja desactivados durante el resto de la sesión. Vuelve a activarlos desde la pestaña Puntos de interrupción.
* **El editor se recargó.** Los puntos de interrupción están vinculados a los elementos del diagrama cargado. Una notificación te indica cuántos se descartaron para que puedas volver a añadirlos.

### "La sesión terminó mientras todavía estaba trabajando"

Una sesión de depuración dura 30 minutos, contados desde que comenzó. Avanzar por la regla no la prolonga. Recibirás una advertencia poco antes de que expire; inicia una nueva sesión para continuar.

## Límites de suscripción

Cada plan de suscripción incluye un número máximo de reglas de automatización activas. Estos límites afectan a varias operaciones:

* **Creación de reglas:** El **Añadir regla** el botón de la pestaña Reglas está deshabilitado cuando tu organización alcanza su límite de reglas. Un mensaje explica que se ha alcanzado el límite.

<figure><img src="https://3373664356-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtNQh1wBSHSaknslMdOXm%2Fuploads%2Fgit-blob-1026878d51f59d6d7992b3d57fdc6e8b6edaeb85%2Frules-limit-reached.jpg?alt=media" alt="The Rules tab showing the Rule limit reached banner above the rules list, with Add Rule disabled"><figcaption></figcaption></figure>

\- \*\*Restaurar desde la papelera:\*\* restaurar una regla eliminada cuenta como añadir una regla activa. Si estás en el límite, la restauración no continuará. - \*\*Clonar reglas:\*\* clonar crea una nueva regla, que cuenta dentro del límite.

Para comprobar tu uso actual y los límites de tu plan, visita la configuración de suscripción de tu organización. Para aumentar el límite, mejora tu plan o elimina las reglas que ya no necesites.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kiloiot.io/kilo-docs-es/kilo-iot-server/rules-engine/troubleshooting.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
