Published on December 4, 2015
WebRTC is common place for human-to-human collaboration applications, but is WebRTC applicable to the Internet of Things (IoT)? Can WebRTC be useful for person-to-machine and machine-to-machine interaction? The EasyRTC team decided to find out with a practical experiment earlier this year.
We had four main questions:
To find out the team built a prototype. We developed an Android Java interface to control motors, lights and servos as well as control streaming data from a number of simple sensors and a camera. The client ran on both an single board computer (using GPIO pins for I/O) and on an android phone (using bluetooth to access a microcontroller supplying I/O). We conducted experiments with a series of displays and controls. Our eventual implementation combined both electronic and software engineering to provide live data from several common sensor types including:
The reach of commands and signals sent via WebRTC was extended to go across Bluetooth for the purpose of camera control and sensor data gathering. This allowed control over embedded devices to be extended out over the Internet with better latency and security features than traditional approaches. We were able to provide encrypted control over motors, lights, and camera gimbals.
Now that we had machine control with WebRTC, we needed to find a way to integrate human interaction. To do this we leverage previous work we had done on tawk.com to build a browser-based visualization and control dashboard. This allowed the auto-connection of device connectors with a modular display mechanism which was intended to allow users to design and build their own visualizations and controls for dashboard integration.
A subset the goals for the prototype was to digest sensor data from multiple Internet of Things (IoT) devices, display data for multiple IoT sensors, and send control commands to accomplish tasks in a collaborative environment. Based on this, an interface was required to allow IoT device operators to make quick decisions and send educated control commands to accomplish their tasks efficiently. We experimented with various types of animated graphs and widgets in an attempt to visualize the connected IoT devices data. We also made some control widgets to provide an interface to remotely operate devices.
Can WebRTC be used with IoT - yes! Was it easy - no.
Our experiments got us excited enough to start a new project the leverages EasyRTC to continue working on this problem space. That project is now a company called Skedans. In addition, this work has inspired some underlying architectural redesign to improve EasyRTC and extend it to additional IoT, autonomous vehicles, and drone applications. More on that is coming.