Déclenchement d'un script au changement de valeur d'un device

Bonjour tout le monde !

Je rencontre actuellement un problème avec Gladys pour éteindre la TV ou l’allumer.

j’ai développé un petit module utilisant la fonction hdmi-cec en repartant de la library shellJs et de l’aide de C4rlit0/gladys-googledrive :

J’ai pu tester mes script unitairement et cela fonctionne.

Grace au module Network Scanner, Gladys a trouver ma télé.

j’ai pu ajouter ma TV en device :

J’ai ensuite créé deux scénario au changement de la valeur de mon device :

malgré cela lorsque que je change la valeur de mon device via le bouton

je me retrouve avec ces erreurs que je vous avoue, ne comprend pas :

0|gladys | Sending 500 (“Server Error”) response:
0|gladys | TypeError: Cannot read property ‘exec’ of undefined
0|gladys | at /home/pi/gladys/api/core/devicetype/deviceType.exec.js:26:56
0|gladys | at tryCatcher (/home/pi/gladys/node_modules/bluebird/js/release/util.js:16:23)
0|gladys | at Promise._settlePromiseFromHandler (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:512:31)
0|gladys | at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:569:18)
0|gladys | at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys | at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys | at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys | at /home/pi/gladys/node_modules/bluebird/js/release/nodeback.js:42:21
0|gladys | at /home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:120:16
0|gladys | at Object.poolfully [as releaseConnection] (/home/pi/gladys/node_modules/sails-mysql/lib/connections/release.js:28:12)
0|gladys | at Query._callback (/home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:105:35)
0|gladys | at Query.Sequence.end (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
0|gladys | at Query._handleFinalResultPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
0|gladys | at Query.EofPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:128:8)
0|gladys | at Protocol._parsePacket (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:280:23)
0|gladys | at Parser.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Parser.js:73:12)
0|gladys | at Protocol.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:39:16)
0|gladys | at Socket. (/home/pi/gladys/node_modules/mysql/lib/Connection.js:96:28)
0|gladys | at emitOne (events.js:96:13)
0|gladys | at Socket.emit (events.js:188:7)
0|gladys | at readableAddChunk (_stream_readable.js:176:18)
0|gladys | at Socket.Readable.push (_stream_readable.js:134:10)
0|gladys | at TCP.onread (net.js:547:20)
0|gladys | Server Error:
0|gladys | TypeError: Cannot read property ‘exec’ of undefined
0|gladys | at /home/pi/gladys/api/core/devicetype/deviceType.exec.js:26:56
0|gladys | at tryCatcher (/home/pi/gladys/node_modules/bluebird/js/release/util.js:16:23)
0|gladys | at Promise._settlePromiseFromHandler (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:512:31)
0|gladys | at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:569:18)
0|gladys | at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys | at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys | at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys | at /home/pi/gladys/node_modules/bluebird/js/release/nodeback.js:42:21
0|gladys | at /home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:120:16
0|gladys | at Object.poolfully [as releaseConnection] (/home/pi/gladys/node_modules/sails-mysql/lib/connections/release.js:28:12)
0|gladys | at Query._callback (/home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:105:35)
0|gladys | at Query.Sequence.end (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
0|gladys | at Query._handleFinalResultPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
0|gladys | at Query.EofPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:128:8)
0|gladys | at Protocol._parsePacket (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:280:23)
0|gladys | at Parser.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Parser.js:73:12)
0|gladys | at Protocol.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:39:16)
0|gladys | at Socket. (/home/pi/gladys/node_modules/mysql/lib/Connection.js:96:28)
0|gladys | at emitOne (events.js:96:13)
0|gladys | at Socket.emit (events.js:188:7)
0|gladys | at readableAddChunk (_stream_readable.js:176:18)
0|gladys | at Socket.Readable.push (_stream_readable.js:134:10)
0|gladys | at TCP.onread (net.js:547:20)

Merci de votre aide.

Salut @spenceur

As tu suivi le mini tuto sur le site ?
Il y a une hiérarchisation à respecté et visiblement tu ne l’as pas fait d’ou tes erreurs, je t’invite donc à aller voir le lien suivant Develloper un module

Pour l’explication, dans tes logs tu as cette ligne

Elle indique que Gladys n’as pas réussis à trouver le fichier exec du module, en fait quand tu crée un module ce fichier doit impérativement être présent et qui plus est dans un dossier nommé lib (qui lui même doit être à la racine du module) car c’est ce fichier qui va être appelé en premier et qui va rediriger vers les autres (c’est comme un pilier central si tu veux).

J’espère avoir été assez claire :grinning:

Salut @LepetitGeek :slight_smile:

Tout d’abord je te remercie de m’avoir répondu =D
Effectivement, je n’avais pas fais attention au mini tuto :slight_smile: merci pour le lien ça va m’être utile :stuck_out_tongue:.

J’ai tester rapidement de créer ce fichier exec à la racine du dossier lib.

Malgré cela j’ai toujours l’erreur précédente, a savoir :

0|gladys | Sending 500 (“Server Error”) response:
0|gladys | TypeError: Cannot read property ‘exec’ of undefined
0|gladys | at /home/pi/gladys/api/core/devicetype/deviceType.exec.js:26:56
0|gladys | at tryCatcher (/home/pi/gladys/node_modules/bluebird/js/release/util.js:16:23)
0|gladys | at Promise._settlePromiseFromHandler (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:512:31)
0|gladys | at Promise._settlePromise (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:569:18)
0|gladys | at Promise._settlePromise0 (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:614:10)
0|gladys | at Promise._settlePromises (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:693:18)
0|gladys | at Promise._fulfill (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:638:18)
0|gladys | at /home/pi/gladys/node_modules/bluebird/js/release/nodeback.js:42:21
0|gladys | at /home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:120:16
0|gladys | at Object.poolfully [as releaseConnection] (/home/pi/gladys/node_modules/sails-mysql/lib/connections/release.js:28:12)
0|gladys | at Query._callback (/home/pi/gladys/node_modules/sails-mysql/lib/connections/spawn.js:105:35)
0|gladys | at Query.Sequence.end (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
0|gladys | at Query._handleFinalResultPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
0|gladys | at Query.EofPacket (/home/pi/gladys/node_modules/mysql/lib/protocol/sequences/Query.js:128:8)
0|gladys | at Protocol._parsePacket (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:280:23)
0|gladys | at Parser.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Parser.js:73:12)
0|gladys | at Protocol.write (/home/pi/gladys/node_modules/mysql/lib/protocol/Protocol.js:39:16)
0|gladys | at Socket. (/home/pi/gladys/node_modules/mysql/lib/Connection.js:96:28)
0|gladys | at emitOne (events.js:96:13)
0|gladys | at Socket.emit (events.js:188:7)
0|gladys | at readableAddChunk (_stream_readable.js:176:18)
0|gladys | at Socket.Readable.push (_stream_readable.js:134:10)
0|gladys | at TCP.onread (net.js:547:20)

Je vois qu’un seul problème possible :thinking:
Tu as bien refait ton index et ton exec n’est pas vide… Hum

Quant tu a cloné ton module dans Gladys tu es bien passé par la vue “Avancé” n’est-ce pas ?
Et si oui qu’as tu mis dans le champs “Slug” ?

j’ai mis ces valeurs :

par contre je viens de remarque que mon module avais disparue après un reboot de Gladys ^^’.

ta appuyé sur mise a jour? :smiley:

bonjours @aiaalm :slight_smile:.

Qu’entends tu par mettre à jours ?

Si tu parles des données Gladys alors oui sinon si tu parles de la MAJ 3.7.3 non, j’attend toujours un peu les retours avant de mettre à jour mes appareils :slight_smile:.

non je parlais de la mise a jour du module, si tu met a jour le tien de cette facon ca te l’efface.

Ah ! Malheureusement non car je n’ai que le bouton info ^^ et pas celui de Mettre à jour :slight_smile:
Merci en tout cas @aiaalm ^^

@LepetitGeek tu as une idée du coup ?

Voici le comportement que je constate :
Installation module :
installationModule
Restart :
restartAfterInstall
Module disparue :
afterRestart

Dans tes logs ça dit quoi ?
C’est moi ou tu as cliqué sur le bouton après le fin de l’installation de ton module ?
Tu dit que tu es en 3.7.2 ? Dans ce cas sans voir les logs comment fait tu pour savoir si Gladys a fini de redémarrer ?

1 Like

simpas tes screens animé, mais on peut pas zoomer dessus et je pense que les logs serait plus parlant

Je n’ai pas cliqué effectivement mais ça donne cette impression :slight_smile:.

Je regarde les logs sur un autre moniteur qui me dit que c’est restart ou non :slight_smile:.

@aiaalm voici les logs :

0|gladys | House : checkUsersPresence
0|gladys | Cloning module hdmiCec…
0|gladys | Installing NPM dependencies for module hdmiCec
0|gladys | Dependencies installed for module hdmiCec
0|gladys | Module hdmiCec installed with success. Need reboot.
0|gladys | undefined
0|gladys | Warning: connect.session() MemoryStore is not
0|gladys | designed for a production environment, as it will leak
0|gladys | memory, and will not scale past a single process.
0|gladys | Warning: connect.session() MemoryStore is not
0|gladys | designed for a production environment, as it will leak
0|gladys | memory, and will not scale past a single process.
0|gladys | =======================================
0|gladys | WARNING: You currently have your default CORS settings configured to allow
0|gladys | all requests from all origins, with credentials. This may leave your app
0|gladys | open to attack by third-party sites! Consider making your origins setting
0|gladys | more restrictive or setting credentials to false, or else make certain that
0|gladys | none of your routes perform sensitive actions or reveal secure information.
0|gladys | =======================================
0|gladys | Gladys version : 3.7.2
0|gladys | Bootstrap is taking unusually long to execute its callback (2000 milliseconds).
0|gladys | Perhaps you forgot to call it? The callback is the first argument of the function, cb.
0|gladys | Gladys brain loaded with success !
0|gladys | Scheduled sunrise to 11/19/2017, 8:17:51 AM.
0|gladys | Scheduled alarm googleSynch, with id 2
0|gladys | Scheduled alarm check presence, with id 4
0|gladys | Scheduled sunset to 11/19/2017, 5:29:05 PM.
0|gladys | .-…-.
0|gladys | Sails <| .-…-.
0|gladys | v0.12.13 |
0|gladys | /|.
0|gladys | / ||
0|gladys | ,’ |’
0|gladys | .-’.-==|/_–’
0|gladys | --'-------' 0|gladys | __---___--___---___--___---___--___ 0|gladys | ____---___--___---___--___---___--___-__ 0|gladys | Server lifted in /home/pi/gladys`
0|gladys | To see your app, visit http://localhost:8080
0|gladys | To shut down Sails, press + C at any time.
0|gladys | -------------------------------------------------------
0|gladys | :: Sun Nov 19 2017 16:51:00 GMT+0100 (CET)
0|gladys | Environment : production
0|gladys | Port : 8080
0|gladys | -------------------------------------------------------
0|gladys | NetworkScanner will scan network each 30 minutes.
0|gladys | New version of Gladys available : 3.7.3
0|gladys | Network scan completed. Found 7 devices.

Et au reboot le module n’est plus présent.

Ouais j’avais du mal a voir vu que l’image est toute petite :laughing:

Ok et tu as regardé avec Filzila ce qui ce passe dans le dossier hooks ?

Côté fileZilla après l’install le dossier est bien présent après reboot le dossier à été supprimé ^^

Merci @LepetitGeek et @aiaalm pour votre aide =D !

Bon procédons par étape, essai d’installer mon module pour voir si il a le même comportement Device-HTTP

Installé -> reboot -> supprimé

Et dans le log :

0|gladys | Cloning module Device-HTTP…
0|gladys | Installing NPM dependencies for module Device-HTTP
0|gladys | Dependencies installed for module Device-HTTP
0|gladys | Module Device-HTTP installed with success. Need reboot.
0|gladys | undefined
0|gladys | Warning: connect.session() MemoryStore is not
0|gladys | designed for a production environment, as it will leak
0|gladys | memory, and will not scale past a single process.
0|gladys | Warning: connect.session() MemoryStore is not
0|gladys | designed for a production environment, as it will leak
0|gladys | memory, and will not scale past a single process.
0|gladys | =======================================
0|gladys | WARNING: You currently have your default CORS settings configured to allow
0|gladys | all requests from all origins, with credentials. This may leave your app
0|gladys | open to attack by third-party sites! Consider making your origins setting
0|gladys | more restrictive or setting credentials to false, or else make certain that
0|gladys | none of your routes perform sensitive actions or reveal secure information.
0|gladys | =======================================
0|gladys | Gladys version : 3.7.2
0|gladys | Gladys brain loaded with success !
0|gladys | Scheduled sunrise to 11/19/2017, 8:17:51 AM.
0|gladys | Scheduled alarm googleSynch, with id 2
0|gladys | Scheduled alarm check presence, with id 4
0|gladys | Scheduled sunset to 11/19/2017, 5:29:05 PM.
0|gladys | .-…-.
0|gladys | Sails <| .-…-.
0|gladys | v0.12.13 |
0|gladys | /|.
0|gladys | / ||
0|gladys | ,’ |’
0|gladys | .-’.-==|/_–’
0|gladys | --'-------' 0|gladys | __---___--___---___--___---___--___ 0|gladys | ____---___--___---___--___---___--___-__ 0|gladys | Server lifted in /home/pi/gladys0|gladys | To see your app, visit http://localhost:8080 0|gladys | To shut down Sails, press <CTRL> + C at any time. 0|gladys | ------------------------------------------------------- 0|gladys | :: Sun Nov 19 2017 17:09:47 GMT+0100 (CET) 0|gladys | Environment : production 0|gladys | Port : 8080 0|gladys | ------------------------------------------------------- 0|gladys | NetworkScanner will scan network each 30 minutes. 0|gladys | New version of Gladys available : 3.7.3 0|gladys | Network scan completed. Found 7 devices. 0|gladys | Socket disconnected, but session could not be loaded to pass to configured disconnect handler:sails.config.sockets.afterDisconnect()`. Will pass a fake, empty session as argument to lifecycle callback. Details:
0|gladys | Error: Session could not be loaded
0|gladys | at _createError (/home/pi/gladys/node_modules/sails/lib/hooks/session/index.js:31:19)
0|gladys | at Immediate. (/home/pi/gladys/node_modules/sails/lib/hooks/session/index.js:34:11)
0|gladys | at runCallback (timers.js:676:20)
0|gladys | at tryOnImmediate (timers.js:645:5)
0|gladys | at processImmediate [as _immediateCallback] (timers.js:617:5)
0|gladys | Event : create : new Event with code : alarm
0|gladys | Scenario : Trigger : New event : alarm
0|gladys | Scenario : Trigger : Found 2 launchers with code alarm.
0|gladys | Scenario : Trigger : Launcher condition verified.
0|gladys | Scenario : Trigger : Condition not verified.
0|gladys | Scenario : Trigger : Conditions verified, starting all actions.
0|gladys | Scenario : exec : Found 1 actions to execute.
0|gladys | Executing action “Exécute un script”
0|gladys | House : checkUsersPresence

T’es en mode développement ?
Tu as installé Gladys sur quoi et comment ?
Tu as essayé d’installer des modules du store ?

J’ai installer Gladys sur un raspberry 3b via l’image fournis par @pierre-gilles sur cette page :

Je l’ai ensuite mis a jour y a une semaine sur la version 3.7.2 via cette commande /home/pi/rpi-update.sh
Comme indiqué dans les paramètre de gladys.

L’installation des module du store fonctionnais jusqu’a présent.

Je viens de mettre gladys a jour au cas ou en 3.7.3.
J’ai tenté l’installe du module mp3-player et après reboot il est encore présent.

Malgré la mise a jour cela na pas résolu mon problème dès que je souhaite installé un module externe il disparait au reboot.

Encore une erreur mystique :joy:
Tu as fait des modifications manuellement dans le core de Gladys ?