JavaScript and the Internet of Things
Find and compare Javascript IoT projects and hardware. Nodejs on your Pi, Arduino or custom Bluetooth or Wifi board.
Riding on the widespread popularity of JavaScript (particularly event-driven Node.js) in combination with low cost prototyping hardware, a new set of projects have emerged letting client side web developers use their skills to start controlling elements in the physical world.
The following Channel Guide will:
- Provide overview of currently available tools and frameworks.
- Help narrow down the right project fit based on hardware boards and spec comparison.
- List out tutorials and featured projects to help get you started.
11/01/2019
Featured Tool
Tessel 2
HIGHLIGHTS
- Two 10-pin module ports to add sensors and other external hardware
- Built-in Wifi and Ethernet
- Each module has an open source library on NPM, with instructions and tutorials available online.
REVIEWS & PRICING
Sparkfun $44.95
USER & TECHNICAL
Developer Docs
Community
API
Tools
CYLON.JS
A JavaScript framework for robotics, physical computing, and the Internet of Things. It makes it incredibly easy to command robots and devices....
JOHNNY-FIVE
Released by Bocoup in 2012 Johnny-Five is a JavaScript Robotics & IoT Platform. Programs can be written for Arduino (all models), Electric...
Additional Projects:
NodeRed - Node-RED is a tool for wiring together hardware devices, APIs and online services in new and interesting ways.
Ruff - A JavaScript runtime specialized in IoT development. Ruff makes embedded coding easy and more efficient by providing HAL, asynchronous I/O, event-driven programming.
KinomaJS - A runtime environment for delivering applications on a wide range of consumer electronic products. The primary programming interface to KinomaJS is an JavaScript API of global constructors, functions, and objects that define the containment hierarchy, appearance, behavior, and flow of applications and shells. KinomaJS also provides an optional XML programming interface.
JerryScript - Ultra-lightweight (run on devices with less than 64 KB of RAM and less than 200 KB of flash memory) JavaScript engine for the Internet of Things
CHIRIMEN - A Mozilla community Project
"CHIRIMEN is designed for Web developers to make real things connected to the Web only with Browser technologies like HTML, CSS and JavaScript."
NodeMCU
An open-source firmware and development kit that helps you to prototype your IOT product within a few Lua script lines
Mosca
Mosca is a node.js mqtt broker, which can be used: Standalone or Embedded in another Node.js application
Socket.IO
"Socket.IO enables real-time bidirectional event-based communication. It works on every platform, browser or device, focusing equally on reliability and speed."
Nodebots
"NodeBots are robots that are controlled by node.js."
node-serialport
"Node.js package to access serial ports for reading and writing'
heimcontrol.js
"Awesome home automation with Raspberry PI and Arduino using Node.js, MongoDB, HTML5 and Websockets"
Resin
"Javascript on your devices,as simple as'git push'"
onoff - GPIO access and interrupt detection with JavaScript
UPM (Useful Packages & Modules) Sensor/Actuator repository for MRAA
node-http2 - An HTTP/2 client and server implementation for node.js
i2c - Native bindings for i2c-dev. Plays well with Raspberry Pi and BeagleBone.
IoT.js - A framework for Internet of Things based on JerryScript(lightweight JavaScript engine) and libuv for asynchronous I/O event handling.
Silk - A free (as in free beer) firmware for a number of smartphones based on the open-source Android operating system with a nodejs layer on top of it that makes it possible to write programs and get access to hardware aspects using only simple JavaScript.
mdns - Adds multicast DNS service discovery, also known as zeroconf or bonjour to node.js. It provides an object based interface to announce and browse services on the local network.
Serverless - An application framework for building serverless web, mobile and IoT applications exclusively on AWS Lambda
Favor - A javascript/node.js library to abstract away complex and inconsistent hardware interfaces into a single simple to use API.
Arduino
duino
"Arduino framework for node.js"
EventedArduino
"Evented Arduino and Node.js"
noduino - A simple and flexible JavaScript and Node.js Framework for accessing basic Arduino controls from Web Applications using HTML5, Socket.IO and Node.js.
Raspi
"Pijs.io is a cloud-platform to write embedded applications for your Raspberry Pi, in JavaScript'
Hardware
Puck.js - An Open Source JavaScript microcontroller you can program wirelessly
Node.js* templates for the Intel® XDK IoT Edition
Sparkfun: Johnny-Five Inventor's Kit $124.95
- "The Johnny-Five Inventor’s Kit (J5IK) is your go-to source for developing projects using the Tessel 2 and the Johnny-Five programming framework."
Data Platforms
Zetta - "An open source platform built on Node.js for creating Internet of Things servers that run across geo-distributed computers and the cloud. Zetta combines REST APIs, WebSockets and reactive programming – perfect for assembling many devices into data-intensive, real-time applications."
Netbeast - An IoT development platform that empowers developers to easily create and deploy IoT apps - npm
IoT.me - A web application using Node.js as a server, Express.js for the framework and MongoDB as the database (the MEAN stack, without the A).
PageNodes - An in-browser fork of node-red. It requires no back-end server and is 100% browser-based.
Platform Specific:
ibmiotf - The node.js client is used for simplifying the interacting with the IBM Watson Internet of Things Platform. The following libraries contain instructions and guidance on using the nodejs ibmiotf node to interact with devices and applications within your organizations.
AWS IoT SDK for JavaScript - The aws-iot-device-sdk.js package allows developers to write JavaScript applications which access the AWS IoT Platform via MQTT or MQTT over the Secure WebSocket Protocol. It can be used in Node.js environments as well as in browser applications.
iothub-explorer - A sample CLI tool to manage device clients using the Azure IoT Hub service SDK.
Tutorials
- Build an IoT Bluemix app in Node.js with sensors on Raspberry Pi - 4/26/2016
- Bringing Node.js to Windows 10 IoT Core - 5/12/2015
- Using NodeMCU Board to Send Data to DeviceHub IoT Platform - Made by Leonardo Ribeiro Gonçalves - DeviceHub.net and ESP 5/8/2016
Additional resources
Presentations & Resources:
Overview
- Programming the Internet of Things Using Node.js* and HTML5 (PDF) - 6/23/2015
- Losant: Node.js and The Internet of Things - 1/30/2016
- Embedded JavaScript, HTML5 and the Internet of Things - Jesse Cravens
- Creating the Internet of Things with JavaScript - Tom Hughes-Croucher
- A language for the Internet: Why JavaScript and Node.js is right for Internet Applications - Tom Hughes-Croucher
- Video: Realtime Hardware with Node.js - Emily Rose
- Getting Physical: Networked Hardware with Node.js - Ted Hayes
- Video: My Sensors Love Node.js - Ward Cunningham
- How To Electrocute Yourself using the Internet - Alexander Roche A talk about the Internet of things, Arduino and JavaScript frameworks including BreakoutJS and Johnny-Five
- An Internet Of Things System – How To Build It Faster - Matteo Collina
- Hardware Hacking With JavaScript - Feb 26th
- HTML5 Powered Internet Of Things Products - Clickside - 10/21/2014
Projects:
- Using Node-RED to scan for BLE devices - Charalampos Doukas
Arduino Focused
- Web-scale Arduino - John Graham-Cumming
- Evented Arduino (with Node.js) - Jerry Sievert
Books
- JavaScript on Things: Hardware for Web Developers - Lyza Danger Gardner - 7/2016
- Learning JavaScript Robotics – Kassandra Perch - 11/25/2015
- JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry Pi, Arduino, and BeagleBone - Rick Waldron and Backstop Media - 5/8/2015
General:
- Website: The Floppy Disk: Javascript is the new C" - Robert Drummond
- Website: TangibleJS
- Event: NodePDX 2013 "Portland's home grown hardware hacking, code slinging conference around Node.js and JavaScript.
See Also: Internet of Things prototyping hardware, Arduino Wireless, Raspberry Pi Wireless