# \[Scène\] "Tant que", pouvoir faire des boucles contrôlées

**URL:** <https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383>\
**Category:** Demandes livrées\
**Tags:** feature-core, in-progress\
**Created:** [Février 17, 2025, 6:35 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383 "2025-02-17T18:35:08Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [Février 17, 2025, 6:35 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/1 "2025-02-17T18:35:09Z")

</div>

Discuté ici : [Associer un bouton +/- au slider de couleur ou luminosité - #16 par lmilcent](https://community.gladysassistant.com/t/associer-un-bouton-au-slider-de-couleur-ou-luminosite/6909/16)

# Description

Permettre dans une scène, de répéter une action jusqu’à un ou plusieurs critères.

## Exemple

Permettre en appuyant sur un bouton d’augmenter la luminosité d’une ampoule pas à pas.

**Tant que** : action = « brightness\_move\_up » et luminosité \< 100  
**Alors :**

- Luminosité = luminosité + 10
- Attendre 200ms

---

<div class="post-metadata">

**Author:** ![Chris75](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/6a8cbe/32.png) [@Chris75](https://community.gladysassistant.com/u/Chris75)\
**Post date:** [Juillet 29, 2026, 12:27 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/2 "2026-07-29T12:27:46Z")

</div>

je relance cette demande car c’est exactement ce qu’il me faut pour mes boutons ikea

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 2, 2026, 9:58 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/3 "2026-08-02T09:58:03Z")

</div>

Comme c’est la fonctionnalité la plus demandée, j’ai lancé Fable 5 dessus !

Sa proposition :

 ![2nouvelleactionboucle](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/0/0/0045870a3087efc970bcf9fcb0c57ab3b655c320.png)  
 ![1boucletantqueediteur](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/b/0/b0a4c2952972e1164f4b0e419148020922d38623.png)

Image Docker :

```auto
ghcr.io/gladysassistant/gladys-preview:claude-scenes-controlled-loops-sceu7j

```

La PR :

> <https://github.com/GladysAssistant/Gladys/pull/2750>
>
> \### Description
> 
> This PR adds a new "while loop" action (\`ACTIONS.CONDITION.WHIL…E\`) to the scene automation system, enabling users to repeatedly execute a block of actions as long as specified conditions remain true.
> 
> \*\*Key features:\*\*
> \- Conditions are re-evaluated before each iteration
> \- Safety limits: default max 1000 iterations, absolute max 10000 (configurable)
> \- Minimum 100ms per iteration to prevent CPU-intensive tight loops
> \- Loop aborts if conditions are empty (prevents infinite loops)
> \- Full error handling and propagation from condition evaluation
> 
> \*\*Changes include:\*\*
> \- Backend action handler in \`scene.actions.js\` with iteration logic and safety guards
> \- Frontend UI component (\`ConditionWhile.jsx\`) with collapsible repeat section and max iterations input
> \- Comprehensive unit tests covering: normal execution, condition re-evaluation, max iterations limit, empty conditions error, and error handling
> \- i18n translations for English, French, and German
> \- Schema validation in MCP and Joi models
> \- Integration with scene variable tracking and action card rendering
> 
> \### Checklist
> 
> \- \[x\] Tests pass: Added comprehensive unit tests in \`scene.action.conditionWhile.test.js\` covering all scenarios (5 test cases with 100% coverage of new code)
> \- \[x\] Linter and prettier pass on both front and server
> \- \[x\] No breaking changes
> 
> https://claude.ai/code/session\_01EAhGR17j5RnYsLsVU5CdWu
> 
> 
> \## Summary by CodeRabbit
> 
> \* \*\*New Features\*\*
> \* Added a \*\*While\*\* condition action for scenes.
> \* Configure conditions, repeated actions, and a maximum of 10,000 iterations.
> \* Conditions are re-evaluated during execution, and actions run sequentially.
> \* Added English, German, and French translations.
> 
> \* \*\*Bug Fixes\*\*
> \* Improved validation and handling of nested While actions.
> \* Added safeguards against invalid or unbounded loop configurations.
> \* While loops stop when conditions fail, execution is aborted, or the iteration limit is reached.

Qu’en pensez-vous ?

---

<div class="post-metadata">

**Author:** ![cicoub13](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cicoub13/32/4482_2.png) [@cicoub13](https://community.gladysassistant.com/u/cicoub13)\
**Post date:** [Août 2, 2026, 10:14 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/4 "2026-08-02T10:14:35Z")

</div>

J’ai pas regardé la PR mais est-ce que le cas «&nbsp;la condition n’est jamais remplie&nbsp;» est gérée ? Pour ne pas avoir des scènes zombies

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 2, 2026, 10:15 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/5 "2026-08-02T10:15:22Z")

</div>

Il y a un nombre maximum d’itération qui est défini par l’utilisateur (on le voit sur le screenshot d’ailleurs!)

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [Août 2, 2026, 12:51 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/6 "2026-08-02T12:51:43Z")

</div>

Super que tu lances ce devt là 👍

Je suggère de remonter le paramètre ‹&nbsp;nombre max d’iterations&nbsp;› en haut de la structure, pour qu’il ne se retrouve pas trop loin si le bloc ‹&nbsp;répéter&nbsp;› est un peu long…

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 2, 2026, 12:52 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/7 "2026-08-02T12:52:35Z")

</div>

Excellent retour !

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 2, 2026, 2:48 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/8 "2026-08-02T14:48:19Z")

</div>

Corrigé :

 ![1boucletantqueediteur](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/4/b/4bde3ead40a7878661d99b65f6a04af4d8d6ec8c.png)

---

<div class="post-metadata">

**Author:** ![Chris75](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/6a8cbe/32.png) [@Chris75](https://community.gladysassistant.com/u/Chris75)\
**Post date:** [Août 2, 2026, 8:10 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/9 "2026-08-02T20:10:57Z")

</div>

très bien : mais je vois que dans les conditions de déclenchement il y a le «&nbsp;OU&nbsp;», mais il faudrait surtout le «&nbsp;ET&nbsp;» (ex : appui sur un bouton plus ET luminosité \< 100%)

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [Août 2, 2026, 8:15 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/10 "2026-08-02T20:15:53Z")

</div>

![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/9/b/9bc89fbda18d23e08d3122294023e6b0939a69d5.png)

Pour faire des «&nbsp;ET&nbsp;» il suffit simplement d’ajouter une condition !

---

<div class="post-metadata">

**Author:** ![Chris75](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/6a8cbe/32.png) [@Chris75](https://community.gladysassistant.com/u/Chris75)\
**Post date:** [Août 2, 2026, 8:34 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/11 "2026-08-02T20:34:49Z")

</div>

Effectivement, je viens de découvrir qu’on pouvait faire des ET sur les conditions ! Merci  
Faudrait l’indiquer clairement dans la doc !

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 3, 2026, 8:49 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/12 "2026-08-03T08:49:53Z")

</div>

Très bon retour, j’améliore le bloc :

 ![Capture d’écran 2026-08-03 à 10.49.23](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/4/5/45c529107a7e94b20e5df3ac762a46d3e978106e.png)

---

<div class="post-metadata">

**Author:** ![Chris75](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/c/6a8cbe/32.png) [@Chris75](https://community.gladysassistant.com/u/Chris75)\
**Post date:** [Août 3, 2026, 1:38 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/13 "2026-08-03T13:38:40Z")

</div>

Parfait : là au moins c’est très clair et on ne peut pas ne pas le voir !

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 14, 2026, 7:16 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/14 "2026-08-14T07:16:14Z")

</div>

Testé et approuvé, le développement part dans la prochaine version de Gladys 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 14, 2026, 3:12 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/15 "2026-08-14T15:12:41Z")

</div>

Je ferme ce post car la fonctionnalité est disponible dans Gladys Assistant 4.86 :

> [@Gladys 4.86 : la plus grosse release de l’histoire du projet rocket](https://community.gladysassistant.com/t/gladys-4-86-la-plus-grosse-release-de-l-histoire-du-projet/10554):
>
> Salut à tous ! Super heureux de sortir Gladys Assistant 4.86. C’est simple, c’est la plus grosse version depuis le début du projet, avec 68 PR fusionnées en une semaine exploding_head C’est juste incroyable, et ça montre le nouveau rythme qu’on peut tenir avec l’IA. L’objectif est maintenant clair : rattraper et dépasser Home Assistant rocket Je vous parle de ces 68 nouveautés ici : Merci à tous les contributeurs !!

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Août 14, 2026, 3:12 UTC](https://community.gladysassistant.com/t/scene-tant-que-pouvoir-faire-des-boucles-controlees/9383/16 "2026-08-14T15:12:44Z")

</div>


