> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/user/fr/guide/account/iot-logic/flow-management/flow-configuration-example.md).

# Exemple de configuration d’un flux

Un exemple pas à pas montrant comment créer un flux IoT Logic qui collecte la télémétrie des appareils, calcule des mesures dérivées et transfère des données enrichies vers l’extérieur.

Cet exemple montre comment configurer un flux qui collecte les données des appareils IoT, effectue des calculs afin d’en dériver des indicateurs pertinents pour l’activité, puis transmet les données enrichies vers un système externe. L’exemple utilise un modèle de flux linéaire qui peut être adapté à divers cas d’usage sectoriels.

## Scénario métier

Dans ce scénario, une organisation a déployé des appareils GPS sur ses actifs et doit traiter les données de ces appareils à des fins d’analyse métier. L’organisation reçoit directement les paramètres suivants depuis ses appareils de suivi :

* `speed`: Vitesse du véhicule en kilomètres par heure
* `temperature`: Température ambiante en degrés Celsius
* `Compteur kilométrique`: Distance parcourue en kilomètres
* `contact`: État du contact moteur (1 = activé, 0 = désactivé)
* `niveau de carburant`: Mesure actuelle du niveau de carburant
* `pression en PSI`: Mesure de pression en PSI
* `tension`: Tension de la batterie en volts
* `accélérateur`: Position de la pédale d’accélérateur depuis le bus CAN (0-255)
* `niveau de carburant 1`: Première mesure du niveau du réservoir de carburant
* `niveau de carburant 2`: Deuxième mesure du niveau du réservoir de carburant

L’organisation doit :

1. Collecter les données de télémétrie brutes des appareils afin de conserver un historique complet des opérations des actifs
2. Convertir les unités de mesure pour qu’elles correspondent à leur format de reporting standard (unités impériales), afin d’assurer la cohérence avec les systèmes métier existants
3. Calculer des indicateurs temporels qui révèlent des schémas d’utilisation afin d’optimiser l’utilisation des actifs et les calendriers d’entretien
4. Créer des indicateurs dérivés pour générer des informations opérationnelles non fournies directement par le matériel
5. Transmettre les données enrichies à un système d’analyse externe afin de les intégrer à des plateformes de business intelligence
6. Envoyer les données brutes inchangées à Navixy pour le suivi

Ce flux transforme les données brutes des appareils en un format qui prend directement en charge la prise de décision métier tout en préservant l’intégrité des mesures d’origine.

## Étapes de configuration du flux

Suivez ces étapes pour créer un flux complet de transformation et de transmission des données :

{% stepper %}
{% step %}

### Créer un nouveau flux

Ouvrez IoT Logic. Sur la page d’accueil, cliquez sur **Créer un flux**. Saisissez *Traitement de la télémétrie des actifs* comme nom du flux, ajoutez une description (*"Collecte les données des appareils, calcule des indicateurs dérivés et les transmet à la plateforme d’analyse."*), et assurez-vous que le **Flux activé** est activé. Cliquez **Confirmer** pour ouvrir le canevas.
{% endstep %}

{% step %}

### Configurer la Source de données

1. Faites glisser un **Source de données** nœud du menu de gauche vers l’espace de travail
2. Double-cliquez sur le nœud pour ouvrir son panneau de configuration
3. Dans **Nom du nœud** type *Trackers d’actifs*
4. Sélectionnez les appareils à inclure dans ce flux dans la liste filtrée

* Pour cet exemple, sélectionnez au moins deux appareils aux capacités similaires

5. Cliquez sur **Appliquer** pour enregistrer la configuration du nœud
   {% endstep %}

{% step %}

### Configurer les transformations de données de base

1. Faites glisser un **Initialiser un Attribut** nœud du menu de gauche vers l’espace de travail
2. Connectez le **Source de données** Nœud à ce **Initialiser un Attribut** Nœud
3. Double-cliquez sur le Nœud pour ouvrir sa configuration
4. Dans **Nom du nœud** type *Conversions d’unités*
5. Créez les attributs suivants pour la conversion d’unités (tous les exemples utilisent la syntaxe courte, en se référant aux dernières valeurs d’attribut sans vérification de validité) :
   1. Ajoutez un nouvel attribut pour la conversion de vitesse (km/h vers mph) : 1. Nom de l’attribut : *speed\_mph* 2. Valeur : `speed/1.609`
   2. Ajouter un nouvel attribut pour la conversion de température (Celsius en Fahrenheit) : 1. Nom de l’attribut : *temperature\_F* 2. Valeur : `temperature*1.8 + 32`
   3. Ajouter un nouvel attribut pour la conversion de distance (kilomètres en miles) : 1. Nom de l’attribut : *distance\_miles* 2. Valeur : `Compteur kilométrique/1.609`
   4. Ajouter un nouvel attribut pour la conversion de pression (PSI en bar) : 1. Nom de l’attribut : *pressure\_bar* 2. Valeur : `pressure_psi * 0.06895`
6. Cliquez sur **Appliquer** pour enregistrer la configuration du nœud

{% hint style="info" %}
Pour des explications sur les calculs introduits dans cette étape, voir [Conversions d’unités de base](#basic-unit-conversions)
{% endhint %}
{% endstep %}

{% step %}

### Créer des métriques calculées avancées

1. Faites glisser un autre **Initialiser un Attribut** nœud du menu de gauche vers l’espace de travail
2. Connectez le premier **Initialiser un Attribut** nœud à ce nouveau
3. Double-cliquez sur le nœud pour ouvrir sa configuration
4. Dans **Nom du nœud** type *Calculs avancés*
5. Créez les attributs suivants pour les métriques avancées :
   1. Ajoutez un attribut pour la détection des variations de température :
      1. Nom de l'attribut : *temperature\_change*
      2. Valeur : `value('temperature', 0, 'valid') - value('temperature', 1, 'valid')`
      3. `genTime('temperature', 0, 'valid')`
   2. Ajoutez un attribut pour calculer le temps écoulé entre les deux dernières lectures :
      1. Nom de l'attribut : *time\_between\_readings\_ms*
      2. Valeur : `srvTime('speed', 0, 'valid') - srvTime('speed', 1, 'valid')`
      3. Heure de génération : `genTime('speed', 0, 'valid')`
   3. Ajoutez un attribut pour arrondir la température à l'entier le plus proche :
      1. Nom de l'attribut : *temperature\_rounded*
      2. Valeur : `math:round(value('temperature', 0, 'valid'))`
   4. Ajouter un attribut pour le calcul de valeurs standardisées (normalisation du niveau de carburant à 0-100 %) :
      1. Nom de l'attribut : *niveau\_de\_carburant\_en\_pourcentage*
      2. Valeur : `(value('fuel_level', 0, 'valid') - 0) / (100 - 0) * 100`
   5. Ajoutez un attribut pour le calcul du pourcentage de charge de la batterie :
      1. Nom de l'attribut : *pourcentage de batterie*
      2. Valeur : `(value('voltage', 0, 'valid') - 11) / (14 - 11) * 100`
   6. Ajouter un attribut pour le calcul de la position de l’accélérateur :
      1. Nom de l'attribut : *pourcentage d'ouverture du papillon*
      2. Valeur : `value('throttle', 0, 'valid') / 255 * 100`
   7. Ajoutez un attribut pour le niveau moyen de carburant provenant de plusieurs capteurs :
      1. Nom de l'attribut : *niveau\_moyen\_de\_carburant*
      2. Valeur : `(value('fuel_level_1', 0, 'valid') + value('fuel_level_2', 0, 'valid')) / 2`
6. Cliquez sur **Appliquer** pour enregistrer la configuration du nœud

{% hint style="info" %}
Pour des explications sur les calculs introduits dans cette étape, voir [Calculs avancés des métriques](#advanced-metrics-calculations).
{% endhint %}
{% endstep %}

{% step %}

### Configurez le Point de sortie

1. Faites glisser un **Point de sortie** nœud du menu de gauche vers l’espace de travail
2. Connectez le second **Initialiser un Attribut** Nœud à ce **Point de sortie** Nœud
3. Cliquez sur le Nœud pour ouvrir sa configuration
4. Configurez les paramètres suivants :
   1. **Type de point de terminaison**: *Point de sortie MQTT*
   2. **Nom du point de terminaison**: *Plateforme analytique*
   3. **Protocole** : par défaut *Navixy Generic Protocol (JSON)*
   4. **IP/Domaine** : Saisissez l'adresse du système de destination (p. ex., "*analytics.example.com*")
   5. **Port**: *8883* (par défaut pour MQTT, vous pouvez le laisser vide)
   6. **Activer SSL**: *activez*
   7. **Version MQTT**: *5.0*
   8. **ID client MQTT**: *client de télémétrie d’Actif*
   9. **Sujet**: *telemetry/assets/raw*
   10. **QoS**: *1*
   11. **Authentification MQTT**: *Oui* (si votre système de destination l’exige)
   12. **Identifiant et mot de passe MQTT** : Saisissez les identifiants si nécessaire
5. Cliquez sur **Créer** pour enregistrer la configuration du nœud
   {% endstep %}

{% step %}

### Ajouter le point de sortie par défaut

1. Faites glisser un **Point de sortie** nœud du menu de gauche vers l’espace de travail
2. Dans **Mode** Sélectionnez **Point de sortie par Défaut**
3. Cliquez sur **Enregistrer** pour appliquer la configuration du nœud
4. Connectez le *Trackers d’actifs* (**Source de données**) nœud à celui-ci

Cela garantit que les Données brutes sont envoyées à Navixy directement depuis les appareils, sans aucune transformation ni enrichissement.
{% endstep %}

{% step %}

### Enregistrez et testez le flux

Votre configuration finale ressemblera à ceci :

<figure><img src="https://2196179364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-76943e439a5bab01e5e25fe9f9199d46c99ade30%2Fiot-logic-flow-configuration-example.png?alt=media" alt="Complete flow configuration with all nodes connected in IoT Logic workspace"><figcaption></figcaption></figure>

Cliquez sur le **Enregistrer le flux** bouton sur le **Nœuds** volet pour enregistrer la configuration de votre flux.
{% endstep %}
{% endstepper %}

{% hint style="success" %}
Utilisez [Analyseur de données (DSA)](/docs/user/fr/guide/account/iot-logic/data-stream-analyzer.md) pour surveiller les données entrantes afin de vérifier :

* Les appareils envoient des données vers le flux
* Les calculs fonctionnent comme prévu
* Les données sont transférées vers la destination. Par exemple, vérifions que les conversions de vitesse sont calculées correctement sur un camion. Pour ce faire dans DSA, sélectionnez le **Volvo** l’appareil et les attributs **speed** et **speed\_mph**:\ <img src="https://2196179364-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-dd91833c4e91cbf04798d44c3604cd4ef38c0937%2Fimage-20250407-204530.png?alt=media" alt="Speed attributes for one device in Data Stream Analyzer" data-size="original">

Tout va bien ! Les données sont reçues et converties avec succès.
{% endhint %}

## Explication des transformations de données

Examinons les calculs clés utilisés dans ce flux.

### Conversions d’unités de base

Le premier **Nœud Initialiser un Attribut** effectue des conversions d’unités simples :

* **Vitesse** : Convertit les km/h en mph en divisant par 1,609
* **Température** : Convertit les Celsius en Fahrenheit à l’aide de la formule °F = °C × 1,8 + 32
* **Distance** : Convertit les kilomètres en miles en divisant par 1,609
* **Pression** : Convertit les PSI en bar en multipliant par 0,06895, ce qui le rend compatible avec les normes internationales de mesure de la pression

Ces conversions assurent la cohérence avec les formats de rapport standard et rendent les données immédiatement exploitables pour l’analyse. Les conversions d’unités sont particulièrement utiles aux organisations multinationales qui opèrent dans des régions où les normes de mesure diffèrent.

### Calculs avancés des métriques

La seconde **Nœud Initialiser un Attribut** effectue des calculs plus complexes :

* **Détection des variations de température** : Calcule la différence entre les relevés de température actuels et précédents afin d’identifier les changements soudains. Cela permet de détecter des problèmes d’équipement, tels que des pannes de réfrigération dans les véhicules de transport ou des problèmes de CVC dans les installations. Par exemple, une hausse soudaine de 5 °C dans un conteneur réfrigéré peut indiquer une panne du système de refroidissement nécessitant une intervention immédiate.
  * **Heure de génération** : L’utilisation de cet horodatage `genTime('temperature', 0, 'valid')` est ici cruciale, car elle préserve l’horodatage exact auquel le relevé de température a été généré par l’appareil, garantissant une analyse temporelle précise des variations de température.
  * **Heure du serveur** : La valeur par défaut `now()` capture automatiquement le moment où le serveur a reçu les données. Cet horodatage n’a pas besoin d’être modifié, laissez donc ce champ vide lors de la configuration.
* **Intervalle entre les relevés** : Mesure l’intervalle entre des transmissions de données consécutives en comparant les horodatages du serveur. Ce calcul permet d’identifier des problèmes de communication ou de vérifier que les appareils transmettent à la fréquence attendue. Des intervalles irréguliers peuvent indiquer des problèmes de connectivité, tandis que des retards constants peuvent suggérer une congestion du réseau ou des problèmes de configuration de l’appareil.
* **Arrondi des valeurs** : Applique un arrondi mathématique aux relevés de température, réduisant la précision décimale aux entiers. Cela simplifie la visualisation et le reporting des données tout en réduisant les besoins de stockage pour les données historiques. Les valeurs arrondies sont particulièrement utiles pour l’affichage sur les tableaux de bord et les règles d’alertes basées sur des seuils, lorsque la précision décimale n’est pas nécessaire.
  * **Heure de génération** : En spécifiant `genTime('speed', 0, 'valid')` lie directement ces métadonnées à l’horodatage du relevé d’origine, ce qui permet d’analyser à la fois l’intervalle de temps et le moment où il s’est produit.
  * **Heure du serveur** : La valeur par défaut `now()` capture automatiquement le moment où le serveur a reçu les données. Cet horodatage n’a pas besoin d’être modifié, laissez donc ce champ vide lors de la configuration.
* **Calcul de valeur standardisée** : Normalise les relevés bruts des capteurs à une échelle en pourcentage (0-100 %). Cette standardisation facilite la comparaison des relevés entre différents types de capteurs et modèles de véhicules. Pour la gestion de flotte, cela permet un reporting cohérent du niveau de carburant, quel que soit le capteur de carburant spécifique mis en œuvre dans chaque modèle de véhicule, ce qui permet des règles d’alertes uniformes de niveau de carburant bas et l’analyse de la consommation.
* **Calcul du pourcentage de charge de la batterie** : Normalise les relevés de tension de batterie (plage 11 V-14 V) sur une échelle de 0 à 100 % pour un suivi plus facile. Par exemple, un relevé de 12,5 V serait normalisé à 50 %, fournissant un indicateur intuitif de l’état de la batterie pour différents types de véhicules.
* **Calcul de la position de l’accélérateur** : Convertit les données brutes de position de l’accélérateur (plage 0-255) du bus CAN du véhicule en une échelle en pourcentage. Cette standardisation aide les opérateurs à comprendre rapidement le comportement du conducteur et les performances du véhicule sans avoir à interpréter les valeurs brutes des capteurs.
* **Niveau de carburant moyen provenant de plusieurs capteurs** : Combine les relevés de deux capteurs de carburant distincts pour produire une mesure globale du niveau de carburant plus précise. Cela est particulièrement utile pour les véhicules présentant des formes de réservoir complexes ou plusieurs réservoirs, où un seul capteur pourrait ne pas fournir de relevés fiables en raison des mouvements du carburant pendant le déplacement.

## Résumé de l’exemple de flux

Cette configuration de flux démontre plusieurs fonctionnalités clés d’IoT Logic :

1. **Normalisation** : Convertit les relevés spécifiques à l’appareil en métriques métier standardisées
2. **Enrichissement** : Crée de nouvelles métriques porteuses de sens, non disponibles directement à partir des capteurs de l’appareil
3. **Transformation** : Modifie les unités pour répondre aux exigences de reporting métier
4. **Contexte historique** : Utilise les relevés précédents pour calculer des indicateurs basés sur les tendances
5. **Détermination de l’état** : Crée des valeurs catégorielles à partir de plusieurs entrées de capteurs

Cette combinaison de fonctionnalités transforme les données brutes de l’appareil en informations métier exploitables, en soutenant directement la prise de décision opérationnelle tout en préservant l’intégrité des mesures d’origine.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://navixy.com/docs/user/fr/guide/account/iot-logic/flow-management/flow-configuration-example.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
