Broken Buttons

From LVL1
Jump to navigation Jump to search

What's going on here?

  • Problem: People don't email broken@lvl1.org every time something breaks.
  • Why?: My guess, no quick access to email/computer to email the group.
  • Solution: Deploy a number of Amazon Dash Buttons around equipment. If something breaks or we're out of stock of something, instruct patrons to press the corresponding button.

Setup

As of January 11, 2016:

Hardware

  • Raspberry Pi B+
  • 4GB+ SD Card
  • Dash Button
  • Monitor & Keyboard

Steps

  • Step 1: Download Raspbian Jessie Lite
  • Step 2: Install image to SD card using Win32DiskImager
  • Step 3: Insert SD card to Raspberry Pi, connect monitor & keyboard, boot Raspberry Pi
  • Step 4: Configure wifi
  • Step 5: Update & Upgrade
    • sudo apt-get update
    • sudo apt-get upgrade
  • Step 6: Install Node 4.0.0
  • Step 7: Install git and libpcap-dev
    • sudo apt-get install git libpcap-dev
  • Step 8: Create directory ~/dash and cd there
    • mkdir ~/dash
    • cd ~/dash
  • Step 9: Install nodemailer (version 0.7.1, 1.0.0 (default) is broken at time of writing)
    • npm install nodemailer@0.7.1
  • Step 10: Install dash button library
  • Step 11: Run node-dash-button's findbutton app
    • cd ~/dash/node_modules/node-dash-button
    • sudo node bin/findbutton
  • Step 12: Configure Amazon Dash Button
    • Follow the instructions given to you in the box BUT STOP BEFORE YOU SELECT A PRODUCT TO ORDER (hit the back button on your phone, exit the app, etc)
  • Step 13: Press the Amazon Dash button once, watch raspberry pi terminal for the button's MAC address
  • Step 14: Create application
    • nano dash.js
    • Enter this code:
var dashbutton = require('node-dash-button');
var nodemailer = require('nodemailer');

var smtpTransport = nodemailer.createTransport("SMTP",{
   service: "Gmail",
   auth: {
       user: "your@gmail.com",
       pass: "yourpassword"
   }
});

var dashTest = dashbutton("a0:02:dc:d2:f5:67");
dashTest.on("detected", function(){
        console.log("Found button");
        smtpTransport.sendMail({
                from: "your@gmail.com", // sender address
                to: "some_other@email.com", // comma separated list of receivers
                subject: "Something is Broken! - This is a test.", // Subject line
                text: "Something is broken!"
        }, function(error, response){
                if(error){
                        console.log(error);
                }else{
                        console.log("Message sent: " + response.message);
                }
        });
});
  • Step 15: Run application
    • sudo node dash.js