Impossible d'utiliser require dans les scripts


#1

Bonjour…
Aujourd’hui il n’est pas possible d’executer des scripts qui utilisent ‘require’.
Est-ce un choix (bloquer l’usage de ‘require’) ou un oubli ?

Pour info il suffit d’ajouter la ligne suivante dans le fichier config/scripts.js pour que require soit utilisable dans les scripts:

 defaultSandbox: {
+               require,
                console:console,
                setTimeout:setTimeout,
                setInterval: setInterval,
                clearTimeout:clearTimeout,
                clearInterval:clearInterval
        }

Mise en place récepteur/émetteur 433 Mhz
#2

Bonjour pour commencer ^^

Ce n’est pas un oubli, c’est bien un choix de la part de @pierre-gilles !
C’est surtout pour des raison de sécurité !


#3

Merci pour ta réponse @LepetitGeek. Je suis pas convaincu qu’il puisse y avoir un problème de sécurité, mais je n’ai pas étudié la chose plus que ça. Est-ce qu’il y a moyen de l’autoriser dans une fichier de config non versionné (pour ne pas avoir à re-edtier le ficher à chaque update) ?


#4

Hum je ne sais pas du tout… je ne me suis jamais posé la question car j’en n’ai jamais eu besoin dans un script. Il faudrait attendre que @pierre-gilles passe par la pour avoir une réponse :slight_smile:

Par curiosité… Pourquoi as tu besoin de faire un require dans un script ?


#5

J’ai fait un script qui allume et éteint des lampes le matin puis le soir. L’idée du script est que les horaires soient variables, à la fois pour simuler une présence, mais aussi pour s’adapter aux horaires de levé et couché du soleil.

J’ai besoin nottament d’importer la lib SunCalc.


#6

Pourquoi tu ne passe tout simplement pas par un scénario ? :thinking:
Pourquoi importer une librairie qui fait la même chose que Gladys ?


#7

La logique de mon script est la suivante:
Le matin je me lève disons à 6h45. Je veux que les lampes s’allument et restent allumée tant qu’il fait nuit. Mais s’il le jour se lève avant 6h45, je ne veux pas allumer la lumière.
Le soir je veux allumer au coucher du soleil, puis éteindre à un horaire aléatoire entre 23h et 1h.

Je suis pas sûr de pouvoir le faire avec un scénario.


#8

C’est exactement ce que je fait chez moi ^^
Pour ça il suffit de créer un scénario qui se déclenche sur ton alarme (ou sur un événement) et qui prend comme condition “si il fait nuit” ensuite il allume ou non la lumière ! Voila ce que ça donne chez moi =>

trigger:
  title: Debout
  condition_template: alarm == 1
  active: 1
  code: alarm
  user: 1
conditions:
  - code: sun.isItNight
    params:
      house: '1'
actions:
  - code: deviceType.exec
    params:
      devicetype: '603'
      value: '1'

Après si tu veux absolument que les lumières s’éteignent dés qu’il commence à faire jour tu crée un autre scénario qui lui sera l’opposé donc avec la condition “si il fait nuit”.
C’est ce qui a de plus basique au niveau scénario donc pourquoi :slight_smile:

Explore l’éditeur de scénario avant de te lancer dans pleins de scripts super compliqués et de faire doublon sur les fonctionnalités de Gladys. Pose moi autant de question que tu veux si tu as le moindre doute :wink:


#9

ok merci, ça répond effectivement à une partie de mon besoin. Je vais me pencher dessus et essayer de faire des scénarios.

Après, en tant que développeur, je trouve que cette possibilité de pouvoir écrire des scripts est géniale!
Je regrette d’être bridé par le fait de ne pas pouvoir utiliser des libs (qui font de toute façon déjà partie des dépendances de Gladys). Je comprends que dans le doute, par rapport à un potentiel risque de sécurité, mieux vaut ne pas laisser cette possibilité, mais je ne suis pas convaincu qu’il y ait un risque.


#10

La possibilité de faire des scripts est pas mal effectivement mais ils sont voué à disparaître avec le temps en fait…

@pierre-gilles a une idée bien arrêté la dessus ! En gros tout le monde n’est pas capable de faire un script et si tu en fait un c’est que tu n’as pas trouvé une fonctionnalité dans l’éditeur de scénario.

Donc le but est de justement enrichir le plus possible l’éditeur pour que n’importe qui puisse faire tout ce dont il a besoin sans avoir pour autant nécessité de s’aventurer dans un script et dans un langage de programmation :slight_smile:

Apres le fait d’être bridé comme je te l’ai dit c’est vraiment pour des raison de sécurité, il me semble avoir compris que justement c’'est pour éviter de pouvoir faire appel à des descendances et à certaines fonctions de Gladys. Mais @pierre-gilles passera surement par la et il t’expliquera bien mieux que moi !


#11

Ça fait un moment que j’y pense, donc je profite de l’occasion pour le mettre ici histoire de proposer l’idée : Pour temporiser plusieurs actions, pour le moment, impossible de se passer de script (à ma connaissance)


#12

Il faut le dire ce genre de choses @Retlaw ^^

Hop issue créé =>


#13

Je ne veux pas déranger :stuck_out_tongue:

Mais puisque tu proposes, je remonte une autre idée que j’avais déjà évoqué dans je ne sais plus quel topic : Ajouter l’état de la maison dans les conditions des scenarii (ex : si la maison est en mode vacances)


#14

Tu ne dérange pas tu fait avancer le projet ^^

Ah mais j’avais fait une PR à @pierre-gilles pour ça :thinking:
D’ailleurs je l’avais aussi intégré aux actions ! Je vais regarder ou elle est passé !


#15

Rassure toi, je m’en doute :wink:

L’idéal serait même de pouvoir passer la maison en mode vacances jusqu’à une certaine date (via la nouvelle box permettant de changer d’état par exemple)
Exemple si je me base sur mon installation, si je pars jusqu’au 31 mars, pouvoir passer la maison en mode vacances jusqu’au 30 mars permettrait à Gladys de ne pas lancer mon chauffe eau les soirs. Le 30 mars, la maison repasse en mode normal et mon chauffe eau chauffe normalement me permettant d’avoir l’eau chaude le 31 en arrivant :wink:

(je ne sais pas si j’ai réussi à être clair)


#16

Ah la le mieux c’est de passer par des alarmes ^^


#17

C’est ce que je pense faire :slight_smile:

Mais s’il est possible de faciliter les choses pour les débutants :wink:


#18

Ça me rassure, car la je galère vraiment sur la création de script!