Page 7 sur 15

Re: Amazon DASH bouton

Publié : 29 nov. 2016, 11:15
par rapinou
Snorky a écrit :
rapinou a écrit :Bon, je sais pas pourquoi mais j'ai réussi en rajoutant sudo à la commande :

Code : Tout sélectionner

@reboot sudo node /home/pi/dash-button/index.js
Tu as fais un crontab ou sudo crontab ?
Sur un sudo crontab.

Re: Amazon DASH bouton

Publié : 29 nov. 2016, 11:48
par Snorky
Merci

Re: Amazon DASH bouton

Publié : 29 nov. 2016, 12:41
par rapinou
Bon, je ne saurais dire si c'est la solution idéale, de ce que j'ai pu lire il ne faut normalement pas mettre de sudo dans un crontab, question sécurité.
J'ai lu aussi qu'on pouvait remplacer une tâche cron de type @reboot en passant par /etc/init.d, peut-être voir de ce côté là.

Sinon j'ai réussi à modifier mon bouton dash comme je le voulais, désormais il me permet de passer de Kodi à RetroPie sur ma TV sans passer par la console. Le dash actionne un interrupteur qui lance lui-même en On ou Off deux scripts bash.

Re: RE: Re: Amazon DASH bouton

Publié : 30 nov. 2016, 04:10
par jccourtoy
T0ny Oh a écrit :
jccourtoy a écrit :Quelqu'un a fait un script pour un deuxième bouton ?

Jeff du var
Un truc du genre, c'est pas terrible mais je pense que ça peux fonctionner :

Code : Tout sélectionner

var dash_button = require('node-dash-button');
var dash = dash_button('74:75:48:11:11:11', null, null, 'all');
var dash2 = dash_button('74:75:48:00:00:00', null, null, 'all');
var request = require('request');

dash.on('detected', function (){
    console.log(new Date() + ' : Une pression sur le Dash Button a été détectée.');
    request.post(
      'http://....A MODIFIER',
      { json: { key: 'status' } },
      function (error, response, body) {
        if (!error && response.statusCode == 200) {
          console.log(body)
        }
     }
   );
});
dash2.on('detected', function (){
    console.log(new Date() + ' : Une pression sur le Dash Button a été détectée.');
    request.post(
      'http://....A MODIFIER',
      { json: { key: 'status' } },
      function (error, response, body) {
        if (!error && response.statusCode == 200) {
          console.log(body)
        }
     }
   );
});
Au passage si il y a des utilisateurs de Node-red j'ai fait un petit article ici :
https://easydomoticz.com/forum/viewtopi ... =17&t=2877
Oui super, ça fonctionne...
Tu pense que si j'utilise le node-Red je n'aurais plus de problème avec le démarrage au boot ?
Car même avec sudo dans contab, chez moi cela ne fonctionne pas....
Merci

Jeff du var

Re: Amazon DASH bouton

Publié : 30 nov. 2016, 07:50
par deennoo
Il te faudra faire demarrer node red au boot.

Re: RE: Re: Amazon DASH bouton

Publié : 30 nov. 2016, 09:22
par T0ny Oh
jccourtoy a écrit : Oui super, ça fonctionne...
Tu pense que si j'utilise le node-Red je n'aurais plus de problème avec le démarrage au boot ?
Car même avec sudo dans contab, chez moi cela ne fonctionne pas....
Merci

Jeff du var
Non. Je parlais de node-red car je suis passé à cette solution depuis quelques semaines et elle me permet de me passer de la plupart de mes scripts. Mais installer une telle solution juste pour le dash button c'est un peu trop indigeste je trouve.

Pour trouver une solution à ton problème il va falloir mettre le nez dans les logs. Dans ton cas, peut-être que ta connexion démarre après l'exécution du script et du coup, si pas de connexion, pcap (librairie permettant la capture des paquets) plante.Bien sûr, ce n'est qu'une supposition (au quel cas il suffirai de démarrer le script X secondes après le boot).

Essaye déjà de rediriger les sorties de ton script dans un fichier texte (en ajoutant un ">> /home/pi/log_dashbutton.txt" dans ta tache cron) et regarde aussi dans ton syslog si cron lance bien le script avec :

Code : Tout sélectionner

cat /var/log/syslog | grep lenomdetonscript.js

Re: Amazon DASH bouton

Publié : 30 nov. 2016, 09:31
par T0ny Oh
Tiens au passage pour nodejs et le node-dash-button dans la doc il explique comment gérer plusieurs boutons en utilisant un array (entre autres) :

https://github.com/hortinstein/node-dash-button

Re: RE: Re: RE: Re: Amazon DASH bouton

Publié : 30 nov. 2016, 10:03
par jccourtoy
T0ny Oh a écrit :
jccourtoy a écrit : Oui super, ça fonctionne...
Tu pense que si j'utilise le node-Red je n'aurais plus de problème avec le démarrage au boot ?
Car même avec sudo dans contab, chez moi cela ne fonctionne pas....
Merci

Jeff du var
Non. Je parlais de node-red car je suis passé à cette solution depuis quelques semaines et elle me permet de me passer de la plupart de mes scripts. Mais installer une telle solution juste pour le dash button c'est un peu trop indigeste je trouve.

Pour trouver une solution à ton problème il va falloir mettre le nez dans les logs. Dans ton cas, peut-être que ta connexion démarre après l'exécution du script et du coup, si pas de connexion, pcap (librairie permettant la capture des paquets) plante.Bien sûr, ce n'est qu'une supposition (au quel cas il suffirai de démarrer le script X secondes après le boot).

Essaye déjà de rediriger les sorties de ton script dans un fichier texte (en ajoutant un ">> /home/pi/log_dashbutton.txt" dans ta tache cron) et regarde aussi dans ton syslog si cron lance bien le script avec :

Code : Tout sélectionner

cat /var/log/syslog | grep lenomdetonscript.js
Cette nuit j'ai un peu chercher, et c'est un problème de sudo. En effet le index.js ne fonctionne que si je met sudo devant. Quand je passe en sudo -su, cela ne marche plus. Il me detect une erreur de syntaxe avec ")" dans la première ligne !
Voilà une idée de test à faire.

Jeff du var

Re: Amazon DASH bouton

Publié : 30 nov. 2016, 10:56
par Jeff
Bien reçu hier mon dash bouton.
Tout marche pour le lancement d'un switch dans Dz en 4sec.
Par contre , j'ai aussi le problème de lancement au reboot du .js
J'ai passé du temps à lire vos commentaires et à me renseigner sur le sudoers , j'ai essayé: sudo pas sudo pour le crontab -e, rien n'y fait.
Pas grave, je le ferais à la mano, je ne suis pas assez doué sur linux et ses subtilités.
PS : je suis sur Ubuntu 16.04 Lts et si je fais un sudo je dois taper mon mot de passe.

Je pense passer commande d'un 2ème. :D

Re: Amazon DASH bouton

Publié : 30 nov. 2016, 14:58
par Jeff
J'ai passé commande d'un deuxième, gratos du coup avec la remise, incroyable :D

Sinon j'ai repassé un peu de temps sur le problème de démarrage au boot.
J'ai essayé de percer le mystère de la phrase de @Deennoo
Ton user a bien les droit de sudoer ?
J'ai fait comme expliqué un

Code : Tout sélectionner

sudo crontab -e
J'ai écrit ceci

Code : Tout sélectionner

@reboot node /home/jeff/dash-button/index.js 2>/home/jeff/cron.log
Cela ne marche pas, et j'obtiens cela

Code : Tout sélectionner

[TypeError: pcap Open: info[0] must be a String]
Failed to create pcap session: couldn't find devices to listen on.
Try running with elevated privileges via 'sudo'
/home/jeff/dash-button/node_modules/node-dash-button/index.js:28
        throw new Error('Error: No devices to listen');
        ^

Error: Error: No devices to listen
    at create_session (/home/jeff/dash-button/node_modules/node-dash-button/index.js:28:15)
    at register (/home/jeff/dash-button/node_modules/node-dash-button/index.js:47:24)
    at Object.<anonymous> (/home/jeff/dash-button/index.js:2:12)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3
Au 28:15 de index, on a ceci

Code : Tout sélectionner

onsole.error("Failed to create pcap session: couldn't find devices to listen on.\n" + "Try running with elevated privileges via 'sudo'");

On en revient au fameux 'sudo' de certains !

Bizarrement dans mes essais, j'ai essayé des crontab toutes les 1 min cumulé avec des nohup, j'ai obtenu 11 fois la commande dans les logs !!!

Si je fais cela comme cité avant, très bonne idée d'ailleurs ;)

Code : Tout sélectionner

 jeff@Ubuntu:~$ sudo nohup sudo node /home/jeff/dash-button/index.js &
Cela marche jusqu'au prochain redémarrage