Mozilla unveiled “Project Things,” which builds upon standard web technologies and the Web of Things project, and released code that runs on a Raspberry Pi.



In March of last year, a few months after Mozilla announced it was shutting down its Firefox OS project for Linux-based mobile phones, it unveiled four Firefox OS based “Connected Devices” projects for the Internet of Things. The Connected Devices project has since shut down, but a website is still available for others to advance the code. Instead, Mozilla turned its IoT team toward an existing Web of Things (WoT) project aimed at developing a decentralized, open source IoT framework built as much as possible using existing World Wide Web technologies.

Mozilla has now announced its own Project Things framework designed to pull together existing Web of Things specifications and code under a global framework comprised of device, gateway, and cloud components. As a starting point, it released a prototype version of a Things Gateway stack that runs on a Raspberry Pi.







Vertical IoT silos (left) and Web of Things metalayer

(click images to enlarge)



Project Things is said to be compatible with WoT and related standardization efforts at the IETF , the W3C , the OGC (SensorThings), and the OCF . The Linux Foundation backed OCF (Open Connectivity Foundation) which is in the process of integrating the AllSeen Alliance’s AllJoyn standard into its IoTivity framework, is probably the largest of the many vendor-agnostic, open source IoT standardization efforts

Yet most home and industrial IoT vendors more often align themselves with one or more of the IoT ecosystems pushed by a handful of the world’s largest tech companies. All of these stacks include proprietary technology, as well as varying degrees of more open technologies that are more or less controlled by a single company.

The Project Things framework (and WoT in general) is designed to act as a metalayer that sits atop these IoT ecosystems to bridge the gaps, writes Mozilla’s Ben Francis in a June 28 Mozilla Hacks blog. As illustrated in the chart above, each ecosystem is a vertical silo that prevents true interoperability. As the ecosystems mature, they may add interoperability with other frameworks on the edges, but the dependence on core technologies or cloud platforms further strengthens the barriers between the silos.

The three, more Linux-oriented ecosystems listed here — Google/Nest, Amazon AWS IoT, and Samsung Artik/SmartThings — offer more open technologies and more cross-interoperability than the Apple or Microsoft silos, but the gaps are still large. Even within the silos, there are technologies that are not fully integrated, such as the different versions of Weave used by Google and Nest, or Samsung’s yet to be integrated Artik, SmartThings, and Tizen product families.

The basic concept of Project Things and WoT is similar to that of the Web. As Francis puts it, the goal is “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.” Mozilla’s role in WoT is to “help define new web standards and promote best practices around privacy, security and interoperability,” he adds.

Project Things and WoT use existing web standards like REST, HTTP, JSON, WebSockets, and TLS (Transport Layer Security). The W3C is considering adding new standards to enable WoT. According to Francis, Mozilla believes there is a need for a new “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.”

— ADVERTISEMENT —



On July 4, Mozilla submitted a Web Thing API spec proposal to the W3C. The spec includes a “simple but extensible Web Thing Description format with a default JSON encoding, and a REST + WebSockets Web Thing API,” writes Francis.







Project Things in three flavors

(click image to enlarge)



Like many IoT frameworks, Project Things is split into device (smart node/endpoint), gateway, and cloud components. Devices use a Direct Integration Pattern within a Things Framework to directly expose a WoT API. Such endpoints need WiFi or an equivalent, backed up with TCP/IP and HTTP.

The Things Gateway component runs on gateways that aggregate communications from low-end or PAN networked devices. The Things Cloud component uses a cloud server to expose a WoT API, and can control numerous gateways and smart IoT devices over a wide geographic area.



Prototype software runs on Raspberry Pi

Mozilla’s prototype of the Things Gateway is designed to run under Linux on a Raspberry Pi 3 SBC. The “experimental pre-release software” can be adapted to run on other developer boards or even a desktop computer, says Mozilla. The software is implemented in JavaScript with a NodeJS web server, but Mozilla is working on an “adapter add-on system” to enable other programming languages such as Rust.







Things Gateway architecture

(click image to enlarge)



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 commercially available 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

The Things Gateway prototype software is designed to let you:







Simple Project Things prototype light-switch demo



Further information

More information on Project Things may be found on Mozilla’s blog announcement and Web Thing API page. The Raspberry Pi Thing Gateway prototype image may be downloaded here.

