Page 1 sur 1

[Tuto] Dash Button sous Node Red

Publié : 29 nov. 2016, 08:52
par T0ny Oh
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.
Le système utilisé ici est Raspbian Jessie. Node-red doit être lancé sous Root !
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.

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"
On ne redémarre pas tout de suite le service on va d'abord installer le plugin pcap.

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"
On peut maintenant relancer node-red "service nodered start"

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&param=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":[[]]}]
Vous devriez obtenir ceci :

Image

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 cela à fonctionné on doit voir des adresses MAC apparaître.
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.

Re: Dash Button sous Node Red

Publié : 29 nov. 2016, 09:23
par deennoo
Merci pour ce debut de tuto.

Dans le cas ou tu alimentes ou observe un boutton, pourquoi tu n'as pas fait le choix du MQTT, plutôt que d'utiliser les requêtes http ?

Mqtt est en natif pour domoticz.

Re: Dash Button sous Node Red

Publié : 29 nov. 2016, 09:31
par T0ny Oh
J'était justement entrain de lire des articles sur le sujet. J'ai découvert MQTT très récemment et je n'avait pas eu le temps de m'y attarder. Disons que j'ai encore du mal à assimiler son fonctionnement.