# Scénario (automation)

### 1- Définition

Un **scénario** est un ensemble de règles qui détermine le comportement d'un module.

<p class="callout info">Le **scénario**, c'est la liste des consignes que le module exécute à chaque cycle de fonctionnement</p>

ModLink peut gérer jusqu'à **3 scénarios**, exécutés de manière autonome et pouvant être **activés** ou **désactivés** indépendamment.

<p class="callout info">Lorsque plusieurs modules sont utilisés ensemble, ils peuvent échanger des informations grâce au **partage des variables, des entrées et des sorties**  
</p>

### 2- Principe de fonctionnement

Un scénario fonctionne selon le principe d’une **boucle d’exécution continue**

- les conditions sont analysées en permanence,
- les tests sont exécutés dans l'ordre défini,
- lorsqu'une condition est satisfaite, l'action correspondante est exécutée,
- dans le cas contraire, le scénario poursuit son exécution selon la logique configurée

<p class="callout success">Tel un agent de sécurité qui effectue des rondes, le scénario surveille en permanence différents points de contrôle dans un ordre défini :  
- les <span style="text-decoration: underline;">entrées</span> (voyants, ouvrants, environnement ...)  
- les <span style="text-decoration: underline;">sorties</span> (interrupteur, vanne, alerte ...)  
- les <span style="text-decoration: underline;">variables</span> (rapports des agents précédents)  
Une fois l’ensemble des vérifications effectué, le cycle se répète en permanence</p>

<details id="bkmrk-comprendre-le-princi"><summary>Comprendre le principe de fonctionnement d'un scénario</summary>

<span style="color: rgb(52, 73, 94);">**Cette section présente un *exemple de scénario.*  
Le *visuel* est accompagné d'une *description des différents blocs utilisés*, afin de faciliter la compréhension de leurs rôles et de leurs interactions.**</span>

##### **Surveillance d'une pompe de relevage** 

<span style="text-decoration: underline;">Fonctionnement général</span> :  
Ce scénario pilote une pompe de relevage (sortie 1) et surveille son bon fonctionnement : la pompe démarre lorsque le niveau haut est atteint et s'arrête lorsque le niveau bas est atteint.   
Le scénario surveille deux capteurs :  
\- capteur niveau haut (entrée 1) : indique que la cuve est pleine et qu'il faut démarrer la pompe  
\- capteur niveau bas (entrée 2) : indique que la cuve est suffisamment vidée et que la pompe peut être arrêtée  
Le scénario stoppe le processus et envoie un SMS d'alerte si la cuve n'a pas commencé à se vider après 60 secondes. Il vérifie également qu'aucun défaut n'est déjà signalé avant de lancer un nouveau cycle.

[![Scénario exemple pompe.png](https://modlink.fr/help/uploads/images/gallery/2026-06/scaled-1680-/ebWscenario-exemple-pompe.png)](https://modlink.fr/help/uploads/images/gallery/2026-06/ebWscenario-exemple-pompe.png)

- **<span style="color: rgb(52, 73, 94);"><span style="background-color: rgb(194, 224, 244);">Label "DEBUT"  
    </span>*Point de départ du scénario (lors de la mise sous tension du module et du redémarrage du système)*   
    </span>**
- **<span style="color: rgb(52, 73, 94);"><span style="background-color: rgb(194, 224, 244);">Bloc 9 "TEST VARIABLE" / Test état de la pompe</span>  
    *Vérifie la variable "état de la pompe"* </span>**<span style="color: rgb(52, 73, 94);">*- égale à 1 "pompe fonctionnelle" <span style="color: rgb(186, 55, 42);">→ va au bloc 1 "TEST STATE"</span>*</span><span style="color: rgb(52, 73, 94);"> *- égale à 0 "pompe en défaut" <span style="color: rgb(186, 55, 42);">→ retour au début du scénario "LABEL DEBUT"  
    </span>*<span style="color: rgb(68, 68, 68);">le processus est arrêté jusqu'à ce que l'agent de maintenance réinitialise le défaut (à l'aide du widget "état de la pompe")</span>  
      
    </span>
- **<span style="color: rgb(52, 73, 94);"><span style="background-color: rgb(194, 224, 244);">Bloc 1 : "TEST STATE" / Test niveau haut atteint</span>  
    </span>*****Teste le capteur de niveau haut (entrée 1) - le niveau haut est-il atteint ?***  
    \- si ON (la cuve est pleine) <span style="color: rgb(186, 55, 42);">→ va au bloc 2 "SORTIE SIMPLE"</span>  
    \- si OFF (la cuve n'est pas pleine) <span style="color: rgb(186, 55, 42);">→ retour au début du bloc 1 "TEST STATE"</span>
- **<span style="background-color: rgb(194, 224, 244);">Bloc 2 "SORTIE SIMPLE" / Pompe ON</span>  
    *Active la sortie 1* la pompe démarre et commence à évacuer l'eau *<span style="color: rgb(186, 55, 42);">→ </span>***<span style="color: rgb(186, 55, 42);">va ensuite au bloc 3 "TEST TIMER"</span>
- **<span style="background-color: rgb(194, 224, 244);">Bloc 4 "TEST TIMER" / Temporisation avant défaut</span> *Lance une temporisation de 60 secondes, au bout de laquelle s'il n'y a pas eu de changement d'état du capteur de niveau haut (entrée 1), on estime qu'il y a une anomalie de la pompe, on continue alors vers le bloc 7 "ENVOI SMS"*** <span style="color: rgb(22, 145, 121);">"*Condition par défaut / test en cours*"</span> <span style="color: rgb(186, 55, 42);">→ </span><span style="color: rgb(186, 55, 42);">va au bloc 3 "TEST STATE" tant que le décompte n'est pas terminé</span>  
    <span style="color: rgb(22, 145, 121);">*"GOTO1 time elapsed"* </span>: une fois le temps écoulé, si l'état de la variable "niveau haut" n'a toujours pas changé (le niveau de la cuve n'a pas diminué malgré le fonctionnement de la pompe) on estime qu'il y a un défaut <span style="color: rgb(186, 55, 42);">→ va au bloc 7 "ENVOI SMS"</span>
- <span style="background-color: rgb(194, 224, 244);">**Bloc 3 "TEST STATE" Test vidange commencée** </span>***Teste le niveau du capteur haut (entrée 1)** On s'attend à ce que le niveau du capteur baisse. Si le niveau n'a pas changé au bout de 60 secondes, on sort en anomalie au niveau du bloc 4.* si ON (contact fermé : le capteur haut n'a pas changé d'état) *<span style="color: rgb(186, 55, 42);">**→** </span>*<span style="color: rgb(186, 55, 42);">retourne</span>*<span style="color: rgb(186, 55, 42);"> </span>*<span style="color: rgb(186, 55, 42);">au bloc 4 "TEST TIMER"   
    <span style="color: rgb(52, 73, 94);">si OFF (contact ouvert : le niveau a baissé avant les 60 secondes) </span></span>*<span style="color: rgb(186, 55, 42);">**→** </span>*<span style="color: rgb(186, 55, 42);">va</span>*<span style="color: rgb(186, 55, 42);"> </span>*<span style="color: rgb(186, 55, 42);">au bloc 6 "TEST NIVEAU BAS ATTEINT"   
      
    </span>**<span style="color: rgb(52, 73, 94);"><span style="background-color: rgb(194, 224, 244);">Bloc 6 : "TEST STATE" / Test niveau bas atteint</span>  
    </span>*****Teste le capteur de niveau bas (entrée 2) - le niveau bas est-il atteint ?***  
    \- si ON (le niveau bas n'est pas encore atteint : la cuve n'est pas encore vide ) <span style="color: rgb(186, 55, 42);">→ retour au début du bloc 6 "TEST STATE"</span>  
    \- si OFF (le niveau bas est atteint : la cuve est vide) <span style="color: rgb(186, 55, 42);">→ va au bloc 10 "SORTIE SIMPLE"  
      
    </span>
- **<span style="background-color: rgb(194, 224, 244);">Bloc 10 "SORTIE SIMPLE" / Pompe Off</span>  
    *Arrête la sortie 1*** la pompe est stoppée ***<span style="color: rgb(186, 55, 42);">→ </span>***<span style="color: rgb(186, 55, 42);">va ensuite au bloc 11 "GOTO START"</span>
- <span style="background-color: rgb(194, 224, 244);">**Bloc 7 "ENVOI SMS" / ENVOI SMS**</span>  
    ***Envoie une alerte par SMS*** <span style="color: rgb(186, 55, 42);">***→*** va ensuite au bloc 5 "VALEUR VARIABLE"</span>  
    personnalisation du message et du numéro de Smartphone
- <span style="background-color: rgb(194, 224, 244);">**Bloc 5 "VALEUR VARIABLE" / Pompe en défaut**</span>  
    ***Fixe la valeur de l'état de la pompe à 1 (pompe en défaut) <span style="color: rgb(186, 55, 42);">→ </span>***<span style="color: rgb(186, 55, 42);">va ensuite au bloc 8 "GOTO START"  
    </span>*Visualisation de l'état de la pompe depuis l'application et possibilité pour le technicien de bloquer le processus de fonctionnement*
- **<span style="background-color: rgb(194, 224, 244);">Bloc 8 "GOTO START" / Retour au début</span>  
    *Retour au début du scénario (boucle) <span style="color: rgb(52, 73, 94);"><span style="color: rgb(186, 55, 42);">→ </span></span>****<span style="color: rgb(52, 73, 94);"><span style="color: rgb(186, 55, 42);">va au bloc 9 "TEST VARIABLE"</span></span>*

<p class="callout warning">Ce scénario nécessite la création préalable d'une variable nommée **« état de la pompe »**</p>

##### <span style="color: rgb(68, 68, 68);">**Widgets : </span>

<span style="color: rgb(68, 68, 68);">Pour ce scénario, 4 widgets ont été créés</span>

- ##### <span style="color: rgb(126, 140, 141);"><span style="color: rgb(68, 68, 68);"><span style="color: rgb(126, 140, 141);">Widget pour l'</span>**<span style="background-color: rgb(236, 240, 241); color: rgb(126, 140, 141);">état de la pompe</span>**</span></span>

<span style="color: rgb(126, 140, 141);">Il permet au technicien d'**activer** ou bien de **mettre en défaut** la pompe de relevage, après la réception du SMS d'alerte</span>

[![Widget Anomalie pompe fonctinnelle bis.PNG](https://modlink.fr/help/uploads/images/gallery/2026-06/scaled-1680-/widget-anomalie-pompe-fonctinnelle-bis.PNG)](https://modlink.fr/help/uploads/images/gallery/2026-06/widget-anomalie-pompe-fonctinnelle-bis.PNG)

<span style="color: rgb(224, 62, 45);">**OU**</span>

[![Widget Anomalie pompe en defaut bis.PNG](https://modlink.fr/help/uploads/images/gallery/2026-06/scaled-1680-/widget-anomalie-pompe-en-defaut-bis.PNG)](https://modlink.fr/help/uploads/images/gallery/2026-06/widget-anomalie-pompe-en-defaut-bis.PNG)

- ##### <span style="color: rgb(126, 140, 141);">Widgets de visualisation des <span style="background-color: rgb(236, 240, 241);">**niveaux de la cuve**</span> :</span>

[![Widget niveau haut atteint.PNG](https://modlink.fr/help/uploads/images/gallery/2026-06/scaled-1680-/widget-niveau-haut-atteint.PNG)](https://modlink.fr/help/uploads/images/gallery/2026-06/widget-niveau-haut-atteint.PNG)

<span style="color: rgb(224, 62, 45);">**OU**</span>

<span style="color: rgb(224, 62, 45);">**[![Widget niveau haut intermediaire.PNG](https://modlink.fr/help/uploads/images/gallery/2026-06/scaled-1680-/widget-niveau-haut-intermediaire.PNG)](https://modlink.fr/help/uploads/images/gallery/2026-06/widget-niveau-haut-intermediaire.PNG)**</span>

---

[![Widget niveau bas intermediaire.PNG](https://modlink.fr/help/uploads/images/gallery/2026-06/scaled-1680-/widget-niveau-bas-intermediaire.PNG)](https://modlink.fr/help/uploads/images/gallery/2026-06/widget-niveau-bas-intermediaire.PNG)

**<span style="color: rgb(224, 62, 45);">OU</span>**

[![Widget niveau bas atteint.PNG](https://modlink.fr/help/uploads/images/gallery/2026-06/scaled-1680-/widget-niveau-bas-atteint.PNG)](https://modlink.fr/help/uploads/images/gallery/2026-06/widget-niveau-bas-atteint.PNG)

<p class="callout info">Ce scénario est fourni à titre d'exemple et présente un cas d'usage simple.   
Selon les besoins de l'installation, il peut être enrichi par des fonctions avancées telles que la surveillance de la tension ou du courant de la pompe, l'envoi d'alertes par e-mail, l'affichage de défauts sur d'autres modules, la gestion d'une pompe de secours, ou toute autre logique de contrôle adaptée à l'application.</p>

<span style="color: rgb(230, 126, 35);">**Pour plus d'information, consulter [Gestion des scénarios](https://modlink.fr/help/books/2-pio/chapter/gestion-des-scenarios "Gestion des scénarios")**</span>

</details>