Kaa – a new open-source platform for the Internet of Things
Kaa is a highly flexible, open-source middleware platform for building, managing, and integrating connected Internet-of-Things applications. The Kaa IoT platform aims to provide a standardised approach for integration and interoperability across connected products. With a powerful back-end Kaa speeds up IoT product development, allowing product developers to concentrate on maximising their product's user experience and unique value to the consumer.
The Kaa middleware supports multiple client platforms by offering endpoint SDKs for various different platforms and different programming languages, and Kaa's "data schema" definition language provides a universal level of abstraction to help achieve cross-vendor product interoperability - making it a very agile and flexible platform, with standardised methods for enabling integration and interoperability across connected products.
Kaa is designed to be robust, flexible and easy to use, enhancing your IoT products out of the box with a variety of functions. Thanks to being licensed under the business-friendly Apache 2.0 open source license, including the server and client components - Kaa is completely open source and it is free to use in open source or proprietary environments with no royalties or fees.
The source code of the Kaa platform is hosted on GitHub, and you can view it as well as making community contributions. Debian and RPM packages are available, ready for installation of the Kaa server on your target platform - after the installation you can use the Kaa Web UI to obtain the endpoint SDK and get started with Kaa.
The Kaa server is architected to scale linearly with the simple addition of nodes to the cluster, providing the capability for large-scale applications. Kaa features logic for on-the-go load re-balancing, based on real-time service demands, SLAs, node availability, server load and performance, providing efficient utilisation of hardware resources. The Kaa IoT platform is a middleware platform that abstracts the underlying data transport mechanism.
This approach offers application architects the freedom to choose a network stack, or a combination of several stacks for various platform functions, that best suits the requirements of a specific product.
Various different protocols and technologies can be used for the lower levels of the network between the server and endpoints - for example Wi-Fi, Ethernet, ZigBee, MQTT, CoAP, XMPP, TCP, HTTP and more, at the relevant layers of the network stack.
The Kaa platform is comprised of the server component and an endpoint SDK that integrates with client applications. When a Kaa server registers a new endpoint, an associated endpoint profile is created. Kaa's event system performs discovery of the advertised capabilities of each endpoint device and the delivery of the appropriate event messages across devices.
Kaa stores a profile for each endpoint device, which is a snapshot of any data the specific server application needs to know about the endpoint device. This could include information such as OS version, amount of RAM, device operation mode, battery life or type of network connection, for example.
Endpoint profiles can be used to organise the endpoints into groups, and this can be used to send targeted notifications to certain devices, for example, or adjust software behaviour when talking to certain classes of devices. The specification of the profile structure is configured using Kaa's profile schema definition.
Based on the defined profile schema, Kaa generates the object model to operate against the client side, and handles data marshalling all the way back to the database. Whenever a client updates its profile information, the endpoint SDK automatically sends these updates to the server as soon as a connection becomes available.
An endpoint can belong to any number of groups, which represent independent management entities in Kaa. Grouping endpoints can, for example, be used to send targeted notifications or adjust software behaviour by applying group-specific configuration overrides. When endpoints register with the Kaa server, they advertise the types of event classes they are capable of originating and receiving.
Kaa features a topic-based notification system that enables the server to deliver messages of an arbitrary structure to subscribed endpoints. Events can even be delivered across applications registered with Kaa - making it possible to quickly integrate and enable interoperability between ranges of different devices.
For example, you could enable a mobile application to control lighting, or use data from a car's GPS to communicate with a home security system, or integrate audio systems from different vendors to deliver a smooth playback experience as you move from room to room. Kaa events are implemented in a generic, abstract way, using non-proprietary schema definitions that ensure identical message structures.
The schema provides independence from any specific functionality implementation details, and Kaa's logging subsystem performs the collection and storage of structured data that is received from the endpoints.
Depending on the implementation and configuration of server-side log appenders, the Kaa server is able to store records in a local file system, or a variety of big data platforms such as Hadoop or MongoDB, or submit them directly to a streaming analytics system.
The endpoint SDK implements log-upload triggers that initiate the periodic upload to the server of logged data stored locally on endpoint devices. The structure of the collected data is flexible and defined by the data schema - based on the log data schema defined in the Kaa application, Kaa generates the object model for the records and the corresponding API calls in the client SDK. Kaa’s endpoint SDK deserializes received messages into objects, which are dispatched to subscribed client listeners for processing.
Althuogh the Kaa middleware is open-source, this isn’t a negative – it allows the end-user developer to work with the code to meet their exacting needs or create partnerships with other users for greater interoperability between products. You can learn more about Kaa from their website (http://www.kaaproject.org/).
And if you have an idea for a new IoT-enabled product or would like to add connectivity to an existing device - here at the LX Group we have the team, experience and technology to bring your ideas to life.
Getting started is easy - join us for an obligation-free and confidential discussion about your ideas and how we can help bring them to life – 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.