2022-10-04T10:04:30+0200 <warn> scene.executeActions.js:37 (executeAction) Error: Parse error on line 2:
...": {{1.0.data.result}}}
-----------------------^
Expecting 'CLOSE', 'OPEN_SEXPR', 'ID', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', got 'CLOSE_UNESCAPED'
at Parser.parseError (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js:267:19)
at Parser.parse (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js:336:30)
at parseWithoutProcessing (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js:46:33)
at HandlebarsEnvironment.parse (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/base.js:52:13)
at compileInput (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:508:19)
at ret (/src/server/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:517:18)
at Object.http.request (/src/server/lib/scene/scene.actions.js:250:76)
at executeAction (/src/server/lib/scene/scene.executeActions.js:32:35)
at /src/server/lib/scene/scene.executeActions.js:66:13
at tryCatcher (/src/server/node_modules/bluebird/js/release/util.js:16:23)
at MappingPromiseArray._promiseFulfilled (/src/server/node_modules/bluebird/js/release/map.js:68:38)
at MappingPromiseArray.PromiseArray._iterate (/src/server/node_modules/bluebird/js/release/promise_array.js:115:31)
at MappingPromiseArray.init (/src/server/node_modules/bluebird/js/release/promise_array.js:79:10)
at MappingPromiseArray._asyncInit (/src/server/node_modules/bluebird/js/release/map.js:37:10)
at _drainQueueStep (/src/server/node_modules/bluebird/js/release/async.js:97:12)
at _drainQueue (/src/server/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (/src/server/node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues (/src/server/node_modules/bluebird/js/release/async.js:15:14)
at processImmediate (internal/timers.js:464:21)
Tu me confirmes que tu exécute bien la scène en lançant la scène ? Pas en cliquant sur « Essayer »? (ça ne marchera pas comme indiqué dans la description)
Dans ton expression si tu as des espaces mathjs te renvoie une erreur.
Si tu es sur mobile et que tu add une variable dans un bloc gladys, j’ai remarqué que celui ci te rajoute tjrs un espace après.
tenter de supprimer les espaces au cas ou cela vienne de là
Sauf que la requête envoyée ne contient pas la valeur de la variable, seulement une expression de la forme {{0.0.last_value}} d’où le retour d’erreur de mathjs.
C’est bon, effectivement je faisais mes tests avec le bouton ‹ Essayer ›. Et je confirme également qu’il faut supprimer les espaces sinon pas de résultat de calcul.
Merci pour les infos et pour votre réactivité.
Salut, comme dit ici, j’ai commencé à regarder pour pouvoir faire des calculs directement dans les scènes. Je fais ça sur les blocs « condition » et « contrôler un appareil » voilà ce que ça donne pour l’instant
Maintenant j’ai besoin de vous. Petite explication une fois les variables remplacés par les valeurs lors de l’exécution de la scène, on utilise la librairie mathjs pour exécuter le calcul. Le problème c’est que la méthode utilisée evaluate() pourrait permettre d’injecter du code js non désiré dans Gladys donc on doit limiter cette méthode aux fonctions mathématiques que l’on veut vraiment utiliser dans Gladys. De base, on aura au moins les opérateurs classiques +, -, *, /. Quelles sont les autres fonctions mathématiques que vous souhaiteriez utiliser (ou que vous utilisez déjà avec l’API mathjs) ?
Une liste est disponible ici math.js | an extensive math library for JavaScript and Node.js