> 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-fr/kilo-iot-server/rules-engine/troubleshooting.md).

# Dépannage du moteur de règles

Résolvez les erreurs de règles dans Kilo IoT — nœuds manquants, CEL invalide, attachement de limite, limites de déploiement.

Cette page couvre les problèmes les plus courants que vous rencontrerez lors de la création, du déploiement et de la gestion des règles d’automatisation : erreurs de validation à la génération, problèmes d’exécution et limites de la plateforme.

## Erreurs de génération

Lorsque vous cliquez sur **Enregistrer et générer** dans la barre latérale des résultats de génération, la plateforme valide le diagramme entier avant de produire un artefact. Si la validation échoue, des messages d’erreur apparaissent dans la barre latérale. Voici les erreurs que vous pouvez voir, leur cause et comment les corriger.

| Erreur                                               | Cause                                                                                                         | Correction                                                                                                                                                                                                                                    |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Événement de début manquant                          | Le diagramme ne contient aucun nœud Événement de début                                                        | Faites glisser un Événement de début depuis la palette sur le canevas. Chaque règle doit commencer par exactement un seul Événement de début.                                                                                                 |
| Événement de fin manquant                            | Le diagramme ne contient aucun nœud Événement de fin                                                          | Ajoutez au moins un Événement de fin. Chaque chemin d’exécution doit se terminer par un Événement de fin.                                                                                                                                     |
| Plusieurs événements de début                        | Plus d’un Événement de début existe sur le canevas                                                            | Supprimez les événements de début supplémentaires. Une règle ne peut avoir qu’un seul point d’entrée.                                                                                                                                         |
| Aucun flux sortant                                   | Un nœud n’a aucune flèche sortante (et ce n’est pas un Événement de fin)                                      | Reliez le nœud à l’étape suivante du workflow. Chaque nœud non terminal a besoin d’un flux sortant.                                                                                                                                           |
| Événement de début sans flux sortant                 | L’Événement de début n’est connecté à aucun nœud                                                              | Dessinez un flux de séquence de l’Événement de début vers le premier nœud de traitement de votre règle.                                                                                                                                       |
| Condition manquante                                  | Une branche de passerelle exclusive n’a aucune expression de condition CEL assignée                           | Ouvrez les propriétés de la passerelle et ajoutez une expression CEL à chaque branche non par défaut. Une branche doit être marquée comme par défaut (aucune condition n’est requise pour la branche par défaut).                             |
| Expression invalide                                  | Une expression CEL contient une erreur de syntaxe                                                             | Vérifiez l’expression pour des parenthèses non appariées, des guillemets manquants autour des chaînes ou des opérateurs incorrects. Voir [Référence CEL](/kilo-docs-fr/kilo-iot-server/rules-engine/cel-reference.md) pour la syntaxe valide. |
| La condition doit renvoyer un booléen                | Une expression de condition de passerelle renvoie une valeur non booléenne                                    | Les conditions de passerelle doivent évaluer à `vrai` ou `faux`. Utilisez des opérateurs de comparaison (`>`, `<`, `==`, `!=`, `>=`, `<=`) ou des opérateurs logiques (`&&`, `\|\|`, `!`).                                                    |
| Événement d’erreur frontière non rattaché            | Un événement d’erreur frontière existe sur le canevas mais n’est pas rattaché à un nœud de tâche              | Faites glisser l’événement d’erreur frontière sur une tâche de script, un nœud Définir une alarme ou un nœud d’enrichissement. Il doit être visuellement attaché au bord d’une tâche.                                                         |
| Cible sortante de l’événement frontière              | Le flux sortant d’un événement d’erreur frontière pointe vers autre chose qu’une tâche ou un Événement de fin | Redirigez le chemin d’erreur vers une tâche (l’étape de gestion) ou vers un Événement de fin.                                                                                                                                                 |
| La branche par défaut ne doit pas avoir de condition | Le flux marqué comme défaut pour la passerelle porte encore une condition CEL                                 | Effacez la condition du flux par défaut. Le flux par défaut s’exécute précisément lorsque rien d’autre ne correspond, il n’a donc pas sa propre expression.                                                                                   |
| La passerelle doit se scinder ou fusionner           | Une passerelle exclusive a exactement un flux entrant et un flux sortant                                      | Une passerelle doit soit prendre une décision (deux flux sortants ou plus), soit réunir des chemins (deux flux entrants ou plus). Une passerelle de passage ne fait rien — supprimez-la et reliez directement les nœuds.                      |
| Identifiant d’élément en double                      | Deux éléments sur le canevas partagent le même identifiant                                                    | Généralement le résultat de l’importation ou d’une modification externe d’un diagramme. Supprimez puis rajoutez l’un des deux éléments.                                                                                                       |
| Paramètre d’entrée ou de sortie non pris en charge   | Le paramètre d’entrée ou de sortie d’un nœud n’est pas une expression CEL                                     | Les entrées et sorties n’acceptent que des expressions CEL. Saisissez à nouveau le paramètre dans le panneau des propriétés.                                                                                                                  |
| Paramètre Exécuter une commande invalide             | Un nœud Exécuter une commande a un paramètre sans nom, sans valeur ou avec un nom utilisé deux fois           | Ouvrez le panneau des propriétés du nœud et donnez à chaque paramètre un nom unique ainsi qu’une valeur ou une expression.                                                                                                                    |
| Type d’élément inconnu                               | Un nœud non reconnu existe sur le canevas                                                                     | Supprimez l’élément inconnu et remplacez-le par un type de nœud pris en charge depuis la palette. Cela peut se produire si un diagramme a été importé ou modifié en externe.                                                                  |

### Résolution des erreurs de génération

1. Lisez le message d’erreur dans la barre latérale des résultats de génération : il identifie le problème et souvent le nœud précis.
2. Fermez la barre latérale et corrigez le problème sur le canevas.
3. Cliquez sur **Générer** à nouveau pour revérifier.

Plusieurs erreurs peuvent apparaître simultanément. Corrigez-les toutes avant de relancer la génération.

## Problèmes courants

### "J’ai créé un déclencheur, mais rien ne se passe"

Un déclencheur enregistré ne surveille que sa condition. Il ne contient ni alarme, ni commande, ni autre réponse, et il n’est pas attaché automatiquement à une règle.

**Que faire :**

1. Retournez à l’onglet **Règles** et créez ou modifiez la règle qui doit réagir.
2. Sélectionnez l’Événement de début, cliquez sur son crayon, et définissez **Source de départ** sur **Condition du déclencheur**.
3. Sélectionnez le déclencheur enregistré et cliquez sur **Enregistrer** en bas du panneau de l’Événement de début.
4. Ajoutez les nœuds de réponse, puis enregistrez la règle depuis la barre d’outils de l’éditeur.
5. Générez la règle et déployez son artefact depuis l’onglet **Artefacts** .

Voir [D’un déclencheur à une règle en cours d’exécution](/kilo-docs-fr/kilo-iot-server/rules-engine/triggers.md#from-a-trigger-to-a-running-rule) pour le workflow complet.

### "Mon déclencheur est absent de l’Événement de début"

Le **Condition du déclencheur** champ apparaît uniquement après que vous avez modifié le **Source de départ** de l’Événement de début **Lecture de capteur** sur **Condition du déclencheur**. Il répertorie les déclencheurs enregistrés pour l’organisation actuelle et ne charge actuellement que la première page des résultats.

**Que faire :**

* Vérifiez que le déclencheur a été créé dans la même organisation que la règle.
* Vérifiez que **Condition du déclencheur** est sélectionné comme source de départ.
* Si le déclencheur existe mais se trouve au-delà de la première page, il ne peut pas encore être sélectionné dans ce champ.

### "La règle est verrouillée et je ne peux pas la modifier"

Un autre membre de l’équipe modifie actuellement la règle. L’icône de verrou sur la ligne de la règle indique qui détient le verrou et quand il expire.

**Que faire :**

* Attendez l’expiration du verrou. La date d’expiration du verrou est affichée dans l’interface dans l’infobulle du verrou.
* Contactez la personne qui détient le verrou et demandez-lui d’enregistrer puis de quitter.
* Si le détenteur du verrou n’est pas disponible et que vous êtes le propriétaire de l’organisation, vous pouvez forcer le déverrouillage de la règle depuis la liste des Règles. Voir [Modifier les verrous et les passations d’équipe](/kilo-docs-fr/kilo-iot-server/rules-engine/edit-locks-and-team-handoffs.md) pour plus de détails.

### "La génération a réussi mais la règle ne s’exécute pas"

La génération et le déploiement sont deux étapes distinctes. Une génération réussie crée un artefact, mais l’artefact n’est pas déployé automatiquement.

**Que faire :**

1. Allez à l’onglet **Artefacts** de la page du moteur de règles.
2. Trouvez la génération que vous venez de créer.
3. Cliquez sur **Déployer** pour lancer le traitement de la règle à partir de sa source de capteur ou de déclencheur sélectionnée.

### "La règle a été arrêtée de force"

La plateforme surveille la santé de l’exécution. Si une règle rencontre des erreurs persistantes pendant son exécution, elle est automatiquement arrêtée pour éviter des défaillances en cascade. L’artefact affiche le statut **Arrêté de force** (rouge) dans l’onglet Artefacts.

**Que faire :**

1. Ouvrez la règle dans l’éditeur et examinez la logique.
2. Vérifiez si les capteurs référencés sont toujours actifs et envoient des données.
3. Vérifiez que toutes les expressions CEL sont valides pour les formes réelles des données produites par vos capteurs.
4. Vérifiez les nœuds d’enrichissement — le capteur cible a peut-être été supprimé ou mis hors ligne.
5. Corrigez le problème, générez un nouvel artefact et déployez-le.

Voir [Sécurité d’urgence](/kilo-docs-fr/kilo-iot-server/rules-engine/builds-artifacts-and-deployment.md#emergency-safety) pour plus de détails.

### "L’enrichissement échoue sans cesse"

Le nœud d’enrichissement récupère la dernière lecture d’un autre capteur. Si ce capteur est hors ligne, supprimé ou n’a jamais envoyé de données, l’enrichissement échoue.

**Que faire :**

* Vérifiez que le capteur cible existe et qu’il envoie activement des données.
* Attachez un **Événement d’erreur frontière** au nœud d’enrichissement afin que la règle gère l’échec avec souplesse au lieu de s’arrêter complètement. Voir [Modèle 4 : enrichissement sécurisé contre les erreurs](/kilo-docs-fr/kilo-iot-server/rules-engine/automation-patterns.md#pattern-4-error-safe-enrichment).

### "L’enregistrement automatique a échoué"

Une interruption réseau ou un problème temporaire du serveur a empêché l’enregistrement automatique.

**Que faire :**

* Une boîte de dialogue apparaît avec deux options : **Réessayer** (tente d’enregistrer à nouveau) ou **Retour à la règle** (revient à la liste des Règles sans enregistrer les dernières modifications).
* Essayez **Réessayer** d’abord. Si l’échec se répète, enregistrez manuellement à l’aide du **Enregistrer** bouton.
* Si l’enregistrement manuel échoue aussi, vérifiez votre connexion réseau.

### "Je ne peux pas restaurer une règle depuis la corbeille"

La règle a peut-être dépassé la période de conservation de la corbeille et été supprimée définitivement.

**Que faire :**

* Vérifiez l’onglet **Corbeille** . Si la règle n’est plus listée, elle a été supprimée définitivement et ne peut pas être récupérée.
* Si la règle est toujours dans l’onglet Corbeille mais que la restauration échoue, vérifiez si votre organisation a atteint la limite de règles de son abonnement. Restaurer une règle compte dans le quota de règles actives.

### "J’ai accidentellement restauré la mauvaise version"

Restaurer une version ne détruit rien. La restauration crée une nouvelle version courante, et la version précédemment active est conservée dans l’historique.

**Que faire :**

1. Ouvrez l’onglet **Historique** .
2. Trouvez la version qui était active avant la restauration accidentelle.
3. Affichez-la (icône en forme d’œil) et cliquez sur **Restaurer cette version** pour la rendre à nouveau active.

## Sessions de débogage

### "J’ai démarré une session de débogage et rien ne se passe"

Une session de débogage charge la règle, place l’exécution sur l’Événement de début et attend votre intervention. Elle n’exécute pas la règle toute seule.

**Que faire :**

1. Regardez en bas du canevas pour la barre d’outils de débogage. Elle flotte au-dessus du diagramme ; elle ne se trouve pas dans la barre d’en-tête à côté de Enregistrer et générer.
2. Appuyez sur **Exécuter (F10)** pour exécuter jusqu’au premier point d’arrêt ou jusqu’à la fin, ou sur **Passer au suivant (F9)** pour avancer d’un élément.
3. Vérifiez que la session est active : l’Événement de début a un contour bleu, et le panneau de débogage à droite liste vos variables initiales.

Voir [Déboguer les règles](/kilo-docs-fr/kilo-iot-server/rules-engine/debugging-rules.md#the-session-starts-paused).

### "Un élément est entouré de rouge"

Un contour rouge marque l’élément qui a déclenché l’erreur la plus récente — ce n’est pas un point d’arrêt (un petit point rouge au-dessus de l’élément) et ce n’est pas la position actuelle (un contour bleu). Commencez par l’expression sur cet élément.

**Que faire :**

1. Ouvrez les propriétés de l’élément et lisez son expression.
2. Vérifiez que chaque nom qu’elle utilise existe dans l’onglet Variables. Une expression qui lit `vars.RH` échoue si rien nommé `RH` n’a été fourni comme contexte initial ou produit par un nœud précédent.
3. Vérifiez l’onglet `Le préfixe vars.` est présent — `RH > 70` n’est pas la même chose que `vars.RH > 70`.
4. Vérifiez que l’expression renvoie le bon type. Une condition de passerelle doit produire `vrai` ou `faux`.
5. Collez l’expression dans **Évaluer** dans l’onglet Watch pour la tester par rapport à l’état actuel.

### "La passerelle n’a pris aucune branche"

Deux causes différentes, avec des correctifs différents.

**Une condition n’a pas pu être évaluée.** Si une condition sur la passerelle génère une erreur — le plus souvent parce qu’elle référence une variable absente — la passerelle s’arrête avec une erreur et la règle ne va pas plus loin. Elle ne **pas** retombe sur le flux par défaut. La passerelle sera entourée de rouge ; suivez les étapes ci-dessus.

**Aucune condition ne correspondait et il n’y a pas de défaut.** Si toutes les conditions ont renvoyé faux et qu’aucun flux n’est marqué comme défaut, l’exécution n’a nulle part où aller. Ouvrez la passerelle, choisissez le flux de repli, et cliquez sur **Définir comme défaut**.

### "Les boutons de débogage sont grisés"

Les contrôles d’étape sont disponibles lorsque la session est en pause. Ils sont désactivés lorsque la règle s’exécute, lorsqu’une boîte de dialogue d’effet secondaire attend une réponse, et après l’échec du chargement d’une règle. Stop reste disponible en permanence.

Si le chargement de la règle a échoué, démarrez une nouvelle session.

### "Mes points d’arrêt ont disparu"

Deux causes :

* **Vous avez utilisé Exécuter ignorer les points d’arrêt (F11).** Cela désactive tous les points d’arrêt et les laisse désactivés pour le reste de la session. Réactivez-les depuis l’onglet Points d’arrêt.
* **L’éditeur s’est rechargé.** Les points d’arrêt sont liés aux éléments du diagramme chargé. Une notification vous indique combien ont été supprimés afin que vous puissiez les rajouter.

### "La session s’est terminée alors que je travaillais encore"

Une session de débogage dure 30 minutes, mesurées à partir de son démarrage. Le fait de parcourir la règle pas à pas ne la prolonge pas. Vous recevez un avertissement peu avant son expiration ; démarrez une nouvelle session pour continuer.

## Limites d’abonnement

Chaque formule d’abonnement inclut un nombre maximal de règles d’automatisation actives. Ces limites affectent plusieurs opérations :

* **Création de règles :** Le **Ajouter une règle** le bouton de l’onglet Règles est désactivé lorsque votre organisation atteint sa limite de règles. Un message explique que la limite a été atteinte.

<figure><img src="https://3675309505-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>

\- \*\*Restauration depuis la corbeille :\*\* restaurer une règle supprimée compte comme l’ajout d’une règle active. Si vous êtes à la limite, la restauration ne se poursuivra pas. - \*\*Clonage de règles :\*\* cloner crée une nouvelle règle, ce qui compte dans la limite.

Pour vérifier votre utilisation actuelle et les limites de votre formule, rendez-vous dans les paramètres d’abonnement de votre organisation. Pour augmenter la limite, mettez à niveau votre formule ou supprimez les règles dont vous n’avez plus besoin.


---

# 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-fr/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.
