Kaa is an IoT enablement technology applicable for any scale of enterprise IoT development. It provides a range of features that allow developers to build advanced applications for smart products, flexibly manage their device ecosystems, orchestrate end-to-end data processing, and many more. With Kaa, you can create your IoT applications up to 10 times faster than before.
The Kaa platform supports lightweight IoT protocols for device connection, such as MQTT and CoAP. Kaa is transport-agnostic and may support any open IoT protocol. The platform allows building applications that function over any type of network connection, either persistent or intermittent. You may choose one of the existing transport protocol implementations that come with Kaa, or create custom-tailored transports and plug them into your system. MQTT is the default protocol used by Kaa.
- Device management
Kaa provides a register of digital twins, which represent things, devices, and other entities managed by the platform. Kaa also allows you to store device attributes, which provide more detailed information about any characteristic of the device. Examples of such attributes could be serial number, MAC address, location, software version, etc. In addition to simple data types, attributes can contain more complex, structured objects, such as a list of connected peripherals and their properties.
Furthermore, you can construct filters based on the device attributes to segment your device population into individually managed groups. In Kaa, filters get automatically re-evaluated whenever the device attributes change.
- Data collection
Out of the box, Kaa provides an easy to use protocol for collecting data from connected devices. This protocol ensures reliable data delivery with response codes, which indicate the result of data processing by the platform. Once received by the platform, the device data can be dispatched to multiple processing pipelines. In case there is any error in the middle of processing, disk crash, or processor overload, the device is notified of that. As a result, the device always knows whether the submitted data is safe to delete or should be resent.
- Data processing and analytics
Kaa gives you a lot of freedom in processing of collected data. The platform features data collection adapters that allow sending data to various databases or data analytics systems. Owing to a highly modular architecture of Kaa, a new integration requires minimum effort to modify an existing adapter or create your own.
- Data visualization
The data visualization component of Kaa comprises a rich set of widgets, such as gauges, charts, maps, tables, etc. You can use these widgets to visualize different types of data, whether telemetry, statistics, geolocation, metadata, or other—both historical and current. All widgets are configurable and allow you to change their data sources as well as visual representation. To address special use cases, Kaa visualization component allows you to easily plug in custom widgets.
Besides data visualization, widgets allow you to interact with devices by sending commands, changing configuration and metadata, etc.
- Configuration management
Configuration management is essential for controlling the device behavior, managing data processing parameters, edge analytics, feature flagging, and other functions. The Kaa platform allows you to implement all of this functionality by providing the configuration management feature that works with arbitrary data structures. Thus, you can apply the configuration data that is as simple as a set of key-values or as complex as nested objects. Since IoT devices might not be constantly connected, Kaa tracks already applied configuration data as well as pending delivery.
- Command execution
Command execution is the Kaa platform feature that allows you to deliver messages with the arbitrary payload to connected devices, execute commands, and receive near-real time responses.
Kaa implements the two-way communication that allows devices to send a response back to the server. The caller can wait for the response either synchronously or asynchronously. For lightweight commands you may go with the synchronous option meaning that the caller will be put on hold until the command execution result is delivered. For the resource-consuming commands you may choose the asynchronous option, which enables the platform to notify the caller about the command execution result.
- Over the air updates
Kaa allows you to reliably deliver software updates by utilizing the confirmation response codes sent by devices upon the update result. Another valuable feature is the ability to define the software update path by using the compatibility graphs based on semantic versioning. Buggy versions can be easily rolled back.
Out of the box, Kaa allows tracking the current software version installed on the managed devices as well as defining potential update vectors. Each software version is represented in Kaa by a flexible descriptor that is delivered to the device as an instruction to perform an update. For example, common descriptor fields include the download URL, the new software version name, the file size, checksums, etc. With this information, the device can easily download the new software, validate its integrity using checksums, install, and report back success.