# Faire une opération mathématique sur une “variable de scène”

**URL:** <https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030>\
**Category:** Demandes livrées\
**Tags:** feature-core, scene, scene-action\
**Created:** [Mars 7, 2022, 8:44 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030 "2022-03-07T20:44:49Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![PhilippeMA](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/p/b3f665/32.png) [@PhilippeMA](https://community.gladysassistant.com/u/PhilippeMA)\
**Post date:** [Octobre 3, 2022, 8:31 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/41 "2022-10-03T20:31:59Z")

</div>

Hello,

Merci pour le partage de cette API ! Et merci pour les ajustements en cours pour pouvoir l’utiliser.

J’ai essayé d’injecter le résultat du calcul à un des mes devices mais ça ne fonctionne pas.

 ![Screenshot_20221003-222441_Chrome](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/04eab688fc11bb4ddc2bdde786421a8f8f43ee1d.png)

L’URL du post : [https://api.gladysgateway.com/v1/api/device/state/](https://api.gladysgateway.com/v1/api/device/state/)

J’ai essayé l’injection sans la variable et ça fonctionne.

Est-ce que je fais mal ou le résultat de l’API n’est pas au bon format ?

Merci pour votre aide

---

<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:** [Octobre 4, 2022, 2:44 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/42 "2022-10-04T02:44:31Z")

</div>

> [@PhilippeMA](#):
>
> J’ai essayé l’injection sans la variable et ça fonctionne.

Tu es sûr du contenu de la variable ? Tu as testé dans un action «&nbsp;envoyer un message&nbsp;» ce que ça te retourne ?

---

<div class="post-metadata">

**Author:** ![PhilippeMA](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/p/b3f665/32.png) [@PhilippeMA](https://community.gladysassistant.com/u/PhilippeMA)\
**Post date:** [Octobre 4, 2022, 7:44 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/43 "2022-10-04T07:44:12Z")

</div>

Bonjour @pierre-gilles, l’envoi en message fonctionne bien.

 ![Capture d’écran du 2022-10-04 09-42-50](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/ba62f0424ca4f4816b378586d9413439913b3936.png)

 ![Capture d’écran du 2022-10-04 09-43-22](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/85f789d1825f2ce367808583f659c53f16196087.png)

Au cas où, voici l’extrait de la feature du device MQTT :

 ![Capture d’écran du 2022-10-04 09-45-59](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/82b3147147e5b85fa490a425164bcd85cd12f2bf.png)

---

<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:** [Octobre 4, 2022, 8:00 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/44 "2022-10-04T08:00:53Z")

</div>

@PhilippeMA Tout me semble bon. Je suis allé voir côté Gladys Plus si je voyais une erreur passer, mais rien.

Est-ce que tu peux regarder tes logs Gladys au moment où tu envoie la requête peut-être ?

---

<div class="post-metadata">

**Author:** ![PhilippeMA](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/p/b3f665/32.png) [@PhilippeMA](https://community.gladysassistant.com/u/PhilippeMA)\
**Post date:** [Octobre 4, 2022, 8:05 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/45 "2022-10-04T08:05:28Z")

</div>

Bien vu, il y a une erreur :

```auto
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)

```

---

<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:** [Octobre 4, 2022, 8:06 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/46 "2022-10-04T08:06:58Z")

</div>

Tu me confirmes que tu exécute bien la scène en lançant la scène ? Pas en cliquant sur «&nbsp;Essayer&nbsp;»? (ça ne marchera pas comme indiqué dans la description)

---

<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:** [Octobre 4, 2022, 8:08 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/47 "2022-10-04T08:08:09Z")

</div>

Ah, en fait je vois ce qui ne va pas, @PhilippeMA tu es sur la version de PROD ?

C’est le même bug qu’à reporté @lmilcent, c’est corrigé mais pas encore déployé !

---

<div class="post-metadata">

**Author:** ![PhilippeMA](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/p/b3f665/32.png) [@PhilippeMA](https://community.gladysassistant.com/u/PhilippeMA)\
**Post date:** [Octobre 4, 2022, 8:10 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/48 "2022-10-04T08:10:15Z")

</div>

ah d’accord, toutes mes excuses, je n’avais pas compris que c’est ce qui était en train d’être corrigé.

Je te confirme, c’est mon environnement PROD.

Merci @pierre-gilles.

---

<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:** [Octobre 4, 2022, 10:02 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/49 "2022-10-04T10:02:39Z")

</div>

Fix publié dans Gladys Assistant v4.11 🙂

> [@Gladys Assistant v4.11 est disponible: gestion des volets roulants Zigbee et nouveaux appareils Tasmota!](https://community.gladysassistant.com/t/gladys-assistant-v4-11-est-disponible-gestion-des-volets-roulants-zigbee-et-nouveaux-appareils-tasmota/7562):
>
> Salut à tous ! Je sors aujourd’hui une nouvelle version avec des compatibilités intéressantes slight_smile Gestion des volets roulants Zigbee Les volets roulants Zigbee sont désormais gérés par Gladys partying_face Bravo à @AlexTrovato pour le travail effectué ! Nouveaux appareils Tasmota Les appareils Tasmota BL09XX, DS18x20 et ESP32 sont désormais gérés par Gladys ! Amélioration / correction de bugs Correction d’un bug sur l’action «&nbsp;E…

---

<div class="post-metadata">

**Author:** ![Tolkyen](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/t/ba8739/32.png) [@Tolkyen](https://community.gladysassistant.com/u/Tolkyen)\
**Post date:** [Novembre 16, 2022, 1:28 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/50 "2022-11-16T01:28:26Z")

</div>

Bonjour,

je rencontre un bug en utilisant la scène suivante :

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

et le requête envoyée est la suivante :  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/2/2a916fa7557410c5cf94509b90d89748eb1e5a9b.png)

Ai-je fait une erreur ou c’est un autre bug ?

---

<div class="post-metadata">

**Author:** ![spenceur](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spenceur/32/1961_2.png) [@spenceur](https://community.gladysassistant.com/u/spenceur)\
**Post date:** [Novembre 16, 2022, 7:39 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/51 "2022-11-16T07:39:00Z")

</div>

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à

---

<div class="post-metadata">

**Author:** ![Tolkyen](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/t/ba8739/32.png) [@Tolkyen](https://community.gladysassistant.com/u/Tolkyen)\
**Post date:** [Novembre 16, 2022, 6:06 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/52 "2022-11-16T18:06:54Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![spenceur](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spenceur/32/1961_2.png) [@spenceur](https://community.gladysassistant.com/u/spenceur)\
**Post date:** [Novembre 16, 2022, 6:11 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/53 "2022-11-16T18:11:13Z")

</div>

peut être parce que ta variable ne contient pas la bonne valeur ? tu l’as recup par une api je suppose ?  
tu peux montrer comment tu l’as set ?

---

<div class="post-metadata">

**Author:** ![Tolkyen](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/t/ba8739/32.png) [@Tolkyen](https://community.gladysassistant.com/u/Tolkyen)\
**Post date:** [Novembre 16, 2022, 6:15 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/54 "2022-11-16T18:15:14Z")

</div>

Je reçois bien la valeur dans l’envoi de message.

![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/4/41573ec6c0846a5ad0bfdf0de8553ef6b2e11799.png)

La valeur provient d’un device créé via MQTT

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

device alimenté via sur requête dans NodeRed

---

<div class="post-metadata">

**Author:** ![Tolkyen](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/t/ba8739/32.png) [@Tolkyen](https://community.gladysassistant.com/u/Tolkyen)\
**Post date:** [Novembre 16, 2022, 6:22 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/55 "2022-11-16T18:22:27Z")

</div>

En fait, cela equivaut au bug rencontré par [lmilcent](https://community.gladysassistant.com/u/lmilcent) le 22/09, bug qui avait été corrigé. Une régression ?

---

<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:** [Novembre 16, 2022, 6:47 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/56 "2022-11-16T18:47:57Z")

</div>

N’oublies pas que la scene doit se declencher seule pour que ça marche. Le bouton «&nbsp;tester&nbsp;» n’envoie pas de vrai valeur.

---

<div class="post-metadata">

**Author:** ![spenceur](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spenceur/32/1961_2.png) [@spenceur](https://community.gladysassistant.com/u/spenceur)\
**Post date:** [Novembre 16, 2022, 8:13 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/57 "2022-11-16T20:13:14Z")

</div>

Tu as un nom de device et de feature a rallonge peut etre que le soucis est la sinon?

---

<div class="post-metadata">

**Author:** ![Tolkyen](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/t/ba8739/32.png) [@Tolkyen](https://community.gladysassistant.com/u/Tolkyen)\
**Post date:** [Novembre 16, 2022, 8:22 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/58 "2022-11-16T20:22:38Z")

</div>

C’est bon, effectivement je faisais mes tests avec le bouton ‹&nbsp;Essayer&nbsp;›. 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é.

---

<div class="post-metadata">

**Author:** ![bertrandda](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/bertrandda/32/5929_2.png) [@bertrandda](https://community.gladysassistant.com/u/bertrandda)\
**Post date:** [Décembre 20, 2022, 10:26 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/59 "2022-12-20T22:26:48Z")

</div>

Salut, comme dit [ici](https://community.gladysassistant.com/t/etre-capable-dinjecter-une-variable-dans-requete-http-controler-un-appareil/7045/31), j’ai commencé à regarder pour pouvoir faire des calculs directement dans les scènes. Je fais ça sur les blocs «&nbsp;condition&nbsp;» et «&nbsp;contrôler un appareil&nbsp;» voilà ce que ça donne pour l’instant

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

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/c/cd9549db77f0cc7beca6761c72b9c79cc541541d.png)

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](https://mathjs.org/docs/reference/functions.html)

---

<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:** [Décembre 21, 2022, 8:37 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/60 "2022-12-21T08:37:10Z")

</div>

Génial, merci pour ton aide pour faire avancer le sujet 😊

Je partirais sur les opérations basiques que tu évoques, perso je n’ai rien pu utiliser d’autre encore.  
Ne pas oublier les parenthèses evidemment !

[Page précédente](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030.md?page=2)

[Page suivante](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030.md?page=4)
