A small team at Mozilla has released a Things Gateway for connecting "things" to the web which uses the Raspberry Pi. This is currently experimental and part of a larger vision for on an open and decentralized Internet of Things
.
The Things Gateway is the first component of Project Things from the Emerging Technologies team at Mozilla. This is a prototype that consists of a software image you can use to build your own Web of Things gateway using a Raspberry Pi with either a Z-Wave or Zigbee adapter. You also need a USB dongle and to date the Digi XStick (ZB mesh version) for ZigBee and the Aeotec Z-Stick (Gen5) for Z-Wave. The component from Mozilla is a pre-built Rapsberry Pi OS image which has to be flashed to an SD card. If you don't want to use a Raspberry Pi the source code is available forom GitHub.
The prototype, which is implemented in JavaScript with a NodeJS web server, has the following features:
- Easily discover the gateway on your local network
- Choose a web address which connects your home to the Internet via a secure TLS tunnel requiring zero configuration on your home network
- Create a username and password to authorize access to your gateway
- Discover and connect ZigBee and Z-Wave smart plugs to the gateway
- Turn those smart plugs on and off from a web app hosted on the gateway itself
Introducing the Things Gateway in Building the Web of Things on the Mozilla Hacks blog, Ben Francis explains:
"Mozilla is working to create a Web of Things framework of software and services that can bridge the communication gap between connected devices. By providing these devices with web URLs and a standardized data model and API, we are moving towards a more decentralized Internet of Things that is safe, open and interoperable."
Just as Mozilla's mission regarding the Internet is to ensure that it is:
a global public resource, open and accessible to all ... that truly puts people first, where individuals can shape their own experience and are empowered, safe and independent.”
with regard to the Web of Things Mozilla wants to ensure security, privacy and interoperability while at the same time:
creating a decentralized Internet of Things by giving Things URLs on the web to make them linkable and discoverable, and defining a standard data model and APIs to make them interoperable.
Francis reiterates the problem that I Programmer has repeatedly identified - that most IoT devices today use proprietary vertical technology stacks which don’t always talk to each other and when they do require per-vendor integration - and provides a useful summary of current situation where big players are competing for users to become tied in to proprietary products and cloud services.
Mozilla's approach, which contributes to an existing Web of Things community and the standardization efforts being undertaken by W3C, OCF and others, attempts to escape this fragmentation by providing connectivity:
The Web of Things is not just another vertical IoT technology stack to compete with existing platforms. It is intended as a unifying horizontal application layer to bridge together multiple underlying IoT protocols.
Rather than start from scratch, the Web of Things is built on existing, proven web standards like REST, HTTP, JSON, WebSockets and TLS (Transport Layer Security). The Web of Things will also require new web standards. In particular, we think there is a need for a Web Thing Description format to describe things, a REST style Web Thing API to interact with them, and possibly a new generation of HTTP better optimised for IoT use cases and use by resource constrained devices.
Mozilla intends not only to create a Mozilla IoT platform, but also an open source implementation of a Web of Things API which would be available for people to use with any programming language and operating system. Ben Francis has submitted a draft Web Thing API specification to W3C includes a simple but extensible Web Thing Description format with a default JSON encoding, and a REST + WebSockets Web Thing API.
Francis explains:
We hope this pragmatic approach will appeal to web developers and help turn them into WoT developers who can help realize our vision of a decentralized Internet of Things.
The big problem, as with all operating system, is supporting the hardware. There are a huge number of Z-Wave devices, for example, and it isn't clear how many the Web Thing Description format will deal with out of the box and how hard it will be to support a new device. There are several competing Z-Wave controllers which all do a fairly poor job of supporting a wide range of devices mainly because it is difficult to create the equivalent of "drivers". It probably all hangs on how many users get behind the project and contribute device descriptions. Given that both Z-Wave and Zigbee are supported by many manufacturers this could be a game changer from the "locked in" approach of the likes of Nest and HomeKit.
Let's hope it works.
More Information