[Tuto] Dash Button sous Node Red
Publié : 29 nov. 2016, 08:52
Bonjour,
Suite au sujet concernant le Dash Button j'ai fait quelques recherches histoire de pouvoir l'utiliser avec Node-red. Dans mon cas celui-ci est installé sur le même RPi que Domoticz mais cela n'a pas d'importance. Je part du principe que Node Red est déjà installé et fonctionnel.
A savoir que pour utiliser le plugin pcap il est nécessaire de lancer node-red en root (au passage si quelqu'un sait comment éviter ça ...).
Configurer le dash Button
Si ce n'est pas déjà fait suivez la procédure depuis l’application Amazon pour Android ou IOs. Mais attention arrêtez-vous avant le choix du produit (important). Quittez l'application et en relancez là pour désactiver les notifications (histoire de ne pas être embêté a chaque fois qu'on appuiera sur le bouton).
Démarrer Node Red en root
Si chez vous il démarre déjà en root vous pouvez sauter cette étape.
Installation du plugin
Rendez-vous ensuite sur l'interface de Node-red (http://localhost:1880/ - par défaut) , cliquez sur le menu import > Clipboard.
Collez-y l'exemple suivant :
Vous devriez obtenir ceci :

Dans l'élement interface vous pouvez éventuellement paramétrer la carte réseau à écouter (eth0 - par défaut).
Dans switch on ajoute une ligne par adresse MAC, ainsi à chaque ajout une sortie spécifique serra créée. Il vous suffira ensuite d'exécuter ce que vous voulez. De cette manière on peux en quelques clics ajouter, enlever ou modifier très facilement un Dash Button.
Trouver l'adresse du Dash button
Personnellement je procède comme ceci pour "deviner" quelle MAC est un Dash :
Si l'une d'entre elle commence par l'une des séquences suivantes il est fort probable qu'il s'agisse de votre Dash button.
Adresses MAC correspondant à "Amazon Technologies Inc." :
- A0:02:DC
- 74:75:48
- 74:C2:46
- F0:D2:F1
- 88:71:E5
- F0:27:2D
- 0C:47:C9
- AC:63:BE
- 44:65:0D
- 50:F5:DA
- 68:54:FD
- 84:D6:D0
- 34:D2:70
Paramétrer le "switch"
Maintenant que l'adresse mac est récupérée il suffit de la reporter dans le module switch. Ensuite je vous laisse prendre soins de créer les actions qui devrons être déclenchées lorsque tel ou tel adresse sera détectée.
Dans cet exemple j'envoie des requettes vers Domoticz, mais on peux faire beaucoup plus. D'ailleurs c'est la raison pour la-quelle j'utilise Node-Red en complément de Domoticz et je migre petit à petit mes script LUA en Flow sous Node-Red, car beaucoup plus souple, plus complet et modulaire avec la quantité de plugins mis à disposition par la communauté.
J'espère vous avoir donné envie de mettre un peu les mains dans Node-Red, qui est une appli qui vaut vraiment le détour.
N'hésitez par à me le dire si vous souhaitez que j’éclaircisse certains points.
Suite au sujet concernant le Dash Button j'ai fait quelques recherches histoire de pouvoir l'utiliser avec Node-red. Dans mon cas celui-ci est installé sur le même RPi que Domoticz mais cela n'a pas d'importance. Je part du principe que Node Red est déjà installé et fonctionnel.
Le principe est simple, on utilise un plugin Node-red basé sur la librairie pcap qui va sniffer la table ARP. Dès qu'une MAC correspondant à un Dash Button serra détectée, on déclenchera une action.Le système utilisé ici est Raspbian Jessie. Node-red doit être lancé sous Root !
A savoir que pour utiliser le plugin pcap il est nécessaire de lancer node-red en root (au passage si quelqu'un sait comment éviter ça ...).
Configurer le dash Button
Si ce n'est pas déjà fait suivez la procédure depuis l’application Amazon pour Android ou IOs. Mais attention arrêtez-vous avant le choix du produit (important). Quittez l'application et en relancez là pour désactiver les notifications (histoire de ne pas être embêté a chaque fois qu'on appuiera sur le bouton).
Démarrer Node Red en root
Si chez vous il démarre déjà en root vous pouvez sauter cette étape.
- en root "sudo su"
- arrêter node-red "service nodered stop"
- déplacer le dossier de config (si il existe) "mv /root/.node-red /root/node-red.bkp"
- récupérer le dossier de config de l'ancien utilisateur (ici l'utilisateur **pi**) "cp -R /home/pi/.node-red /root"
- éditer le service "nano nano /etc/systemd/system/nodered.service"
- modifier les valeur "User" et "Group" en mettant "root"
- modifier la valeur de "WorkingDirectory" par "/root"
- quitter et enregistrer
- recharger avec "systemctl daemon-reload"
Installation du plugin
- en root "sudo su"
- S'assurer que node red est bien arrêté "service nodered stop"
- mise a jour "apt-get update"
- installation de la librairie "apt-get install libpcap-dev"
- dans le répertoire utilisateur "cd /root/.node-red"
- Installer le plugin "npm install node-red-contrib-pcap"
Rendez-vous ensuite sur l'interface de Node-red (http://localhost:1880/ - par défaut) , cliquez sur le menu import > Clipboard.
Collez-y l'exemple suivant :
Code : Tout sélectionner
[{"id":"bb7f6c46.2048d","type":"pcap","z":"93fa914d.cf3b","name":"interface","ifname":"eth0","output":"string","filter":"arp","path":"payload.shost","x":170.765625,"y":100.75,"wires":[["d90ea591.c99e88","e4f9a9d.55d7758"]]},{"id":"d90ea591.c99e88","type":"debug","z":"93fa914d.cf3b","name":"","active":true,"console":"false","complete":"payload","x":340.7656555175781,"y":205.74996948242188,"wires":[]},{"id":"e4f9a9d.55d7758","type":"switch","z":"93fa914d.cf3b","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"22:22:22:22:22:22","vt":"str"},{"t":"eq","v":"00:00:00:00:00:00","vt":"str"},{"t":"eq","v":"11:11:11:11:11:11","vt":"str"}],"checkall":"true","outputs":3,"x":342.7656555175781,"y":99.74996948242188,"wires":[["6e311979.1889b8"],["9a08967b.bbc0d8"],["b0f47aff.264ed8"]]},{"id":"6e311979.1889b8","type":"http request","z":"93fa914d.cf3b","name":"","method":"GET","ret":"txt","url":"http://localhost:8080/json.htm?type=command¶m=switchlight&idx=10&switchcmd=Set%20Level&level=0","tls":"","x":554.765625,"y":68.41665649414062,"wires":[[]]},{"id":"9a08967b.bbc0d8","type":"http request","z":"93fa914d.cf3b","name":"","method":"GET","ret":"txt","url":"","tls":"","x":555.765625,"y":106.41665649414062,"wires":[[]]},{"id":"b0f47aff.264ed8","type":"http request","z":"93fa914d.cf3b","name":"","method":"GET","ret":"txt","url":"","tls":"","x":555.7655944824219,"y":145.41665649414062,"wires":[[]]}]

Dans l'élement interface vous pouvez éventuellement paramétrer la carte réseau à écouter (eth0 - par défaut).
Dans switch on ajoute une ligne par adresse MAC, ainsi à chaque ajout une sortie spécifique serra créée. Il vous suffira ensuite d'exécuter ce que vous voulez. De cette manière on peux en quelques clics ajouter, enlever ou modifier très facilement un Dash Button.
Trouver l'adresse du Dash button
Personnellement je procède comme ceci pour "deviner" quelle MAC est un Dash :
- Déployer le Flow
- sur la droite onglet debug
- sélectionner "current flow"
- cliquer sur la corbeille pour vider les logs
- appuyer sur le Dash Button
- Attendre une dizaine de secondes
- Chez moi il faut environ quatre secondes pour le voir apparaitre dans le log
- désactiver le debug (pour ne pas être floodé)
Si l'une d'entre elle commence par l'une des séquences suivantes il est fort probable qu'il s'agisse de votre Dash button.
Adresses MAC correspondant à "Amazon Technologies Inc." :
- A0:02:DC
- 74:75:48
- 74:C2:46
- F0:D2:F1
- 88:71:E5
- F0:27:2D
- 0C:47:C9
- AC:63:BE
- 44:65:0D
- 50:F5:DA
- 68:54:FD
- 84:D6:D0
- 34:D2:70
Paramétrer le "switch"
Maintenant que l'adresse mac est récupérée il suffit de la reporter dans le module switch. Ensuite je vous laisse prendre soins de créer les actions qui devrons être déclenchées lorsque tel ou tel adresse sera détectée.
Dans cet exemple j'envoie des requettes vers Domoticz, mais on peux faire beaucoup plus. D'ailleurs c'est la raison pour la-quelle j'utilise Node-Red en complément de Domoticz et je migre petit à petit mes script LUA en Flow sous Node-Red, car beaucoup plus souple, plus complet et modulaire avec la quantité de plugins mis à disposition par la communauté.
J'espère vous avoir donné envie de mettre un peu les mains dans Node-Red, qui est une appli qui vaut vraiment le détour.
N'hésitez par à me le dire si vous souhaitez que j’éclaircisse certains points.