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