Kaa Platform features
Kaa is an IoT middleware 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.
Connectivity is all about messaging between the cloud and the devices. That is how the devices connect to the cloud to perform different operations.
The Kaa platform supports lightweight IoT protocols for device connection, such as MQTT. Kaa is transport-agnostic and may support any 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.
Kaa Protocol is built on top of MQTT, and defines basic rules of communication between the platform and the devices. The protocol is fully open, asynchronous, and allows for arbitrary message formats. Furthermore, you can choose between encrypted and unencrypted channels. Use the encrypted channel to secure sensitive data or the unencrypted channel for open data.
In case your device does not have an IP connectivity or already implements some communication capabilities, Kaa employs a gateway architecture where a gateway talks to the device over a local network protocol or a proximity protocol, and performs transport-level message conversion or even represents them to the cloud.
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.
To connect to the platform, a device has to present valid credentials, such as pre-shared keys, tokens, login and password combinations, certificates, etc. You can use Kaa credential management APIs to provision, suspend, or revoke access.
Kaa tracks the device throughout its lifecycle, from the initial provisioning and connectivity events to software updates and final decommissioning. You can create and assign custom handlers to automate the corresponding workflows.
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.
To minimize network usage and improve the data throughput, the protocol supports batching. It provides your devices with the capability to buffer data locally before uploading it in one message. Additionally, intermediary gateways can perform the store and forward function. Besides optimizing the network efficiency, this capability is useful in IoT deployments with intermittent connectivity and helps preserve the device battery life.
Kaa allows you to collect both structured and unstructured data. It can be of primitive types, such as plain numbers or text, or compound, such as key-value maps, arrays, or nested objects.
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.
Raw, unstructured data can also be transformed into well-structured time series, convenient for analytics, pattern analysis, visualization, charting, etc. Similarly to raw data, time series can be pushed into a processing or analytics system of your choice.
Working with time series is very flexible with Kaa. Apart from displaying the main value for a time series, e.g., temperature, the platform allows users to set up tags, which allow viewing some additional data, such as location, light intensity, humidity, etc. Tag values are extracted from the collected raw data and attached to each data point in a time series. Also, it is possible to build multiple time series from one data sample.
Time series consumers can listen to new data points and trigger particular actions, for example, send mobile push notifications.
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, filters, software updates, 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.
Dashboards help you organize widgets into logical groups and define their layout. Dashboards can be hyperlinked to streamline navigation in the complex multi-device data sets. Moreover, Kaa supports dashboard templating, which allows you to reuse one configuration for multiple device dashboards.
Owing to its open APIs for third-party system integration, Kaa can be connected to data visualization and exploration tools of your own choice.
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.
The default configuration management protocol of Kaa supports both the push and pull modes. In other words, a device may subscribe to be notified whenever the configuration is changed on the Kaa server or, alternatively, may periodically poll for changes itself. To ensure reliability, the configuration delivery is based on configuration application confirmations and result codes.
When the device changes its current configuration, Kaa generates a configuration change event. These events may be used to trigger different actions and automation processes inside and outside the platform.
The Kaa platform allows you to manage configuration of the devices individually or at scale. You can define configuration for a specific device or for a group of devices based on their individual characteristics, such as software version, location, or other attributes.
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. For example, you can remotely check current temperature on a home thermostat, point a security camera to a specific area, open a vehicle trunk, and so on.
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.
From the device perspective, the Kaa platform supports both push and pull models of delivery: a device can either periodically check for new commands or rely on the server to push them. In the case of constrained devices that are unable to maintain a persistent session, Kaa can buffer scheduled messages until they are successfully delivered or timed out.
Over the air updates
OTA updates enable your devices to evolve over time. You can implement new features for the devices that are already in use, for example, face recognition for security cameras, autopilots for vehicles, predictive maintenance for industrial machinery, etc.
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.
The Kaa platform supports multitenancy, which means that a single Kaa instance may serve multiple independent tenants. In this case, each tenant has a fully isolated share of the Kaa instance where they manage their own users, user permissions, applications, devices, dashboards, etc. The tenants can be thought of as separate organizations that access your Kaa-based solution.
Technically speaking, the Kaa platform tenants are implemented on top of Keycloak realms so that each tenant has a separate Keycloak realm. That’s why you may not only work with tenants and their credentials but also use the Keycloak functionality on a very granular level to manage realms, scopes, resources, roles, identity providers, etc.
For greater flexibility and independence from any specific Keycloak version, Kaa allows using templates for tenants creation. Templates enable solution admins to create and reuse tenant specifications at different stages of the solution lifecycle, which speeds up tenant setup and customization.