[Module] shutdown / reboot

Bonsoir à tous,

Au cas ou cela intéresserait du monde j’ai créer un module qui permet d’éteindre/redémarrer la machine sur laquelle tourne gladys : le module est dispo ici :

NB : J’ai un peu de mal avec le javascript :blush: je suis preneur de toute suggestion, et ou modification de code :wink:
NB2 : Il y avait peut être une façon de faire différente, mais cela m’a permis de voir la création d’un module pour gladys :smiley:

2 Likes

Top pour ton module! C’est déjà un super début :slight_smile:

Petite remarque ;

Tes require, fait les au début de tes fichiers, pas dans les appels de fonctions, exemple :

Merci pour la remarque, c’est modifié :slight_smile:

1 Like

Merci pour ton module @TanguyNa ! :slight_smile:

Je viens de l’accepter sur le store, néanmoins il y a des problèmes d’affichages ce n’est pas très propre =>

Peux-tu corriger ça et ensuite je rendrais ce module disponible sur toutes les instances gladys !

J’ai fait quelques modifications, ce doit être mieux :wink:

1 Like

Mmmm tu n’as pas moyen de mettre les codes à exécuter dans des balises de code ? C’est vraiment pas beau là :smiley:

Sinon, pour le code SQL, ne demande pas aux utilisateurs d’éxecuter du SQL, ton module peut le faire tout seul à l’installation et la désinstallation.

Tu dois créer une fonction “install” et une fonction “uninstall”.

Ta fonction “install” tu fais :

gladys.sentence.create({
   uuid: '.....',
    text: '',
   label: '',
etc.....
});

et dans ton uninstall tu peux à la limite faire un appel SQL :

gladys.utils.sql('DELETE FROM sentence WHERE uuid IN (?, ?)', [uuid1, uuid2]);

Je viens de modifier pour rajouter les balises codes. Pour la partie install, il faut que je regarde ça :wink:
Par contre pour l’uuid comment je peux le générer ?

L’uuid tu dois le générer de ton côté! Il doit rester fixe, c’est une constante qui va te permettre si au fil du temps tu mets à jour ton module de remplacer ces phrases ( et surtout de les supprimer proprement )

Pour générer des uuid tu peux utiliser des sites genre => https://www.uuidgenerator.net/

Merci pour l’info, je vais creuser cela :slight_smile:

1 Like

v0.0.2 dispo :wink: Insert / delete des sentences en automatique à l’installation/désinstallation.

1 Like

Bien joué !!

Juste quelques remarques liés à ton code, je changerais la fin de ton install de la sorte :

return gladys.utils.sql('select language from user where role=\'admin\' order by id')
    .then((lang) => {
		if(lang[0].language != 'fr-FR') {
            return gladys.sentence.insertBatch([sentences.sentenceShutdownEn, sentences.sentenceRebootEn]);
        } else {
            return gladys.sentence.insertBatch([sentences.sentenceShutdownFr, sentences.sentenceRebootFr]);
        }
	});

Déjà, la fonction insertBatch te permet d’injecter en parallèle des phrases, en plus là ta chaine de promise est respectée et la fonction install s’arrêtera uniquement quand tout se sera bien passé.

Dans ton code actuel, ta fonction install va s’arrêter directement même si il y a des erreurs, c’est pas terrible :slight_smile:

Même remarque pour ta fonction uninstall. pense à return

Je galère trop avec le javascript :sob:

Les 2 modules (shutdown et lgwebos) sont fonctionnels sans insert à la main :wink:

Par contre j’'ai tenté un insert batch mais j’ai eu l’erreur suivante :

0|gladys   | Unhandled rejection TypeError: expecting an array or an iterable object but got [object Null]
0|gladys   |     at apiRejection (/home/pi/gladys/node_modules/bluebird/js/release/promise.js:10:27)

Je m’arrête la pour ce soir, je regarderai cela de plus près demain :slight_smile:

Dans tous les cas merci pour tout le boulot effectué autour de Gladys et tes précieux conseils :+1:

Tu t’en sors super bien !

Ah ? tu peux me montrer ton code ?

Pas de soucis ! Je suis là pour ça :slight_smile:

Ce devait être celui-la, j’ai rajouté le return depuis :smiley:

Hop > dodo, La suite demain :wink:

Le return il faut l’ajouter devant le “gladys.utils.sql” sinon ça sert à rien non plus !

Oui oui pour le return j’avais bien compris je l’avait ajouté après avoir tenté les insert batch :slight_smile:
J’ai fini par trouvé le problème sur l’insert en batch, la modif est dispo et a été effectuée aussi sur lgwebos :wink:

Le code ressemble maintenant à cela :

Je n’ai que de petites notions de développeur, et j’ai pas encore mit mon nez dans node.js

est il possible de faire un module pour faire du shutdown d’un PC ou un NAS ? et de la même manière pouvoir les réveiller grace au Wake On Lan.

Tout cela pour faire en sorte de dire à Gladys allume mon ordi ou allume mon serveur ect…

Pour le wake on lan oui c’est possible c’est d’ailleurs ce qui est utilisé sur mon module lgwebos :wink:

Pour le shutdown d’un NAS aucune idée, mais pour le pc oui c’est à priori techniquement faisable d’après google :smiley:

Le plus simple est que tu essai dans un premier temps de trouver les commandes qui fonctionnent pour éteindre ton pc / nas et ensuite après les intégrer dans ton module gladys.

Du coup c est un module ou un script qu il faut faire ? j’ai du mal à saisir la différence

Tout dépends de ce que tu veux faire :wink: Mais dans un premier temps il faut trouver les commandes qui permette d’éteindre ton pc et ton nas.

Pour la fonction Wake On Lan tu peux te servir d’etherwake

Pour l’installer :
sudo apt-get install etherwake

et ensuite pour allumer ton pc tu pourras lancer la commande suivante en remplaçant les 00 par son adresse mac :
wakeonlan 00:00:00:00:00:00

Si cela fonctionne tu peux soit mettre la commande dans un un script, soit développer ton module ce qui te permettra de dire à Gladys par ex : Allume mon pc pour déclencher l’action.