For the past several months my good friend Zak and I have spent some time together working on a project called Remote Wiring and we've finally reached a point where it's ready for beta.
What is Remote Wiring?
Remote Wiring allows you to control an Internet of Things hardware platform from a Linux or MacOS application (Windows support coming) using the Wiring interface. The concept is very simple. Install Firmata on a hardware platform and then write all of the code to control that platform on your Linux or Mac. You never have to touch the hardware platform code.
A Little Background
Suppose you have an application that you previously created. We'll use a simple reminder app as an example. It's a great little app but you realize that it's got a fever and the only cure is more IoT. You want your simple reminder app to have some interaction with the physical world. Maybe instead of just reminding you every morning that it's time for your coffee, you want it to actually start your coffee machine. Before Remote Wiring you really had two choices. The first is to buy something like a WeMo plug or other off-the-shelf smart outlet and hope there is an SDK and instructions for using it. Often times there is no SDK and you're left scouring the interwebs looking for some code hack that will let you control your switch. The other option, is the straight IoT Maker way; hacking together an Arduino and a relay to control your coffee goodness. If you choose the latter you're immediately faced with additional complexity. You're no longer writing just your local app, you're writing Arduino firmware too.
Remote Wiring To The Rescue
Don't get me wrong, writing Arduino sketches is a ton of fun but what you really want to do is focus on your sweet reminder app. With Remote Wiring you can do just that. All you do is slap on a relay shield, hook up your coffee pot and load StandardFirmata.ino onto your Arduino. It's available right from within the Arduino IDE. You don't have to write a single line of code for your Arduino. Once that's running you simply add references to the remote wiring libraries in your reminder app and you can access the Arduino pins as if you were writing an Arduino sketch.
// This is your reminder app code board.pinMode(7, OUTPUT); // set the relay pin to be an output board.digitalWrite(7, HIGH); // turn the relay on
Looks a lot like an Arduino sketch doesn't it? That's because we've created Remote Wiring to follow the Wiring protocol made popular by the Arduino ecosystem.
Getting Started
Getting started is very simple and takes less than 5 minutes. There is a complete Quick Start guide over in the Github repository to get you going.
https://github.com/remote-wiring/remote-wiring#quick-start-guide
Supported Hardware Platforms
Remote Wiring relies on a serial transport layer to communicate with the Firmata code running on the remote device. Currently we only have a USB Serial implementation with plans to add other implementations as soon as possible including WiFi and BLE. For now you can play with Remote Wiring on any platform that supports running StandardFirmata 2.5.6. This includes:
- Most of the Arduino family of devices
- Particle Photon and Electron
Questions or Issues
We're really excited about the kinds of projects Remote Wiring enables and are excited for people to get their hands on it. If you have feedback or run into any trouble please submit an issue on the repository.