# Utiliser les blocs de fonction

Dans le menu “Scénario”, les blocs de fonctions apparaissent dans le bandeau latéral à la suite des scénarios déjà configurés. Faites défiler ce bandeau vers le bas pour accéder aux différents blocs de création.

Pour construire un scénario, sélectionnez un bloc puis faites-le glisser vers l’espace de travail. Vous pouvez ensuite le déposer, l’organiser et le relier aux autres blocs afin de définir la logique souhaitée.

Les scénarios sont construits à partir de blocs fonctionnels **interconnectés.**  
Chaque bloc remplit une fonction logique précise dans le traitement des **entrées**, des **variables** et des **sorties**.

### **1- Tests sur les entrées<span style="background-color: rgb(241, 196, 15);">  
</span>**

Ces blocs sont utilisés pour **contrôler l’état ou le comportement des éléments physiques connectés aux entrées du module**. Ils permettent de traiter les différents types de signaux d'entrées provenant des capteurs ou des interrupteurs (impulsions, états logiques, variations ...) avant de déclencher une action.

#### 1.1- impulsion simple

Ce bloc permet de détecter **un appui court et unique** sur une entrée.  
Il génère une action uniquement lors de la détection d’une impulsion, sans maintien de l’état.

#### 1.2- une impulsion double

<div class="flex flex-col text-sm pb-25" id="bkmrk-ce-bloc-d%C3%A9tecte-deux"><section class="text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&:has([data-writing-block])>*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" data-scroll-anchor="true" data-testid="conversation-turn-20" data-turn="assistant" data-turn-id="request-WEB:5df38fd3-bf2f-491f-8d0a-d07fbd8b4472-9" dir="auto">Ce bloc détecte **deux appuis rapides et consécutifs** sur une entrée.   
L’action n’est déclenchée que si les deux impulsions sont reconnues dans un intervalle de temps.

</section></div>#### 1.3- une impulsion longue

Ce bloc détecte **un appui prolongé sur une entrée**.   
L’action est déclenchée uniquement lorsque l’entrée reste activée pendant une durée continue.

#### 1.4- Trois impulsions (simple / double / longue)

Ce bloc permet d’identifier **différents types d’appuis** sur une entrée : **impulsion simple, double impulsion ou appui long**. L’action associée est déclenchée en fonction du type d’appui détecté.

#### 1.5- Test analogique

Ce bloc permet de **comparer une valeur analogique à une valeur définie**.   
Il vérifie **si la valeur de test est supérieure ou égale**, ou **inférieure ou égale** à la valeur définie afin de déclencher les actions associées.

<div class="flex flex-col text-sm" id="bkmrk-les-deux-tests-%28%3E-et"><section class="text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&:has([data-writing-block])>*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" data-scroll-anchor="true" data-testid="conversation-turn-38" data-turn="assistant" data-turn-id="request-WEB:5df38fd3-bf2f-491f-8d0a-d07fbd8b4472-18" dir="auto">Les deux tests (&gt; et &lt;) sont généralement utilisés conjointement afin de définir une zone de fonctionnement (hystérésis). Cela permet d’éviter les déclenchements et arrêts répétés liés aux variations autour du seuil.

<p class="callout warning">Ce bloc de fonction ne s’applique pas à la régulation du chauffage.   
Pour cet usage, un bloc spécifique est disponible dans la section « Régulation ».</p>

</section></div>#### 1.6- Test état front. ON / OFF

Ce bloc détecte un **changement d’état** sur une entrée, en analysant les transitions ON → OFF ou OFF → ON.   
Il permet de déclencher une action uniquement lors du passage d’un état à un autre (front montant ou front descendant).

<p class="callout info">Le bloc devient VRAI uniquement au moment du changement, puis redevient FAUX  
- il ne reste pas actif  
- il déclenche une seule fois par changement</p>

#### 1.7- Test état ON / OFF

Ce bloc permet de **vérifier l’état d’une entrée**.   
Il détecte si l’entrée est en position ON ou OFF et déclenche les actions associées en fonction de l’état constaté.

<p class="callout info">Ce bloc vérifie un **état stable**</p>

#### 1.8- Test contact radar

Ce bloc permet de vérifier l’**état du contact issu d’un détecteur radar**.  
Il détecte la présence ou l’absence de détection et déclenche les actions associées en fonction de l’état du contact.  
Il faut paramétrer le **délai de défaut en minutes**.   
Par exemple, si le capteur reste ouvert pendant une durée supérieure à 30 minutes, il passe automatiquement en état d’erreur.

<details id="bkmrk-rappel-blocs-de-test"><summary>Rappel blocs de tests sur les ENTRÉES</summary>

<table border="1" id="bkmrk-tests-sur-les-entr%C3%A9e" style="border-collapse: collapse; background-color: rgb(251, 238, 184); border-color: rgb(52, 73, 94); border-width: 1px; width: 99.9748%;"><thead><tr style="border-color: rgb(52, 73, 94); background-color: rgb(241, 196, 15);"><th style="border-color: rgb(52, 73, 94); width: 18.1667%;">**<span style="color: rgb(52, 73, 94);">Bloc</span>**</th><th style="border-color: rgb(52, 73, 94); width: 44.8659%;">**<span style="color: rgb(52, 73, 94);">Type de test</span>**</th><th style="border-color: rgb(52, 73, 94); width: 36.9544%;">**<span style="color: rgb(52, 73, 94);">Utilisation</span>**</th></tr></thead><tbody><tr><td class="align-left" style="border-color: rgb(52, 73, 94); width: 18.1667%;"><span style="color: rgb(52, 73, 94);">**Impulsion simple**</span></td><td style="border-color: rgb(52, 73, 94); width: 44.8659%;"><span style="color: rgb(52, 73, 94);">Détecte une seule impulsion </span></td><td style="border-color: rgb(52, 73, 94); width: 36.9544%;"><span style="color: rgb(52, 73, 94);">Déclencher une action sur appui court</span></td></tr><tr><td class="align-left" style="border-color: rgb(52, 73, 94); width: 18.1667%;"><span style="color: rgb(52, 73, 94);">**Impulsion double**</span></td><td style="border-color: rgb(52, 73, 94); width: 44.8659%;"><span style="color: rgb(52, 73, 94);">Détecte deux impulsions successives rapprochées</span></td><td style="border-color: rgb(52, 73, 94); width: 36.9544%;"><span style="color: rgb(52, 73, 94);">Utilisé pour commandes type double-clic</span></td></tr><tr><td class="align-left" style="border-color: rgb(52, 73, 94); width: 18.1667%;"><span style="color: rgb(52, 73, 94);">**Impulsion longue**</span></td><td style="border-color: rgb(52, 73, 94); width: 44.8659%;"><span style="color: rgb(52, 73, 94);">Détecte une impulsion maintenue dans le temps</span></td><td style="border-color: rgb(52, 73, 94); width: 36.9544%;"><span style="color: rgb(52, 73, 94);">Déclencher une action sur appui long</span></td></tr><tr><td class="align-left" style="border-color: rgb(52, 73, 94); width: 18.1667%;"><span style="color: rgb(52, 73, 94);">**3 impulsions**</span></td><td style="border-color: rgb(52, 73, 94); width: 44.8659%;"><span style="color: rgb(52, 73, 94);">Détecte trois impulsions successives</span></td><td style="border-color: rgb(52, 73, 94); width: 36.9544%;"><span style="color: rgb(52, 73, 94);">Commandes spécifiques multi-clic</span></td></tr><tr><td class="align-left" style="border-color: rgb(52, 73, 94); width: 18.1667%;"><span style="color: rgb(52, 73, 94);">**Test analogique**</span></td><td style="border-color: rgb(52, 73, 94); width: 44.8659%;"><span style="color: rgb(52, 73, 94);">Compare une valeur analogique à un seuil</span></td><td style="border-color: rgb(52, 73, 94); width: 36.9544%;"><span style="color: rgb(52, 73, 94);">Lecture capteurs (température, luminosité, etc.)</span></td></tr><tr><td class="align-left" style="border-color: rgb(52, 73, 94); width: 18.1667%;"><span style="color: rgb(52, 73, 94);">**Test état front** </span>

<span style="color: rgb(52, 73, 94);">**ON / OFF**</span>

</td><td style="border-color: rgb(52, 73, 94); width: 44.8659%;"><span style="color: rgb(52, 73, 94);">Détecte un changement d’état (front montant ou descendant)</span></td><td style="border-color: rgb(52, 73, 94); width: 36.9544%;"><span style="color: rgb(52, 73, 94);">Déclenchement sur transition ON ↔ OFF</span></td></tr><tr><td class="align-left" style="border-color: rgb(52, 73, 94); width: 18.1667%;"><span style="color: rgb(52, 73, 94);">**Test état   
ON / OFF**</span></td><td style="border-color: rgb(52, 73, 94); width: 44.8659%;"><span style="color: rgb(52, 73, 94);">Vérifie l’état stable d’une entrée</span></td><td style="border-color: rgb(52, 73, 94); width: 36.9544%;"><span style="color: rgb(52, 73, 94);">Vérifier si une entrée est active ou inactive</span></td></tr><tr><td class="align-left" style="border-color: rgb(52, 73, 94); width: 18.1667%;"><span style="color: rgb(52, 73, 94);">**Test   
contact radar**</span></td><td style="border-color: rgb(52, 73, 94); width: 44.8659%;"><span style="color: rgb(52, 73, 94);">Détecte l’état ou l’activation d’un contact radar</span></td><td style="border-color: rgb(52, 73, 94); width: 36.9544%;"><span style="color: rgb(52, 73, 94);">Utilisation avec détection de présence</span></td></tr></tbody></table>

</details>
### **2- Tests sur les variables**

Ces blocs de test permettent de vérifier l’état ou la valeur d’une variable utilisée dans les scénarios. Ils servent à comparer une variable à une valeur définie (égalité, supériorité, infériorité ou plage de valeurs) afin de déclencher les actions associées selon le résultat du test.

##### 2.1- Test variable simple

Ce bloc permet d’**effectuer un test sur une variable unique avec plusieurs types de conditions** :

- Test d’**égalité** (= valeur définie)
- Test **supérieur à** (&gt; valeur définie)
- Test **inférieur à** (&lt; valeur définie)

Le résultat du test est validé si la/les condition(s) configurée(s) est/sont respectée(s).

##### 2.2- Test changement de variable

<div class="flex flex-col text-sm pb-25" id="bkmrk-ce-bloc-permet-de-d%C3%A9"><section class="text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&:has([data-writing-block])>*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" data-scroll-anchor="true" data-testid="conversation-turn-50" data-turn="assistant" data-turn-id="request-WEB:5df38fd3-bf2f-491f-8d0a-d07fbd8b4472-24" dir="auto">Ce bloc permet de détecter toute **modification de la valeur d’une variable** dans un scénario. Il déclenche les actions associées dès qu’un changement est constaté, indépendamment de la nouvelle valeur.

**Exemple :**  
Dans le scénario *“Accès bâtiment”*, si la variable *“Mode sécurité”* passe de *Désactivé* à *Activé*, le bloc détecte ce changement et peut déclencher l’activation des alarmes et la fermeture des accès.

</section></div>##### 2.3- Test de variables multiples Et / Ou

Ce bloc permet d'**évaluer** **simultanément plusieurs variables dans un scénario** en fonction des opérateurs ET / OU et de déclencher les actions associées lorsque l’ensemble ou une partie des conditions est vérifiée.

- **ET** : toutes les conditions doivent être vraies
- **OU** : au moins une condition doit être vraie

**Exemple** :  
Dans un scénario, si les variables "têtes thermostatiques" sont détectées comme fermées (condition ET), alors le bloc déclenche la fermeture du circuit d'eau.

##### 2.4- Test de variables égales multiples

Ce bloc permet de tester **une variable en définissant plusieurs conditions d’égalité**.  
Pour chaque égalité, une valeur est associée à la variable.  
Le test est validé si la variable correspond à l’une des valeurs définies.

<p class="callout info">Chaque égalité correspond à une valeur possible de la variable.   
Le bloc réalise donc un test d’appartenance à une liste de valeurs définies.</p>

<details id="bkmrk-rappel-blocs-de-test-2"><summary>Rappel blocs de tests sur les VARIABLES</summary>

<table border="1" id="bkmrk-bloc-type-de-test-pr" style="width: 107.857%; height: 373.097px; border-collapse: collapse; background-color: rgb(251, 238, 184); border-color: rgb(52, 73, 94); border-width: 1px;"><thead><tr style="height: 29.7017px; background-color: rgb(241, 196, 15); border-color: rgb(52, 73, 94);"><td class="align-center" style="width: 22.8587%; border-color: rgb(52, 73, 94); height: 29.7017px;"><span style="color: rgb(52, 73, 94);">**Bloc**</span></td><td class="align-center" style="width: 13.0974%; border-color: rgb(52, 73, 94); height: 29.7017px;">**<span style="color: rgb(52, 73, 94);">Type de test</span>**</td><td class="align-center" style="width: 36.8222%; border-color: rgb(52, 73, 94); height: 29.7017px;">**<span style="color: rgb(52, 73, 94);">Principe</span>**</td><td class="align-center" style="width: 27.1823%; border-color: rgb(52, 73, 94); height: 29.7017px;">**<span style="color: rgb(52, 73, 94);">Utilisation</span>**</td></tr></thead><tbody><tr style="height: 63.3097px;"><td class="align-left" style="width: 22.8587%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">**Test variable simple**</span></td><td style="width: 13.0974%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">1 variable</span></td><td style="width: 36.8222%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">Compare une variable à une valeur avec une condition logique (=, &gt;, &lt;)</span></td><td style="width: 27.1823%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">Tester un seuil ou un état précis</span></td></tr><tr style="height: 80.1136px;"><td class="align-left" style="width: 22.8587%; border-color: rgb(52, 73, 94); height: 80.1136px;"><span style="color: rgb(52, 73, 94);">**Test changement** </span>

<span style="color: rgb(52, 73, 94);">**de variable**</span>

</td><td style="width: 13.0974%; border-color: rgb(52, 73, 94); height: 80.1136px;"><span style="color: rgb(52, 73, 94);">1 variable</span></td><td style="width: 36.8222%; border-color: rgb(52, 73, 94); height: 80.1136px;"><span style="color: rgb(52, 73, 94);">Détecte une variation d’état ou de valeur (front montant, descendant ou toute modification)</span></td><td style="width: 27.1823%; border-color: rgb(52, 73, 94); height: 80.1136px;"><span style="color: rgb(52, 73, 94);">Déclencher une action uniquement lors d’un changement</span></td></tr><tr style="height: 63.3097px;"><td class="align-left" style="width: 22.8587%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">**Test variables multiples** </span>

<span style="color: rgb(52, 73, 94);">**ET / OU**</span>

</td><td style="width: 13.0974%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">Plusieurs variables</span></td><td style="width: 36.8222%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">Combine plusieurs variables avec une logique booléenne ET / OU</span></td><td style="width: 27.1823%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">Valider une condition basée sur plusieurs états</span></td></tr><tr style="height: 63.3097px;"><td class="align-left" style="width: 22.8587%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">**Test variable égale multiple**</span></td><td style="width: 13.0974%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">1 variable</span></td><td style="width: 36.8222%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">Permet de définir plusieurs égalités possibles pour une même variable</span></td><td style="width: 27.1823%; border-color: rgb(52, 73, 94); height: 63.3097px;"><span style="color: rgb(52, 73, 94);">Vérifier si une variable correspond à un ensemble de valeurs autorisées</span></td></tr></tbody></table>

</details>### **3- Actions sur les sorties**

<div class="flex flex-col text-sm pb-25" id="bkmrk-les-blocs-contact-so"><section class="text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&:has([data-writing-block])>*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" data-scroll-anchor="true" data-testid="conversation-turn-62" data-turn="assistant" data-turn-id="request-WEB:5df38fd3-bf2f-491f-8d0a-d07fbd8b4472-30" dir="auto">Les blocs contact sorties permettent de **piloter et de gérer l’état des sorties** d’un module dans un scénario. Ils permettent de commander les actionneurs (relais, éclairages, ouvrants ...) selon différents modes de fonctionnement : commande directe (ON / OFF / inversion), temporisée, cyclique ou spécifique à des équipements (BSO, ouvrants).

</section></div>##### 3.1- On / Off / Flip

Ce bloc est utilisé pour **commander directement un actionneur** dans un scénario selon la logique définie.

- **ON** : active la sortie de manière continue
- **OFF** : désactive la sortie
- **FLIP** : inverse l’état actuel de la sortie (ON devient OFF, OFF devient ON)

##### 3.2- Tous les relais (On / Off / Flip)

Ce bloc permet de **piloter simultanément l’ensemble des relais d’un module**. Il est utilisé pour appliquer une action globale sur toutes les sorties relais dans un scénario.

- **ON** : active tous les relais
- **OFF** : désactive tous les relais
- **FLIP** : inverse l’état de chaque relais (les relais actifs passent à OFF et les relais inactifs passent à ON)

<span style="color: rgb(34, 34, 34); font-family: 'Noto Sans', sans-serif; font-size: 1.4em; font-weight: 400;">3.3- Impulsion cyclique</span>

Ce bloc permet de générer une **succession d’impulsions ON/OFF** sur une sortie **selon un cycle paramétré**.   
Il est nécessaire de définir le *nombre d’impulsions* par cycle, le *nombre de cycles*, la *durée* de chaque impulsion (en ms) ainsi que le *temps entre deux cycles* (en ms).La sortie est activée de manière répétée (clignotement ou alternance)

<span style="text-decoration: underline;">Exemple</span> :  
Pour faire clignoter un voyant d’alerte, on paramètre :

<div class="flex flex-col text-sm pb-25" id="bkmrk-3-impulsions-par-cyc"><section class="text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&:has([data-writing-block])>*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" data-scroll-anchor="true" data-testid="conversation-turn-72" data-turn="assistant" data-turn-id="request-WEB:5df38fd3-bf2f-491f-8d0a-d07fbd8b4472-35" dir="auto"><div class="text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)"><div class="[--thread-content-max-width:40rem] @w-lg/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn"><div class="flex max-w-full flex-col gap-4 grow"><div class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&]:mt-1" data-message-author-role="assistant" data-message-id="65ee51f2-c7ac-4e2f-9062-a5a0e80d4ac5" data-message-model-slug="gpt-5-3-mini" data-turn-start-message="true" dir="auto" tabindex="0"><div class="flex w-full flex-col gap-1 empty:hidden"><div class="markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling">- 3 impulsions par cycle
- 2 cycles
- 500 ms d’impulsion
- 1000 ms entre les cycles

</div></div></div></div></div></div>Le voyant s’allume et s’éteint 3 fois, puis le cycle est répété une deuxième fois après une pause d’1 seconde.

</section></div>##### 3.4- On / Off après temporisation

Ce bloc permet de **commander une sortie** **avec un délai d’exécution**. Le module ne la commande pas immédiatement ;   
il attend un temps défini puis exécute l'action.  
Il est nécessaire de sélectionner la sortie concernée, de définir la fonction (ON ou OFF), puis de paramétrer le temps de temporisation en millisecondes.

<span style="text-decoration: underline;">Exemple d'applications</span> :

- lumière qui s’éteint après 2 minutes
- ventilation qui démarre après 30 secondes
- arrêt automatique différé

##### 3.5- BSO (Brise Soleil Orientable)

Ce bloc permet la **commande de stores à lamelles orientables**.  
Il est nécessaire de définir la configuration du BSO ainsi que la fonction à exécuter (ouvrir, fermer, stop, orientation ...).

<span style="text-decoration: underline;">Exemple</span> :

- ouverture des lames
- fermeture partielle
- ajustement selon soleil

##### 3.6- Ouvrants

Ces blocs permettent de **piloter des équipements motorisés** tels que des volets roulants, des stores, des fenêtres et autres ouvrants.  
Il faut définir la configuration et la fonction (ouvrir, fermer, stop ...).

<details id="bkmrk-rappel-blocs-d%27actio"><summary>Rappel blocs d'action sur les SORTIES</summary>

<table border="1" style="border-collapse: collapse; background-color: rgb(251, 238, 184); border-color: rgb(52, 73, 94); width: 99.9748%;"><tbody><tr style="background-color: rgb(241, 196, 15); border-color: rgb(52, 73, 94);"><td class="align-center" style="border-color: rgb(52, 73, 94); width: 15.3256%;">**Bloc**</td><td class="align-center" style="border-color: rgb(52, 73, 94); width: 13.4709%;">**Type d’action**</td><td class="align-center" style="border-color: rgb(52, 73, 94); width: 39.6743%;">**Principe**</td><td class="align-center" style="border-color: rgb(52, 73, 94); width: 31.5163%;">**Utilisation**</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 15.3256%;">**On / Off / Flip**</td><td style="border-color: rgb(52, 73, 94); width: 13.4709%;">Commande directe</td><td style="border-color: rgb(52, 73, 94); width: 39.6743%;">Active, désactive ou inverse l’état d’une sortie instantanément</td><td style="border-color: rgb(52, 73, 94); width: 31.5163%;">Pilotage simple d’un éclairage, relais ou équipement</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 15.3256%;">**Tous les relais (On / Off / Flip)**</td><td style="border-color: rgb(52, 73, 94); width: 13.4709%;">Commande globale</td><td style="border-color: rgb(52, 73, 94); width: 39.6743%;">Applique une action (ON, OFF ou inversion) à l’ensemble des relais d’un module</td><td style="border-color: rgb(52, 73, 94); width: 31.5163%;">Coupure générale, mise en marche globale, reset des sorties</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 15.3256%;">**Impulsion cyclique**</td><td style="border-color: rgb(52, 73, 94); width: 13.4709%;">Commande cyclique</td><td style="border-color: rgb(52, 73, 94); width: 39.6743%;">Génère une succession d’impulsions ON/OFF selon un cycle paramétré (répétition dans le temps)</td><td style="border-color: rgb(52, 73, 94); width: 31.5163%;">Signalisation lumineuse, alerte, clignotement</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 15.3256%;">**On / Off après temporisation**</td><td style="border-color: rgb(52, 73, 94); width: 13.4709%;">Commande temporisée</td><td style="border-color: rgb(52, 73, 94); width: 39.6743%;">Exécute une action ON ou OFF après un délai défini</td><td style="border-color: rgb(52, 73, 94); width: 31.5163%;">Extinction automatique, démarrage différé, temporisation d’équipement</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 15.3256%;">**BSO**</td><td style="border-color: rgb(52, 73, 94); width: 13.4709%;">Commande spécifique</td><td style="border-color: rgb(52, 73, 94); width: 39.6743%;">Pilote des brise-soleil orientables avec gestion des positions et de l’orientation</td><td style="border-color: rgb(52, 73, 94); width: 31.5163%;">Gestion de la lumière naturelle, confort thermique</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 15.3256%;">**Ouvrants**</td><td style="border-color: rgb(52, 73, 94); width: 13.4709%;">Commande spécifique</td><td style="border-color: rgb(52, 73, 94); width: 39.6743%;">Permet de contrôler des équipements motorisés (ouverture, fermeture, arrêt)</td><td style="border-color: rgb(52, 73, 94); width: 31.5163%;">Volets roulants, stores, fenêtres motorisées</td></tr></tbody></table>

</details>### **4- Actions sur les variables**

Ces blocs agissent directement sur les variables existantes en leur appliquant une modification. Ces actions peuvent être conditionnelles ou exécutées à chaque passage du scénario.

Les blocs d’actions sur les variables permettent de modifier les valeurs utilisées dans un scénario.  
Ils sont indispensables pour gérer des états, effectuer des calculs simples et créer des logiques évoluées.   
Différents types d'actions sont disponibles :

##### 4.1- Actions variables

Ce bloc permet d**’affecter directement une valeur à une variable**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Sélection de la variable
- Choix de la valeur à appliquer (valeur fixe ou issue d’une autre variable)

<span style="text-decoration: underline;">Utilisation</span> :

- Initialisation d’un état
- Changement de mode (ex : absence, présence)

##### 4.2- Valeur variables multiples

Ce bloc permet de **définir la valeur d’une variable en fonction de plusieurs entrées ou conditions**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Définition des variables sources
- Règle de calcul ou de sélection de la valeur finale

<span style="text-decoration: underline;">Utilisation</span> :

- Gestion de modes complexes
- Agrégation de plusieurs états (ex : sécurité, confort, énergie)

##### 4.3- Incrémenter le compteur

Ce bloc **augmente la valeur d’une variable numérique**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Sélection de la variable
- Valeur d’incrément (par défaut +1 ou personnalisée)

<span style="text-decoration: underline;">Utilisation</span> :

- Comptage d’événements (ouvertures, déclenchements)
- Suivi d’occurrences

##### 4.4- Décrémenter le compteur

Ce bloc **diminue la valeur d’une variable numérique**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Sélection de la variable
- Valeur de décrément (par défaut -1 ou personnalisée)

<span style="text-decoration: underline;">Utilisation</span> :

- Gestion de temporisations logiques
- Décompte de cycles ou d’actions restantes

##### 4.5- Ajouter variable à variable

Ce bloc permet **d’additionner deux variables et de stocker le résultat** dans une variable cible.

<span style="text-decoration: underline;">Paramétrage</span> :

- Variable source
- Variable à ajouter
- Variable de destination

<span style="text-decoration: underline;">Utilisation</span> :

- Calcul de totaux (ex : consommation cumulée)
- Agrégation de données

<details id="bkmrk-rappel-des-blocs-d%27a"><summary>Rappel blocs d'action sur les VARIABLES</summary>

<table border="1" style="border-collapse: collapse; background-color: rgb(251, 238, 184); border-color: rgb(52, 73, 94); width: 100.041%; height: 311.083px;"><thead><tr style="height: 29.4583px; background-color: rgb(241, 196, 15); border-color: rgb(52, 73, 94);"><th style="border-color: rgb(52, 73, 94); width: 14.6927%; height: 29.4583px;">**Bloc**</th><th style="border-color: rgb(52, 73, 94); width: 13.8258%; height: 29.4583px;">**Type d’action**</th><th style="border-color: rgb(52, 73, 94); width: 34.0741%; height: 29.4583px;">**Principe**</th><th style="border-color: rgb(52, 73, 94); width: 37.5309%; height: 29.4583px;">**Utilisation**</th></tr></thead><tbody><tr style="height: 63.0417px;"><td style="border-color: rgb(52, 73, 94); width: 14.6927%; height: 63.0417px;">**Action variable**</td><td style="border-color: rgb(52, 73, 94); width: 13.8258%; height: 63.0417px;">Affectation</td><td style="border-color: rgb(52, 73, 94); width: 34.0741%; height: 63.0417px;">Attribue directement une valeur à une variable (fixe ou issue d’une autre variable)</td><td style="border-color: rgb(52, 73, 94); width: 37.5309%; height: 63.0417px;">Initialisation d’un état, changement de mode (présence / absence)</td></tr><tr style="height: 63.0417px;"><td style="border-color: rgb(52, 73, 94); width: 14.6927%; height: 63.0417px;">**Valeur variables multiples**</td><td style="border-color: rgb(52, 73, 94); width: 13.8258%; height: 63.0417px;">Calcul / sélection</td><td style="border-color: rgb(52, 73, 94); width: 34.0741%; height: 63.0417px;">Détermine la valeur d’une variable à partir de plusieurs sources ou conditions</td><td style="border-color: rgb(52, 73, 94); width: 37.5309%; height: 63.0417px;">Gestion de logiques complexes, combinaison de plusieurs états (sécurité, confort, énergie)</td></tr><tr style="height: 46.25px;"><td style="border-color: rgb(52, 73, 94); width: 14.6927%; height: 46.25px;">**Incrémenter le compteur**</td><td style="border-color: rgb(52, 73, 94); width: 13.8258%; height: 46.25px;">Calcul (addition)</td><td style="border-color: rgb(52, 73, 94); width: 34.0741%; height: 46.25px;">Augmente la valeur d’une variable numérique d’un pas défini</td><td style="border-color: rgb(52, 73, 94); width: 37.5309%; height: 46.25px;">Comptage d’événements, suivi d’occurrences</td></tr><tr style="height: 46.25px;"><td style="border-color: rgb(52, 73, 94); width: 14.6927%; height: 46.25px;">**Décrémenter le compteur**</td><td style="border-color: rgb(52, 73, 94); width: 13.8258%; height: 46.25px;">Calcul (soustraction)</td><td style="border-color: rgb(52, 73, 94); width: 34.0741%; height: 46.25px;">Diminue la valeur d’une variable numérique d’un pas défini</td><td style="border-color: rgb(52, 73, 94); width: 37.5309%; height: 46.25px;">Décompte, gestion de cycles restants, temporisations logiques</td></tr><tr style="height: 63.0417px;"><td style="border-color: rgb(52, 73, 94); width: 14.6927%; height: 63.0417px;">**Ajouter variable à variable**</td><td style="border-color: rgb(52, 73, 94); width: 13.8258%; height: 63.0417px;">Calcul (addition entre variables)</td><td style="border-color: rgb(52, 73, 94); width: 34.0741%; height: 63.0417px;">Additionne deux variables et stocke le résultat dans une variable cible</td><td style="border-color: rgb(52, 73, 94); width: 37.5309%; height: 63.0417px;">Calcul de totaux, cumul de consommations, agrégation de données</td></tr></tbody></table>

</details>### **5- Sauts**

Les blocs de saut permettent de modifier le déroulement d’un scénario en **redirigeant l’exécution vers une autre étape**.  
Ils sont utilisés pour créer des boucles, des branchements ou des logiques dynamiques.

##### 5.1- Retour début

Ce bloc renvoie l’**exécution du scénario au bloc numéro 1**.

<span style="text-decoration: underline;">Utilisation</span> :

- Création de boucles simples
- Redémarrage complet du scénario

##### 5.2- Saut avec retour

Ce bloc permet de **sauter vers une autre étape du scénario tout en mémorisant le point de départ.**

<span style="text-decoration: underline;">Fonctionnement</span> :

- Effectue un saut vers une étape définie du scénario
- Mémorise automatiquement le point d’origine du saut
- Met le scénario en attente jusqu’à l’exécution d’un retour
- Le retour s’effectue via le bloc "Retour empilé"

<span style="text-decoration: underline;">Utilisation</span> :

- Exécution de sous-séquences dans un scénario
- Appel de blocs logiques réutilisables
- Organisation de scénarios complexes avec retour au flux principal

##### 5.3- Retour empilé

Ce bloc permet de **revenir au** **dernier point mémorisé par un bloc « saut avec retour »**.

<span style="text-decoration: underline;">Fonctionnement :</span>

- Récupère le dernier point de retour enregistré dans la pile
- Relance l’exécution du scénario à cet emplacement
- Efface l’entrée correspondante de la mémoire de retour

<span style="text-decoration: underline;">Utilisation :</span>

- Retour à la séquence principale après une sous-fonction
- Gestion de scénarios modulaires avec appels imbriqués
- Structuration de logiques complexes avec retours automatiques

##### 5.4- Saut aléatoire

Ce bloc permet de rediriger l’exécution du scénario **vers un bloc cible choisi de manière aléatoire** parmi une liste configurée.

<span style="text-decoration: underline;">Fonctionnement</span> :

- Sélectionne automatiquement un bloc de destination parmi plusieurs cibles définies
- Le choix est effectué de façon aléatoire à chaque exécution
- Le scénario est ensuite redirigé vers le bloc sélectionné

<span style="text-decoration: underline;">Utilisation</span> :

- Création de scénarios dynamiques et non prévisibles
- Simulation de comportements variables (présence, scénarios évolutifs)
- Diversification des séquences d’exécution

##### 5.5- GoTo ciblé

Ce bloc permet de **rediriger l’exécution du scénario vers un bloc précis**.

<span style="text-decoration: underline;"><span style="color: rgb(52, 73, 94); text-decoration: underline;">Fonctionnement</span></span> :

- Oriente l’exécution vers un bloc de destination défini par l’utilisateur
- La cible est sélectionnée lors du paramétrage du bloc
- Le scénario reprend directement à l’étape indiquée

<span style="text-decoration: underline;">Utilisation</span> :

- Création de branchements logiques dans un scénario
- Saut direct vers une étape spécifique
- Simplification de la navigation dans des scénarios complexes

<details id="bkmrk-blocs-de-sauts-%C2%A0"><summary>Rappel blocs de SAUTS</summary>

<table border="1" style="border-collapse: collapse; background-color: rgb(251, 238, 184); border-color: rgb(52, 73, 94); width: 100%;"><thead><tr style="background-color: rgb(241, 196, 15); border-color: rgb(52, 73, 94);"><th style="border-color: rgb(52, 73, 94); width: 13.2282%;">**Bloc**</th><th style="border-color: rgb(52, 73, 94); width: 15.0784%;">**Type d’action**</th><th style="border-color: rgb(52, 73, 94); width: 38.4425%;">**Principe**</th><th style="border-color: rgb(52, 73, 94); width: 33.3745%;">**Utilisation**</th></tr></thead><tbody><tr><td style="border-color: rgb(52, 73, 94); width: 13.2282%;">**Retour début**</td><td style="border-color: rgb(52, 73, 94); width: 15.0784%;">Boucle / réinitialisation</td><td style="border-color: rgb(52, 73, 94); width: 38.4425%;">Renvoie l’exécution du scénario au premier bloc</td><td style="border-color: rgb(52, 73, 94); width: 33.3745%;">Répétition continue, redémarrage du scénario</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 13.2282%;">**Saut avec retour**</td><td style="border-color: rgb(52, 73, 94); width: 15.0784%;">Saut avec mémorisation</td><td style="border-color: rgb(52, 73, 94); width: 38.4425%;">Redirige vers un bloc cible tout en mémorisant le point de départ</td><td style="border-color: rgb(52, 73, 94); width: 33.3745%;">Appel de sous-séquences avec retour au flux principal</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 13.2282%;">**Retour empilé**</td><td style="border-color: rgb(52, 73, 94); width: 15.0784%;">Retour de pile</td><td style="border-color: rgb(52, 73, 94); width: 38.4425%;">Revient au dernier point mémorisé par un “Saut avec retour”</td><td style="border-color: rgb(52, 73, 94); width: 33.3745%;">Retour automatique après exécution d’un sous-scenario</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 13.2282%;">**Saut aléatoire**</td><td style="border-color: rgb(52, 73, 94); width: 15.0784%;">Branchement aléatoire</td><td style="border-color: rgb(52, 73, 94); width: 38.4425%;">Redirige vers un bloc cible choisi aléatoirement parmi plusieurs</td><td style="border-color: rgb(52, 73, 94); width: 33.3745%;">Scénarios dynamiques, comportements variables</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 13.2282%;">**GoTo ciblé**</td><td style="border-color: rgb(52, 73, 94); width: 15.0784%;">Saut direct</td><td style="border-color: rgb(52, 73, 94); width: 38.4425%;">Redirige directement vers un bloc précis défini</td><td style="border-color: rgb(52, 73, 94); width: 33.3745%;">Branchements logiques et navigation dans le scénario</td></tr></tbody></table>

</details>### **6- Régulation**

Ces blocs permettent de **piloter l’activation et l’arrêt d’un processus automatique de régulation** (chauffage, température, humidité ...).

##### 6.1- Démarrer la régulation

Ce bloc permet de **activer le processus de régulation** sur un équipement ou une zone définie.

##### 6.2- Arrêter la régulation

Ce bloc permet de **désactiver le processus de régulation en cours**.

<p class="callout success"><span role="text"><span style="text-decoration: underline;">Bonnes pratiques</span> :  
- </span>Toujours vérifier l’état de régulation avant activation  
- Éviter les démarrages/arrêts répétés rapides  
- Associer la régulation à des conditions claires (horaires, présence, consigne)  
- Documenter les scénarios utilisant ces blocs pour faciliter la maintenance</p>

<details id="bkmrk-rappel-des-blocs-de-"><summary>Rappel blocs de RÉGULATION</summary>

<table border="1" style="border-collapse: collapse; background-color: rgb(251, 238, 184); border-color: rgb(52, 73, 94); width: 99.9748%;"><thead><tr style="background-color: rgb(241, 196, 15); border-color: rgb(52, 73, 94);"><th style="border-color: rgb(52, 73, 94); width: 13.4771%;">**Bloc**</th><th style="border-color: rgb(52, 73, 94); width: 13.9703%;">**Type d’action**</th><th style="border-color: rgb(52, 73, 94); width: 37.836%;">**Principe**</th><th style="border-color: rgb(52, 73, 94); width: 34.8673%;">**Utilisation**</th></tr></thead><tbody><tr><td style="border-color: rgb(52, 73, 94); width: 13.4771%;">**Démarrer la régulation**</td><td style="border-color: rgb(52, 73, 94); width: 13.9703%;">Activation</td><td style="border-color: rgb(52, 73, 94); width: 37.836%;">Lance un processus automatique de régulation sur un équipement ou une zone définie</td><td style="border-color: rgb(52, 73, 94); width: 34.8673%;">Mise en service d’un chauffage, contrôle de température ou d’humidité</td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 13.4771%;">**Arrêter la régulation**</td><td style="border-color: rgb(52, 73, 94); width: 13.9703%;">Désactivation</td><td style="border-color: rgb(52, 73, 94); width: 37.836%;">Stoppe le processus de régulation en cours</td><td style="border-color: rgb(52, 73, 94); width: 34.8673%;">Arrêt manuel ou automatique d’un système de régulation</td></tr></tbody></table>

</details>### **6- Compteur**

Les blocs de type compteur et temporisation **permettent de gérer des délais, des séquences temporelles et des mesures** d’événements dans un scénario.

##### 6.1- Pause

Ce bloc permet d’**interrompre temporairement l’exécution du scénario pendant une durée définie**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Durée de la pause (en millisecondes)

<span style="text-decoration: underline;">Fonctionnement</span> :

- Le scénario est mis en attente pendant la durée spécifiée
- Reprise automatique à la fin du délai

<span style="text-decoration: underline;">Utilisation</span> :

- Temporisation entre deux actions
- Création de séquences différées

##### 6.2- Variable timer

Ce bloc **déclenche un changement de valeur après un délai**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Sélection de la variable timer et du scénario
- Configuration de la valeur et du délai (en ms)

<span style="text-decoration: underline;">Utilisation</span> :

- Mesure de durée d’un événement
- Suivi d’un temps d’activation

##### 6.3- Test timer

Ce bloc permet de **tester la valeur d’un timer afin de conditionner le scénario**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Sélection du timer
- Condition de test (supérieur, égal, inférieur à une valeur)

<span style="text-decoration: underline;">Fonctionnement</span> :

- Compare la valeur du timer à une consigne
- Oriente le scénario selon le résultat du test

<span style="text-decoration: underline;">Utilisation :</span>

- Déclenchement d’actions après un délai
- Surveillance de durées maximales

##### 6.4- Arrêter le timer

Ce bloc permet de **stopper l’évolution d’un timer actif**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Sélection du timer

<span style="text-decoration: underline;">Fonctionnement</span> :

- Le comptage temporel est figé
- La valeur actuelle est conservée

<span style="text-decoration: underline;">Utilisation</span> :

- Fin de mesure de durée
- Arrêt conditionnel d’un chronométrage

##### 6.5- Réinitialiser le timer

Ce bloc permet de **remettre un timer à zéro**.

<span style="text-decoration: underline;">Paramétrage</span> :

- Sélection du timer

<span style="text-decoration: underline;">Fonctionnement</span> :

- La valeur du timer est réinitialisée
- Le timer revient à son état initial

<span style="text-decoration: underline;">Utilisation</span> :

- Réinitialisation de cycle
- Préparation à une nouvelle mesure

<p class="callout info"><span role="text"><span style="text-decoration: underline;">Bonnes pratiques</span> :  
- </span>Nommer clairement les timers selon leur fonction (ex : `Timer_Presence`, `Timer_Delai_Sortie`)  
- Éviter les démarrages multiples simultanés d’un même timer  
- Toujours réinitialiser les timers avant réutilisation dans un nouveau cycle  
- Combiner les timers avec des tests pour structurer les scénarios</p>

<details id="bkmrk-rappel-des-blocs-com"><summary>Rappel blocs COMPTEUR</summary>

<table border="1" style="width: 99.9748%; border-collapse: collapse; background-color: rgb(251, 238, 184); border-color: rgb(52, 73, 94);"><thead><tr style="background-color: rgb(241, 196, 15); border-color: rgb(52, 73, 94);"><th class="align-center" style="width: 12.6065%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Bloc**</span></th><th class="align-center" style="width: 13.9629%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Type d’action**</span></th><th class="align-center" style="width: 37.2047%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Principe**</span></th><th class="align-center" style="width: 36.2128%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Utilisation**</span></th></tr></thead><tbody><tr><td style="width: 12.6065%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Pause**</span></td><td style="width: 13.9629%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Temporisation</span></td><td style="width: 37.2047%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Interrompt l’exécution du scénario pendant une durée définie, puis reprend automatiquement</span></td><td style="width: 36.2128%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Création de délais entre actions, séquences différées</span></td></tr><tr><td style="width: 12.6065%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Variable Timer**</span></td><td style="width: 13.9629%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Mesure / temporisation</span></td><td style="width: 37.2047%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Déclenche ou met à jour une variable Timer après un délai, permettant de suivre une durée</span></td><td style="width: 36.2128%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Mesure d’un temps d’événement, suivi d’une durée d’activation</span></td></tr><tr><td style="width: 12.6065%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Test Timer**</span></td><td style="width: 13.9629%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Condition temporelle</span></td><td style="width: 37.2047%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Compare la valeur d’un Timer à une consigne (&gt;, &lt;, =) pour orienter le scénario</span></td><td style="width: 36.2128%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Déclenchement conditionnel basé sur un temps écoulé, contrôle de durée maximale</span></td></tr><tr><td style="width: 12.6065%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Arrêter le Timer**</span></td><td style="width: 13.9629%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Stop</span></td><td style="width: 37.2047%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Stoppe l’évolution d’un Timer tout en conservant sa valeur actuelle</span></td><td style="width: 36.2128%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Fin de chronométrage, gel d’une mesure en cours</span></td></tr><tr><td style="width: 12.6065%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">**Réinitialiser le Timer**</span></td><td style="width: 13.9629%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Remise à zéro</span></td><td style="width: 37.2047%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Remet un Timer à zéro et restaure son état initial</span></td><td style="width: 36.2128%; border-color: rgb(52, 73, 94);"><span style="color: rgb(52, 73, 94);">Redémarrage de cycle, préparation d’une nouvelle mesure</span></td></tr></tbody></table>

</details>### **7- Utilitaires**

Les blocs utilitaires permettent d’enrichir la logique des scénarios avec des fonctions générales telles que le **repérage**, les **conditions temporelles** ou les **notifications**.   
Ils ne pilotent pas directement des équipements mais servent à structurer, informer ou conditionner le fonctionnement global.

##### 7.1- Début

Ce bloc marque le point d’entrée d’exécution du scénario lorsqu’il ne démarre pas directement au bloc n°1.

<span style="text-decoration: underline;">Fonctionnement</span> :

- Le bloc Début définit le point de départ de l’exécution du scénario
- Il est utilisé uniquement lorsque le scénario ne commence pas au bloc n°1
- Il permet de rediriger le démarrage vers un autre bloc du scénario
- En l’absence de ce bloc, l’exécution démarre automatiquement au bloc n°1

<span style="text-decoration: underline;">Utilisation</span> :

- Définition d’un point d’entrée différent du bloc initial
- Organisation de scénarios avec des débuts conditionnels ou déportés
- Adaptation de la logique d’exécution sans modifier l’ordre des blocs

##### 7.2- Label

Ce bloc permet de définir un **point de repère** dans un scénario et de **s’y rendre directement sans nécessiter de liaison physique entre les blocs**.

<span style="text-decoration: underline;">Fonctionnement</span> :

- Insère un marqueur dans le scénario
- Peut être utilisé comme destination par un saut ou un GoTo
- Permet de rediriger l’exécution vers un autre bloc sans connexion directe entre les blocs dans l’éditeur
- Sert uniquement de point d’ancrage logique

<span style="text-decoration: underline;">Utilisation</span> :

- Accès direct à une étape spécifique du scénario
- Organisation de scénarios complexes sans multiplier les liaisons graphiques
- Simplification des branchements et des redirections logiques

##### 7.3- Test heure

Ce bloc est inséré directement dans le scénario pour permettre un **déclenchement journalier à une heure définie**.

<span style="text-decoration: underline;">Principe</span> :

- Le scénario contient un bloc qui vérifie l’heure système
- Le déclenchement est basé directement sur une heure définie dans le bloc
- Il permet un déclenchement journalier simple et immédiat

<span style="text-decoration: underline;">Paramétrage</span> :

- Heure de déclenchement (horaire fixe journalier)

<span style="text-decoration: underline;">Utilisation</span> :

- Déclenchement automatique quotidien d’un scénario
- Lancement d’actions à heure fixe (éclairage, chauffage, automatisme)
- Mise en place de routines journalières

<p class="callout warning">**Test heure** : bloc intégré directement dans le scénario pour un déclenchement simple et journalier  
**Planification horaire** : logique basée sur des variables testées dans le scénario, offrant plus de flexibilité</p>

<span style="color: rgb(34, 34, 34); font-family: 'Noto Sans', sans-serif; font-size: 1.4em; font-weight: 400;">7.4- Test coucher / lever</span>

Ce bloc permet de **conditionner l’exécution d’un scénario en fonction des horaires de lever et de coucher du soleil.**

<span style="text-decoration: underline;">Fonctionnement</span> :

- Le système calcule automatiquement les heures de lever et de coucher du soleil selon la localisation (latitude et longitude)
- Permet de tester si le scénario s’exécute en période de jour ou de nuit
- Autorise un décalage (offset) par rapport aux horaires calculés

<span style="text-decoration: underline;">Paramétrage</span> :

- Latitude du site
- Longitude du site
- Offset du lever du soleil (en minutes)
- Offset du coucher du soleil (en minutes)

<span style="text-decoration: underline;">Principe des offsets</span> :

- L’offset permet de **décaler l’heure réelle du lever ou du coucher du soleil**
- Il peut être positif ou négatif selon le besoin d’anticipation ou de retard

<span style="text-decoration: underline;">Utilisation</span> :

- Activation de l’éclairage extérieur avant la nuit réelle
- Fermeture automatique après le coucher du soleil décalé
- Adaptation des scénarios au confort et aux conditions locales

##### 7.5- Envoyer un mail

Ce bloc permet d’**envoyer des notifications par e-mail** depuis un scénario.

<span style="text-decoration: underline;">Fonctionnement</span> :

- Le bloc déclenche l’envoi d’un message électronique vers une adresses définie
- L’envoi est effectué automatiquement lors de l’exécution du scénario

<span style="text-decoration: underline;">Paramétrage</span> :

- Adresse e-mail destinataire
- Sujet du message
- Contenu du message

<span style="color: rgb(0, 0, 0);">Utilisation</span> :

- Notifications d’événements (alarme, défaut, état système)
- Alertes techniques ou informatives
- Envoi de rapports ou messages automatiques

##### 7.6- Envoyer un SMS

Ce bloc permet d’**envoyer des notifications par SMS** depuis un scénario.

<span style="text-decoration: underline;">Fonctionnement</span> :

- Le bloc déclenche l’envoi d’un message SMS vers un ou plusieurs numéros de téléphone définis
- L’envoi est réalisé automatiquement lors de l’exécution du scénario

<span style="text-decoration: underline;">Paramétrage</span> :

- Numéro(s) de téléphone du destinataire
- Contenu du message

<span style="text-decoration: underline;">Utilisation</span> :

- Alertes immédiates (alarme, défaut technique, incident)
- Notifications critiques nécessitant une intervention rapide
- Information en temps réel sur l’état d’un système

<details id="bkmrk-blocs-utilitaires-bl"><summary>Rappel blocs UTILITAIRES</summary>

<table border="1" style="border-collapse: collapse; background-color: rgb(251, 238, 184); border-color: rgb(52, 73, 94); width: 100%;"><thead><tr style="background-color: rgb(241, 196, 15); border-color: rgb(52, 73, 94);"><th style="border-color: rgb(52, 73, 94); width: 11.9901%;">**<span style="color: rgb(52, 73, 94);">Bloc</span>**</th><th style="border-color: rgb(52, 73, 94); width: 13.8459%;">**<span style="color: rgb(52, 73, 94);">Type d’action</span>**</th><th style="border-color: rgb(52, 73, 94); width: 39.8005%;">**<span style="color: rgb(52, 73, 94);">Principe</span>**</th><th style="border-color: rgb(52, 73, 94); width: 34.3634%;">**<span style="color: rgb(52, 73, 94);">Utilisation</span>**</th></tr></thead><tbody><tr><td style="border-color: rgb(52, 73, 94); width: 11.9901%;"><span style="color: rgb(52, 73, 94);">**Début**</span></td><td style="border-color: rgb(52, 73, 94); width: 13.8459%;"><span style="color: rgb(52, 73, 94);">Point d’entrée</span></td><td style="border-color: rgb(52, 73, 94); width: 39.8005%;"><span style="color: rgb(52, 73, 94);">Définit le point de départ du scénario lorsqu’il ne commence pas au bloc n°1</span></td><td style="border-color: rgb(52, 73, 94); width: 34.3634%;"><span style="color: rgb(52, 73, 94);">Organisation du démarrage du scénario et redirection vers un bloc spécifique</span></td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 11.9901%;"><span style="color: rgb(52, 73, 94);">**Label**</span></td><td style="border-color: rgb(52, 73, 94); width: 13.8459%;"><span style="color: rgb(52, 73, 94);">Repère / saut</span></td><td style="border-color: rgb(52, 73, 94); width: 39.8005%;"><span style="color: rgb(52, 73, 94);">Définit un point de repère permettant de sauter directement vers un bloc sans liaison physique</span></td><td style="border-color: rgb(52, 73, 94); width: 34.3634%;"><span style="color: rgb(52, 73, 94);">Simplification des scénarios et accès direct à une étape donnée</span></td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 11.9901%;"><span style="color: rgb(52, 73, 94);">**Test heure**</span></td><td style="border-color: rgb(52, 73, 94); width: 13.8459%;"><span style="color: rgb(52, 73, 94);">Condition horaire</span></td><td style="border-color: rgb(52, 73, 94); width: 39.8005%;"><span style="color: rgb(52, 73, 94);">Déclenche ou conditionne un scénario à une heure définie (journalier)</span></td><td style="border-color: rgb(52, 73, 94); width: 34.3634%;"><span style="color: rgb(52, 73, 94);">Automatisation quotidienne à heure fixe</span></td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 11.9901%;"><span style="color: rgb(52, 73, 94);">**Test coucher / lever**</span></td><td style="border-color: rgb(52, 73, 94); width: 13.8459%;"><span style="color: rgb(52, 73, 94);">Condition astronomique</span></td><td style="border-color: rgb(52, 73, 94); width: 39.8005%;"><span style="color: rgb(52, 73, 94);">Compare l’exécution du scénario aux heures de lever et coucher du soleil avec offsets</span></td><td style="border-color: rgb(52, 73, 94); width: 34.3634%;"><span style="color: rgb(52, 73, 94);">Gestion jour/nuit, éclairage extérieur, scénarios liés à la luminosité</span></td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 11.9901%;"><span style="color: rgb(52, 73, 94);">**Envoyer** </span>

<span style="color: rgb(52, 73, 94);">**un mail**</span>

</td><td style="border-color: rgb(52, 73, 94); width: 13.8459%;"><span style="color: rgb(52, 73, 94);">Notification</span></td><td style="border-color: rgb(52, 73, 94); width: 39.8005%;"><span style="color: rgb(52, 73, 94);">Envoie un e-mail avec destinataire, sujet et contenu</span></td><td style="border-color: rgb(52, 73, 94); width: 34.3634%;"><span style="color: rgb(52, 73, 94);">Alertes, notifications, rapports automatiques</span></td></tr><tr><td style="border-color: rgb(52, 73, 94); width: 11.9901%;"><span style="color: rgb(52, 73, 94);">**Envoyer** </span>

<span style="color: rgb(52, 73, 94);">**un SMS**</span>

</td><td style="border-color: rgb(52, 73, 94); width: 13.8459%;"><span style="color: rgb(52, 73, 94);">Notification</span></td><td style="border-color: rgb(52, 73, 94); width: 39.8005%;"><span style="color: rgb(52, 73, 94);">Envoie un SMS vers un ou plusieurs numéros avec un message défini</span></td><td style="border-color: rgb(52, 73, 94); width: 34.3634%;"><span style="color: rgb(52, 73, 94);">Alertes urgentes et notifications en temps réel</span></td></tr></tbody></table>

</details>