Skip to content

Instantly share code, notes, and snippets.

@jonathanbarton
Last active August 18, 2017 13:28
Show Gist options
  • Save jonathanbarton/1990c78b53913ca1121d3da1be02e928 to your computer and use it in GitHub Desktop.
Save jonathanbarton/1990c78b53913ca1121d3da1be02e928 to your computer and use it in GitHub Desktop.
watchButton.js
const awsIot = require('aws-iot-device-sdk');
const _ = require('lodash');
const rpio = require('rpio');
const BUTTON_PIN = 40;
const PORT = 8883;
const TEAM_NUMBER = 1;
const PUSH_BUTTON = 1;
// const KEY_SWITCH = 2;
let device = awsIot.device({
host: "ao6epnv875g5b.iot.us-east-1.amazonaws.com",
clientId: "pi_arya",
caPath: "certs/root-CA.crt",
certPath: "certs/0e238d771c-certificate.pem.crt",
keyPath: "certs/0e238d771c-private.pem.key",
region: "us-east-1",
port: PORT
});
device.on('connect', function() {
console.log('connected');
rpio.open(BUTTON_PIN, rpio.INPUT, rpio.PULL_UP);
rpio.poll(BUTTON_PIN, _.debounce(watchButtonPress,1000), rpio.POLL_LOW);
});
function getShadowUpdate(desiredObject) {
return JSON.stringify({
state: {
desired: desiredObject
}
});
}
function watchButtonPress(pin) {
var buttonPress = {
team: TEAM_NUMBER,
type: PUSH_BUTTON,
timestamp: +new Date()
};
console.log('PUBLISH', buttonPress);
device.publish('$aws/things/pi_arya/shadow/update', getShadowUpdate(buttonPress));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment