Page 7 sur 56

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 18 janv. 2019, 22:52
par Kyoshi
Bon... Après même pas 15 jours, je rencontre le problème du cookie...
Et pourtant, mon Jeedom étant dans un docker, je ne me suis jamais connecté depuis mon docker vers Alexa.amazon...
Donc je me demande pourquoi cela fonctionnait au début... Et plus maintenant...

J'ai bien mis le code suivant (depuis le début) :
BROWSER='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'
La copie du copie n'est pas une solution mais juste un pansement car au bout de même pas deux semaines, rebelote...

Pourquoi cela fonctionnait il y a deux semaines sans la moindre copie du plugin... :?

EDIT : avec la copie du cookie (plugin cookies.txt) cela fonctionne mais ce n'est pas du tout une solution viable.

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 19 janv. 2019, 00:19
par Kyoshi
Quelqu'un s'est déjà penché là-dessus ?
https://github.com/Apollon77/alexa-cook ... /readme.md

Le script a l'air de rafraîchir le cookie automatiquement.

Je suis KO là... Plus envie de tester... Et en plus, ce n'était pas prévu que je passe du temps sur ça ce soir...

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 19 janv. 2019, 05:22
par jujujames
merci sigalou pour la reponse

j'ai essayer en ligne de commande comme tu me l a suggerer mais ça ne veut pas ,il faut dire aussi que je suis novice en linux donc je suis peut etre passé a coté de quelque chose

j ai essayer ça avec et sans sudo avant

Code : Tout sélectionner

 cd /etc/alexa-remote-control
  ./alexa-remote-control.sh -d "Dot" -e speak:"TEXTE"

Code : Tout sélectionner

cd /etc/alexa-remote-control 

Code : Tout sélectionner

./alexa-remote-control.sh -d "Dot" -e speak:"TEXTE"
des fois ça ne renvoie rien des fois ça : bad interpreter: Permission denied

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 19 janv. 2019, 07:28
par sigalou
jujujames a écrit :
19 janv. 2019, 05:22
des fois ça ne renvoie rien des fois ça : bad interpreter: Permission denied
? Ca ne peut pas répondre des choses différentes, je ne comprends pas ta phrase.

Tu as bien rendu ton script exécutable ?

chmod +x alexa_remote_control.sh

Donne moi bien ce que tu tapes et la réponse que tu as pour que je t'aide.

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 21 janv. 2019, 00:03
par jujujames
salut

j ai essayé de mettre ça en ligne de commande en ssh

Code : Tout sélectionner

cd /etc/alexa-remote-control
./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
ça me repond ça

Code : Tout sélectionner

-bash: ./alexa-remote-control.sh: /: bad interpreter: Permission denied
j'ai essayé ça

Code : Tout sélectionner

sudo cd /etc/alexa-remote-control
./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
ça me renvoie ça

Code : Tout sélectionner

sudo: cd: command not found
ça

Code : Tout sélectionner

./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
et ça

Code : Tout sélectionner

sudo ./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
renvoie rien

comme je te l'ai dit je suis novice en linux donc si il y a des chose precise a faire peut tu me dire la marche a suivre

merci

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 21 janv. 2019, 12:45
par sigalou
Normal que "sudo cd ..." soit en erreur.

Essaies :

sudo su -
cd /etc/alexa-remote-control
chmod +x alexa_remote_control.sh
./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 22 janv. 2019, 19:14
par jujujames
salut
alors quand je rentre les ilgnes que tu m a donné les une aprés les autres a

chmod +x alexa_remote_control.sh

ça me renvoie ça

Code : Tout sélectionner

chmod: cannot access ‘alexa_remote_control.sh’: No such file or directory

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 23 janv. 2019, 10:55
par xav_38
- au lieu de _


Envoyé de mon iPhone en utilisant Tapatalk

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 23 janv. 2019, 13:43
par Kyoshi
jujujames a écrit :
22 janv. 2019, 19:14
salut
alors quand je rentre les ilgnes que tu m a donné les une aprés les autres a

chmod +x alexa_remote_control.sh

ça me renvoie ça

Code : Tout sélectionner

chmod: cannot access ‘alexa_remote_control.sh’: No such file or directory
Ce n'est pas débutant ça... Tu découvres Linux.
Je te conseille de lire deux ou trois d'initiation pour connaitre les bases.

En tout cas, il ne faut pas hésiter d'abuser de la tabulation.
Si tu es dans le bon répertoire, commences par exemple à saisir "ale" et appuie sur TAB.
Cela va s'autocompléter et tu n'auras pas besoin de saisir le nom complet.

Pour tes problèmes de droit d'exécution, va dans le répertoire où se situe ton script et donne-nous le résultat de la commande "ls -al" (ce sont des "L" minuscule). La commande va lister les fichiers du répertoire courant et indiquer les droits et le propriétaire de chaque fichier.
Tu peux également vérifier qui est l'utilisateur courant avec "whoami" et nous indiquer le résultat pour que l'on puisse comparer par rapport au propriétaire du script.

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 24 janv. 2019, 05:43
par jujujames
salut

alors pour ls-al ça me renvoie ça

Code : Tout sélectionner

drwxr-xr-x   2 root root  4096 Jan 18 04:52 .
drwxr-xr-x 104 root root  4096 Jan 18 04:50 ..
-rwxrwxrwx   1 root root 27946 Jan 19 04:37 alexa-remote-control.sh
et pour whoami

Code : Tout sélectionner

jeedom

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 24 janv. 2019, 10:28
par Kyoshi
jujujames a écrit :
24 janv. 2019, 05:43
salut

alors pour ls-al ça me renvoie ça

Code : Tout sélectionner

drwxr-xr-x   2 root root  4096 Jan 18 04:52 .
drwxr-xr-x 104 root root  4096 Jan 18 04:50 ..
-rwxrwxrwx   1 root root 27946 Jan 19 04:37 alexa-remote-control.sh
et pour whoami

Code : Tout sélectionner

jeedom
Ce n'est pas propre comme ça ( tu donnes tous les droits à tout le monde) mais ça devrait s'exécuter.
Et du coup quand tu exécutes la commande suivante, tu as toujours l'erreur bad interpreter?

Code : Tout sélectionner

./alexa-remote-control.sh -d "spot" -e speak:"parle maintenant"
Si c'est toujours le cas, je pense qu'il y a eu un souci lors d'un copier/coller.
Si tu regardes le premier post de la page 6, j'indique qu'il vaut mieux utiliser un wget pour récupérer le fichier.
Lorsque l'on fait un copier/coller (suivant le sens et suivant les éditeurs de texte), l'interprétation du retour chariot/saut de ligne/retour à la ligne peut être interprété différemment et ça fout la merde dans le fichier.
D'ailleurs, tu peux vérifier le fichier, si tu ne vois pas de caractères bizarres.

Sinon, récupères à nouveau le fichier (avec la commande wget que j'indique), édite-le avec nano et retente le coup.

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 26 janv. 2019, 15:35
par Kyoshi
Hello,

Est-ce que quelqu'un a testé le script alexa-cookie de Apollon77 https://github.com/Apollon77/alexa-cookie?
J'ai tenté mais j'ai des erreurs dans tous les sens.
N'étant pas exemple en scripting...

Mais bon, ça n'a pas l'air d'intéressé les foules.

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 27 janv. 2019, 18:13
par jbecker
Bonjour,

J'ai testé alexa-cookie et alexa-remote de https://github.com/Apollon77/
alexa-cookie est la librairie capable de renouveler le token.
alexa-remote se base sur alexa-cookie et fourni les commande pour contrôler nos devices.

La librairie n'est pas encore 100% mature mais très avancée. J'ai juste dû effectuer quelques petites modifications, notamment parce que tout était redirigé vers amazon.de en langue de-DE.

Comme pour l'autre librairie, il faut une première fois récupérer un objet cookie, pour cela, la librairie ouvre un serveur local qui sert de proxy et qui nous redirige vers la page d’authentification amazon pour obtenir notre token initial (au format JSON). Après, il ne reste plus qu'a mentionner cet objet pour effectuer les commandes. Parmi les commandes, il y a refreshCookie qui nous permet de générer un nouveau token. Il faut idéalement appeler cette fonction tous les 14 jours.

Le tout est en NodeJS, ce qui est très prometteur pour la création d'un plugin Jeedom propre.
Hélas, je débarque seulement sur Jeedom, je ne connais pas encore la procédure pour créer un plugin mais ce plugin devrait:
* Démarrer un serveur NodeJS
* Ce serveur se connect à Amazon grâce aux cookies
* Un cron rafraîchi régulièrement le fichier cookie (genre tous les 5 jours)
* Le serveur écoute un port et transmet les commandes à la librairie. Il offrirai une API HTTP du genre: ?device=Salon&command=speak&value="Hello World"

Petit exemple d'utilisation:

Code : Tout sélectionner

let Alexa = require('../alexa-remote');
let alexa = new Alexa();

let cookie = {};

if (process.argv.length != 5)
{
  console.log('Invalid argument');
  stop();
}

var fs = require('fs');
fs.readFile('/tmp/alexa-cookie.json', 'utf8', (err, data) =>
{
  cookie = JSON.parse(data);
  start();
});

function start()
{
  alexa.init({
      cookie: cookie,  // cookie if already known, else can be generated using email/password
      proxyLogLevel: 'info',
      bluetooth: true,
      logger: console.log, // optional
      alexaServiceHost: 'alexa.amazon.fr', // optional, e.g. "pitangui.amazon.com" for amazon.com, default is "layla.amazon.de"
      useWsMqtt: false, // optional, true to use the Websocket/MQTT direct push connection
      cookieRefreshInterval: 7*24*60*1000 // optional, cookie refresh intervall, set to 0 to disable refresh
    },
    function (err)
    {
      alexa.sendSequenceCommand(process.argv[2], process.argv[3], process.argv[4], function(err)
      {
        stop();
      });

    });
}

function stop()
{
  process.exit();
}
Exemple d'appel:

Code : Tout sélectionner

nodejs scripts/sendCommand.js Cuisine speak "Quand est-ce qu'on bouffe ici ?"
Conclusion:
La librairie fonctionne et pourrait facilement s'intégrer dans Jeedom car en NodeJS.
Cette solution serait bien mieux intégrée que la solution qui consiste à faire des appels bash.
Une fois le serveur en place, Alexa deviendra contrôlable via requête HTTP ... à partir de là, un océan de possibilité s'ouvre à nous ;)

Des amateurs pour faire un plugin ? Je peux aider ;)

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 27 janv. 2019, 18:46
par sigalou
jbecker a écrit :
27 janv. 2019, 18:13
Bonjour,

J'ai testé alexa-cookie et alexa-remote de https://github.com/Apollon77/
alexa-cookie est la librairie capable de renouveler le token.
alexa-remote se base sur alexa-cookie et fourni les commande pour contrôler nos devices.
..
Salut jbecker

Je vais tester cette librairie par curiosité, pour l'instant, j'utilise (et ça fonctionne bien) le script alexa-remote-control.sh

J'ai un diskstation, je vais y mettre Node js et faire quelques essais.

Si tu as une version Apollon77 adapté à alexa donc en amazon.fr, je suis preneur d'un petit zip sinon tant pis, je vais tout reprendre.

C'est l'histoire des alarmes, des notifications et des réveils qui m’intéresse, j'ai parcouru le script js, j'ai l'impression que c'et géré contrairement au script alexa-remote-control.sh.

On se tient au courant ici et on avance sur ces scripts...

a+

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 27 janv. 2019, 19:29
par jbecker

Code : Tout sélectionner

unzip remote.zip
cd remote
npm install
remote/
  • exemple/example.js : Correspond au fichier https://github.com/Apollon77/alexa-remo ... example.js Il m'a servi pour créé mon premier token. En virant la variable cookie, il crée le proxy. Tu te connect dessus via ton browser, tu t'identifies et tu trouveras dans la console un object en JSON qui resemble à: {"loginCookie":"registerDevice=thhrtBNcaLQR .... Xd2qV6k=; csrf=1520651988","csrf":"1520651988"}. Comme tu le verra, je le stock dans /tmp/alexa-cookie.json pour mes autres scripts
  • scripts/refreshToken.js : Met à jour le fichier /tmp/alexa-cookie.json avec un nouveau token
  • scripts/sendCommand.js : Prend 3 paramètres et exécute la commande. Les paramètres sont transmis tel quel à la librairie. cf. la librairie pour savoir ce qui existe :) j'utilise "volume" et "speak" pour l'instant.
La librairie propose déjà nativement de faire automatiquement des refresh du token, faudra peut-être le faire évoluer pour qu'il mette à jour le fichier /tmp/alexa-cookie.json par la même occasion.
Tu verras que l'initialisation (connection à amazon, récupération de la liste des devices, des notifications, etc) est assez lourde. Ce qui engendre 2-3 secondes de décalage entre le début d'exécution du script et la réaction d'Alexa, c'est pour ça aussi qu'il faut un serveur NodeJS comme ça, nous n'avons qu'une fois l'initialisation :)

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 27 janv. 2019, 19:53
par sigalou
Super, bien reçu, je me lance, je vais essayer. Merci pour tes explications, très pédago, je te tiens a courant.

Edit :
jbecker a écrit :
27 janv. 2019, 19:29
  • exemple/example.js : Correspond au fichier https://github.com/Apollon77/alexa-remo ... example.js Il m'a servi pour créé mon premier token. En virant la variable cookie, il crée le proxy. Tu te connect dessus via ton browser, tu t'identifies et tu trouveras dans la console un object en JSON qui resemble à: {"loginCookie":"registerDevice=thhrtBNcaLQR .... Xd2qV6k=; csrf=1520651988","csrf":"1520651988"}. Comme tu le verra, je le stock dans /tmp/alexa-cookie.json pour mes autres scripts
Lancé, je me suis bien identifié sur la page allemande d amazon, j'ai bien eu "Amazon Alexa Cookie successfully retrieved. You can close the browser." Et j'ai bien dans le console le loginCookie....

A ce stade, je n'ai pas compris comment envoyer une commande speak par exemple.
Faut il envoyer un post sur http://192.168.0.21:3456?quelquchose... en laissant example.js tourner ?

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 27 janv. 2019, 20:45
par jbecker
C'est parce que à ce moment là, je faisais mes premiers pas avec la librairie, je n'avais pas encore mis en place le système /tmp/alexa-cookie.json
Le token est dans ta console (celle avec laquelle tu as exécuté le script ;))

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 27 janv. 2019, 20:47
par sigalou
OK, oui j'ai vu. le script n'enregistre rien mais affiche en console.
Je me suis bien identifié sur la page allemande d amazon, j'ai bien eu "Amazon Alexa Cookie successfully retrieved. You can close the browser." Et j'ai bien dans le console le loginCookie....

A ce stade, je n'ai pas compris comment envoyer une commande speak par exemple.
Faut il envoyer un post sur http://192.168.0.21:3456?quelquchose... en laissant example.js tourner ?

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 27 janv. 2019, 21:06
par jbecker

Code : Tout sélectionner

nodejs scripts/sendCommand.js NomDuDevice speak "Bonjour, comment ça va?"
NomDuDevice est le doux nom de ton Alexa, chez moi j'ai Salon et Cuisine.

J'ai aussi joué avec la commande de volume:

Code : Tout sélectionner

nodejs scripts/sendCommand.js Salon volume 70
Le script suppose que ton cookie a été sauvé dans /tmp/alexa-cookie.json

Je me suis à peu près arrêter là.
Pour moi, il y avait assez de matière pour industrialiser le tout.

Re: [Tuto] Faire dire et faire faire ce que l'on veut a Alexa grâce a un script

Publié : 28 janv. 2019, 11:24
par Kyoshi
Hello @jbecker,
Merci pour ton retour.

Je vais faire des essais de mon côté.
Mais je sens que je vais m'amuser avec mes dockers :roll: