Main concepts
The following concepts definitions are essentials in order to explain the capabilities offered by Klas:
MQTT Broker
An MQTT Broker is a server responsible for routing messages between clients in an MQTT (Message Queuing Telemetry Transport) architecture. It follows a publish/subscribe model, where:
- Clients publish messages to specific topics.
- Other clients subscribe to those topics to receive messages.
The broker handles client sessions, message delivery, authentication, authorization, and Quality of Service (QoS) levels.
Telemetry
Telemetry refers to the automatic transmission of data from remote devices to a central system. Devices periodically send operational metrics, status, or sensor readings for monitoring, diagnostics, or analytics.
Desired and Reported Configuration
In device management models (e.g., Azure IoT), desired and reported properties are used to synchronize configuration between the cloud and a device:
- Desired Properties: Configuration settings requested by the cloud.
- Reported Properties: The actual state or configuration currently applied on the device.
This mechanism ensures state consistency and allows for automated reconciliation of configuration drift.
OTA (Over-The-Air) Updates
Over-The-Air (OTA) Updates allow remote delivery and installation of firmware or software updates to IoT devices. This process eliminates the need for physical access and supports:
- Security patches
- Feature enhancements
- Bug fixes
OTA updates are often versioned, validated, and rolled out progressively to reduce risk.
D-Bus
D-Bus is an Inter-Process Communication (IPC) system commonly used on Linux-based platforms. It enables communication between different processes or applications in a structured and secure manner.
D-Bus supports:
- Method calls (synchronous or asynchronous)
- Signal broadcasting
- Object introspection
It is widely used in system services, embedded platforms, and desktop environments.
Klas Configuration File
KLAS relies on several configuration files.
The sections below provide a detailed explanation of each file and its fields.
config.json
| JSON Key | Description |
|---|---|
config-provisioning-path |
File path to the provisioning configuration used during device setup. |
mqtt-connect-min-retry-interval-seconds |
Minimum time (in seconds) to wait before retrying an MQTT connection (The delay starts from this value and doubles on each failed attempt until the max value is reached) |
mqtt-connect-max-retry-interval-seconds |
Maximum time (in seconds) to wait between MQTT connection retries. |
upload-telemetries-interval-seconds |
Interval (in seconds) at which telemetry data is sent to the server. |
log-level |
Defines the verbosity of logs (e.g., Debug, Info, Warning, Critical, Fatal). |
config-provisioning.json
| JSON Key | Description |
|---|---|
hostname |
The IP address or domain name of the server to connect to. |
port |
The network port used for the connection. |
deviceId |
A unique identifier for the device or client (For login-password mode, it acts as the login and corresponds to the device ID registered on KAMEA. For self-signed or ca-signed modes, it should match the Common Name (CN) of your device certificate). |
mode |
Provisioning mode (e.g., login-password, self-signed, or ca-signed). |
password |
Password used for authentication or secure connection (Needed only on login-password mode). |
trust-store |
Path to the trust store file containing trusted certificates. |
key-store |
Path to the key store file containing client certificates and private keys (Needed only on self-signed or ca-signed mode). |
passphrase |
Passphrase used to access the key store or private keys (Needed only on self-signed or ca-signed modes). |