KEMBAR78
Node.js and The Internet of Things | PDF
N O D E .J S
&
T H E I N T E R N E T
O F T H I N G S
C HARLIE KEY @zwigby
LOSANT @LosantHQ
1.28.2016
2
WHO AM I?
CHARLIE KEY
CEO & Co-Founder
Losant
PREVIOUSLY
CEO & Co-Founder
Modulus
Losant provides a complete developer platform to quickly,
securely, and easily build complex connected solutions.
CONNECT ANALYZE REACT
Connect and manage
thousands of devices.
Turn raw data into
useful insights.
Make data-driven
decisions in real-time.
4
WHAT IS
THE INTERNET
OF THINGS?
“THE INTERNET AS A NETWORK
HAD THE POTENTIAL TO BECOME
LIKE A NERVOUS SYSTEM IF WE
ADDED SENSING CAPABILITY.”
KEVIN ASHTONP&G, UK (1999) – ASSISTANT BRAND
MANAGER, OLAY
6
IoT – THE INTERNET OF THINGS
IoT is a term that represents a collection of ideas, devices, and processes.
Each thing is represented by a device or sensor.
These things are usually working together to create larger solutions by
sending and reacting to data from an ecosystem.
IT’S ABOUT ADDING VALUE
AND SOLVING PROBLEMS-
LIVES
BUSINESSES
CUSTOMERS
8
WHY DOES IoT MATTER?
http://www.gartner.com/newsroom/id/3165317
0
5
10
15
20
25
NUMBER OF CONNECTED DEVICES
2014 2015 2016 2017 2018 2019 2020
TODAY
billionsofdevices
9
IoT TODAY
THE SMART HOME
SMART
APPLIANCES
PRESENCE
SENSOR
SMART
OUTLETS
NEST
THERMOSTAT
PHILIPS HUE
BULBS
HOME
SECURITY
MANUFACTURING
AUTOMATED
PRESENCE
SENSOR
TEMERATURE
SENSOR
MOTOR
SENSOR
SMART
DELIVERY
REMOTE
MONITORING
HUMIDITY
SENSOR
THE SMARTER SELF
FITBIT
HEART RATE
BREATHING
SENSOR
LUMO RUN
SHORTS
SMART
RUNNING SHOES
13
THE IoT LIFECYCLE
COLLECT COMMUNICATE ANALYZE ACT
14
COLLECT
Devices and sensors are collecting data everywhere.
HOME CAR OFFICE MFG PLANT
15
COMMUNICATE
Sending data and events through networks to some destination
A CLOUD PLATFORM PRIVATE DATA CENTER HOME NETWORK
16
ANALYZE
Creating information from the data
MACHINE LEARNING BUILDING REPORTS FILTERING /
PAIRING
IT DOWN
17
ACT
Taking action based on the information and data
COMMUNICATE
W/ ANOTHER
MACHINE
(M2M)
SEND A NOTIFICATION
(SMS, EMAIL, TEXT)
TALK TO
ANOTHER
SYSTEM
JAVASCRIPT
+
IoT
Empowering everyone to build a more connected world.
19
WHY JAVASCRIPT?
The current toolsets are
hard to learn and use.
Low Level languages mean
more development time
and issues.
20
WHY NODE.JS?
48% of developers are using
Node.js at IoT companies
npm
231643
total packages
SUPPORTED HARDWARE
BEAGLEBONE BLACK
INTEL EDISON RASPBERRY PI
INTEL GALILEO LILINO ONE
TESSEL 2
22
SUPPORTED COMMUNICATION
XMPP
npm install node-xmpp-client
MQTT
npm install mqtt
HTTP
npm install request
CoAP
npm install coap
AMPQ
npm install ampq
STOMP
npm install stomp-client
and so many more…
23
NODE.JS LIBRARIES
JOHNNY-FIVE
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var led = new five.Led(13);
led.blink(500);
});
var Cylon = require("cylon");
Cylon.robot({
connections: {
arduino: { adaptor: 'firmata', port: '/dev/ttyACM0' }
},
devices: {
led: { driver: 'led', pin: 13 }
},
work: function(my) {
every((1).second(), function() {
my.led.toggle();
});
}
}).start();
INTEL EDISON
WIFI
BLUETOOTH
LINUX BASED
25
EDISON DETAILS
Dual Core Atom CPU 500 MHz
MCU 100 MHz
Wi-Fi & Bluetooth LE
Yocto Linux
40 GPIO
MANY BREAKOUT BOARD
OPTIONS
TINY LITTLE COMPUTER
26
EDISON TIPS
var m = require('mraa'); //require mraa
var myLed = new m.Gpio(13); //LED hooked up to digital pin 13
myLed.dir(m.DIR_OUT); //set the gpio direction to output
var ledState = true; //Boolean to hold the state of Led
function periodicActivity()
{
myLed.write(ledState ? 1:0); //write led state to pin
ledState = !ledState; //invert the ledState
setTimeout(periodicActivity,1000); //call after 1 second
}
periodicActivity(); //call the periodicActivity function
USE MRAA
npm install mraa
27
EDISON SENSORS
USE GROVE KIT
28
EDISON COMPATIBILITY
USE UPM (USEFUL PACKAGES & MODULES)
https://github.com/intel-iot-devkit/upm
https://github.com/intel-iot-devkit/upm/tree/master/examples/javascript
// Load PN532 module
var pn532 = require('jsupm_pn532');
// Instantiate an PN532 on I2C bus 0 (default) using gpio 3 for the
// IRQ, and gpio 2 for the reset pin.
var myNFCObj = new pn532.PN532(3, 2);
if(myNFCObj.readPassiveTargetID(pn532.PN532.BAUD_MIFARE_ISO14443A
, uid, uidSize, 2000))
{
// found a card – do something
}
29
WHERE DO WE GO
FROM HERE
SMALLER & MORE POWERFUL DEVICES
JS IN SMALLER FOOTPRINT
BETTER HW SUPPORT
WIDER CONNECTIVITY
30
“Anything with a battery will have
network connection.”
-Ben Wen
THE FUTURE WORLD
31
THANK YOU
CHARLIE KEY
charlie@losant.com
@zwigby
LOSANT
@LosantHQ

Node.js and The Internet of Things

Editor's Notes

  • #24 Tethered vs not tethered