# 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:** 2

<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:** [Septembre 23, 2022, 10:03 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/21 "2022-09-23T10:03:23Z")

</div>

Exact, ça m’est venu après.

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

étrangement, le code 200 est renvoyé mais Gladys renvoie une erreur (donc pas de variable à réutiliser).

---

<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:** [Septembre 23, 2022, 10:06 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/22 "2022-09-23T10:06:15Z")

</div>

Ok, en fait le fait d’utiliser des accolades hors variables, fait générer l’erreur. Je met à jour l’issue GitHub.

---

<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:** [Septembre 29, 2022, 10:02 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/23 "2022-09-29T10:02:16Z")

</div>

@lmilcent En fait l’erreur vient du fait qu’on ne gérait pas correctement les tableaux dans les réponses, la fonction de parsing ne gérait que les objets.

J’ai fais une PR qui fixe l’issue:

> <https://github.com/GladysAssistant/Gladys/pull/1612>
>
> \### Pull Request check-list
> 
> To ensure your Pull Request can be accepted as fa…st as possible, make sure to review and check all of these items:
> 
> \- \[\] If your changes affects code, did your write the tests?
> \- \[\] Are tests passing? (\`npm test\` on both front/server)
> \- \[\] Is the linter passing? (\`npm run eslint\` on both front/server)
> \- \[\] Did you run prettier? (\`npm run prettier\` on both front/server)
> \- \[\] If you are adding a new features/services, did you run integration comparator? (\`npm run compare-translations\` on front)
> \- \[\] Did you test this pull request in real life? With real devices? If this development is a big feature or a new service, we recommend that you provide a Docker image to \[the community\](https://community.gladysassistant.com/) for testing before merging.
> \- \[\] If your changes modify the API (REST or Node.js), did you modify the API documentation? (Documentation is based on comments in code)
> \- \[\] If you are adding a new features/services which needs explanation, did you modify the user documentation? See \[the GitHub repo\](https://github.com/GladysAssistant/v4-website) and the \[website\](https://gladysassistant.com).
> \- \[\] Did you add fake requests data for the demo mode (\`front/src/config/demo.js\`) so that the demo website is working without a backend? (if needed) See \[https://demo.gladysassistant.com\](https://demo.gladysassistant.com).
> 
> NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open.
> 
> \### Description of change
> 
> Fix #1605

Est-ce que tu as un environnement de DEV pour tester?

En attendant sinon, tu peux utiliser l’API Math.js avec un string simple au lieu d’un tableau, et ça fonctionne bien 🙂

 ![Screenshot 2022-09-29 at 16.53.18](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/3420aa298b1a343f359259cdde0cf4104794d5eb.jpeg)

Ce que j’ai observé lors de mes tests:

- Fait d’abord un test avec une expression sans variable, genre «&nbsp;10+10&nbsp;» (attention, pas d’espace, Math.js n’aime pas les espaces visiblement)
- Appuie sur «&nbsp;Essayer&nbsp;», ce qui va remplir le dictionnaire de variables dispo, car la requête n’a pas besoin de dépendance pour tester la requête
- Ensuite, remplace l’expression par l’expression correcte que tu veux avec les variables souhaitée. **N’appuie pas sur essayer, les variables ne sont pas dispo**.
- Tu peux tester l’exécution de la scène avec le bouton «&nbsp;Démarrer&nbsp;» en haut de la scène

Chez moi ça marche comme ça 🙂

---

<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:** [Septembre 29, 2022, 12:10 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/24 "2022-09-29T12:10:44Z")

</div>

> [@pierre-gilles](#):
>
> - Fait d’abord un test avec une expression sans variable, genre « 10+10 » (attention, pas d’espace, Math.js n’aime pas les espaces visiblement)

C’est la méthode que j’ai faite ensuite. Mais de mon côté, ça ne fonctionne pas sur la version actuelle de Gladys.

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

Je n’ai pas particulièrement d’environnement de test, j’utilise directement ma production en sauvegardant ma DB avant.  
En cas d’erreur, je restaure la DB et repart sur la version stable 😅  
On est pas sur un service critique, donc je peux me le permettre !

---

<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:** [Septembre 30, 2022, 3:43 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/25 "2022-09-30T03:43:10Z")

</div>

> [@lmilcent](#):
>
> C’est la méthode que j’ai faite ensuite. Mais de mon côté, ça ne fonctionne pas sur la version actuelle de Gladys.

Ah oui, il y avait un autre bug en fait, les attributs qui sont retournés en «&nbsp;null&nbsp;» faisaient crasher la génération des variables 😃 Il faut attendre le correctif du coup.

> [@lmilcent](#):
>
> Je n’ai pas particulièrement d’environnement de test, j’utilise directement ma production en sauvegardant ma DB avant.

Ok, je parlais plus d’environnement de dev (genre sur ton laptop, pour pouvoir tester les PR)

Bon pas grave, je vais tester moi même extensivement avec l’API de Math.js et ça partira dans la prochaine release de Gladys (pas celle que tu verras aujourd’hui)

---

<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:** [Septembre 30, 2022, 6:45 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/26 "2022-09-30T06:45:28Z")

</div>

> [@pierre-gilles](#):
>
> Ok, je parlais plus d’environnement de dev (genre sur ton laptop, pour pouvoir tester les PR)

J’avais commencé à m’en faire un, mais le soucis était au niveau du service Zigbee. Sans adaptateur, je ne pouvais pas l’utiliser avec les données de ma DB (afin de faire des tests sur des données réelles).  
Il n’y aurait pas une astuce pour simuler un adaptateur, ne pas lancer Zigbee2MQTT mais pouvoir tout de même utiliser les données en DB ?

---

<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:** [Septembre 30, 2022, 6:51 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/27 "2022-09-30T06:51:49Z")

</div>

Ca dépend de ce que tu veux tester, effectivement pour tester des PR lié au Zigbee2mqtt, ça sera pas évident, après pour tester des trucs lié au core, pas besoin de services, moi j’utilise souvent le service MQTT en local pour tester, j’envoie des valeurs sur un mosquitto local ( J’utilise [https://mqttx.app/](https://mqttx.app/) ), je me fais un petit dashboard, et ça suffit pour tester la plupart des développements core!

Si jamais tu veux tester avec ta DB, pour ne pas que ça ait d’impact sur ta prod, il faut que tu désactive tout ce qui est lié à Gladys Plus pour pas que ça se connecte à la place de ta prod.

En général ce que je fais moi quand je veux loader une DB d’un user, c’est qu’en amont de lancer Gladys, je vide la table `t_variable` qui stocke tous les credentials de tous les services, et comme ça je suis certain que lancer une instance de test ne contactera pas en réel les services du user (calendriers, Gladys Plus, etc…)

---

<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:** [Septembre 30, 2022, 7:48 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/28 "2022-09-30T07:48:03Z")

</div>

> [@pierre-gilles](#):
>
> Si jamais tu veux tester avec ta DB, pour ne pas que ça ait d’impact sur ta prod, il faut que tu désactive tout ce qui est lié à Gladys Plus pour pas que ça se connecte à la place de ta prod.
> 
> En général ce que je fais moi quand je veux loader une DB d’un user, c’est qu’en amont de lancer Gladys, je vide la table `t_variable` qui stocke tous les credentials de tous les services, et comme ça je suis certain que lancer une instance de test ne contactera pas en réel les services du user (calendriers, Gladys Plus, etc…)

Merci pour l’info ! J’y aurais pas pensé.

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [Septembre 30, 2022, 8:30 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/29 "2022-09-30T08:30:52Z")

</div>

Z2m supporte le tcp via ser2net, je vais m’y pencher bientôt. Je ne sais pas si @spenceur a testé

Ça permet de rendre dispo le dongle via réseau

---

<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:** [Septembre 30, 2022, 8:41 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/30 "2022-09-30T08:41:53Z")

</div>

C’est prometteur !

---

<div class="post-metadata">

**Author:** ![Einstein8854](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/einstein8854/32/9474_2.png) [@Einstein8854](https://community.gladysassistant.com/u/Einstein8854)\
**Post date:** [Septembre 30, 2022, 9:08 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/31 "2022-09-30T09:08:10Z")

</div>

Hello @VonOx , est ce que cette solution de z2m via ser2net pour rendre le dongle dispo via réseau serait compatible avec wsl ? car wsl les port usb ne sont pas reconnu …  
autre question : est ce qu un capteur peut etre suivi par plusieurs dongles z2m (ex Sonoff) ?

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [Septembre 30, 2022, 9:24 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/32 "2022-09-30T09:24:13Z")

</div>

Comme dit plus haut, je n’ai pas pas encore testé, mais je penses que oui.

Les device zigbee sont appairés à un dongle. C’est exclusif.

---

<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:** [Septembre 30, 2022, 11:15 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/33 "2022-09-30T11:15:55Z")

</div>

Une autre solution sinon qu’on a souvent abordé c’est d’être capable de se connecter à un MQTT distant sur l’intégration Z2M, ça permettrait de se connecter à un Z2M sur un Pi distant, et de voir ce que ça donne sur une version de Gladys de dev

---

<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:** [Septembre 30, 2022, 11:44 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/34 "2022-09-30T11:44:13Z")

</div>

@lmilcent Pour info j’ai avancé sur le sujet aujourd’hui par rapport à ton bug avec la requête HTTP vers Mathjs, c’était pas simple car du coup j’ai du changer le format utilisé par le front pour les variables pour gérer les tableaux, tout en restant compatible avec l’existant et les différents «&nbsp;consommateurs&nbsp;» de ces variables: le bloc ‹&nbsp;message&nbsp;› et le bloc ‹&nbsp;continuer seulement si&nbsp;›.

J’ai poussé sur ma PR la dernière version, je reprend lundi dessus ( Il est 19h ici 😃 )

Si jamais tu veux jouer ce week-end et t’assurer que ça fonctionne bien, tu peux te faire popper un petit env de développement, pas besoin d’importer ta DB vu que c’est juste dans les scènes, tu créé juste une nouvelle scène 🙂

---

<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:** [Septembre 30, 2022, 12:16 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/35 "2022-09-30T12:16:41Z")

</div>

Merci à toi et bon weekend, profite bien !

---

<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 3, 2022, 6:53 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/36 "2022-10-03T06:53:40Z")

</div>

Pour info j’ai mergé la PR qui fixe le bug avec l’API Math.js, ça partira dans la prochaine version de Gladys !

---

<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:** [Octobre 3, 2022, 12:17 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/37 "2022-10-03T12:17:12Z")

</div>

Top merci 🙂  
Je vais pouvoir me faire une scène qui utilise une sorte de calcul de moyenne, en attendant que Gladys le supporte.

**Use case**

1. M’alerter si mon frigo se réchauffe :  
Récupérer la valeur du capteur de mon frigo toutes les 30 minutes pendant 2 heures et m’alerter si la moyenne de ces valeurs est supérieur à un seuil.

2. (en été seulement) M’alerter quand j’aère mon appartement, mais qu’il commence à se réchauffer :  
Si la moyenne des températures de mon salon et salle à manger est proche, identique ou supérieur à la température extérieur, me rappeler de fermer les fenêtres.

---

<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:** [Octobre 3, 2022, 12:38 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/38 "2022-10-03T12:38:57Z")

</div>

Testé et approuvé ([https://gladys-new-device-name.netlify.app/](https://gladys-new-device-name.netlify.app/)) !

![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/59e3b12b423b7fcdcc9d52d5c0c4274569572577.png)  
(Mon capteur de dehors n’a plus de batterie depuis 2 semaines car il fait en réalité 13°C)

---

<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 3, 2022, 1:11 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/39 "2022-10-03T13:11:16Z")

</div>

> [@lmilcent](#):
>
> Testé et approuvé ([https://gladys-new-device-name.netlify.app/](https://gladys-new-device-name.netlify.app/)) !

Pratique Gladys Plus pour tester les fix purement front 🙂

---

<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:** [Octobre 3, 2022, 1:13 UTC](https://community.gladysassistant.com/t/faire-une-operation-mathematique-sur-une-variable-de-scene/7030/40 "2022-10-03T13:13:14Z")

</div>

Absolument 🙂  
Pas besoin d’environnement de dev côté utilisateur !

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

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