Monday, July 13, 2015

Zetta – an API-first Internet-of-Things platform

Here at the LX Group we’re always interested in new Internet-of-Things platforms, and the latest discovery by our team is a new entrant called Zetta. This is a new open-source Internet-of-Things platform that is built on Node.js, and designed for creating IoT servers and networked applications that run across multiple distributed devices, computers and the cloud.

Zetta aims to create an "API-First" Internet-of-Things platform - where any connected physical device and every Internet-connected "Thing" is exposed as an API, with REST APIs, WebSockets and reactive programming combined into a platform that is well suited for assembling many devices into data-intensive, real-time sensor networks or other Web-connected IoT applications.

Unlike other IoT platforms, Zetta servers can run in the cloud, on PCs, or on many different types of embedded hardware platforms and single-board computers such as a BeagleBone or Raspberry Pi.

With Zetta you can link these devices together, with each other and with cloud platforms such as Heroku, to create geo-distributed networks with an architecture that is optimised for data-intensive, real-time Big Data and streaming applications.

Furthermore, Zetta allows you to observe and react to device behaviour using code and using visualisation tools so that you gain actionable insights and take insightful actions based on physical data from IoT devices. You can also stream data into machine analytics platforms like Splunk.

And although you can run Zetta on lightweight hardware off the cloud, the platform allows you to assemble smartphone apps, device apps and cloud apps together into large, complex and adaptive "systems of systems" that operate at scale in the physical world of home automation, smart transportation, wearable computing and more.

Zetta also supports lightweight embedded microcontroller hardware such as the Arduino and Particle Core. Zetta communicates with these types of devices and exposes every device in the network, including these small devices, through a REST API both locally and in the cloud.

In a typical Zetta deployment a Zetta server will run on a hardware hub such as a BeagleBone Black, Intel Edison, or Raspberry Pi. This hardware hub device connects to other devices, and hosts the Zetta server itself which coordinates interactions with devices and generates HTTP APIs that an API consumer can interact with.

A typical Zetta deployment is built around a hub-and-spoke model, where the spokes are constrained devices and the hub devices have more computing power. For example, Zetta will run on a device such as a Raspberry Pi which is the hub, and this hub may be connected to "spoke" devices such as an Arduino.

End-node devices can be connected using Zetta even when these devices are low-cost, power efficient microcontrollers that don't have the processing or memory capacity to run Zetta directly. As Zetta is built in pure JavaScript on node.js, and while the hub device needs to support node.js - the endpoint hardware devices do not.

Zetta software servers have the capability to run on the end-node hardware device if this device has the capacity, on a nearby hub device such as a BeagleBone or Intel Edison, or in the cloud - and these Zetta servers are the same wherever they run.

As well as the Zetta server running on the hub hardware, another Zetta server lives in the cloud, using the exact same node package as the hub server - and the Zetta server on the hardware hub will connect to the server in the cloud. Zetta will then expose an API to any consumers at the cloud endpoint.

When the "spoke" device communicates with the hub, there are Zetta drivers that mediate between different protocols. For example, a Zetta driver could talk serial between the hub and the spoke device, and mediate that serial protocol into a Web API.

These drivers are responsible for interacting with the device on the physical level, providing device models that are then taken and used to generate HTTP and Javascript APIs for use in Zetta, and Zetta will mediate from HTTP to the particular protocols used for hardware devices.

There are existing drivers published for a wealth of different hardware and interoperability applications, such as serial device connectivity for any platform, connectivity with consumer devices such as the Phillips Hue and the Belkin Wemo, serial SMS text message connectivity using inexpensive SIMCOM SIM800 GPRS modules, connectivity with the Google Glass and the Pinoccio mesh network platform - to name but a few.

Along with device drivers, Zetta "Scouts" are another key component of the Zetta server, and these serve as a discovery mechanism for determining what devices are on the network and whether any devices require system resources to speak a specific protocol.

Scouts will search for devices using a particular protocol, and report this information back to Zetta. Scouts can also use information such as a MAC address to fingerprint devices, identifying whether or not Zetta has interacted with the device before, and ensuring any relevant data such as security credentials are seamlessly provided by the server when interacting with that device again.

If the Zetta hub device has connectivity directly to the Internet (with its own external IP address) then Zetta will communicate directly with cloud services such as Heroku via simple HTTP APIs and WebSockets. If the hub is behind a router, then the z2z protocol is used.

Zetta servers allow for establishing a secure tunnelled link between two servers, which helps take care of network configurations and mechanisms such as firewalls that can traditionally make setup and provisioning difficult for Internet-connected IoT cloud services.

As Zetta can run on a wide range of inexpensive hardware, it can certainly be considered as as low-cost entrant to the Internet-of-Things platform market.

If this is of interest to you, your next step is to contact the team at the LX Group where we not only share your passion for embedded hardware and the Internet-of-Things - our team of solutions architects, engineers and specialists is ready to partner with you for your success in the IoT marketplace. Getting started is easy – click here to contact us, or telephone 1800 810 124.

LX is an award-winning electronics design company based in Sydney, Australia. LX services include full turnkey design, electronics, hardware, software and firmware design. LX specialises in embedded systems and wireless technologies design.

Published by LX Pty Ltd for itself and the LX Group of companies, including LX Design House, LX Solutions and LX Consulting, LX Innovations.


No comments:

Post a Comment