Skip to content

Devices

Devices are fundamental IoT entities in IQFLOW that can generate telemetry data (such as temperature, humidity, GPS coordinates, etc.) and transmit it to the IQFLOW platform, as well as respond to Remote Procedure Call (RPC) commands. Devices can be either physical (e.g., sensors, controllers, trackers) or virtual (e.g., emulators) network-connected objects that are capable of:

  • Generating telemetry data — send measured data such as temperature, humidity, or location.
  • Transmitting data to the IQFLOW platform via supported protocols (MQTT, UDP, HTTP, TCP, etc.).
  • Responding to RPC commands — receiving and executing on remote procedure calls sent from the platform.
  • supports both attributes (static or semi-static properties) and telemetry (time-series data).

Add device label (do not change device name and profile)

Each device is bound to the IQFLOW platfrom by its name and device profile. Please do not change the device name and device profile. However you can add custom device label under each device details to easily identify them.

To edit the device label, you need to:

In the devices list, locate and click on the desired device, then click the "pencil" (✏️ Edit) icon on the right to open the edit form. Edit the device label and click the "Apply changes" button to save them.

Concepts

Concepts

Allocate device to customers and users

You can allocate a device to any customers and users to control who can access the device and its data. Changing the owner moves the device to the selected level and updates access based on this grouping.

To do this:

  • Click the device to open its Device details.
  • Click the “Manage owner and groups” button.
  • In the Owner field, select specific Customer.
  • Add the device to the relevant device groups or create a new group if needed.
  • Click “Update” to confirm and apply the changes.

Concepts

Concepts

Include customer entities

On the “Devices” page there is an option “Include customer entities”, which defines whether the list will display devices that belong to your customers.

  • When the switch is enabled (default state) — the table shows all available devices, including those owned by customers.
  • When the switch is disabled — the table shows only your own devices.

Concepts

Creating device group

Devices can belong to one or multiple groups, which helps organise and manage them effectively.

To create a new device group:

  • Go to the "Entities" section - "Devices" page. By default, you navigate to the device group "All". Navigate to the "Groups" tab and click on the "plus" icon in the upper right corner;
  • Enter the name of the device group and click "Add";

Concepts

Share device group

You can share a device group with one or more customers. This is useful, for example, when multiple customers need access to the same device.

You cannot share an individual device — only the device group that contains it.

To share an device group:

  • Locate the desired device group in the list.
  • Click the “Share” icon next to it.
  • Select the target customer from the dropdown list.
  • (Optional) Specify the user group within that customer to share the device group with.
  • Confirm the action by clicking “Share”.

Device Attributes

IQFLOW provides the ability to assign custom attributes to your entities such as devices and manage these attributes. Those attributes are stored in the database and may be used for data visualisation and data processing.

Attributes are treated as key-value pairs. Flexibility and simplicity of the key-value format allow easy and seamless integration with almost any IoT device on the market. Key is always a string and is basically an attribute name, while the attribute value can be either string, boolean, double, integer or JSON. For example:

{ "firmwareVersion":"v2.3.1", "booleanParameter":true, "doubleParameter":42.0, "longParameter":73, "configuration": { "someNumber": 42, "someArray": [1,2,3], "someNestedObject": {"key": "value"} } }

Attribute types:

IQFLOW supports three types of attributes: server-side, shared, and client-side. Each type has a specific purpose, access rules, and use cases, which we explain below.

Server-side attributes:

This type of attribute is supported by almost any platform entity: Device, Asset, Customer, User, etc. Server-side attributes are the ones that can be configured via Administration UI or REST API. The device firmware can’t access the server-side attribute.

Let’s assume you would like to build a building monitoring solution and review few examples:

The latitude, longitude and address are good examples of server-side attribute you may assign to assets that represent building or other real estate. You may use this attributes on the Map Widget in your dashboard to visualise location of the buildings. The floorPlanImage may contain a URL to the image. You may use this attribute to visualise floor plan on the Image Map Widget. The maxTemperatureThreshold and temperatureAlarmEnabled may be used to configure and enable/disable alarms for a certain device or asset.

Shared attributes:

Shared attributes are available only for entities of type Device. It is not available for any other entity types, such as Assets or Customers. They are designed to send configuration or operational parameters such as thresholds from the server to the device.

How Devices Interact with Shared Attributes: A device cannot publish or change the value of a shared attribute. From the device’s perspective, these attributes are read-only. A device’s firmware or application can interact with shared attributes in the following ways:

  • Request Current Values: The device can send a request to the server to retrieve the current value(s) of one or more shared attributes.
  • Subscribe to Updates: The device can subscribe to receive notifications whenever a shared attribute’s value is changed on the server.
  • Receive Updates via Downlinks: For certain network integrations, shared attribute updates can be pushed to the device as a downlink message.

The most common use case of shared attributes is to store device settings. Let’s assume the same building monitoring solution and review few examples:

  1. The targetFirmwareVersion attribute may be used to store the firmware version for particular Device.
  2. Devices can monitor the maxTemperatureThreshold attribute and activate cooling if the temperature exceeds the set limit.

The user may change the attribute via UI. The script or other server-side application may change the attribute value via REST API.

Client-side attributes:

This type of attributes is available only for Devices. It is used to report various semi-static data from Device (Client) to IQFLOW (Server). It is similar to shared attributes, but has one important difference. The device firmware/application may send the value of the attributes from device to the platform.

The most common use case of client attributes is to report device state. Let’s assume the same building monitoring solution and review few examples:

  1. The currentFirmwareVersion attribute may be used to report the installed firmware/application version for the device to the platform.
  2. The currentConfiguration attribute may be used to report current firmware/application configuration to the platform.
  3. The currentState may be used to persist and restore current firmware/application state via network, if device does not have the persistent storage.

The user and server-side applications may browse the client-side attributes via UI/REST API but they are not able to change them. Basically, the value of the client-side attribute is read-only for the UI/REST API.

Device Telemetry Data

IQFLOW provides a rich set of features related to time-series data:

  • Collect data from devices using various protocols and integrations;
  • Store time series data in SQL (PostgreSQL) or NoSQL (Cassandra or Timescale) databases;
  • Query the latest time series data values or all data within the specified time range with flexible aggregation;
  • Subscribe to data updates using WebSockets for visualisation or real-time analytics;
  • Visualise time series data using configurable and highly customisable widgets and dashboards;
  • Filter and analyse data using flexible Rule Engine;
  • Generate alarms based on collected data;
  • Forward data to external systems using External Rule Nodes (e.g. Kafka or RabbitMQ Rule Nodes).

IQFLOW internally treats time-series data as timestamped key-value pairs. We call single timestamped key-value pair a data point. Flexibility and simplicity of the key-value format allow easy and seamless integration with almost any IoT device on the market. Key is always a string and is basically a data point key name, while the value can be either string, boolean, double, integer or JSON.