This documentation is for an older version of Kaa platform: v0.9.0. If you are looking for documentation for Kaa versions starting with 0.10.0, please follow this link.
Kaa is a highly flexible open-source platform for building, managing, and integrating applications in the Internet of Things. Kaa offers a holistic approach for implementing rich communication, control, and interoperation capabilities into connected products and smart devices. On top of this, powerful back-end functionality of Kaa greatly speeds up IoT product development, allowing vendors to concentrate on maximizing their product’s unique value to the consumer.
Kaa IoT platform is comprised of the server component and the endpoint SDK that is integrated into client applications. For more information on the Kaa server architecture, please refer to the Design reference.
Key features of Kaa are:
Events: Kaa provides a mechanism for delivery of configurable event messages across connected devices. Events may be set as either unicast, that is transmitted to a single recipient, or multicast, that is transmitted to several recipients. For detailed information on managing events, refer to the Events section.
Data collection: Kaa endpoints perform temporary storage of data records ("logs") of any predefined structure. Kaa endpoint SDK implements log upload triggers that initiate periodic logs upload from the endpoint to the server. The server can store logs into the filesystem, big data platforms like Hadoop, MongoDB, etc., or submit the data directly to the stream analytics processors. For example, logs can be used to help debug client applications, analyze user behavior, identify anomalies, etc. For detailed information on log management, refer to the Logging section.
Profiling and grouping: Kaa introduces the concept of the endpoint profile which consists of client-side and server-side parts. Client-side endpoint profile is a set of data that the client exposes for the access by Kaa application. Server-side endpoint profile is a set of data that is controlled by Kaa server users via Administration UI or by other server applications via REST API. Profiles can then be used to organize the endpoints into groups. Endpoint groups can be used, for example, to send targeted notifications or adjust software behavior. For detailed information on profiles, filtering, and grouping, refer to the the Endpoint profiling and Endpoint grouping sections.
Notifications delivery: Kaa features a topic-based notification system that allows the server to deliver messages of any predefined structure to subscribed endpoints. The notification topic access is granted via the endpoint’s group membership. For detailed information about managing notifications, please refer to the Notifications section.
Data distribution: Kaa allows performing updates of operational data, such as configuration data, from the Kaa server to endpoints. This feature can be used for centralized configuration management, content distribution, etc. Using Kaa’s data schemas, developers are able to define any type of data structure and constraint data types. For detailed information on data distribution, refer to the Configuration section.
Transport abstraction: Kaa’s data channel abstraction architecture presents software vendors with freedom in selecting a networking stack for establishing communication between the server and endpoints - WiFi, Ethernet, Zigbee, mqtt, CoAP, XMPP, TCP, HTTP, etc. A prominent characteristic of Kaa is its ability to build applications that function over any type of network connection and communicate with devices even over intermittent data connections.
Click an icon to jump into integrating Kaa with the specific operating system or hardware platform.
We invite you to join the discussion at the official Kaa project google group.