Does WebRTC have a place in the Internet of Things? This is a question I’ve often wondered and an area I’m expecting to see a lot of growth in WebRTC development.
At WebRTC Boston today, I had a chance to explore this question in a session on “Putting WebRTC into Things.” In this talk, I gave an overview of how people are experimenting with WebRTC and the IoT. In this presentation, which I’ve summarized below, I gave examples in telehealth, with Google Glass, in robotics, remote field support, and more. The slides are also up on Slideshare.
[Update] The video is also available now if you prefer to watch it instead of reading the slides below!
Do you know of more applications combining WebRTC and IoT? Use the comments section to tell me about them!
WebRTC can be about so much more than video chat, and we’re just starting to see the potential of WebRTC in the Internet of Things. Today I want to discuss how WebRTC could be used in IoT applications for a variety of use cases, including remote sensors, telehealth, and integration of Google Glass. My name is Arin Sime, and I’m founder of WebRTC.ventures – we’re a custom design & development shop specializing in WebRTC applications, and I’m also editor of RealTimeWeekly, a newsletter on real time technologies such as WebRTC.
Have any of you seen this particular stock photo before? I am personally guilty of using this one in way too many WebRTC talks, and so I’m going to try and minimize the number of generic video chat images in this presentation. When talking about the Internet of Things, there is a lot more going on than video, though obviously video is still a factor in why WebRTC is appealing for IoT apps so we can’t get away from it entirely. My goal in this talk is to give you a little inspiration for the many ways we could incorporate WebRTC into IoT applications.
The Data Channel built into WebRTC is one of the big reasons that WebRTC is much more flexible than just video chat.
We could use Data Channels for basically anything you want to use WebSockets for – the difference is that anything you send over the data channel will be encrypted and peer to peer. So you have more security than a Web Sockets server, and less traffic on that server since it’s peer to peer. The most common use of the Data Channel in WebRTC apps is to provide the text chat that goes along with the video chat, but we could also use that channel for sending emergency alerts, data sensor measurements, or to send commands to devices that we want to control.
Telehealth is one area where I see WebRTC and the Internet of Things colliding in the future. We already see a plethora of wearable personal fitness devices that stream data up to the cloud for your personal use and analysis. It makes sense that in the near future we will see more medical devices that go home with patients which will also stream data back to the hospital or to their doctors. So the Internet of Things and healthcare is already starting.
Likewise, telehealth is a major industry vertical for WebRTC. The secure and encrypted peer to peer nature of WebRTC has made it very attractive to those looking to connect medical care providers with remote patients.
And so an intersection of WebRTC and the IoT, specifically for medical devices, is definitely coming soon. We’ve had a number of potential clients talk to us about integrating other data into a WebRTC based telehealth session. One quick example that I’d like to show you is our client MedZed, whose PACTVideo solution integrates the typical 1-1 video chat with an additional exam camera and a live audio feed from a digital stethoscope.
In addition, we can imagine many other types of sensor data being integrated into these conversations in the future. For example, we experimented last year with the heart rate monitor on an Apple Watch and made a demo app to detect a heart attack and automatically contact your loved ones via SMS and an automated phone call. There was no WebRTC in that prototype we built, but you could easily imagine incorporating a WebRTC video chat into this as well through a native app on the iPhone that your Apple Watch is connected to.
For more on that Apple Watch app we built, see “WebRTC.ventures Apple Watch app wins TADHack Telestax award”
If you don’t mind me including Google Glass in the list of “Things” devices, I think it’s important.
The first version of the Glass was a flop with consumers, but Google has announced plans to make the next version with a focus on commercial business uses, like in warehouses and factories. A glass has uses in telehealth and remote surgery like this demo video shows. We could also use one for remote support of field technicians.
Here’s the demo video of a remote telehealth app with Google Glass that I showed in the presentation, the HCview Demo by Paul Szotek:
Developing for the Google Glass with WebRTC is a challenge though. In this video my business partner David is experimenting with live streaming from a Google Glass via WebRTC. In a minute, he’ll mix up a Grasshopper drink while wearing his Google Glass.
When building this test app, we ran into a lot of technical challenges. The first version of the Glass doesn’t have a lot of processing power, and it overheats quickly. So trying to maintain high quality color video is a real challenge, and the connection often dropped as a result.
Here’s the video of David testing with his Google Glass that I showed in the presentation:
This is the basic architecture you’ll need to do something similar. The Glass pairs up with an Android phone, and so you need an app for that phone which will handle the signaling back to where ever you are sending video. In our case that’s a NodeJS server, with socket.io based signaling. Visitors to the site will then be established with the Google Glass on a Peer to Peer WebRTC connection.
Video annotation is an interesting way to consider the intersection of IoT and WebRTC. This image is from a TokBox announcement of their video annotation library. As shown in the photo, video annotation could be used by a technician in the field and an expert back at the headquarters. The expert at headquarters might want to use annotation to show where they are talking about on the video feed.
That’s a great use of annotation, but in an IoT scenario, we might want the device to use annotation capabilities to overlay data on top of the video feed or to highlight particular areas of the video feed. Perhaps the video feed is of a wide view security camera, and the IoT device wants to highlight which door was just opened.
That brings me to the idea of using WebRTC for home automation or home security…
Our colleague Chad Hart used WebRTC to build this fun app for a TADHack – with his ThirdEye app he was able to gather convincing evidence that his daughter is the one leaving the fridge door open.
But beyond keeping Chad’s fridge closed, WebRTC certainly has a role in home security. The iCamPro is an example of one commercially available security camera that uses WebRTC, and also incorporates motion detection and tracking of moving objects in the room.
I’ve had trouble finding examples of the use of WebRTC in industrial settings. Is that an indication that there’s no valid application of the technology in this case, or that it’s simply an untapped opportunity? I’m not sure to be honest, but combining sensor data and video together with WebRTC makes a lot of sense to me at least. Perhaps using Websockets is just simpler to get real time sensor data from devices out to clients consuming that data. But it seems to me that there is still room for WebRTC in many situations where you want that data to trigger the use of video or augment that video. For example, let’s imagine that a temperature sensor indicates I’ve got a machine overheating on the factory floor. We could use that data to trigger a video camera showing us if the machine is smoking, on fire, or jammed up somehow.
On a similar note, there is a lot of opportunity for combining video with data and control in robotics or drones. The video below shows a robot demo that someone built using a Raspberry Pi and an Android phone to control an RC car and turn it into a video streaming car. Here is the complete tutorial published on Instructables showing how to do this yourself.
Skedans presented at the KrankyGeek WebRTC event in San Francisco last year, and they are certainly a player to watch in this space. Skedans acquired EasyRTC and are using it to combine WebRTC with an IoT and Robotics platform for use in drones and public safety applications. I think this is an area ripe for growth, so I expect we’ll see more combinations of WebRTC and robotics in the future.
One interesting note about the architecture of this creeper drone in the previous video is that when you use something like WebSockets for the signaling to establish a WebRTC video/audio stream, now you have a choice. Should you use WebSockets for commands and other data, or should you use the WebRTC Data Channel? In this particular prototype, the author used WebSockets to send the drive commands. They could have used the WebRTC Data Channel instead. On the one hand, maybe the WebRTC Data Channel is an unnecessary layer of complexity, but it does have the extra Peer to Peer and encrypted benefits of WebRTC. So that’s a choice you’ll need to make, in my opinion, if you are using WebRTC for video/audio in an IoT app, then also using the DataChannel makes a lot of sense.
One last fun example that I wanted to show you is this street cleaning prototype, developed by Altanai Bisht, author of the WebRTC Integrators Guide from PACKT publishing. She put together this prototype at a barcamp in Bangalore, and it uses a Raspberry Pi to control the motors for driving the bot from a web browser, and to turn the cleaner brushes. A Raspberry Pi camera unit is used to stream the video back to the driver’s web site.
Here’s the video of Altanai’s bot:
So I hope this little bit of time together has inspired you that there is a lot you can do with WebRTC besides just video chat. The Internet of Things is still in its infancy, just like WebRTC. Typical video chat apps will probably remain the bread and butter for those of us building WebRTC applications for some time, but combining the IoT with WebRTC is going to create lots more opportunity for innovation beyond just browser video chat.
So please contact us at WebRTC.ventures and tell me what sorts of cool things you put WebRTC into, or if there is anything that our team at WebRTC.ventures can do to help you build innovative products based on WebRTC!