Domoticz et Dash button Amazon

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é.

Résultat de recherche d'images pour "dash button"
C’est incroyable ce que le marketing peut inventer pour nous faire consommer toujours plus. 👿
Et bien luttons et utilisons le petit bouton magique ( 😳 ) pour autre chose.
Piloter un switch par exemple.
Bien sur cela existe déjà, cela peut être fait via des simple esp8266 et un bouton, mais les non bricoleurs comme moi seront heureux de trouver un gadget tout fait.

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.

stop_config

dash_no_product

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.

dash_domoticz_01

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 !

dash_domoticz_02

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.

/json.htm?type=command&param=switchlight&idx=IDX&switchcmd=Toggle

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&param=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.

dash_domoticz_03

un appui fait bien basculer l’état du switch. La preuve : c’est que je peux allumer la lumière du BBQ avec !

dash_domoticz

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/

dz_dash_button

Suivez la discussion concernant les DASH dns ce thread du forum http://easydomoticz.com/forum/viewtopic.php?f=24&t=2747

Maintenant oui !

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz.

8 Comments

  1. 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 ?

  2. 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 😉

  3. 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 :

    @reboot root node /home/pi/domoticz/scripts/node/dash1.js

    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…

  4. 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 ?

  5. 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

  6. 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

Comments are closed.