AmazonDashButtonの最初の一歩ということでLED制御をしてみました
特にひねってはないですが作ったということで記事します(汗
プログラムコードを載せる前に完成形した動画
しょーもないけどAmazonダッシュボタンでLチカ pic.twitter.com/6mL6msfydp
— みやかわ (@momijinn_aka) 2017年8月22日
準備
私はNodeJsでコーディングしました
NodeJsの環境はある前提で書きます
またAmazonDashDashButtonはWifiに接続済みという前提で記述します
以下のものをインストール
$ sudo apt-get install libpcap-dev $ npm install node-dash-button
AmazonDashButtonをMacアドレスを検索
$cd node_modules/node-dash-button/bin/ $sudo node findbutton #AmazonDashButtonを押しそれっぽいMacアドレスをコピー(この場合は一番下のがそれっぽい) Possible dash hardware address detected: 60:57:18:de:93:dd Manufacturer: Intel Corporate Protocol: arp Possible dash hardware address detected: 60:57:18:de:93:dd Manufacturer: Intel Corporate Protocol: arp Possible dash hardware address detected: b8:27:eb:c9:dd:8b Manufacturer: Raspberry Pi Foundation Protocol: arp Possible dash hardware address detected: 40:b4:cd:9a:78:00 Manufacturer: unknown Protocol: udp
プログラム
GPIO17pinにLEDをつけてAmazonDashButtonが押される度にLEDがチカチカします
必ず管理者権限で実行してください(GPIOの操作のため)
思いつきでわーって書いたので汚いです。。
var fs = require('fs'); var dash_button = require('node-dash-button'); const execSync = require('child_process').execSync; var pin = 17; var dash_ip = '40:b4:cd:9a:78:00'; var val = 0; //initialie led try { fs.writeFileSync('/sys/class/gpio/export', pin); fs.writeFileSync('/sys/class/gpio/gpio' + String(pin) + '/direction', 'out'); fs.writeFileSync('/sys/class/gpio/gpio' + String(pin) + '/value', val); } catch(e) { fs.writeFileSync('/sys/class/gpio/unexport', pin); console.log('catch: ' + e); fs.writeFileSync('/sys/class/gpio/export', pin); fs.writeFileSync('/sys/class/gpio/gpio' + String(pin) + '/direction', 'out'); fs.writeFileSync('/sys/class/gpio/gpio' + String(pin) + '/value', val); } // Dash_button const dash = dash_button(dash_ip, null, null, 'all'); dash.on('detected', () => { if (val == 1) { val = 0 }else{ val = 1 } try{ fs.writeFileSync('/sys/class/gpio/gpio' + String(pin) + '/value', val); }catch(e) { fs.writeFileSync('/sys/class/gpio/unexport', pin); } if (val == 1) { console.log("LED ON"); }else{ console.log("LED OFF"); } });
コメント