Nouveau Module : Lancer vos scripts avec des commandes personalisées!


#1

Bonjour à tous !

J’ai vu pas mal de monde sur le forums qui parlait de la possibilité de lancer un script avec une phrase personnalisée. Malgré le fait que c’était présenté comme non possible, j’ai voulu créer un module qui permettrait de le faire, au moins de façon détournée.
Et voila c’est chose faite ! Voici le lien du module : https://github.com/J0lan/gladys-scriptexec.git Il n’est pas officiel, il faudra donc l’installer manuellement. Le fonctionnement du module est détaillé dans le README.md.

A savoir que je ne suis pas un expert du nodeJS. C’est mon premier “gros” développement sur Gladys. Il est possible qu’il y est des bugs. N’hésitez pas à les faire remonter.
Quand à ceux qui sont experts du nodeJS, si vous voyez des aberrations dans ma manière de coder, je serais ravi de les connaitre pour m’améliorer !
J’espère aussi que cette initiative personnelle ne rentre pas en conflit avec les volontés du projet Gladys. Ma solution passe par un moyen “détourné”. Ce n’est donc pas forcément une solution à long terme, mais pour le moment, le temps que Gladys évolue et que les Scénarios permettent de se passer des scripts, c’est à mon avis une bonne solution.
De plus cette solution limite à 10 le nombre de script que l’on peut déclencher par commandes vocales, dans un premier temps en tout cas. Il est possible d’en ajouter plus, mais je ne voulais pas surcharger Gladys.

En développant ce module, j’ai remarqué qu’il était impossible de créer un Label sans créer une phrase. J’ai donc du créer 10phrases bidons pour créer mes 10 labels. J’ai trouvé ça assez étonnant. Je me demandais pourquoi ce n’était pas possible. Si quelqu’un à une idée !

J’attends vos retours !


Avis aux possesseurs d'enceinte SONOS
#2

Hello!

Génial ta contribution, beau boulot :clap:

Petite remarque sur le nom du repo, mets un tiret entre les mots, “gladys-script-exec” ça fait plus propre :slight_smile:

C’est une super solution temporaire comme tu dis! A l’avenir ça serait cool qu’on puisse faire ça nativement, genre je verrais bien la possibilité de donner un nom à script ( et au scénario aussi ), pour pouvoir dire tout simplement “lance mon script XXXX”

Mais comme tu dis, en attendant ta solution fonctionne super! Et puis maintenant tu sais développer des modules Gladys, c’est top ça!

Je ne sais pas si tu as vu le modèle de donnée ( table Sentence ), en gros les labels ne sont stocké nul part à part dans les sentences. La liste des labels, c’est juste un "SELECT DISTINCT label FROM sentence :slight_smile:


#3

Hello Pierre-Gilles !

Merci pour ton retour, ça fait chaud au cœur !
C’est noté, le nom du repo est changé, j’avais essentiellement mis “scriptexec” parce que c’est aussi comme ça que j’ai nommé le service. Pour être vraiment propre, le nom du service devrait aussi être script-exec ?

Ho ! Pouvoir lancé des scripts et scénarios comme ça, ce serait vraiment chouette !!!

Oui, c’est pas simple au début, mais maintenant que je sais, je ne compte pas m’arrêter la ! :wink:

Sisi j’ai regardé le modèle de données, une paire de fois d’ailleurs pour bien comprendre :joy: Ce que je voulais dire justement, c’est qu’on doit créer une “sentence” valide pour créer un label. Si tu as eu le temps de regarder le code, ou de tester le module, j’ai du ajouter 10 phrases bateaux “Script 1” … “Script 10” pour pouvoir créer les 10 labels. J’aurais eu besoin (dans mon cas) de ne pas créer ces phrases mais juste les labels. Ce qui n’est pas possible actuellement.

Au passage d’ailleurs j’ai remarqué que hormis dans les “models”, il n’existe pas de vue de la BDD de Gladys. On est obligé de cliquer sur chaque lien pour comprendre ce qu’il y a dedans. Pour connaitre toutes les tables, j’ai du accéder à la bdd avec putty et faire la commande SHOW tables;
Je trouverais ça sympa de pouvoir avoir une vue visuelle des tables et de leurs champs. Je compte donc le représenter ça avec JMerise prochainement. Je partagerais ça aussi, ça pourrait servir :slight_smile: !


#4

Ah je comprends! Oui renomme en “script-exec” aussi, ça me parait mieux :slight_smile:

J’ai créé une issue github pour tracker ça =>

C’est un truc que j’ai en tête depuis longtemps, donc ça viendra tkt pas!

Complètement! ça serait super utile, si tu peux faire ça ça serait génial :slight_smile:

Si tu pouvais utiliser draw.io ( https://www.draw.io/ ) et faire de l’UML ça serait top, c’est ce que j’utilise pour tous les diagram Gladys et c’est utilisable en web donc par tous!


#5

Hello !

Ok, je renommerai, ce serait changé prochainement.

Je connais pas draw.io, je vais apprendre à utiliser et je reviens vers toi quand j’ai une première version :slight_smile: !


#6

Bonsoir,
Je suis nouveau et je peux te dire que ça fait 2/3 jours que j’essaie de comprendre comment Gladys fonctionne car c’est exactement ce que je souhaitais trouver comme fonction (parmi d’autres déjà implémentées) et je croyais être trop bête et passer à côté ! lol

Merci !

en revanche, je viens d’essayer d’installer ton module et j’ai des erreurs lors de l’installation.
Voici le log généré par Gladys si ça peut aider…

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'install',
1 verbose cli   '--prefix',
1 verbose cli   './api/hooks/scriptexec' ]
2 info using [email protected]
3 info using [email protected]
4 verbose npm-session 50e3692daee6fc92
5 silly install runPreinstallTopLevelLifecycles
6 silly install loadCurrentTree
7 silly install readLocalPackageData
8 verbose stack Error: Failed to parse json
8 verbose stack Unexpected token ] in JSON at position 348 while pa$
8 verbose stack
8 verbose stack   ],
8 verbose stack   "author": "Jola...'
8 verbose stack     at parseError (/usr/local/lib/node_modules/npm/$
8 verbose stack     at parseJson (/usr/local/lib/node_modules/npm/n$
8 verbose stack     at /usr/local/lib/node_modules/npm/node_modules$
8 verbose stack     at /usr/local/lib/node_modules/npm/node_modules$
8 verbose stack     at FSReqWrap.readFileAfterClose [as oncomplete]$
9 verbose cwd /home/pi/gladys
10 verbose Linux 4.14.30-v7+
11 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "install$
12 verbose node v8.9.4
13 verbose npm  v5.6.0
14 error file /home/pi/gladys/api/hooks/scriptexec/package.json
15 error code EJSONPARSE
16 error Failed to parse json
16 error Unexpected token ] in JSON at position 348 while parsing n$
16 error
16 error   ],
16 error   "author": "Jola...'
17 error File: /home/pi/gladys/api/hooks/scriptexec/package.json
18 error Failed to parse package.json data.
18 error package.json must be actual JSON, not just JavaScript.
18 error
18 error Tell the package author to fix their package.json file. JS$
19 verbose exit [ 1, true ]

#7

Hello Sebastien,

Bienvenue a toi !
Hehe, non tu ne l’as pas ratée, ça deviendra natif comme dit Pierre-Gilles ! (sous une autre forme)

Concernant ton erreur, je viens de vérifier, il y avait une virgule en trop dans mon JSON :smirk:, il n’était pas valide du coup. J’ai corrigé ça. Peux tu retester et me dire ce qu’il en est.


#8

Bonsoir Jojo,
Merci :slight_smile:

Je viens de réussir l’installation ! (J’ai dû supprimer manuellement le dossier dans /hooks).

Les params sont bien créés et le brain me propose les scriptexec donc mission réussie !

Encore merci :slight_smile:


#9

Salut,

J’utilise script-exec et il fonctionne bien. Par contre j’ai remarqué que les réponses de gladys ne fonctionne pas. Après avoir lancé le script par un appel via le narrateur, Gladys me répond : je ne sais pas quoi dire.
Savez-vous pourquoi ?


#10

Non désolé … “je ne sais pas quoi dire” :rofl::rofl::rofl::rofl: (je vais me faire ban, mais j’ai pas pu résister …)


#11

@ProtZ :rofl::rofl::rofl:

Pour préciser, j’ai vérifié hier et en fait gladys me dit dans un premier temps : “C’est fait”, puis me dit “je ne sais pas quoi dire”.
Pour le coup elle est vraiment indécise :smiley:

Si quelqu’un à une idée je suis preneur.


#12

Un peu comme toutes les femmes (mode enflure ON ) :crazy_face::joy:

Plus sérieusement… Perso je n’ai pas ce soucis, peut être ta formulation de phrase à revoir.