Discuté ici : Associer un bouton +/- au slider de couleur ou luminosité - #16 par lmilcent
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
je relance cette demande car c’est exactement ce qu’il me faut pour mes boutons ikea
Comme c’est la fonctionnalité la plus demandée, j’ai lancé Fable 5 dessus !
Sa proposition :
Image Docker :
ghcr.io/gladysassistant/gladys-preview:claude-scenes-controlled-loops-sceu7j
La PR :
master ← claude/scenes-controlled-loops-sceu7j
ouvert 09:16AM - 02 Aug 26 UTC
### 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 ?
J’ai pas regardé la PR mais est-ce que le cas « la condition n’est jamais remplie » est gérée ? Pour ne pas avoir des scènes zombies
Il y a un nombre maximum d’itération qui est défini par l’utilisateur (on le voit sur le screenshot d’ailleurs!)
Super que tu lances ce devt là
Je suggère de remonter le paramètre ‹ nombre max d’iterations › en haut de la structure, pour qu’il ne se retrouve pas trop loin si le bloc ‹ répéter › est un peu long…
très bien : mais je vois que dans les conditions de déclenchement il y a le « OU », mais il faudrait surtout le « ET » (ex : appui sur un bouton plus ET luminosité < 100%)
Pour faire des « ET » il suffit simplement d’ajouter une condition !
Effectivement, je viens de découvrir qu’on pouvait faire des ET sur les conditions ! Merci
Faudrait l’indiquer clairement dans la doc !
Très bon retour, j’améliore le bloc :
Parfait : là au moins c’est très clair et on ne peut pas ne pas le voir !
Testé et approuvé, le développement part dans la prochaine version de Gladys
Je ferme ce post car la fonctionnalité est disponible dans Gladys Assistant 4.86 :
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
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
Je vous parle de ces 68 nouveautés ici :
Merci à tous les contributeurs !!