Avez vous vu les boutons Amazon DASH ?
Ces objets connectés qui permettent d’un simple appui de commander des sachets de thé, de la bière, des préservatifs, en passant par la lessive et les couches pour bébé.
Ou trouver le Amazon DASH ?
Chez Amazon parait être la bonne réponse, cela nécessite un compte Amazon premium, activez ce compte (c’est gratuit un mois), commandez un/des DASH à 4.99 €, remboursés lors de la 1ere commande.
Le mois gratuit premium laisse le temps d’activer notre Dash, sinon c’est 49 € à l’année.
Comment ça marche ?
Le DASH bouton utilise le Wifi de chez vous pour passer sa commande lors de l’appui. Il se connecte au compte Amazon configuré lors de la première utilisation pour passer commande.
L’idée est donc de ne pas aller jusqu’au bout de la configuration pour éviter de commander un semi remorque de couches Pampers.
Comment fait on ?
- Il vous faudra un téléphone Android ou Ios.
- Vos codes d’accès Wifi
- Le AMAZON DASH
Je vais décrire rapidement la partie Amazon qui ne représente par la partie essentielle ici.
Il faudra télécharger l’appli Amazon dans le store.
- Appuyez sur l’icône Menu (dans l’angle supérieur gauche).
- Sélectionnez Votre compte.
- Sous Appareils Dash sélectionnez Configurer un nouvel appareil.
- Après identification vous entrerez vos codes Wifi. Je tiens à vous faire remarquer qu’ils sont stockés chez Amazon.
- Lors de la sélection du produit à commander, quittez la procédure.
Je réécris : »On quitte donc sans choisir de produit. » après la configuration du WIFI.
N.B : Dans le menu des appareils DASH on peut supprimer un DASH.
C’est parti !
Je vous propose ici d’utiliser la version node.js de gestion du bouton, sachez que les scripts pullulent sur internet pour chaque langage. si node.js ne vous convient pas, la libraire python scapy-python3 est conçue pour cela.
Installons node.js
J’ai pas mal galéré pour arriver à installer une version corecte de node.js sous Jessie, aussi je vous donne ici les étapes que j’ai suivi. Attention je n’ai pas testé si cette version est compatible avec d’autres appli node.js et je pense en particulier à Imperihone/Mdah.
J’ai donc suivi ce tuto qui fonctionne et qui installe des versions supérieures à 6 de node.js, on l’adapte pour utiliser les versions 7.x.x pour un arm7.
http://petrkout.com/electronics/install-node-js-6-on-raspberry-pi/
-
-
- Créer un dossier dans /domoticz/scripts nommé node et installons tous les outils node.js.
- On commence par un uname -a
-
Cela me renvoie arm7.1 donc je télécharge la bonne version ici
https://nodejs.org/en/download/current/
- en faisant un « copier » du lien de téléchargement pour ARM puis un coller dans la console raspberry après avoir tapé wget devant.
wget https://nodejs.org/dist/v7.2.1/node-v7.2.1-linux-armv7l.tar.xz tar -xvf node-v7.2.1-linux-armv7l.tar.xz cd node-v7.2.1-linux-armv7l sudo cp -R bin/ /usr/local/ sudo cp -R include /usr/local/ sudo cp -R lib/ /usr/local/ sudo cp -R share/ /usr/local/
Taper node -v puis npm -v qui doivent vous renvoyer un numéro de version.
Installons le node-dash-button
Nous allons utiliser ici le script node-dash-button https://github.com/hortinstein/node-dash-button.
Il nous faut les scripts/librairies suivantes pour intercepter la mac-address du bouton et utiliser le dash button.
sudo apt-get install libpcap-dev npm install --save dash-button npm install request cd node_modules/node-dash-button node bin/findbutton
Cette dernière instruction lance un programme qui écoute si il y a un dash bouton qui parle dans le WIFI et qui vous affiche son adresse MAC.
Et bingo, on voit un Amazon Technologies Inc !
La mac-address est donc 50:f5:da:9c:3a:13
Créons le script Domoticz pour le dash
Je crée un fichier dash1.js et j’y affecte ma mac-address
var dash_button = require('node-dash-button'); var dash = dash_button('50:f5:da:9c:3a:13', 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://ip_domoticz:port/json.htm?commande api souhaitée', { json: { key: 'value' } }, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } } ); });
J’y incorpore ensuite la commande API Domoticz JSON que je souhaite
Ici il s’agit de la commande pour basculer d’état un switch.
Ce qui donne (112 étant l’idx de ce switch dans mon Domoticz) et 192.168.1.81:8080 l’ip:port de mon Domoticz :
var dash_button = require('node-dash-button'); var dash = dash_button('50:f5:da:9c:3a:13', 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://192.168.1.81:8080/json.htm?type=command¶m=switchlight&idx=112&switchcmd=Toggle', { json: { key: 'value' } }, function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } } ); });
sudo chmod +x dash1.js
pour le rendre exécutable.
Testons et finalisons
on lance par sudo node dash1.js, il se lance et écoute les requêtes émises par le bouton.
un appui fait bien basculer l’état du switch. La preuve : c’est que je peux allumer la lumière du BBQ avec !
Sur la Amazon Dash la led clignote en blanc durant 5-6 secondes interdisant un autre appui immédiat. Attention donc à ces temps de latence (je pense que cela discute avec les serveurs amazon à chaque appui -> regles iptables ?) qui peuvent être rédhibitoires pour certaines applications.
Afin que ce script dash1.js se lance à chaque démarrage du raspberry
tapez crontab -e
et placez votre chemin vers le script précédée de @reboot
@reboot sudo node /home/pi/domoticz/scripts/node/dash1.js
un reboot pour confirmer que cela démarre correctement au lancement du Pi.
Merci à http://www.domo-blog.fr/lancer-scenario-eedomus-bouton-dash-amazon/dont j’ai repris en grande partie les idées et explications fort claires pour eedomus.
Si vous avez plusieurs Dash, dupliquez ce script sous un nouveau nom , changez les mac-address et actions à effectuer, ajoutez le dans crontab sous son nouveau nom.
Bonus
Merci à Rapinou du forum pour avoir indiqué un outil de dessin du dash pour refaire une étiquette : http://dash-button-maker.parseapp.com/
Suivez la discussion concernant les DASH dns ce thread du forum http://easydomoticz.com/forum/viewtopic.php?f=24&t=2747
Maintenant oui !
Une chose m’intrigue quand même et cela bien que j’en ai détourne quelques un.
Que va t’il ce passer le jour ou Amazon va ce demander où sont les Dash qui n’ont jamais commandés quoi que soit et qui ne sont même pas associé a un produit?
Amazon ou la marque qui sponsorise le Dash peut nous les facturer ?
Il nous les ont facturé en fait. Seulement ils nous ont fait une remise par la suite. Je pense difficilement concevable qu’Amazon revienne sur des remises déjà accordées à des clients, surtout Premium.
A voir si les détournements représentent une quantité importante (à mon avis non, les bidouilleurs ne sont pas légion, et même nous on ne va pas en prendre 50 chacun, le délai de réponse limite quand même son utilisation), mais au pire je pense qu’ils trouveront une parade pour ne plus que cette astuce fonctionne par la suite, mais sans effet rétroactif.
Merci pour le tuto 😉
Personellement je bloque sur la dernière partie, l’insertion dans le crontab. Le script devant s’exécuter en tant que root, je l’ai mis dans le crontab root mais il ne se lance pas. J’ai essayé en incluant le PATH dans le script puis dans le crontab directement, rien; en ajoutant le user root dans la ligne cron :
Mais rien de tout cela n’y fait. Pourtant quand je le lance dans la console il fonctionne parfaitement.
Je voudrais éviter de passer par une solution de type screen…
bonjour
un crontab -e devrait suffire et non pas un sudo crontab -e
Effectivement, ça fonctionne avec le sleep, c’est toujours mieux avec un sleep :p
Bonsoir,
je bloque sur la commande qui écoute la pression du dash, j’ai ces erreurs là :
node bin/findbutton
Error: socket: Operation not permitted
at new PcapSession (/home/dhs/domoticz/scripts/node/node_modules/node-dash-button/node_modules/pcap/pcap.js:49:39)
at Object.exports.createSession (/home/dhs/domoticz/scripts/node/node_modules/node-dash-button/node_modules/pcap/pcap.js:123:12)
at create_session (/home/dhs/domoticz/scripts/node/node_modules/node-dash-button/index.js:24:28)
at Object. (/home/dhs/domoticz/scripts/node/node_modules/node-dash-button/bin/findbutton:15:20)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
Failed to create pcap session: couldn't find devices to listen on.
Try running with elevated privileges via 'sudo'
/home/dhs/domoticz/scripts/node/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/dhs/domoticz/scripts/node/node_modules/node-dash-button/index.js:28:15)
at Object. (/home/dhs/domoticz/scripts/node/node_modules/node-dash-button/bin/findbutton:15:20)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:420:7)
at startup (bootstrap_node.js:139:9)
Mon pi est connecté au réseau en filaire, est-ce un problème ?
Bonsoir
Aucun rapport avec le fillaire du Pi
2 pistes
1 – il faut lancer node bin/findbutton avec une sudo devant
2 – Tu t’es planté dans la mac-adress du Dash button
Salut,
il manque une petite ligne pour l’installation :
npm install node-dash-button –save
sinon le répertoire node-dash-button ne sera jamais créé
et pour l’execution :
sudo node bin/findbutton