Discutido aquí: Associer un bouton +/- au slider de couleur ou luminosité - #16 par lmilcent
Descripción
Permitir en una escena, repetir una acción hasta uno o varios criterios.
Ejemplo
Permitir al presionar un botón, aumentar el brillo de una bombilla paso a paso.
Mientras: acción = « brightness_move_up » y brillo < 100
Entonces:
Brillo = brillo + 10
Esperar 200ms
vuelvo a hacer esta solicitud porque es exactamente lo que necesito para mis botones de IKEA
¡Como es la función más solicitada, ¡he lanzado Fable 5 sobre ella!
Su propuesta:
Imagen 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 an iteration limit of up to 10,000.
* Conditions are re-evaluated during execution, with repeated actions running 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.
* Improved variable availability in conditional branches.
¿Qué os parece?
No he mirado la PR, pero ¿se gestiona el caso « la condición nunca se cumple »? Para evitar escenas zombis
Hay un número máximo de iteraciones que se define por el usuario (¡se puede ver en la captura de pantalla, por cierto!)
Genial que hayas lanzado este desarrollo
Sugiero subir el parámetro ‹ número máximo de iteraciones › a la parte superior de la estructura, para que no quede demasiado lejos si el bloque ‹ repetir › es un poco largo…
muy bien: pero veo que en las condiciones de activación hay un « O », pero debería ser sobre todo un « Y » (por ejemplo: pulsar un botón más « Y » luminosidad < 100%)
Para hacer « Y » solo tienes que añadir una condición.
Efectivamente, acabo de descubrir que se pueden hacer AND en las condiciones. ¡Gracias!
¡Habría que indicarlo claramente en la documentación!
Excelente retroalimentación, estoy mejorando el bloque:
¡Perfecto! Al menos aquí está muy claro y no se puede pasar por alto.
Testado y aprobado, el desarrollo va en la próxima versión de Gladys
Cierro este post porque la funcionalidad está disponible en 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 !!