diff --git a/_includes/docs/edge/faq.md b/_includes/docs/edge/faq.md index e3fad06e9a..ac63ef3eca 100644 --- a/_includes/docs/edge/faq.md +++ b/_includes/docs/edge/faq.md @@ -21,7 +21,10 @@ {% endif %} ### Does ThingsBoard Edge support clustering? -

No, ThingsBoard Edge does not support clustering at the moment. But cluster support will be added in the following releases.

+ +The **earlier versions** of **ThingsBoard Edge** do not support clustering. It is designed to operate, process and analyze data locally before synchronizing with the central **ThingsBoard Server**. + +Starting **with release 4.0**, Edge supports clustering. Multiple **Edge nodes** can be clustered to provide high availability. If one node fails, the others can seamlessly continue to handle workloads. ### Do I need an internet connection to use the ThingsBoard Edge?

No, you can run it completely offline if you need to. The only connection required is to the ThingsBoard Server via gRPC.

@@ -93,7 +96,7 @@ If this is required, you'll need to provision multiple ThingsBoard Edge i ### How many devices can ThingsBoard Edge support? {% if docsPrefix == 'pe/edge/' %}

The number of connected devices depends on your subscription plan.

-

Some plans offer 'Unlimited Devices and Assets', thus there are no soft limits on creating devices and assets on the edge side.

+

Some plans offer 'Unlimited Devices and Assets, thus there are no soft limits on creating devices and assets on the edge side.

{% else %}

ThingsBoard Edge doesn’t impose a fixed limit on the number of devices you can connect.

In practice, the number of devices you can support depends largely on your hardware resources, system configuration, and the specific use case. @@ -172,12 +175,12 @@ Some useful references include Installation Guidesfor more details. In order to activate the software you will need to obtain the license key. diff --git a/_includes/docs/edge/user-guide/alarms.md b/_includes/docs/edge/user-guide/alarms.md index 18cc467de4..b9c8524d91 100644 --- a/_includes/docs/edge/user-guide/alarms.md +++ b/_includes/docs/edge/user-guide/alarms.md @@ -3,9 +3,10 @@ ## Overview -The **ThingsBoard Alarm** is an essential feature for monitoring and responding to entities events and conditions. For a comprehensive understanding of the **ThingsBoard Alarm** feature, please refer to the [Working with Alarms](/docs/{{cloudDocsPrefix}}user-guide/alarms/) documentation. +The **ThingsBoard Alarm** is an essential feature for monitoring and responding to entity events and conditions. +For a comprehensive understanding of the **ThingsBoard Alarm** feature, please refer to the [Working with Alarms](/docs/{{cloudDocsPrefix}}user-guide/alarms/){: target="_blank"} documentation. -Although the **Alarm** feature for the **Edge** is designed in a similar manner to that of the **Cloud**, it includes several notable additions: +Although the **Alarm** feature for the **Edge** is designed similarly to that of the **Cloud**, it includes several notable additions: * Alarms are processed locally on the **Edge** and focused on the immediate conditions for alarm triggering without relying on connectivity. * The Alarm data can be pushed from the **Edge** to the **Cloud** and can also be sent back from the **Cloud** to the **Edge**. This setup enables real-time monitoring and management of alarms across different locations. * Edge Alarms can be integrated with other local systems or software solutions for further processing, notifications, or actions. @@ -16,17 +17,18 @@ In essence, the **ThingsBoard Edge Alarms** provide real-time, localized alarm m The **Edge Alarms** are created and configured in the same way as the **Cloud Alarms**. Therefore, it is necessary to define the **parameters and the rules** according to which the alarm is to be triggered. -The easiest way to create an Alarm is to use the [Alarm Rules within the Device profile](/docs/{{cloudDocsPrefix}}user-guide/device-profiles/#alarm-rules). The majority of tasks can be configured with **Alarm Rules** with minimal effort. +The easiest way to create an Alarm is to use the [Alarm Rules within the Device profile](/docs/{{cloudDocsPrefix}}user-guide/device-profiles/#alarm-rules){: target="_blank"}. The majority of tasks can be configured with **Alarm Rules** with minimal effort. -If more complex logic is required, we suggest utilising the alternative option, namely the **["Create Alarm"](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-0/action-nodes/#create-alarm-node)** and **["Clear Alarm"](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-0/action-nodes/#clear-alarm-node)** rule nodes in the **[Rule Engine](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-0/re-getting-started/)**. This is a more advanced option that requires a certain level of programming expertise. Please refer to the [corresponding example](/docs/user-guide/rule-engine-2-0/tutorials/create-clear-alarms/). +If more complex logic is required, we suggest using the alternative option, namely the ["Create Alarm"](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-0/action-nodes/#create-alarm-node){: target="_blank"} and ["Clear Alarm"](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-0/action-nodes/#clear-alarm-node){: target="_blank"} rule nodes in the [Rule Engine](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-0/re-getting-started/){: target="_blank"}. This is a more advanced option that requires a certain level of programming expertise. Please refer to the [corresponding example](/docs/user-guide/rule-engine-2-0/tutorials/create-clear-alarms/){: target="_blank"}. ## Alarms Pushing from the Cloud to the Edge -The **ThingsBoard system** allows for pushing **Alarms** from the **Cloud** to the **Edge** in order to enhance operational efficiency and reduce reliance on **Cloud** resources. +The **ThingsBoard system** allows for pushing **Alarms** from the **Cloud** to the **Edge** to enhance operational efficiency and reduce reliance on **Cloud** resources. -### Prerequisite - -It is essential to determine which **Rule chain** you intend to use, as this will have a significant impact on the configuration process. +{% capture prerequisite %} +Determine the **Rule Chain** you intend to use in advance, as this will have a significant impact on the configuration process. +{% endcapture %} +{% include templates/info-banner.md content=prerequisite %} ### Guidelines @@ -36,17 +38,15 @@ To push Alarms from the **Cloud** to the **Edge**, follow these steps: ## Alarms Pushing from the Edge to the Cloud -The ThingsBoard system also allows for pushing Alarms from the **Edge** to the **Cloud**. +**ThingsBoard** also allows for pushing alarms from the **Edge** to the **Cloud**. {% capture local-deployment %} **Please note!**
-You **cannot** create or edit the **Rule Chain** on the **Edge** itself. It must be configured as a template on the **Cloud (Server)**, and then assigned to the **Edge** instance. Only then will the actual **Rule Chain**, derived from that template, begin to function and process data from devices (entities) according to its configuration. +If you use **earlier versions** of Edge, you **cannot** create or edit a **Rule Chain** on the **Edge** itself. It must be configured as a template in the **Cloud (Server)**, and then assigned to the **Edge** instance. + +Starting with **Edge version 4.0**, you can create and edit a **Rule Chain** on the **Edge**. {% endcapture %} {% include templates/info-banner.md content=local-deployment %} -### Prerequisite - -It is essential to determine which **Rule chain** you intend to use, as this will have a significant impact on the configuration process. - ### Guidelines To push Alarms from the **Edge** to the **Cloud**, follow these steps: diff --git a/_includes/docs/edge/user-guide/db-overview.md b/_includes/docs/edge/user-guide/db-overview.md index f63e79a971..1273906b7c 100644 --- a/_includes/docs/edge/user-guide/db-overview.md +++ b/_includes/docs/edge/user-guide/db-overview.md @@ -5,11 +5,11 @@ The **Edge Dashboards** are robust and effective tools for local monitoring and management of IoT data. They can function and display data in real time, even when there is no connection to the Cloud. The data can be synchronized with the server when the connection is restored. -The **Edge Dashboards** are designed in the same way as the [Platform (Cloud) Dashboards](/docs/{{cloudDocsPrefix}}user-guide/dashboards/). Please read the Platform Dashboard documentation for a general understanding of its functionality. +The **Edge Dashboards** are designed in the same way as the [Platform (Cloud) Dashboards](/docs/{{cloudDocsPrefix}}user-guide/dashboards/){: target="_blank"}. Please read the Platform Dashboard documentation for a general understanding of its functionality. ## Dashboard Provision to ThingsBoard Edge -The dashboards can be created and managed on the **ThingsBoard server**, and then [provisioned](/docs/{{docsPrefix}}getting-started/#step-5-provision-dashboard-to-thingsboard-edge) to the **Edge instance**. This approach enables the simultaneous deployment of changes to all Edge instances. +The dashboards can be created and managed on the **ThingsBoard server**, and then [provisioned](/docs/{{docsPrefix}}getting-started/#step-5-provision-dashboard-to-thingsboard-edge){: target="_blank"} to the **Edge instance**. This approach enables the simultaneous deployment of changes to all Edge instances. You can verify that the Dashboard is provisioned: @@ -22,9 +22,9 @@ You can also create and manage **Dashboards** right from the **Edge** itself. Al To **create** the Edge Dashboard on your **ThingsBoard Edge** instance, do the following: {% include images-gallery.html imageCollection="create-dashboard" showListImageTitles="true" %} -You can learn about **Widgets** [here](/docs/{{cloudDocsPrefix}}user-guide/widgets/) +You can learn about **Widgets** [here](/docs/{{cloudDocsPrefix}}user-guide/widgets/){: target="_blank"}. -Read more about the **Dashboard toolbar** [here](/docs/{{cloudDocsPrefix}}user-guide/dashboards/#dashboard-toolbar). +Read more about the **Dashboard toolbar** [here](/docs/{{cloudDocsPrefix}}user-guide/dashboards/#dashboard-toolbar){: target="_blank"}. To verify that the changes are successfully propagated: @@ -34,7 +34,7 @@ If you have multiple instances of **ThingsBoard Edge**, you can delete the Dashb ### Assign/Remove Customers -Before you assign customers to the Dashboard, make sure that you have assigned them to the **ThingsBoard Edge** instance first. You can read more about Customers [here](/docs/{{cloudDocsPrefix}}user-guide/ui/customers/). +Before you assign customers to the Dashboard, make sure that you have assigned them to the **ThingsBoard Edge** instance first. You can read more about Customers [here](/docs/{{cloudDocsPrefix}}user-guide/ui/customers/){: target="_blank"}. To **assign/unassign** customers to the **Edge Dashboard**, do the following: diff --git a/_includes/docs/edge/user-guide/edge-attributes.md b/_includes/docs/edge/user-guide/edge-attributes.md index bb4e817805..ab3712f305 100644 --- a/_includes/docs/edge/user-guide/edge-attributes.md +++ b/_includes/docs/edge/user-guide/edge-attributes.md @@ -49,6 +49,11 @@ To keep the **ThingsBoard Server** up to date with any attribute changes that ha {% include images-gallery.html imageCollection="pushToCloud" %} +{% capture edge-rule-chain %} +Starting with **Edge 4.0**, you can create and edit a **Rule Chain** on the **Edge**. +{% endcapture %} +{% include templates/info-banner.md content=edge-rule-chain %} + Read about how to **subscribe to device attributes change** [here](/docs/{{docsPrefix}}config/subscribe-to-attribute/#step-3-subscribe-to-device-attributes-change-and-publish-device-attributes-message){: target="_blank"}. ## Custom Attributes for Edge Instance @@ -58,7 +63,7 @@ The retrieved **Edge attributes** can be used for metadata enrichment, authentic To assign a custom attribute to the **Edge** instance, follow these steps: -* Log in to the **ThingsBoard Server**, go to the **Edge management > Instances** section and click on the **Edge** instance. On the **"Edge details"** page, select the **"Attributes"** tab. +* Log in to the **ThingsBoard Server**, go to the **Edge management > Instances** section and click on the **Edge** instance. On the **"Edge details"** page, select the **"Attributes"** tab. * Click the **“Add”** button and add a new custom attribute (_e.g. edgeAccessToken_). * Confirm the assigned attribute. * Select the **"Relations"** tab and click the **“Add”** button to add a new relation (_e.g. the relation between the Edge and the Device(s)_). Click the **“Add”** button. @@ -67,7 +72,8 @@ To assign a custom attribute to the **Edge** instance, follow these steps: {% include images-gallery.html imageCollection="addEdgeAttributes" %} To use **Edge** attributes as placeholders in the **Rule Chain template**: -* Go to the **ThingsBoard Server**, the **Edge management > Rule chains templates** section and click on the **Rule Chain** in question. +* Go to the **ThingsBoard Server**, the **Edge management > Rule chains templates** section and click the appropriate **Rule Chain**. + * If you're using **Edge 4.0** or later, stay in your **Edge** instance and go to the **Rule chains** section. To edit a rule chain, click the appropriate **Rule Chain**. * On the **Rule Chain** edit page, find the **"related entity data"** node using the **Node search** bar. Drag and drop the node onto the **Rule Chain sheet**. Fill in the following fields in the pop-up window: * **Name:** Enter the node name. * **Direction:** Select the relation direction (_From originator/To originator_). @@ -97,7 +103,8 @@ Before configuring the alarm notifications, have these steps completed: * [Set a relation](/docs/{{docsPrefix}}config/provision-asset/#creating-relations){: target="_blank"} between the **Asset** and **Device**. Follow these steps to configure the alarm notifications: -* Log in to the **ThingsBoard Server**, go to the **Edge management > Rule chains templates** section and click on the **Rule Chain** in question. +* Log in to the **ThingsBoard Server**, go to the **Edge management > Rule chains templates** section and click the appropriate **Rule Chain**. + * If you're using **Edge 4.0** or later, stay in your **Edge** instance and go to the **Rule chains** section. To edit a rule chain, click the appropriate **Rule Chain**. * On the **Rule Chain** edit page, find the **"related entity data"** node using the **Node search** bar. Drag and drop the node onto the **Rule Chain sheet**. Fill in the following fields in the pop-up window: * **Name:** Enter the node name. * **Direction:** Select the relation direction (_From originator/To originator_). diff --git a/_includes/docs/edge/user-guide/edge-management.md b/_includes/docs/edge/user-guide/edge-management.md index 6af3e26fd9..0763529913 100644 --- a/_includes/docs/edge/user-guide/edge-management.md +++ b/_includes/docs/edge/user-guide/edge-management.md @@ -5,9 +5,9 @@ **ThingsBoard** offers two distinct deployment options: **ThingsBoard Edge** and **ThingsBoard Cloud**. -**ThingsBoard Edge** is designed specifically for local, distributed data processing, enabling data analysis and management directly at the source of data generation. This approach allows for local processing, storage, and immediate response to critical situations, even without a continuous connection to the central server. For more information, see the [What is ThingsBoard Edge](/docs/{{docsPrefics}}getting-started-guides/what-is-edge/){: target="_blank"} article. +**ThingsBoard Edge** is designed specifically for local, distributed data processing, enabling data analysis and management directly at the source of data generation. This approach allows for local processing, storage, and immediate response to critical situations, even without a continuous connection to the central server. For more information, see the [What is ThingsBoard Edge](/docs/{{docsPrefix}}getting-started-guides/what-is-edge/){: target="_blank"} article. -In contrast, **ThingsBoard Cloud**, is a fully managed, scalable, and fault-tolerant platform hosted in the cloud. The devices connected to the Cloud transfer data over the internet. It is perfect for centralized data collection, processing, and management. For more information, see the [What is ThingsBoard](/docs/{{peDocsPrefics}}getting-started-guides/what-is-thingsboard/){: target="_blank"} article. +In contrast, **ThingsBoard Cloud** is a fully managed, scalable, and fault-tolerant platform hosted in the cloud. The devices connected to the cloud transfer data over the internet. It is perfect for centralized data collection, processing, and management. For more information, see the [What is ThingsBoard](/docs/{{docsPrefix}}getting-started-guides/what-is-edge/){: target="_blank"} article. ### The Key Differences Between Edge and Cloud @@ -20,7 +20,8 @@ Although **Edge is designed similarly to Cloud**, the main difference lies **in * Devices connected to the **Cloud** are **require internet connectivity** to communicate with the platform. **Cluster deployment** refers to the deployment in a distributed architecture, where multiple nodes (instances) work together to ensure scalability, fault tolerance, and high availability. -* **Edge does not support cluster deployment**. It is designed to operate, process and analyze data locally before synchronizing with the central ThingsBoard server. +* The older versions of **Edge do not support cluster deployment**. It is designed to operate, process and analyze data locally before synchronizing with the central ThingsBoard server. +* Starting with release 4.0 **Edge supports clustering**. Multiple Edge nodes can be clustered to provide high availability. If one node fails, the others can seamlessly continue to handle workloads. * **Cloud supports cluster deployment** and is crucial for handling large-scale IoT applications with numerous devices and high data throughput. ## Synchronization Architecture @@ -47,7 +48,7 @@ To force synchronization procedure, go to the **Edge management > Instances** se ## Entities Management -Most entities can be created on the **Edge** instance, except for **Customers**, **Users**, and **Rule Chains** entities. To enable the use of these entities on the **Edge**, these entities must be **assigned** to the **Edge** prior to use. +Most entities can be created on the **Edge** instance, except for **Customers**, and **Users**, entities. To enable the use of these entities on the **Edge**, these entities must be **assigned** to the **Edge** prior to use. To **assign** specific entities to the **Edge**, log in to your **Cloud** and navigate to the **Edge management > Instances** section: @@ -83,7 +84,7 @@ Basic information about the Edge configuration is provided on the Edge instance The **Cloud Events** page shows events that ThingsBoard Edge pushes to the Cloud. To view this information, log in to your **Edge instance** and go to the **Edge > Cloud events** section. The following information is displayed: * **Created time:** The date and time the event is created and pushed to the Cloud. Displayed in a format YYYY-MM-DD H:Min:Sec. -* **Action:** The action pushed to the Cloud. Possible actions: Added, Deleted, Updated, Attributes Updated, Attributes Deleted, Timeseries Deleted, Timeseries Updated, RPC Call, Credentials Updated, Relation Add or Update, Relation Deleted, Relations Deleted, Alarm Ack, Alarm Clear, Attributes Request, Rule Chain Metadata Request, Relation Request, Credentials Request. +* **Action:** The action pushed to the Cloud. Possible actions: Added, Deleted, Updated, Attributes Updated, Attributes Deleted, Timeseries Deleted, Timeseries Updated, RPC Call, Credentials Updated, Relation Add or Update, Relation Deleted, Relations Deleted, Alarm Ack, Alarm Clear, Attributes Request, Rule Chain Metadata Request, Relation Request, Credential Request. * **Entity type:** The entity that created the event. * **Entity ID:** The identification code of the entity. * **Status:** Defines if the event has been pushed to the Cloud. diff --git a/_includes/docs/edge/user-guide/entities-and-relations.md b/_includes/docs/edge/user-guide/entities-and-relations.md index b124982a26..0c7327545e 100644 --- a/_includes/docs/edge/user-guide/entities-and-relations.md +++ b/_includes/docs/edge/user-guide/entities-and-relations.md @@ -9,8 +9,8 @@ In **ThingsBoard**, an **entity** is a core component that represents a physical ### Available Edge Entities -* **Devices:** Physical IoT devices (sensors, actuators, controllers). -* **Assets:** A real world object that helps group and manage the IoT ecosystem (e.g., machines, buildings, factories). +* **Devices:** Physical IoT devices (_sensors, actuators, controllers_). +* **Assets:** A real world object that helps group and manage the IoT ecosystem (_e.g., machines, buildings, factories_). * **Customers:** Organizations or users assigned to specific devices/assets. * **Users (for PE):** People who manage and interact with edge resources. * **Entity Views:** Predefined views of selected entity data. @@ -18,7 +18,7 @@ In **ThingsBoard**, an **entity** is a core component that represents a physical * **Dashboards:** Visualizations of telemetry and device data. * **Rule Chains:** Local data processing and automation logic. -Most entities can be created on the **Edge**, except for **Customers**, **Users**, and **Rule Chain** entities. These entities can be created on the **Server** and then [assigned](/docs/{{docsPrefix}}config/management/#entities-management){: target="_blank"} to the **Edge instance**. +Most entities can be created on the **Edge**, except for **Customers**, and **Users** entities. These entities can be created on the **Server** and then [assigned](/docs/{{docsPrefix}}config/management/#entities-management){: target="_blank"} to the **Edge instance**. The **Devices** and **Assets** entities have the configuration templates as [Device Profiles](/docs/{{peDocsPrefix}}user-guide/device-profiles/){: target="_blank"} and [Asset Profiles](/docs/{{peDocsPrefix}}user-guide/asset-profiles/){: target="_blank"}, respectively. @@ -47,7 +47,7 @@ Example: "status": "ON" } ``` -You can learn more about working with telemetry data [here](/{{peDocsPrefix}}docs/user-guide/telemetry/). +You can learn more about working with telemetry data [here](/{{peDocsPrefix}}docs/user-guide/telemetry/){: target="_blank"}. By default, **ThingsBoard Edge** synchronizes telemetry data with the **ThingsBoard Cloud**. During an internet outage, telemetry is stored **locally** and sent to the **Cloud** once the connection is restored. diff --git a/_includes/docs/edge/user-guide/install/config.md b/_includes/docs/edge/user-guide/install/config.md index e6a2e38e0f..9f3bf6ba66 100644 --- a/_includes/docs/edge/user-guide/install/config.md +++ b/_includes/docs/edge/user-guide/install/config.md @@ -1,7 +1,7 @@ * TOC {:toc} -### Server common parameters +#### Server common parameters @@ -208,7 +208,7 @@
-### Cloud configuration +#### Cloud configuration @@ -346,7 +346,7 @@
-### Application info parameters +#### Application info parameters @@ -365,7 +365,7 @@
-### Zookeeper connection parameters +#### Zookeeper connection parameters @@ -422,7 +422,7 @@
-### Cluster parameters +#### Cluster parameters @@ -447,7 +447,7 @@
-### Plugins configuration parameters +#### Plugins configuration parameters @@ -466,7 +466,7 @@
-### Security parameters +#### Security parameters @@ -557,7 +557,7 @@
-### Mail settings parameters +#### Mail settings parameters @@ -582,7 +582,7 @@
-### Usage statistics parameters +#### Usage statistics parameters @@ -606,9 +606,15 @@ - + + + + + + + @@ -631,7 +637,7 @@
usage.stats.report.interval USAGE_STATS_REPORT_INTERVAL1060 Statistics reporting interval, set to send summarized data every 10 seconds by default
usage.stats.report.pack_sizeUSAGE_STATS_REPORT_PACK_SIZE1024 Amount of statistic messages in pack
usage.stats.check.cycle USAGE_STATS_CHECK_CYCLE
-### UI settings parameters +#### UI settings parameters @@ -656,7 +662,7 @@
-### Database telemetry parameters +#### Database telemetry parameters @@ -687,7 +693,7 @@
-### Cassandra driver configuration parameters +#### Cassandra driver configuration parameters @@ -1002,7 +1008,7 @@
-### SQL configuration parameters +#### SQL configuration parameters @@ -1418,7 +1424,7 @@
-### Actor system parameters +#### Actor system parameters @@ -1475,6 +1481,18 @@ + + + + + + + + + + + + @@ -1617,18 +1635,30 @@ - - - - - - + + + + + + + + + + + + + + + + + + @@ -1640,7 +1670,7 @@
4 Thread pool size for actor system dispatcher that process messages for edge actors
actors.system.cfm_dispatcher_pool_sizeACTORS_SYSTEM_CFM_DISPATCHER_POOL_SIZE2 Thread pool size for actor system dispatcher that process messages for CalculatedField manager actors
actors.system.cfe_dispatcher_pool_sizeACTORS_SYSTEM_CFE_DISPATCHER_POOL_SIZE8 Thread pool size for actor system dispatcher that process messages for CalculatedField entity actors
actors.tenant.create_components_on_init ACTORS_TENANT_CREATE_COMPONENTS_ON_INITtrue Enable/disable actor statistics
actors.statistics.js_print_interval_msACTORS_JS_STATISTICS_PRINT_INTERVAL_MS10000 Frequency of printing the JS executor statistics
actors.statistics.persist_frequency ACTORS_STATISTICS_PERSIST_FREQUENCY 3600000 Actors statistic persistence frequency in milliseconds
actors.calculated_fields.debug_mode_rate_limits_per_tenant.enabledACTORS_CALCULATED_FIELD_DEBUG_MODE_RATE_LIMITS_PER_TENANT_ENABLEDtrue Enable/Disable the rate limit of persisted debug events for all calculated fields per tenant
actors.calculated_fields.debug_mode_rate_limits_per_tenant.configurationACTORS_CALCULATED_FIELD_DEBUG_MODE_RATE_LIMITS_PER_TENANT_CONFIGURATION50000:3600 The value of DEBUG mode rate limit. By default, no more than 50 thousand events per hour
actors.calculated_fields.calculation_timeoutACTORS_CALCULATION_TIMEOUT_SEC5 Time in seconds to receive calculation result.
debug.settings.default_duration DEBUG_SETTINGS_DEFAULT_DURATION_MINUTES
-### Cache settings parameters +#### Cache settings parameters @@ -1971,7 +2001,7 @@ - + @@ -2170,7 +2200,7 @@
cache.specs.relatedEdges.maxSize CACHE_SPECS_RELATED_EDGES_MAX_SIZE010000 0 means the cache is disabled
-### Spring data parameters +#### Spring data parameters @@ -2189,7 +2219,7 @@
-### Redis configuration parameters +#### Redis configuration parameters @@ -2400,7 +2430,7 @@
-### Update version parameters +#### Update version parameters @@ -2419,7 +2449,7 @@
-### Spring CORS configuration parameters +#### Spring CORS configuration parameters @@ -2462,7 +2492,7 @@
-### General spring parameters +#### General spring parameters @@ -2541,7 +2571,7 @@
-### SQL DAO Configuration parameters +#### SQL DAO Configuration parameters @@ -2622,7 +2652,7 @@ + error_event, lc_event, rule_chain_debug_event, rule_node_debug_event, stats_event, audit_log, cf_debug_event @@ -2670,7 +2700,7 @@
false Enable dedicated datasource (a separate database) for events and audit logs. Before enabling this, make sure you have set up the following tables in the new DB: - error_event, lc_event, rule_chain_debug_event, rule_node_debug_event, stats_event, audit_log
spring.datasource.events.driverClassName
-### Audit log parameters +#### Audit log parameters @@ -2775,6 +2805,12 @@ + + + + + + @@ -2831,7 +2867,7 @@
W Ota package logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation
audit-log.logging-level.mask."calculated_field"AUDIT_LOG_MASK_CALCULATED_FIELDW Calculated field logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation
audit-log.sink.type AUDIT_LOG_SINK_TYPE
-### Device state parameters +#### Device state parameters @@ -2886,7 +2922,7 @@
-### Tbel parameters +#### Tbel parameters @@ -2971,7 +3007,7 @@
-### JS parameters +#### JS parameters @@ -3098,7 +3134,7 @@
-### Transport configuration parameters +#### Transport configuration parameters @@ -3728,11 +3764,17 @@ + + + + + + - - + + @@ -3797,7 +3839,7 @@ - + @@ -3810,7 +3852,7 @@
true Enable/disable SNMP transport protocol
transport.snmp.bind_addressSNMP_BIND_ADDRESS0.0.0.0 SNMP bind address
transport.snmp.bind_port SNMP_BIND_PORT1620 Snmp bind port0 SNMP bind port. Zero (random) by default. When using SNMP TRAPs - make sure to specify some static value, e.g. 1620
transport.snmp.response_processing.parallelism_level
transport.gateway.dashboard.sync.branch TB_GATEWAY_DASHBOARD_SYNC_BRANCHmainrelease/4.0.0 Branch of gateways dashboard repository to work with
-### CoAP server parameters +#### CoAP server parameters @@ -3820,7 +3862,7 @@ - + @@ -3983,7 +4025,7 @@
coap.enabledcoap.server.enabled COAP_SERVER_ENABLED true Enable/disable coap server.
-### Device connectivity parameters +#### Device connectivity parameters @@ -4106,11 +4148,23 @@ + + + + + + + + + + + +
5684 Port of coap transport service. If empty, the default port for coaps will be used.
device.connectivity.coaps.pem_cert_fileDEVICE_CONNECTIVITY_COAPS_CA_ROOT_CERTcafile.pem Path to the COAP CA root certificate file
device.connectivity.gateway.image_versionDEVICE_CONNECTIVITY_GATEWAY_IMAGE_VERSION3.7-stable The docker tag for thingsboard/tb-gateway image used in docker-compose file for gateway launch
-### Edges parameters +#### Edges parameters @@ -4237,7 +4291,7 @@
-### Spring doc common parameters +#### Spring doc common parameters @@ -4262,7 +4316,7 @@
-### Swagger common parameters +#### Swagger common parameters @@ -4347,7 +4401,7 @@
-### Queue configuration parameters +#### Queue configuration parameters @@ -4360,8 +4414,7 @@ - + @@ -4567,17 +4620,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + @@ -4627,6 +4707,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -4711,6 +4815,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4729,330 +4863,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5111,7 +4921,13 @@ - + + + + + + + @@ -5159,7 +4975,7 @@ - + @@ -5229,11 +5045,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -5263,7 +5193,7 @@ - + @@ -5313,6 +5243,12 @@ + + + + + + @@ -5355,6 +5291,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5371,7 +5361,21 @@ - + + + + + + + + + + + + + @@ -5443,7 +5447,7 @@
queue.type TB_QUEUE_TYPE in-memory in-memory or kafka (Apache Kafka). The following queue types are deprecated and will no longer be supported in ThingsBoard 4.0: - aws-sqs (AWS SQS), pubsub (PubSub), service-bus (Azure Service Bus), rabbitmq (RabbitMQ) in-memory or kafka (Apache Kafka)
queue.prefix600000 Example of specific consumer properties value per topic for VC
queue.kafka.consumer-properties-per-topic.tb_edge.keymax.poll.records Properties for consumers targeting edge service update topics.
queue.kafka.consumer-properties-per-topic.tb_edge.key.valueTB_QUEUE_KAFKA_EDGE_EVENTS_MAX_POLL_RECORDS10 Define the maximum number of records that can be polled from tb_edge topics per request.
queue.kafka.consumer-properties-per-topic.tb_edge.notifications.keymax.poll.records Properties for consumers targeting high-priority edge notifications. + These notifications include RPC calls, lifecycle events, and new queue messages, + requiring minimal latency and swift processing.
queue.kafka.consumer-properties-per-topic.tb_edge.notifications.key.valueTB_QUEUE_KAFKA_EDGE_HP_EVENTS_MAX_POLL_RECORDS10 Define the maximum number of records that can be polled from tb_edge.notifications.SERVICE_ID topics.
queue.kafka.consumer-properties-per-topic.tb_edge_event.notifications.key max.poll.records Example of specific consumer properties value per topic for edge event Properties for consumers targeting downlinks meant for specific edge topics. + Topic names are dynamically constructed using tenant and edge identifiers.
queue.kafka.consumer-properties-per-topic.tb_edge_event.notifications.key.valueTB_QUEUE_KAFKA_EDGE_EVENT_MAX_POLL_RECORDS50 Example of specific consumer properties value per topic for edge eventTB_QUEUE_KAFKA_EDGE_NOTIFICATIONS_MAX_POLL_RECORDS10 Define the maximum number of records that can be polled from tb_edge_event.notifications.TENANT_ID.EDGE_ID topics.
queue.kafka.consumer-properties-per-topic.tb_housekeeper.key50 Amount of records to be returned in a single poll for cloud event timeseries topic
queue.kafka.consumer-properties-per-topic.edqs.events.keymax.poll.records Key-value properties for Kafka consumer for edqs.events topic
queue.kafka.consumer-properties-per-topic.edqs.events.key.valueTB_QUEUE_KAFKA_EDQS_EVENTS_MAX_POLL_RECORDS512 Max poll records for edqs.events topic
queue.kafka.consumer-properties-per-topic.edqs.state.keymax.poll.records Key-value properties for Kafka consumer for edqs.state topic
queue.kafka.consumer-properties-per-topic.edqs.state.key.valueTB_QUEUE_KAFKA_EDQS_STATE_MAX_POLL_RECORDS512 Max poll records for edqs.state topic
queue.kafka.other-inline TB_QUEUE_KAFKA_OTHER_PROPERTIESretention.ms:2678400000;segment.bytes:52428800;retention.bytes:10485760000;partitions:1;min.insync.replicas:1 Kafka properties for TsCloudEvent topic
queue.kafka.topic-properties.calculated-fieldTB_QUEUE_KAFKA_CF_TOPIC_PROPERTIESretention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 Kafka properties for Calculated Field topics
queue.kafka.topic-properties.calculated-field-stateTB_QUEUE_KAFKA_CF_STATE_TOPIC_PROPERTIESretention.ms:-1;segment.bytes:52428800;retention.bytes:104857600000;partitions:1;min.insync.replicas:1;cleanup.policy:compact Kafka properties for Calculated Field State topics
queue.kafka.topic-properties.edqs-eventsTB_QUEUE_KAFKA_EDQS_EVENTS_TOPIC_PROPERTIESretention.ms:86400000;segment.bytes:52428800;retention.bytes:-1;partitions:1;min.insync.replicas:1 Kafka properties for EDQS events topics
queue.kafka.topic-properties.edqs-requestsTB_QUEUE_KAFKA_EDQS_REQUESTS_TOPIC_PROPERTIESretention.ms:180000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 Kafka properties for EDQS requests topic (default: 3 minutes retention)
queue.kafka.topic-properties.edqs-stateTB_QUEUE_KAFKA_EDQS_STATE_TOPIC_PROPERTIESretention.ms:-1;segment.bytes:52428800;retention.bytes:-1;partitions:1;min.insync.replicas:1;cleanup.policy:compact Kafka properties for EDQS state topic (infinite retention, compaction)
queue.kafka.consumer-stats.enabled TB_QUEUE_KAFKA_CONSUMER_STATS_ENABLED1000 Time to wait for the stats-loading requests to Kafka to finish
queue.aws_sqs.use_default_credential_provider_chainTB_QUEUE_AWS_SQS_USE_DEFAULT_CREDENTIAL_PROVIDER_CHAINfalse Use the default credentials provider for AWS SQS
queue.aws_sqs.access_key_idTB_QUEUE_AWS_SQS_ACCESS_KEY_IDYOUR_KEY Access key ID from AWS IAM user
queue.aws_sqs.secret_access_keyTB_QUEUE_AWS_SQS_SECRET_ACCESS_KEYYOUR_SECRET Secret access key from AWS IAM user
queue.aws_sqs.regionTB_QUEUE_AWS_SQS_REGIONYOUR_REGION Region from AWS account
queue.aws_sqs.threads_per_topicTB_QUEUE_AWS_SQS_THREADS_PER_TOPIC1 Number of threads per each AWS SQS queue in consumer
queue.aws_sqs.producer_thread_pool_sizeTB_QUEUE_AWS_SQS_EXECUTOR_THREAD_POOL_SIZE50 Thread pool size for aws_sqs queue producer executor provider. Default value equals to AmazonSQSAsyncClient.DEFAULT_THREAD_POOL_SIZE
queue.aws_sqs.queue-properties.rule-engineTB_QUEUE_AWS_SQS_RE_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.coreTB_QUEUE_AWS_SQS_CORE_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.transport-apiTB_QUEUE_AWS_SQS_TA_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.notificationsTB_QUEUE_AWS_SQS_NOTIFICATIONS_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.js-executorTB_QUEUE_AWS_SQS_JE_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800
queue.aws_sqs.queue-properties.ota-updatesTB_QUEUE_AWS_SQS_OTA_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.version-controlTB_QUEUE_AWS_SQS_VC_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.edgeTB_QUEUE_AWS_SQS_EDGE_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.pubsub.project_idTB_QUEUE_PUBSUB_PROJECT_IDYOUR_PROJECT_ID Project ID from Google Cloud
queue.pubsub.service_accountTB_QUEUE_PUBSUB_SERVICE_ACCOUNTYOUR_SERVICE_ACCOUNT API Credentials in JSON format
queue.pubsub.max_msg_sizeTB_QUEUE_PUBSUB_MAX_MSG_SIZE1048576 Message size for PubSub queue.Value in bytes
queue.pubsub.max_messagesTB_QUEUE_PUBSUB_MAX_MESSAGES1000 Number of messages per consumer
queue.pubsub.executor_thread_pool_sizeTB_QUEUE_PUBSUB_EXECUTOR_THREAD_POOL_SIZE0 Thread pool size for pubsub queue executor provider. If set to 0 - default pubsub executor provider value will be used (5 * number of available processors)
queue.pubsub.queue-properties.rule-engineTB_QUEUE_PUBSUB_RE_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Rule Engine subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.coreTB_QUEUE_PUBSUB_CORE_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Core subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.transport-apiTB_QUEUE_PUBSUB_TA_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Transport API subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.notificationsTB_QUEUE_PUBSUB_NOTIFICATIONS_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Version Control subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.js-executorTB_QUEUE_PUBSUB_JE_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 PubSub queue properties
queue.pubsub.queue-properties.version-controlTB_QUEUE_PUBSUB_VC_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Transport Api subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.edgeTB_QUEUE_PUBSUB_EDGE_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Edge subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.service_bus.namespace_nameTB_QUEUE_SERVICE_BUS_NAMESPACE_NAMEYOUR_NAMESPACE_NAME Azure namespace
queue.service_bus.sas_key_nameTB_QUEUE_SERVICE_BUS_SAS_KEY_NAMEYOUR_SAS_KEY_NAME Azure Service Bus Shared Access Signatures key name
queue.service_bus.sas_keyTB_QUEUE_SERVICE_BUS_SAS_KEYYOUR_SAS_KEY Azure Service Bus Shared Access Signatures key
queue.service_bus.max_messagesTB_QUEUE_SERVICE_BUS_MAX_MESSAGES1000 Number of messages per a consumer
queue.service_bus.queue-properties.rule-engineTB_QUEUE_SERVICE_BUS_RE_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Rule Engine queues
queue.service_bus.queue-properties.coreTB_QUEUE_SERVICE_BUS_CORE_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Core queues
queue.service_bus.queue-properties.transport-apiTB_QUEUE_SERVICE_BUS_TA_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Transport Api queues
queue.service_bus.queue-properties.notificationsTB_QUEUE_SERVICE_BUS_NOTIFICATIONS_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Notification queues
queue.service_bus.queue-properties.js-executorTB_QUEUE_SERVICE_BUS_JE_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus queue properties
queue.service_bus.queue-properties.version-controlTB_QUEUE_SERVICE_BUS_VC_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Version Control queues
queue.service_bus.queue-properties.edgeTB_QUEUE_SERVICE_BUS_EDGE_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Edge queues
queue.rabbitmq.exchange_nameTB_QUEUE_RABBIT_MQ_EXCHANGE_NAME By default empty
queue.rabbitmq.hostTB_QUEUE_RABBIT_MQ_HOSTlocalhost RabbitMQ host used to establish connection
queue.rabbitmq.portTB_QUEUE_RABBIT_MQ_PORT5672 RabbitMQ host used to establish a connection
queue.rabbitmq.virtual_hostTB_QUEUE_RABBIT_MQ_VIRTUAL_HOST/ Virtual hosts provide logical grouping and separation of resources
queue.rabbitmq.usernameTB_QUEUE_RABBIT_MQ_USERNAMEYOUR_USERNAME Username for RabbitMQ user account
queue.rabbitmq.passwordTB_QUEUE_RABBIT_MQ_PASSWORDYOUR_PASSWORD User password for RabbitMQ user account
queue.rabbitmq.automatic_recovery_enabledTB_QUEUE_RABBIT_MQ_AUTOMATIC_RECOVERY_ENABLEDfalse Network connection between clients and RabbitMQ nodes can fail. RabbitMQ Java client supports automatic recovery of connections and topology (queues, exchanges, bindings, and consumers)
queue.rabbitmq.connection_timeoutTB_QUEUE_RABBIT_MQ_CONNECTION_TIMEOUT60000 The connection timeout for the RabbitMQ connection factory
queue.rabbitmq.handshake_timeoutTB_QUEUE_RABBIT_MQ_HANDSHAKE_TIMEOUT10000 RabbitMQ has a timeout for connection handshake. When clients run in heavily constrained environments, it may be necessary to increase the timeout
queue.rabbitmq.max_poll_messagesTB_QUEUE_RABBIT_MQ_MAX_POLL_MESSAGES1 The maximum number of messages returned in a single call of doPoll() method
queue.rabbitmq.queue-properties.rule-engineTB_QUEUE_RABBIT_MQ_RE_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Rule Engine queues
queue.rabbitmq.queue-properties.coreTB_QUEUE_RABBIT_MQ_CORE_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Core queues
queue.rabbitmq.queue-properties.transport-apiTB_QUEUE_RABBIT_MQ_TA_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Transport API queues
queue.rabbitmq.queue-properties.notificationsTB_QUEUE_RABBIT_MQ_NOTIFICATIONS_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Notification queues
queue.rabbitmq.queue-properties.js-executorTB_QUEUE_RABBIT_MQ_JE_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ queue properties
queue.rabbitmq.queue-properties.version-controlTB_QUEUE_RABBIT_MQ_VC_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Version Control queues
queue.rabbitmq.queue-properties.edgeTB_QUEUE_RABBIT_MQ_EDGE_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Edge queues
queue.partitions.hash_function_name TB_QUEUE_PARTITIONS_HASH_FUNCTION_NAMEqueue.core.topic TB_QUEUE_CORE_TOPIC tb_core Default topic name of Kafka, RabbitMQ, etc. queue Default topic name
queue.core.notifications_topicTB_QUEUE_CORE_NOTIFICATIONS_TOPICtb_core.notifications For high-priority notifications that require minimum latency and processing time
queue.core.poll-intervalqueue.core.usage-stats-topic TB_QUEUE_US_TOPIC tb_usage_stats Stats topic name for queue Kafka, RabbitMQ, etc. Stats topic name
queue.core.stats.enabled60000 Statistics printing interval for Housekeeper
queue.edqs.sync.enabledTB_EDQS_SYNC_ENABLEDfalse Enable/disable EDQS synchronization
queue.edqs.sync.entity_batch_sizeTB_EDQS_SYNC_ENTITY_BATCH_SIZE10000 Batch size of entities being synced with EDQS
queue.edqs.sync.ts_batch_sizeTB_EDQS_SYNC_TS_BATCH_SIZE10000 Batch size of timeseries data being synced with EDQS
queue.edqs.api.supportedTB_EDQS_API_SUPPORTEDfalse Whether to forward entity data query requests to EDQS (otherwise use PostgreSQL implementation)
queue.edqs.api.auto_enableTB_EDQS_API_AUTO_ENABLEtrue Whether to auto-enable EDQS API (if queue.edqs.api.supported is true) when sync of data to Kafka is finished
queue.edqs.modeTB_EDQS_MODElocal Mode of EDQS: local (for monolith) or remote (with separate EDQS microservices)
queue.edqs.local.rocksdb_pathTB_EDQS_ROCKSDB_PATH${user.home}/.rocksdb/edqs Path to RocksDB for EDQS backup when running in local mode
queue.edqs.partitionsTB_EDQS_PARTITIONS12 Number of partitions for EDQS topics
queue.edqs.partitioning_strategyTB_EDQS_PARTITIONING_STRATEGYtenant EDQS partitioning strategy: tenant (partition is resolved by tenant id) or none (no specific strategy, resolving by message key)
queue.edqs.events_topicTB_EDQS_EVENTS_TOPICedqs.events EDQS events topic
queue.edqs.state_topicTB_EDQS_STATE_TOPICedqs.state EDQS state topic
queue.edqs.requests_topicTB_EDQS_REQUESTS_TOPICedqs.requests EDQS requests topic
queue.edqs.responses_topicTB_EDQS_RESPONSES_TOPICedqs.responses EDQS responses topic
queue.edqs.poll_intervalTB_EDQS_POLL_INTERVAL_MS25 Poll interval for EDQS topics
queue.edqs.max_pending_requestsTB_EDQS_MAX_PENDING_REQUESTS10000 Maximum amount of pending requests to EDQS
queue.edqs.max_request_timeoutTB_EDQS_MAX_REQUEST_TIMEOUT20000 Maximum timeout for requests to EDQS
queue.edqs.string_compression_length_thresholdTB_EDQS_STRING_COMPRESSION_LENGTH_THRESHOLD512 Strings longer than this threshold will be compressed
queue.edqs.stats.enabledTB_EDQS_STATS_ENABLEDtrue Enable/disable statistics for EDQS
queue.edqs.stats.slow_query_thresholdTB_EDQS_SLOW_QUERY_THRESHOLD_MS3000 Threshold for slow queries to log, in milliseconds
queue.vc.topic TB_QUEUE_VC_TOPIC tb_version_control Default topic name for Kafka, RabbitMQ, etc. Default topic name
queue.vc.partitionsqueue.vc.msg-chunk-size TB_QUEUE_VC_MSG_CHUNK_SIZE 250000 Queue settings for Kafka, RabbitMQ, etc. Limit for single message size Limit for single queue message size
queue.js.request_topictb_rule_engine Deprecated. It will be removed in the nearest releases
queue.rule-engine.notifications_topicTB_QUEUE_RULE_ENGINE_NOTIFICATIONS_TOPICtb_rule_engine.notifications For high-priority notifications that require minimum latency and processing time
queue.rule-engine.poll-interval TB_QUEUE_RULE_ENGINE_POLL_INTERVAL_MS12 Size of the thread pool that handles such operations as partition changes, config updates, queue deletion
queue.calculated_fields.event_topicTB_QUEUE_CF_EVENT_TOPICtb_cf_event Topic name for Calculated Field (CF) events from Rule Engine
queue.calculated_fields.state_topicTB_QUEUE_CF_STATE_TOPICtb_cf_state Topic name for Calculated Field (CF) compacted states
queue.calculated_fields.notifications_topicTB_QUEUE_CF_NOTIFICATIONS_TOPICcalculated_field.notifications For high-priority notifications that require minimum latency and processing time
queue.calculated_fields.poll_intervalTB_QUEUE_CF_POLL_INTERVAL_MS1000 Interval in milliseconds to poll messages by CF (Rule Engine) microservices
queue.calculated_fields.pack_processing_timeoutTB_QUEUE_CF_PACK_PROCESSING_TIMEOUT_MS60000 Timeout for processing a message pack by CF microservices
queue.calculated_fields.pool_sizeTB_QUEUE_CF_POOL_SIZE8 Thread pool size for processing of the incoming messages
queue.calculated_fields.rocks_db_pathTB_QUEUE_CF_ROCKS_DB_PATH${user.home}/.rocksdb/edge_cf_states RocksDB path for storing CF states
queue.calculated_fields.init_fetch_pack_sizeTB_QUEUE_CF_FETCH_PACK_SIZE50000 The fetch size specifies how many rows will be fetched from the database per request for initial fetching
queue.calculated_fields.init_tenant_fetch_pack_sizeTB_QUEUE_CF_TENANT_FETCH_PACK_SIZE1000 The fetch size specifies how many rows will be fetched from the database per request for per-tenant fetching
queue.transport.notifications_topic TB_QUEUE_TRANSPORT_NOTIFICATIONS_TOPICqueue.edge.topic TB_QUEUE_EDGE_TOPIC tb_edge Default topic name for Kafka, RabbitMQ, etc. Topic name to notify edge service on entity updates, assignment, etc.
queue.edge.notifications_topicTB_QUEUE_EDGE_NOTIFICATIONS_TOPICtb_edge.notifications Topic prefix for high-priority edge notifications (rpc, lifecycle, new messages in queue) that require minimum latency and processing time. + Each tb-core has its own topic: PREFIX.SERVICE_ID
queue.edge.event_notifications_topicTB_QUEUE_EDGE_EVENT_NOTIFICATIONS_TOPICtb_edge_event.notifications Topic prefix for downlinks to be pushed to specific edge. + Every edge has its own unique topic: PREFIX.TENANT_ID.EDGE_ID
queue.edge.partitions
-### Event configuration parameters +#### Event configuration parameters @@ -5462,7 +5466,7 @@
-### General service parameters +#### General service parameters @@ -5500,7 +5504,7 @@
-### Metrics parameters +#### Metrics parameters @@ -5537,7 +5541,7 @@
-### Version control parameters +#### Version control parameters @@ -5568,7 +5572,7 @@
-### Notification system parameters +#### Notification system parameters @@ -5593,7 +5597,7 @@
-### General management parameters +#### General management parameters @@ -5618,7 +5622,7 @@
-### Mobile application settings for Thingsboard mobile application +#### Mobile application settings for Thingsboard mobile application diff --git a/_includes/docs/edge/user-guide/ota-updates.md b/_includes/docs/edge/user-guide/ota-updates.md index 685a583525..52f2dbd9f5 100644 --- a/_includes/docs/edge/user-guide/ota-updates.md +++ b/_includes/docs/edge/user-guide/ota-updates.md @@ -6,7 +6,7 @@ The ThingsBoard **Over-the-Air (OTA) Update** feature is a powerful way to remotely manage device firmware or software, reducing the need for manual updates and enabling rapid deployment of enhancements or fixes. The **Edge OTA Update** feature is designed similarly to the **Platform (Cloud) OTA Update**. As a result, the **Edge OTA Update** packages can be deployed in both Device and Device Profile configurations in the same manner as **Platform** Device and Device Profile configurations. -Please refer to the [Platform OTA Updates documentation](/docs/{{cloudDocsPrefix}}user-guide/ota-updates/) for a general understanding of the **OTA Update** feature. +Please refer to the [Platform OTA Updates documentation](/docs/{{cloudDocsPrefix}}user-guide/ota-updates/){: target="_blank"} for a general understanding of the **OTA Update** feature. ## Provisioning OTA Packages to the ThingsBoard Repository @@ -21,7 +21,7 @@ The **OTA Update packages** are created on the **ThingsBoard Platform**. It is * ### Create the OTA Update Package -To create the **OTA update** package on your **ThingsBoard Platform**, navigate to the **Advanced features > OTA updates** section and click the **"+"** icon. +To create the **OTA update** package on your **ThingsBoard Platform**, navigate to the **Advanced features > OTA updates** section and click the **"+"** icon. In the pop-up window, fill in the following fields: * **Title:** Enter the firmware package name. * **Version:** Enter the firmware package update version number. @@ -31,7 +31,7 @@ In the pop-up window, fill in the following fields: * **"Upload binary file"/"Use external URL" radiobutton:** Select the file package source. Depending on the selected option, the following will occur: * **Package file:** Drag-n-drop the package file or browse to it on your computer. * **Direct URL:** Enter a direct URL to download the file. -* Click the **"Add"** button. _Please note that once the package is uploaded, the title, version, device profile, and package type cannot be modified_. +* Click the **"Add"** button. _Please note: once the package is uploaded, the title, version, device profile, and package type cannot be modified_. * Verify that firmware package has been successfully uploaded. {% include images-gallery.html imageCollection="createFirmware" %} diff --git a/_includes/docs/edge/user-guide/rule-engine/queues.md b/_includes/docs/edge/user-guide/rule-engine/queues.md index c9e37010b5..c94032748e 100644 --- a/_includes/docs/edge/user-guide/rule-engine/queues.md +++ b/_includes/docs/edge/user-guide/rule-engine/queues.md @@ -1,25 +1,26 @@ * TOC {:toc} -## Overview +### Overview -Edge Queues are designed in the same way, as [Platform (Cloud) Queues](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-5/queues/). -Please read Platform Queues documentation to get knowledge on Queues functionality in general. +In **ThingsBoard**, **queues** guarantee the message processing, handle occasional spikes, and keep the system up and running on extreme loads. +**Edge Queues** are designed in the same way as **Platform (Cloud) Queues**. +For a better understanding, read the [Platform Queues documentation](/docs/{{peDocsPrefix}}user-guide/rule-engine-2-5/queues/){: target="_blank"}. -## Propagation Queues to Edge +**Tenant administrators** can use any **queue** in the **Edge Rule Chain**, the same as the **Platform Rule Chain**. +**Queues** can be used in [checkpoint node](/docs/{{peDocsPrefix}}user-guide/rule-engine-2-0/flow-nodes/#checkpoint-node){: target="_blank"} +or any [analytics nodes](/docs/pe/user-guide/rule-engine-2-0/analytics-nodes/){: target="_blank"} (for a Professional Edition). -Queues are created on the *Platform*. In the current version you **can not** create, modify or delete them on the *Edge*. +Starting with **Edge 3.9**, Edge supports **Kafka** and **in-memory** types of message queues: +* **In-Memory:** The built-in and default queue implementation. It is useful for development or proof-of-concept (PoC) environments, but is not recommended for production or any type of clustered deployments due to limited scalability. +* **Kafka:** A widely used, distributed, and durable message queue system designed to handle large volumes of data. It is well-suited for production environments where high throughput, fault tolerance, and scalability are critical. -All the Queues, that are created on the Platform, are automatically propagated to every Edge instance, that is connected to the Platform. -No additional assignment actions required from Tenant administrator or user. +All **queues** are created on the **Platform** and automatically propagated to each **Edge** instance connected to the **Platform**. +Only a **system administrator** user can configure queues. After configuration, new changes will apply immediately. +No additional assignment actions are required by **tenant administrator** or **user**. -## Queues Usage in the Rule Engine +In the current release, you cannot create, modify, or delete **queues** on the **Edge**. -Tenant administrator is able to use any Queue in the *Edge* Rule Chain, in the same way as it used for *Platform* Rule Chain. - -You can use Queues in *Checkpoint* or any analytics (**PE**) rule nodes. -No additional configuration steps required. - -## Next steps +### Next steps {% include templates/edge/guides-banner-edge.md %} diff --git a/_includes/docs/pe/edge/user-guide/install/config.md b/_includes/docs/pe/edge/user-guide/install/config.md index 1cf3f0bc7d..e6571660a0 100644 --- a/_includes/docs/pe/edge/user-guide/install/config.md +++ b/_includes/docs/pe/edge/user-guide/install/config.md @@ -1,7 +1,7 @@ * TOC {:toc} -### Server common parameters +#### Server common parameters
@@ -208,7 +208,7 @@
-### Cloud configuration +#### Cloud configuration @@ -346,7 +346,7 @@
-### Application info parameters +#### Application info parameters @@ -365,7 +365,7 @@
-### Zookeeper connection parameters +#### Zookeeper connection parameters @@ -422,7 +422,7 @@
-### Cluster parameters +#### Cluster parameters @@ -447,7 +447,7 @@
-### Plugins configuration parameters +#### Plugins configuration parameters @@ -466,7 +466,7 @@
-### Security parameters +#### Security parameters @@ -557,7 +557,7 @@
-### Mail settings parameters +#### Mail settings parameters @@ -582,7 +582,7 @@
-### Usage statistics parameters +#### Usage statistics parameters @@ -606,9 +606,15 @@ - + + + + + + + @@ -631,7 +637,7 @@
usage.stats.report.interval USAGE_STATS_REPORT_INTERVAL1060 Statistics reporting interval, set to send summarized data every 10 seconds by default
usage.stats.report.pack_sizeUSAGE_STATS_REPORT_PACK_SIZE1024 Amount of statistic messages in pack
usage.stats.check.cycle USAGE_STATS_CHECK_CYCLE
-### UI settings parameters +#### UI settings parameters @@ -649,7 +655,7 @@ - + @@ -662,7 +668,7 @@
ui.help.base-url UI_HELP_BASE_URLhttps://raw.githubusercontent.com/thingsboard/thingsboard-pe-ui-help/release-3.9https://raw.githubusercontent.com/thingsboard/thingsboard-pe-ui-help/release-4.0 Base URL for UI help assets
-### Database telemetry parameters +#### Database telemetry parameters @@ -693,7 +699,7 @@
-### Cassandra driver configuration parameters +#### Cassandra driver configuration parameters @@ -1008,7 +1014,7 @@
-### SQL configuration parameters +#### SQL configuration parameters @@ -1448,7 +1454,7 @@
-### Actor system parameters +#### Actor system parameters @@ -1505,6 +1511,18 @@ + + + + + + + + + + + + @@ -1648,18 +1666,30 @@ - - - - - - + + + + + + + + + + + + + + + + + + @@ -1671,7 +1701,7 @@
4 Thread pool size for actor system dispatcher that process messages for edge actors
actors.system.cfm_dispatcher_pool_sizeACTORS_SYSTEM_CFM_DISPATCHER_POOL_SIZE2 Thread pool size for actor system dispatcher that process messages for CalculatedField manager actors
actors.system.cfe_dispatcher_pool_sizeACTORS_SYSTEM_CFE_DISPATCHER_POOL_SIZE8 Thread pool size for actor system dispatcher that process messages for CalculatedField entity actors
actors.tenant.create_components_on_init ACTORS_TENANT_CREATE_COMPONENTS_ON_INITtrue Enable/disable actor statistics
actors.statistics.js_print_interval_msACTORS_JS_STATISTICS_PRINT_INTERVAL_MS10000 Frequency of printing the JS executor statistics
actors.statistics.persist_frequency ACTORS_STATISTICS_PERSIST_FREQUENCY 3600000 Actors statistic persistence frequency in milliseconds
actors.calculated_fields.debug_mode_rate_limits_per_tenant.enabledACTORS_CALCULATED_FIELD_DEBUG_MODE_RATE_LIMITS_PER_TENANT_ENABLEDtrue Enable/Disable the rate limit of persisted debug events for all calculated fields per tenant
actors.calculated_fields.debug_mode_rate_limits_per_tenant.configurationACTORS_CALCULATED_FIELD_DEBUG_MODE_RATE_LIMITS_PER_TENANT_CONFIGURATION50000:3600 The value of DEBUG mode rate limit. By default, no more than 50 thousand events per hour
actors.calculated_fields.calculation_timeoutACTORS_CALCULATION_TIMEOUT_SEC5 Time in seconds to receive calculation result.
debug.settings.default_duration DEBUG_SETTINGS_DEFAULT_DURATION_MINUTES
-### Platform integrations parameters +#### Platform integrations parameters @@ -1792,8 +1822,10 @@ - - + + @@ -1805,7 +1837,7 @@
integrations.converters.library.branch TB_INTEGRATIONS_CONVERTERS_LIBRARY_REPO_BRANCHmain Branch of the data converters repository to userelease/4.0.0 Branch of the data converters repository to use. By default, a release branch with compatible version. + Whenever non-backward-compatible changes are needed in the library - a new branch with min supported TB version should be created, + and the default branch here - updated.
integrations.converters.library.fetch_frequency
-### Reports parameters +#### Reports parameters @@ -1848,7 +1880,7 @@
-### Cache settings parameters +#### Cache settings parameters @@ -2179,7 +2211,7 @@ - + @@ -2522,7 +2554,7 @@
cache.specs.relatedEdges.maxSize CACHE_SPECS_RELATED_EDGES_MAX_SIZE010000 0 means the cache is disabled
-### Spring data parameters +#### Spring data parameters @@ -2541,7 +2573,7 @@
-### Redis configuration parameters +#### Redis configuration parameters @@ -2752,7 +2784,7 @@
-### Update version parameters +#### Update version parameters @@ -2771,7 +2803,7 @@
-### Spring CORS configuration parameters +#### Spring CORS configuration parameters @@ -2814,7 +2846,7 @@
-### General spring parameters +#### General spring parameters @@ -2893,7 +2925,7 @@
-### SQL DAO Configuration parameters +#### SQL DAO Configuration parameters @@ -2974,7 +3006,7 @@ + error_event, lc_event, rule_chain_debug_event, rule_node_debug_event, stats_event, converter_debug_event, integration_debug_event, raw_data_event, audit_log, cf_debug_event @@ -3022,7 +3054,7 @@
false Enable dedicated datasource (a separate database) for events and audit logs. Before enabling this, make sure you have set up the following tables in the new DB: - error_event, lc_event, rule_chain_debug_event, rule_node_debug_event, stats_event, converter_debug_event, integration_debug_event, raw_data_event, audit_log
spring.datasource.events.driverClassName
-### Audit log parameters +#### Audit log parameters @@ -3157,6 +3189,12 @@ + + + + + + @@ -3225,7 +3263,7 @@
W Ota package logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation
audit-log.logging-level.mask."calculated_field"AUDIT_LOG_MASK_CALCULATED_FIELDW Calculated field logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation
audit-log.logging-level.mask."role" AUDIT_LOG_MASK_ROLE
-### Device state parameters +#### Device state parameters @@ -3280,7 +3318,7 @@
-### Tbel parameters +#### Tbel parameters @@ -3365,7 +3403,7 @@
-### JS parameters +#### JS parameters @@ -3492,7 +3530,7 @@
-### Transport configuration parameters +#### Transport configuration parameters @@ -4122,11 +4160,17 @@ + + + + + + - - + + @@ -4191,7 +4235,7 @@ - + @@ -4204,7 +4248,7 @@
true Enable/disable SNMP transport protocol
transport.snmp.bind_addressSNMP_BIND_ADDRESS0.0.0.0 SNMP bind address
transport.snmp.bind_port SNMP_BIND_PORT1620 Snmp bind port0 SNMP bind port. Zero (random) by default. When using SNMP TRAPs - make sure to specify some static value, e.g. 1620
transport.snmp.response_processing.parallelism_level
transport.gateway.dashboard.sync.branch TB_GATEWAY_DASHBOARD_SYNC_BRANCHmainrelease/4.0.0 Branch of gateways dashboard repository to work with
-### CoAP server parameters +#### CoAP server parameters @@ -4214,7 +4258,7 @@ - + @@ -4377,7 +4421,7 @@
coap.enabledcoap.server.enabled COAP_SERVER_ENABLED true Enable/disable coap server.
-### Device connectivity parameters +#### Device connectivity parameters @@ -4500,11 +4544,17 @@ + + + + + +
5684 Port of coap transport service. If empty, the default port for coaps will be used.
device.connectivity.coaps.pem_cert_fileDEVICE_CONNECTIVITY_COAPS_CA_ROOT_CERTcafile.pem Path to the COAP CA root certificate file
-### Edges parameters +#### Edges parameters @@ -4631,7 +4681,7 @@
-### Spring doc common parameters +#### Spring doc common parameters @@ -4656,7 +4706,7 @@
-### Swagger common parameters +#### Swagger common parameters @@ -4747,7 +4797,7 @@
-### Queue configuration parameters +#### Queue configuration parameters @@ -4760,8 +4810,7 @@ - + @@ -5027,6 +5076,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -5117,6 +5190,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5135,354 +5238,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5541,7 +5296,13 @@ - + + + + + + + @@ -5589,7 +5350,7 @@ - + @@ -5665,11 +5426,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -5699,7 +5562,7 @@ - + @@ -5749,6 +5612,12 @@ + + + + + + @@ -5791,6 +5660,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5807,7 +5718,19 @@ - + + + + + + + + + + + + + @@ -5860,8 +5783,8 @@ - - + + @@ -5869,6 +5792,13 @@ + + + + + + @@ -5957,7 +5887,7 @@
queue.type TB_QUEUE_TYPE in-memory in-memory or kafka (Apache Kafka). The following queue types are deprecated and will no longer be supported in ThingsBoard 4.0: - aws-sqs (AWS SQS), pubsub (PubSub), service-bus (Azure Service Bus), rabbitmq (RabbitMQ) in-memory or kafka (Apache Kafka)
queue.prefix50 Amount of records to be returned in a single poll for cloud event timeseries topic
queue.kafka.consumer-properties-per-topic.edqs.events.keymax.poll.records Key-value properties for Kafka consumer for edqs.events topic
queue.kafka.consumer-properties-per-topic.edqs.events.key.valueTB_QUEUE_KAFKA_EDQS_EVENTS_MAX_POLL_RECORDS512 Max poll records for edqs.events topic
queue.kafka.consumer-properties-per-topic.edqs.state.keymax.poll.records Key-value properties for Kafka consumer for edqs.state topic
queue.kafka.consumer-properties-per-topic.edqs.state.key.valueTB_QUEUE_KAFKA_EDQS_STATE_MAX_POLL_RECORDS512 Max poll records for edqs.state topic
queue.kafka.other-inline TB_QUEUE_KAFKA_OTHER_PROPERTIESretention.ms:2678400000;segment.bytes:52428800;retention.bytes:10485760000;partitions:1;min.insync.replicas:1 Kafka properties for TsCloudEvent topic
queue.kafka.topic-properties.calculated-fieldTB_QUEUE_KAFKA_CF_TOPIC_PROPERTIESretention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 Kafka properties for Calculated Field topics
queue.kafka.topic-properties.calculated-field-stateTB_QUEUE_KAFKA_CF_STATE_TOPIC_PROPERTIESretention.ms:-1;segment.bytes:52428800;retention.bytes:104857600000;partitions:1;min.insync.replicas:1;cleanup.policy:compact Kafka properties for Calculated Field State topics
queue.kafka.topic-properties.edqs-eventsTB_QUEUE_KAFKA_EDQS_EVENTS_TOPIC_PROPERTIESretention.ms:86400000;segment.bytes:52428800;retention.bytes:-1;partitions:1;min.insync.replicas:1 Kafka properties for EDQS events topics
queue.kafka.topic-properties.edqs-requestsTB_QUEUE_KAFKA_EDQS_REQUESTS_TOPIC_PROPERTIESretention.ms:180000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 Kafka properties for EDQS requests topic (default: 3 minutes retention)
queue.kafka.topic-properties.edqs-stateTB_QUEUE_KAFKA_EDQS_STATE_TOPIC_PROPERTIESretention.ms:-1;segment.bytes:52428800;retention.bytes:-1;partitions:1;min.insync.replicas:1;cleanup.policy:compact Kafka properties for EDQS state topic (infinite retention, compaction)
queue.kafka.consumer-stats.enabled TB_QUEUE_KAFKA_CONSUMER_STATS_ENABLED1000 Time to wait for the stats-loading requests to Kafka to finish
queue.aws_sqs.use_default_credential_provider_chainTB_QUEUE_AWS_SQS_USE_DEFAULT_CREDENTIAL_PROVIDER_CHAINfalse Use the default credentials provider for AWS SQS
queue.aws_sqs.access_key_idTB_QUEUE_AWS_SQS_ACCESS_KEY_IDYOUR_KEY Access key ID from AWS IAM user
queue.aws_sqs.secret_access_keyTB_QUEUE_AWS_SQS_SECRET_ACCESS_KEYYOUR_SECRET Secret access key from AWS IAM user
queue.aws_sqs.regionTB_QUEUE_AWS_SQS_REGIONYOUR_REGION Region from AWS account
queue.aws_sqs.threads_per_topicTB_QUEUE_AWS_SQS_THREADS_PER_TOPIC1 Number of threads per each AWS SQS queue in consumer
queue.aws_sqs.producer_thread_pool_sizeTB_QUEUE_AWS_SQS_EXECUTOR_THREAD_POOL_SIZE50 Thread pool size for aws_sqs queue producer executor provider. Default value equals to AmazonSQSAsyncClient.DEFAULT_THREAD_POOL_SIZE
queue.aws_sqs.queue-properties.rule-engineTB_QUEUE_AWS_SQS_RE_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.coreTB_QUEUE_AWS_SQS_CORE_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.transport-apiTB_QUEUE_AWS_SQS_TA_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.notificationsTB_QUEUE_AWS_SQS_NOTIFICATIONS_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.js-executorTB_QUEUE_AWS_SQS_JE_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800
queue.aws_sqs.queue-properties.ota-updatesTB_QUEUE_AWS_SQS_OTA_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.version-controlTB_QUEUE_AWS_SQS_VC_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.edgeTB_QUEUE_AWS_SQS_EDGE_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.aws_sqs.queue-properties.integration-apiTB_QUEUE_AWS_SQS_INTEGRATION_QUEUE_PROPERTIESVisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
queue.pubsub.project_idTB_QUEUE_PUBSUB_PROJECT_IDYOUR_PROJECT_ID Project ID from Google Cloud
queue.pubsub.service_accountTB_QUEUE_PUBSUB_SERVICE_ACCOUNTYOUR_SERVICE_ACCOUNT API Credentials in JSON format
queue.pubsub.max_msg_sizeTB_QUEUE_PUBSUB_MAX_MSG_SIZE1048576 Message size for PubSub queue.Value in bytes
queue.pubsub.max_messagesTB_QUEUE_PUBSUB_MAX_MESSAGES1000 Number of messages per consumer
queue.pubsub.executor_thread_pool_sizeTB_QUEUE_PUBSUB_EXECUTOR_THREAD_POOL_SIZE0 Thread pool size for pubsub queue executor provider. If set to 0 - default pubsub executor provider value will be used (5 * number of available processors)
queue.pubsub.queue-properties.rule-engineTB_QUEUE_PUBSUB_RE_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Rule Engine subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.coreTB_QUEUE_PUBSUB_CORE_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Core subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.transport-apiTB_QUEUE_PUBSUB_TA_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Transport API subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.notificationsTB_QUEUE_PUBSUB_NOTIFICATIONS_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Version Control subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.js-executorTB_QUEUE_PUBSUB_JE_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 PubSub queue properties
queue.pubsub.queue-properties.version-controlTB_QUEUE_PUBSUB_VC_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Transport Api subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.edgeTB_QUEUE_PUBSUB_EDGE_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Edge subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.pubsub.queue-properties.integration-apiTB_QUEUE_PUBSUB_INTEGRATION_QUEUE_PROPERTIESackDeadlineInSec:30;messageRetentionInSec:604800 Pub/Sub properties for Transport Api subscribers, messages which will commit after ackDeadlineInSec period can be consumed again
queue.service_bus.namespace_nameTB_QUEUE_SERVICE_BUS_NAMESPACE_NAMEYOUR_NAMESPACE_NAME Azure namespace
queue.service_bus.sas_key_nameTB_QUEUE_SERVICE_BUS_SAS_KEY_NAMEYOUR_SAS_KEY_NAME Azure Service Bus Shared Access Signatures key name
queue.service_bus.sas_keyTB_QUEUE_SERVICE_BUS_SAS_KEYYOUR_SAS_KEY Azure Service Bus Shared Access Signatures key
queue.service_bus.max_messagesTB_QUEUE_SERVICE_BUS_MAX_MESSAGES1000 Number of messages per a consumer
queue.service_bus.queue-properties.rule-engineTB_QUEUE_SERVICE_BUS_RE_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Rule Engine queues
queue.service_bus.queue-properties.coreTB_QUEUE_SERVICE_BUS_CORE_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Core queues
queue.service_bus.queue-properties.transport-apiTB_QUEUE_SERVICE_BUS_TA_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Transport Api queues
queue.service_bus.queue-properties.notificationsTB_QUEUE_SERVICE_BUS_NOTIFICATIONS_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Notification queues
queue.service_bus.queue-properties.js-executorTB_QUEUE_SERVICE_BUS_JE_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus queue properties
queue.service_bus.queue-properties.version-controlTB_QUEUE_SERVICE_BUS_VC_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Version Control queues
queue.service_bus.queue-properties.edgeTB_QUEUE_SERVICE_BUS_EDGE_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Edge queues
queue.service_bus.queue-properties.integration-apiTB_QUEUE_SERVICE_BUS_INTEGRATION_QUEUE_PROPERTIESlockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 Azure Service Bus properties for Integration Api queues
queue.rabbitmq.exchange_nameTB_QUEUE_RABBIT_MQ_EXCHANGE_NAME By default empty
queue.rabbitmq.hostTB_QUEUE_RABBIT_MQ_HOSTlocalhost RabbitMQ host used to establish connection
queue.rabbitmq.portTB_QUEUE_RABBIT_MQ_PORT5672 RabbitMQ host used to establish a connection
queue.rabbitmq.virtual_hostTB_QUEUE_RABBIT_MQ_VIRTUAL_HOST/ Virtual hosts provide logical grouping and separation of resources
queue.rabbitmq.usernameTB_QUEUE_RABBIT_MQ_USERNAMEYOUR_USERNAME Username for RabbitMQ user account
queue.rabbitmq.passwordTB_QUEUE_RABBIT_MQ_PASSWORDYOUR_PASSWORD User password for RabbitMQ user account
queue.rabbitmq.automatic_recovery_enabledTB_QUEUE_RABBIT_MQ_AUTOMATIC_RECOVERY_ENABLEDfalse Network connection between clients and RabbitMQ nodes can fail. RabbitMQ Java client supports automatic recovery of connections and topology (queues, exchanges, bindings, and consumers)
queue.rabbitmq.connection_timeoutTB_QUEUE_RABBIT_MQ_CONNECTION_TIMEOUT60000 The connection timeout for the RabbitMQ connection factory
queue.rabbitmq.handshake_timeoutTB_QUEUE_RABBIT_MQ_HANDSHAKE_TIMEOUT10000 RabbitMQ has a timeout for connection handshake. When clients run in heavily constrained environments, it may be necessary to increase the timeout
queue.rabbitmq.max_poll_messagesTB_QUEUE_RABBIT_MQ_MAX_POLL_MESSAGES1 The maximum number of messages returned in a single call of doPoll() method
queue.rabbitmq.queue-properties.rule-engineTB_QUEUE_RABBIT_MQ_RE_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Rule Engine queues
queue.rabbitmq.queue-properties.coreTB_QUEUE_RABBIT_MQ_CORE_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Core queues
queue.rabbitmq.queue-properties.transport-apiTB_QUEUE_RABBIT_MQ_TA_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Transport API queues
queue.rabbitmq.queue-properties.notificationsTB_QUEUE_RABBIT_MQ_NOTIFICATIONS_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Notification queues
queue.rabbitmq.queue-properties.js-executorTB_QUEUE_RABBIT_MQ_JE_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ queue properties
queue.rabbitmq.queue-properties.version-controlTB_QUEUE_RABBIT_MQ_VC_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Version Control queues
queue.rabbitmq.queue-properties.edgeTB_QUEUE_RABBIT_MQ_EDGE_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Edge queues
queue.rabbitmq.queue-properties.integration-apiTB_QUEUE_RABBIT_MQ_INTEGRATION_QUEUE_PROPERTIESx-max-length-bytes:1048576000;x-message-ttl:604800000 RabbitMQ properties for Integration Api queues
queue.partitions.hash_function_name TB_QUEUE_PARTITIONS_HASH_FUNCTION_NAMEqueue.core.topic TB_QUEUE_CORE_TOPIC tb_core Default topic name of Kafka, RabbitMQ, etc. queue Default topic name
queue.core.notifications_topicTB_QUEUE_CORE_NOTIFICATIONS_TOPICtb_core.notifications For high-priority notifications that require minimum latency and processing time
queue.core.poll-intervalqueue.core.usage-stats-topic TB_QUEUE_US_TOPIC tb_usage_stats Stats topic name for queue Kafka, RabbitMQ, etc. Stats topic name
queue.core.stats.enabled60000 Statistics printing interval for Housekeeper
queue.edqs.sync.enabledTB_EDQS_SYNC_ENABLEDfalse Enable/disable EDQS synchronization
queue.edqs.sync.entity_batch_sizeTB_EDQS_SYNC_ENTITY_BATCH_SIZE10000 Batch size of entities being synced with EDQS
queue.edqs.sync.ts_batch_sizeTB_EDQS_SYNC_TS_BATCH_SIZE10000 Batch size of timeseries data being synced with EDQS
queue.edqs.api.supportedTB_EDQS_API_SUPPORTEDfalse Whether to forward entity data query requests to EDQS (otherwise use PostgreSQL implementation)
queue.edqs.api.auto_enableTB_EDQS_API_AUTO_ENABLEtrue Whether to auto-enable EDQS API (if queue.edqs.api.supported is true) when sync of data to Kafka is finished
queue.edqs.modeTB_EDQS_MODElocal Mode of EDQS: local (for monolith) or remote (with separate EDQS microservices)
queue.edqs.local.rocksdb_pathTB_EDQS_ROCKSDB_PATH${user.home}/.rocksdb/edqs Path to RocksDB for EDQS backup when running in local mode
queue.edqs.partitionsTB_EDQS_PARTITIONS12 Number of partitions for EDQS topics
queue.edqs.partitioning_strategyTB_EDQS_PARTITIONING_STRATEGYtenant EDQS partitioning strategy: tenant (partition is resolved by tenant id) or none (no specific strategy, resolving by message key)
queue.edqs.events_topicTB_EDQS_EVENTS_TOPICedqs.events EDQS events topic
queue.edqs.state_topicTB_EDQS_STATE_TOPICedqs.state EDQS state topic
queue.edqs.requests_topicTB_EDQS_REQUESTS_TOPICedqs.requests EDQS requests topic
queue.edqs.responses_topicTB_EDQS_RESPONSES_TOPICedqs.responses EDQS responses topic
queue.edqs.poll_intervalTB_EDQS_POLL_INTERVAL_MS125 Poll interval for EDQS topics
queue.edqs.max_pending_requestsTB_EDQS_MAX_PENDING_REQUESTS10000 Maximum amount of pending requests to EDQS
queue.edqs.max_request_timeoutTB_EDQS_MAX_REQUEST_TIMEOUT20000 Maximum timeout for requests to EDQS
queue.edqs.stats.enabledTB_EDQS_STATS_ENABLEDtrue Enable/disable statistics for EDQS
queue.vc.topic TB_QUEUE_VC_TOPIC tb_version_control Default topic name for Kafka, RabbitMQ, etc. Default topic name
queue.vc.partitionsqueue.vc.msg-chunk-size TB_QUEUE_VC_MSG_CHUNK_SIZE 250000 Queue settings for Kafka, RabbitMQ, etc. Limit for single message size Limit for single queue message size
queue.js.request_topictb_rule_engine Deprecated. It will be removed in the nearest releases
queue.rule-engine.notifications_topicTB_QUEUE_RULE_ENGINE_NOTIFICATIONS_TOPICtb_rule_engine.notifications For high-priority notifications that require minimum latency and processing time
queue.rule-engine.poll-interval TB_QUEUE_RULE_ENGINE_POLL_INTERVAL_MS12 Size of the thread pool that handles such operations as partition changes, config updates, queue deletion
queue.calculated_fields.event_topicTB_QUEUE_CF_EVENT_TOPICtb_cf_event Topic name for Calculated Field (CF) events from Rule Engine
queue.calculated_fields.state_topicTB_QUEUE_CF_STATE_TOPICtb_cf_state Topic name for Calculated Field (CF) compacted states
queue.calculated_fields.notifications_topicTB_QUEUE_CF_NOTIFICATIONS_TOPICcalculated_field.notifications For high-priority notifications that require minimum latency and processing time
queue.calculated_fields.poll_intervalTB_QUEUE_CF_POLL_INTERVAL_MS1000 Interval in milliseconds to poll messages by CF (Rule Engine) microservices
queue.calculated_fields.pack_processing_timeoutTB_QUEUE_CF_PACK_PROCESSING_TIMEOUT_MS60000 Timeout for processing a message pack by CF microservices
queue.calculated_fields.pool_sizeTB_QUEUE_CF_POOL_SIZE8 Thread pool size for processing of the incoming messages
queue.calculated_fields.rocks_db_pathTB_QUEUE_CF_ROCKS_DB_PATH${user.home}/.rocksdb/edge_cf_states RocksDB path for storing CF states
queue.transport.notifications_topic TB_QUEUE_TRANSPORT_NOTIFICATIONS_TOPICqueue.edge.topic TB_QUEUE_EDGE_TOPIC tb_edge Default topic name for Kafka, RabbitMQ, etc. Default topic name
queue.edge.notifications_topicTB_QUEUE_EDGE_NOTIFICATIONS_TOPICtb_edge.notifications For high-priority notifications that require minimum latency and processing time
queue.edge.event_notifications_topicTB_QUEUE_EDGE_EVENT_NOTIFICATIONS_TOPICtb_edge_event.notifications For edge events messages
queue.edge.partitions
queue.integration.notifications_topic TB_QUEUE_INTEGRATION_NOTIFICATIONS_TOPICtb_ie.notifications Default notification topic name used by queuetb_integration_executor.notifications For high-priority notifications that require minimum latency and processing time
queue.integration.downlink_topictb_ie.downlink Default downlink topic name used by queue
queue.integration.downlink_topicsTB_QUEUE_INTEGRATION_DOWNLINK_TOPICS Downlink topic names for integration type (semicolon separated). Example: "MQTT:tb_ie.downlink.mqtt;HTTP:tb_ie.downlink.http" + If not specified, the default topic will construct as before - 'downlink_topic' + IntegrationType.name()
queue.integration.uplink_topic TB_QUEUE_INTEGRATION_UPLINK_TOPIC
-### Event configuration parameters +#### Event configuration parameters @@ -5994,7 +5924,7 @@
-### General service parameters +#### General service parameters @@ -6044,7 +5974,7 @@
-### Metrics parameters +#### Metrics parameters @@ -6081,7 +6011,7 @@
-### Version control parameters +#### Version control parameters @@ -6112,7 +6042,7 @@
-### Notification system parameters +#### Notification system parameters @@ -6137,7 +6067,7 @@
-### General management parameters +#### General management parameters @@ -6162,7 +6092,7 @@
-### Mobile application settings for Thingsboard mobile application +#### Mobile application settings for Thingsboard mobile application diff --git a/_includes/docs/pe/edge/user-guide/scheduler-vs-rule-chain.md b/_includes/docs/pe/edge/user-guide/scheduler-vs-rule-chain.md index a2cfeee226..8431d308af 100644 --- a/_includes/docs/pe/edge/user-guide/scheduler-vs-rule-chain.md +++ b/_includes/docs/pe/edge/user-guide/scheduler-vs-rule-chain.md @@ -19,7 +19,9 @@ Read more about [Rule Engine](/docs/pe/user-guide/rule-engine-2-0/overview/){: t #### Edge-Specific Considerations -* **Rule Chain templates** and **Scheduler events** cannot be created or modified directly on **ThingsBoard Edge**. They must be set up in **ThingsBoard Cloud** and synced to **Edge**. +* Prior to **Edge 4.0**, **Rule Chain templates** could not be created or modified directly on **ThingsBoard Edge**. They had to be configured in **ThingsBoard Cloud** and then synchronized with **Edge**. +* Starting with **Edge version 4.0**, you can create and edit a **Rule Chain** on the **Edge**. +* **Scheduler events** has to be configured in **ThingsBoard Cloud** and assigned to **Edge**. * Once **Rule Chain templates** and **Scheduler events** are synchronized to **Edge** instance, they run entirely at the edge, independent of internet connection. * Both **Scheduler events** and **Rule Chain templates** execute locally on the **Edge**. diff --git a/_includes/templates/edge/integrations/debug-mode-info.md b/_includes/templates/edge/integrations/debug-mode-info.md index c46886c0cb..3347423306 100644 --- a/_includes/templates/edge/integrations/debug-mode-info.md +++ b/_includes/templates/edge/integrations/debug-mode-info.md @@ -1,5 +1,6 @@ {% capture debug_note %} -While **Debug** mode is very useful for development and troubleshooting, leaving it enabled in production mode can significantly increase the disk space -used by the database since all the debug data is stored there. It is highly recommended turning the Debug mode off after debugging is complete. +While **Debug** mode is very useful for development and troubleshooting, keeping it enabled in production can significantly increase database storage requirements, since all debug data is stored there. + +We strongly recommend **disabling Debug mode** once debugging activities are complete. {% endcapture %} {% include templates/info-banner.md content=debug_note %} \ No newline at end of file diff --git a/_includes/templates/edge/integrations/edge-pe-reference.md b/_includes/templates/edge/integrations/edge-pe-reference.md index f06ad709b5..caa6b78cb2 100644 --- a/_includes/templates/edge/integrations/edge-pe-reference.md +++ b/_includes/templates/edge/integrations/edge-pe-reference.md @@ -1,6 +1,6 @@ {% capture pe_integration_note %} -Edge {{integrationName}} Integration is implemented in a similar way, as **{{integrationName}} Integration**. -The only difference is in the way, how integration is created and provisioned. -Please make sure that you have knowledge of [**{{integrationName}} Integration**](/docs/user-guide/integrations/{{integrationUrl}}/) before proceed. +**Edge {{integrationName}} Integration** is implemented similarly to the **{{integrationName}} Integration**. +The only difference is how the integration is created and deployed. +Before proceeding, refer to the [**{{integrationName}} Integration**](/docs/user-guide/integrations/{{integrationUrl}}/){: target="_blank"} documentation. {% endcapture %} {% include templates/info-banner.md content=pe_integration_note %} \ No newline at end of file diff --git a/_includes/templates/edge/integrations/tcp-udp/firewall.md b/_includes/templates/edge/integrations/tcp-udp/firewall.md index 0ac51bee50..0e39108513 100644 --- a/_includes/templates/edge/integrations/tcp-udp/firewall.md +++ b/_includes/templates/edge/integrations/tcp-udp/firewall.md @@ -1,5 +1,5 @@ {% capture tcp_udp_firewall_note %} -On the machine, where remote {{integrationName}} Integration is running, port **{{integrationPort}}** must be opened for incoming connections - **nc** utility must be able to connect to {{integrationName}} socket. -In case you are running it locally, it should be fine without any additional changes. +On the machine, running remote {{integrationName}} Integration, port **{{integrationPort}}** must be opened for incoming connections—the **nc** utility must be able to connect to he {{integrationName}} socket. +If you are running it locally, it should be fine without any additional changes. {% endcapture %} {% include templates/info-banner.md content=tcp_udp_firewall_note %} \ No newline at end of file diff --git a/_includes/templates/edge/integrations/tcp-udp/overview.md b/_includes/templates/edge/integrations/tcp-udp/overview.md index f8fd86d7c4..d2fb72a2a8 100644 --- a/_includes/templates/edge/integrations/tcp-udp/overview.md +++ b/_includes/templates/edge/integrations/tcp-udp/overview.md @@ -1 +1,2 @@ -{{integrationName}} Integration allows to stream data from devices which use a {{integrationName}} transport protocol to ThingsBoard Edge and converts payloads of these devices into the ThingsBoard Edge format. \ No newline at end of file +**{{integrationName}} Integration** allows data to be streamed to **ThingsBoard Edge** from devices that use a {{integrationName}} transport protocol, +and converts payloads from these devices to the **ThingsBoard Edge** format. \ No newline at end of file diff --git a/_includes/templates/edge/integrations/tcp-udp/remote-only.md b/_includes/templates/edge/integrations/tcp-udp/remote-only.md index dd38b4f19b..915a1a2aa4 100644 --- a/_includes/templates/edge/integrations/tcp-udp/remote-only.md +++ b/_includes/templates/edge/integrations/tcp-udp/remote-only.md @@ -1,4 +1,6 @@ {% capture remote_note %} -{{integrationName}} Integration can be started only as [Remote Integration](/docs/pe/edge/user-guide/integrations/remote-integrations). It could be started on the same machine, where TB Edge instance is running, or you can start in on another machine, that has access over the network to the TB Edge instance. +{{integrationName}} Integration can only be started as a [Remote Integration](/docs/pe/edge/user-guide/integrations/remote-integrations){: target="_blank"}. +It can be started on the same machine, where the TB Edge instance is running, +or you can start it on another machine that has access to the **TB Edge** instance over the network. {% endcapture %} {% include templates/info-banner.md content=remote_note %} \ No newline at end of file diff --git a/_includes/templates/edge/rule-engine/rule-chain-templates.md b/_includes/templates/edge/rule-engine/rule-chain-templates.md index 94fd481bf1..a449c967c1 100644 --- a/_includes/templates/edge/rule-engine/rule-chain-templates.md +++ b/_includes/templates/edge/rule-engine/rule-chain-templates.md @@ -1,40 +1,84 @@ -## What Is an Edge Rule Chain Template? +### What Is an Edge Rule Chain Template? -An Edge Rule Chain Template is a predefined Rule Chain in ThingsBoard, designed specifically for use with ThingsBoard Edge. -It is important to note that the rule chain template itself does not execute on the server. +An **Edge Rule Chain template** is a predefined [Rule Chain](/docs/user-guide/rule-engine-2-0/overview/#rule-chain){: target="_blank"} in **ThingsBoard**, designed specifically for use with **ThingsBoard Edge**. +The **Rule Chain template** does not run on the **Server**. Instead, it serves merely as a template. -The actual rule chain, derived from this template, begins functioning and processing data from devices according to its configuration only after it is assigned to an Edge instance and delivered to it. -## Creating Rule Chain Template on the Server +For the **older versions of ThingsBoard Edge**, the **Rule chain** has to be assigned to an **Edge** instance before use. Only then will it work and process data from devices according to its configuration. + +Starting with **Edge version 4.0**, the **Rule chain** can be created and edited right on the **Edge** instance. + +### Creating Rule Chain Template on the Edge + +{% assign sinceVersion = "4.0" %} +{% include templates/edge/since-edge.md %} + +{% assign createRuleChainTemplatePE = ' + === + image: /images/pe/edge/rule-engine/1-edge-rule-chain.webp, + title: Sign in to your ThingsBoard Edge PE instance and go to the Rule chains section. To add a new Rule chain, click the "+" button in the top right corner, and choose the "Create new rule chain" option. + === + image: /images/pe/edge/rule-engine/2-create-rule-chain-template.webp, + title: In the pop-up window, enter a name for the new rule chain and click the "Add" button to continue configuring the rule chain. + === + image: /images/pe/edge/rule-engine/3-in-the-list.webp, + title: The rule chain is now listed, usually at the top. Click it to begin editing. + === + image: /images/pe/edge/rule-engine/4-configure-and-safe.webp, + title: Configure your rule nodes and flow. Once the configuration is complete, click the "Apply changes" button. +'%} + +{% assign createRuleChainTemplateCE = ' + === + image: /images/edge/rule-engine/1-edge-rule-chain.webp, + title: Sign in to your ThingsBoard Edge CE instance and go to the Rule chains section. To add a new Rule chain, click the "+" button in the top right corner, and choose the "Create new rule chain" option. + === + image: /images/edge/rule-engine/2-create-rule-chain-template.webp, + title: In the pop-up window, enter a name for the new rule chain and click the "Add" button to continue configuring the rule chain. + === + image: /images/edge/rule-engine/3-in-the-list.webp, + title: The rule chain is now listed, usually at the top. Click it to begin editing. + === + image: /images/edge/rule-engine/4-configure-and-safe.webp, + title: Configure your rule nodes and flow. Once the configuration is complete, click the "Apply changes" button. +'%} + +{% if docsPrefix == "pe/edge/" %} +{% include images-gallery.liquid showListImageTitles="true" imageCollection=createRuleChainTemplatePE %} +{% else %} +{% include images-gallery.liquid showListImageTitles="true" imageCollection=createRuleChainTemplateCE %} +{% endif %} + +### Creating Rule Chain Template on the Server {% assign createRuleChainTemplatePE = ' === - image: /images/pe/edge/rule-engine/create-rule-chain-template-step-1.png, - title: Sign in to your ThingsBoard PE instance and navigate to the "Edge Management" -> "Rule chain templates" page. Click the "+" icon in the top right corner and choose "Create new rule chain". + image: /images/pe/edge/rule-engine/create-rule-chain-template-step-1.webp, + title: Sign in to your ThingsBoard PE instance and go to the Edge Management > Rule chain templates section. To add a new **Rule chain**, click the "+" button in the top right corner and choose the "Create new rule chain" option. === - image: /images/pe/edge/rule-engine/create-rule-chain-template-step-2.png, - title: Enter a name for your rule chain, such as "Remote Farm". Click "Add" to confirm the creation of your new rule chain template. + image: /images/pe/edge/rule-engine/create-rule-chain-template-step-2.webp, + title: Enter a name for your rule chain, such as "Remote Farm". Click the "Add" button to continue configuring the rule chain. === - image: /images/pe/edge/rule-engine/create-rule-chain-template-step-3.png, - title: Your new rule chain template will now be listed, typically at the top. Click on this newly created template to start editing it. + image: /images/pe/edge/rule-engine/create-rule-chain-template-step-3.webp, + title: The rule chain template is now listed, usually at the top. Click it to begin editing. === - image: /images/pe/edge/rule-engine/create-rule-chain-template-step-4.png, - title: Within the template, configure your rule nodes and flow. After setting up, click the "Apply Changes" icon. Remember, this step will not activate the rule chain on the server; it merely readies it for deployment to an Edge. Let us proceed to the next step to assign this template to an Edge. + image: /images/pe/edge/rule-engine/create-rule-chain-template-step-4.webp, + title: Within the template, configure your rule nodes and flow. Once the configuration is complete, click the "Apply changes" button. Note: This step does not activate the rule chain on the server, it simply prepares it for deployment to an Edge. '%} {% assign createRuleChainTemplateCE = ' === - image: /images/edge/rule-engine/create-rule-chain-template-step-1.png, - title: Sign in to your ThingsBoard CE instance and navigate to the "Edge Management" -> "Rule chain templates" page. Click the "+" icon in the top right corner and choose "Create new rule chain". + image: /images/edge/rule-engine/create-rule-chain-template-step-1.webp, + title: Sign in to your ThingsBoard CE instance and go to the Edge Management > Rule chain templates section. To add a new Rule chain, click the "+" button in the top right corner and choose the "Create new rule chain" option. === - image: /images/edge/rule-engine/create-rule-chain-template-step-2.png, - title: Enter a name for your rule chain, such as "Remote Farm". Click "Add" to confirm the creation of your new rule chain template. + image: /images/edge/rule-engine/create-rule-chain-template-step-2.webp, + title: Enter a name for your rule chain, such as "Remote Farm". Click "Add" to confirm the creation of your new rule chain template. === - image: /images/edge/rule-engine/create-rule-chain-template-step-3.png, - title: Your new rule chain template will now be listed, typically at the top. Click on this newly created template to start editing it. + image: /images/edge/rule-engine/create-rule-chain-template-step-3.webp, + title: The rule chain template is now listed, usually at the top. Click it to begin editing. === - image: /images/edge/rule-engine/create-rule-chain-template-step-4.png, - title: Within the template, configure your rule nodes and flow. After setting up, click the "Apply Changes" icon. Remember, this step will not activate the rule chain on the server; it merely readies it for deployment to an Edge. Let us proceed to the next step to assign this template to an Edge. + image: /images/edge/rule-engine/create-rule-chain-template-step-4.webp, + title: Within the template, configure your rule nodes and flow. Once the configuration is complete, click the "Apply changes" button. Note: This step does not activate the rule chain on the server, it simply prepares it for deployment to an Edge. '%} {% if docsPrefix == "pe/edge/" %} @@ -43,36 +87,36 @@ The actual rule chain, derived from this template, begins functioning and proces {% include images-gallery.liquid showListImageTitles="true" imageCollection=createRuleChainTemplateCE %} {% endif %} -## Assigning the Rule Chain Template to ThingsBoard Edge +### Assigning the Rule Chain Template to the Edge {% assign assignRuleChainTemplateToEdgePE = ' === - image: /images/pe/edge/rule-engine/assign-rule-chain-template-step-1.png, - title: Navigate to the "Edge Management" -> "Instances" page. On the row corresponding to your Edge instance, click the "Manage rule chains" icon. + image: /images/pe/edge/rule-engine/assign-rule-chain-template-step-1.webp, + title: Go to the Edge management > Instances section and lick the "Manage rule chains" button. === - image: /images/pe/edge/rule-engine/assign-rule-chain-template-step-2.png, - title: In the top right corner, click the "+" icon "Assign to edge". + image: /images/pe/edge/rule-engine/assign-rule-chain-template-step-2.webp, + title: To assign the Rule chain template to the Edge, click the "+" button. === - image: /images/pe/edge/rule-engine/assign-rule-chain-template-step-3.png, - title: From the list, select the rule chain you have recently created and then click the "Assign" button. + image: /images/pe/edge/rule-engine/assign-rule-chain-template-step-3.webp, + title: In the pop-up window, select the rule chain from the drop-down menu and click the "Assign" button. === - image: /images/pe/edge/rule-engine/assign-rule-chain-template-step-4.png, - title: The assigned rule chain template will now appear at the top of the list. This action triggers the process of delivering the rule chain template to the Edge. Once the template reaches the Edge, it becomes an active rule chain. It then starts processing data from connected devices according to the configurations set within the template. + image: /images/pe/edge/rule-engine/assign-rule-chain-template-step-4.webp, + title: The assigned rule chain template now appears at the top of the list. Assigning the rule chain template to the Edge instance enables the rule chain to process data from Edge devices according to the template configurations. '%} {% assign assignRuleChainTemplateToEdgeCE = ' === - image: /images/edge/rule-engine/assign-rule-chain-template-step-1.png, - title: Navigate to the "Edge Management" -> "Instances" page. On the row corresponding to your Edge instance, click the "Manage rule chains" icon. + image: /images/edge/rule-engine/assign-rule-chain-template-step-1.webp, + title: Go to the Edge management > Instances section and lick the "Manage edge rule chains" button. === - image: /images/edge/rule-engine/assign-rule-chain-template-step-2.png, - title: In the top right corner, click the "+" icon "Assign to edge". + image: /images/edge/rule-engine/assign-rule-chain-template-step-2.webp, + title: To assign the Rule chain template to the Edge, click the "+" button. === - image: /images/edge/rule-engine/assign-rule-chain-template-step-3.png, - title: From the list, select the rule chain you have recently created and then click the "Assign" button. + image: /images/edge/rule-engine/assign-rule-chain-template-step-3.webp, + title: In the pop-up window, select the rule chain from the drop-down menu and click the "Assign" button. === - image: /images/edge/rule-engine/assign-rule-chain-template-step-4.png, - title: The assigned rule chain template will now appear at the top of the list. This action triggers the process of delivering the rule chain template to the Edge. Once the template reaches the Edge, it becomes an active rule chain. It then starts processing data from connected devices according to the configurations set within the template. + image: /images/edge/rule-engine/assign-rule-chain-template-step-4.webp, + title: The assigned rule chain template now appears at the top of the list. Assigning the rule chain template to the Edge instance enables the rule chain to process data from Edge devices according to the template configurations. '%} {% if docsPrefix == "pe/edge/" %} @@ -85,24 +129,25 @@ The actual rule chain, derived from this template, begins functioning and proces {% assign verifyRuleChainPE = ' === - image: /images/pe/edge/rule-engine/verify-rule-chain-template-step-1.png, - title: Sign in to your ThingsBoard Edge PE instance and navigate to the "Rule chains" page. Click on the rule chain that was recently assigned to open and view it. + image: /images/pe/edge/rule-engine/verify-rule-chain-template-step-1.webp, + title: Sign in to your ThingsBoard Edge PE instance and go to the Rule chains section. To view the Rule chain configuration, click on the rule chain. === - image: /images/pe/edge/rule-engine/verify-rule-chain-template-step-2.png, - title: Ensure that the rule chain appears as it was configured on the server, verifying that all settings and configurations are accurately reflected. + image: /images/pe/edge/rule-engine/verify-rule-chain-template-step-2.webp, + title: Verify that all settings and configurations are accurately reflected. '%} {% assign verifyRuleChainCE = ' === - image: /images/edge/rule-engine/verify-rule-chain-template-step-1.png, - title: Sign in to your ThingsBoard Edge CE instance and navigate to the "Rule chains" page. Click on the rule chain that was recently assigned to open and view it. + image: /images/edge/rule-engine/verify-rule-chain-template-step-1.webp, + title: Sign in to your ThingsBoard Edge PE instance and go to the Rule chains section. To view the Rule chain configuration, click on the rule chain. === - image: /images/edge/rule-engine/verify-rule-chain-template-step-2.png, - title: Ensure that the rule chain appears as it was configured on the server, verifying that all settings and configurations are accurately reflected. + image: /images/edge/rule-engine/verify-rule-chain-template-step-2.webp, + title: Verify that all settings and configurations are accurately reflected. '%} {% if docsPrefix == "pe/edge/" %} {% include images-gallery.liquid showListImageTitles="true" imageCollection=verifyRuleChainPE %} {% else %} {% include images-gallery.liquid showListImageTitles="true" imageCollection=verifyRuleChainCE %} -{% endif %} \ No newline at end of file +{% endif %} + diff --git a/_includes/templates/edge/since-edge.md b/_includes/templates/edge/since-edge.md new file mode 100644 index 0000000000..40f56d2f2e --- /dev/null +++ b/_includes/templates/edge/since-edge.md @@ -0,0 +1,7 @@ +
+ + + + + +
Available since TB Edge version {{sinceVersion}}
diff --git a/_includes/templates/edge/what-is-edge.md b/_includes/templates/edge/what-is-edge.md index 0ac520f421..0346d616fe 100644 --- a/_includes/templates/edge/what-is-edge.md +++ b/_includes/templates/edge/what-is-edge.md @@ -11,7 +11,7 @@ {% capture tb-open-source %} ThingsBoard is an open-source IoT platform that provides a robust suite of features for data collection, processing, visualization, and device management. -If you are a new platform user, we suggest reading [**What is ThingsBoard?**](/docs/getting-started-guides/what-is-thingsboard/) before proceeding with ThingsBoard Edge. +If you are a new platform user, we suggest reading [**What is ThingsBoard?**](/docs/getting-started-guides/what-is-thingsboard/){: target="_blank"} before proceeding with ThingsBoard Edge. {% endcapture %} {% include templates/info-banner.md content=tb-open-source %} @@ -19,14 +19,14 @@ If you are a new platform user, we suggest reading [**What is ThingsBoard?**](/d {% if docsPrefix == 'pe/edge/' %} With ThingsBoard Edge, data analysis and management is brought to the point of data generation - the edge. -It seamlessly synchronizes with ThingsBoard PE, whether it's a [cloud](https://thingsboard.cloud) or an on-premise installation, aligning with your business requirements. +It seamlessly synchronizes with ThingsBoard PE, whether it's a [cloud](https://thingsboard.cloud){: target="_blank"} or an on-premise installation, aligning with your business requirements. ThingsBoard Edge PE is designed for a **single** tenant and/or **multiple** customers. As such, you cannot share ThingsBoard Edge between multiple tenants, and devices from different tenants cannot be connected to a single ThingsBoard Edge. In such scenarios, separate ThingsBoard Edge instances would need to be provisioned for each tenant. {% else %} With ThingsBoard Edge, data analysis and management is brought to the edge, where data generation happens. -It synchronizes effortlessly with ThingsBoard CE, whether it's a [demo](https://demo.thingsboard.io/) or an on-premise installation, according to your business requirements. +It synchronizes effortlessly with ThingsBoard CE, whether it's a [demo](https://demo.thingsboard.io/){: target="_blank"} or an on-premise installation, according to your business requirements. ThingsBoard Edge CE is designed for a **single** tenant and/or **single** customer. Sharing ThingsBoard Edge between multiple tenants or customers is not feasible, and devices from different tenants or customers cannot be connected to a single ThingsBoard Edge. @@ -35,7 +35,7 @@ In such cases, multiple ThingsBoard Edge instances need to be provisioned for ea
-![image](/images/edge/overview/edge_overview.svg) +![image](/images/edge/overview/edge_overview.svg){: style="display: block; margin: auto"} ## Use-Cases for ThingsBoard Edge @@ -63,42 +63,42 @@ With **ThingsBoard Edge**, you get: - **Local deployment and storage**: Process and store data from local (edge) devices without connecting to the cloud. Push updates to the cloud once the connection is restored. -![image](/images/edge/overview/offline_network_.svg) +![image](/images/edge/overview/offline_network_.svg){: style="display: block; margin: auto"} - **Traffic filtering**: Filter data from local (edge) devices on the ThingsBoard Edge service and push only a subset of the data to the cloud for further processing or storage. -![image](/images/edge/overview/data_filtering.svg) +![image](/images/edge/overview/data_filtering.svg){: style="display: block; margin: auto"} - **Local alarms**: Instantly respond to critical situations on site, without the need for a cloud connection. -![image](/images/edge/overview/alarm.svg) +![image](/images/edge/overview/alarm.svg){: style="display: block; margin: auto"} - **Real-time dashboards**: Monitor local events and time series data. - **Local storage**: Store data from edge devices on the edge if the cloud connection is inactive and push updates to the cloud once the connection is restored. - **Batch Update**: Update thousands of edge configurations with a single click. -![image](/images/edge/overview/update_dashboard.svg) +![image](/images/edge/overview/update_dashboard.svg){: style="display: block; margin: auto"} ThingsBoard Edge inherits features from {{appPrefix}}, providing the same experience for connecting, managing, and processing data from your devices. It supports the following **ThingsBoard** features: -* [**Attributes**](/docs/{{cloudDocsPrefix}}user-guide/attributes/) - Assign and manage custom attributes to your entities. -* [**Telemetry**](/docs/{{cloudDocsPrefix}}user-guide/telemetry/) - API for collecting time series data from your devices. -* [**Entities and relations**](/docs/{{cloudDocsPrefix}}user-guide/entities-and-relations/) - Model physical world objects (e.g., devices and assets) and the relationships between them. -* [**Data visualization**](/docs/{{cloudDocsPrefix}}guides/#AnchorIDDataVisualization) - Develop custom dashboards and widgets. -* [**Rule engine**](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-0/re-getting-started/) - Manage data processing & actions on incoming telemetry and events. -* [**RPC**](/docs/{{cloudDocsPrefix}}user-guide/rpc/) - Send remote procedure calls (RPC) **from both edge and cloud sides** to devices, and vice versa. -* [**Audit log**](/docs/{{cloudDocsPrefix}}user-guide/audit-log/) - Track user activity. -* [**API Limits**](/docs/{{cloudDocsPrefix}}user-guide/api-limits/) - Control and limit the number of API requests from a single host. +* [**Attributes**](/docs/{{cloudDocsPrefix}}user-guide/attributes/){: target="_blank"} - Assign and manage custom attributes to your entities. +* [**Telemetry**](/docs/{{cloudDocsPrefix}}user-guide/telemetry/){: target="_blank"} - API for collecting time series data from your devices. +* [**Entities and relations**](/docs/{{cloudDocsPrefix}}user-guide/entities-and-relations/){: target="_blank"} - Model physical world objects (e.g., devices and assets) and the relationships between them. +* [**Data visualization**](/docs/{{cloudDocsPrefix}}guides/#AnchorIDDataVisualization){: target="_blank"} - Develop custom dashboards and widgets. +* [**Rule engine**](/docs/{{cloudDocsPrefix}}user-guide/rule-engine-2-0/re-getting-started/){: target="_blank"} - Manage data processing & actions on incoming telemetry and events. +* [**RPC**](/docs/{{cloudDocsPrefix}}user-guide/rpc/){: target="_blank"} - Send remote procedure calls (RPC) **from both edge and cloud sides** to devices, and vice versa. +* [**Audit log**](/docs/{{cloudDocsPrefix}}user-guide/audit-log/){: target="_blank"} - Track user activity. +* [**API Limits**](/docs/{{cloudDocsPrefix}}user-guide/api-limits/){: target="_blank"} - Control and limit the number of API requests from a single host. {% if docsPrefix == 'pe/edge/' %} Furthermore, Edge PE supports the following **ThingsBoard PE** features: -* [**Integrations**](/docs/user-guide/integrations/) +* [**Integrations**](/docs/user-guide/integrations/){: target="_blank"} * Connect existing NB IoT, LoRaWAN, SigFox, and other devices with specific payload formats directly to the ThingsBoard platform. * Stream data from devices connected to existing IoT Platforms to enable real-time interactive dashboards and efficient data processing. -* [**White-labeling**](/docs/pe/user-guide/white-labeling/) - Configure a custom menu, logo, color scheme, email server settings, and customer email templates to interact with users, etc. -* [**Scheduler**](/docs/pe/user-guide/scheduler/) - Schedule various types of events with flexible configuration. -* [**Entity Groups**](/docs/pe/user-guide/groups/) - Organize entities into groups, assign roles to specific user groups, grant specific permissions to specific user groups over specific device groups. +* [**White-labeling**](/docs/pe/user-guide/white-labeling/){: target="_blank"} - Configure a custom menu, logo, color scheme, email server settings, and customer email templates to interact with users, etc. +* [**Scheduler**](/docs/pe/user-guide/scheduler/){: target="_blank"} - Schedule various types of events with flexible configuration. +* [**Entity Groups**](/docs/pe/user-guide/groups/){: target="_blank"} - Organize entities into groups, assign roles to specific user groups, grant specific permissions to specific user groups over specific device groups. {% endif %} ## Project Roadmap diff --git a/docs/edge/config/subscribe-to-attribute.md b/docs/edge/config/subscribe-to-attribute.md index 68cf5ded50..87743523bb 100644 --- a/docs/edge/config/subscribe-to-attribute.md +++ b/docs/edge/config/subscribe-to-attribute.md @@ -6,7 +6,7 @@ description: Bidirectional Attribute Subscription And Update with Post-Processin routeMessagesToCloud: 0: image: /images/edge/config/subscribe-to-attribute/1-rule-chain-templates.webp - title: 'Log in to the ThingsBoard Cloud and go to the Edge management > Rule chain templates section and click on the Rule chain assigned to your Edge instance.' + title: 'Log in to the ThingsBoard Cloud and go to the Edge management > Rule chain templates section and click on the Rule chain assigned to your Edge instance.

' 1: image: /images/edge/config/subscribe-to-attribute/2-add-push-to-cloud.webp title: 'On the Rule Chain edit page, in the Node search bar find the "push to cloud" node. It pushes messages from Edge to Cloud. Drag and drop the node onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Client attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' diff --git a/docs/edge/roadmap.md b/docs/edge/roadmap.md index 1f60ecb470..1b36d05ac5 100644 --- a/docs/edge/roadmap.md +++ b/docs/edge/roadmap.md @@ -8,12 +8,17 @@ description: Upcoming releases * TOC {:toc} -## ThingsBoard Edge +The product roadmap below covers only **major features** and does not include minor enhancements and bug fixes. +View active development and bug fixes for the latest release [on our GitHub repository](https://github.com/thingsboard/thingsboard-edge/tree/master){: target="_blank"}. -See active development in progress [here](https://github.com/thingsboard/thingsboard-edge/tree/{{ site.release.branch_major_next }}) and work on latest release bug fixes [here](https://github.com/thingsboard/thingsboard-edge/tree/master). +### Edge 4.0.1 -### Upcoming releases -* Edge Profiles Functionality (Templates) -* Functionality to Create or Update Rule Chains Directly on the Edge -* OAuth2 Functionality -* Two-Factor Authentication Functionality +The upcoming release will include all updates form [ThingsBoard CE](/docs/reference/roadmap/){: target="_blank"}, except the **Calculated Fields** feature. + +The updates related to the Edge: +* **Edge Clustering:** Ability to run multiple Edge nodes in a clustered, high-availability setup. +* **Edge Rule Chain Editing:** Ability to create and edit Rule Chains directly on Edge. + +### Edge 4.1 + +* **Calculated Fields:** Ability to create new attributes and time series data based on data points from multiple entities diff --git a/docs/edge/user-guide/alarms.md b/docs/edge/user-guide/alarms.md index be19c92b29..c3b3cf87c6 100644 --- a/docs/edge/user-guide/alarms.md +++ b/docs/edge/user-guide/alarms.md @@ -6,63 +6,63 @@ description: Edge Alarms Overview push-to-edge: 0: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/0-device-profile-create-rule.png - title: 'Log in to the ThingsBoard Cloud and go to the Profiles > Device profiles section to create or modify the Device profile. Select the appropriate Default rule chain. Then, configure the Alarm Rule.' + title: 'Log in to the ThingsBoard Cloud and go to the Profiles > Device profiles section to create or modify the Device profile. Select the appropriate Default rule chain. Then, configure the Alarm Rule.' 1: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/1-assign-the-profile.png - title: 'Go to the Entities > Devices section. You can create a new Device or edit the existing one. On the "Device details" page, assign newly created (or updated) Device profile to this Device. Click the “Apply changes” button.' + title: 'Go to the Entities > Devices section. You can create a new Device or edit the existing one. On the "Device details" page, assign newly created (or updated) Device profile to this Device. Click the “Apply changes” button.' 2: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/2-assign-device-toEdge.png - title: 'Go the Edge management > Instances section, select the “Manage devices” option and assign this device to the Edge instance.' + title: 'Go the Edge management > Instances section, select the “Manage devices” option and assign this device to the Edge instance.' 3: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/3-rule-chain-section.png - title: 'Go to the Rule Chains section, to modify the Rule Chain you have assigned to the Device profile.' + title: 'Go to the Rule Chains section, to modify the Rule Chain you have assigned to the Device profile.' 4: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/4-push-node.png - title: 'On the Rule Chain edit page, in the Node search bar find the "push to edge" node. It pushes messages from Cloud to Edge. Once message arrives to this node it will be converted into Edge event and saved to the local database. Drag and drop the node onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Server attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' + title: 'On the Rule Chain edit page, in the Node search bar find the "push to edge" node. It pushes messages from Cloud to Edge. Once message arrives to this node it will be converted into Edge event and saved to the local database. Drag and drop the node onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Server attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' 5: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/5-select-link-labels.png - title: 'Connect the “device profile” node to the "push to edge" node and set the “Alarm Created”, “Alarm Updated”, “Alarm Severity Updated”, and “Alarm Cleared” link labels. Click the “Apply changes” button in the Rule Chain sheet.' + title: 'Connect the “device profile” node to the "push to edge" node and set the “Alarm Created”, “Alarm Updated”, “Alarm Severity Updated”, and “Alarm Cleared” link labels. Click the “Apply changes” button in the Rule Chain sheet.' 6: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/6-telemetry.png - title: 'To test if the rule and node are working, navigate to the Entities > Devices section, find your Device and open the "Device details" page. Click the "Check connectivity" button. Trigger the Alarm Rule by executing the corresponding command in the terminal.' + title: 'To test if the rule and node are working, navigate to the Entities > Devices section, find your Device and open the "Device details" page. Click the "Check connectivity" button. Trigger the Alarm Rule by executing the corresponding command in the terminal.' 7: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/7-verify-alarm-on-cloud.png - title: 'To verify the received Alarm notification, go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab. You also can view the incoming Alarm notification in the Notification center.' + title: 'To verify the received Alarm notification, go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab. You also can view the incoming Alarm notification in the Notification center.' 8: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/8-verify-alarm-on-edge.png - title: 'To verify that the notification is propagated to the Edge, log in to the Edge instance and go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab.' + title: 'To verify that the notification is propagated to the Edge, log in to the Edge instance and go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab.' 9: image: /images/edge/user-guide/manage-alarms/push-from-cloud-to-edge/9-acknowledge-clear.png - title: 'Make sure to Acknowledge and Clear the notification after you received it. You can do it on either the Cloud or the Edge. If the Uncleared Alarm exists, it will be updated, instead of being created.' + title: 'Make sure to Acknowledge and Clear the notification after you received it. You can do it on either the Cloud or the Edge. If the Uncleared Alarm exists, it will be updated, instead of being created.' push-to-cloud: 0: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/0-device-profile.png - title: 'Log in to the ThingsBoard Edge and go to the Profiles > Device profiles section to create or edit the Device profile. Select the appropriate Default rule chain. Set the Alarm Rule.' + title: 'Log in to the ThingsBoard Edge and go to the Profiles > Device profiles section to create or edit the Device profile. Select the appropriate Default rule chain. Set the Alarm Rule.' 1: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/1-assign-profile.png - title: 'Go to the Entities > Devices section. You can create a new Device or edit the existing one. On the "Device details" page, assign newly created (or updated) Device profile to this Device. Click the “Apply changes” button.' + title: 'Go to the Entities > Devices section. You can create a new device or edit the existing one. On the "Device details" page, assign newly created (or updated) Device profile to this device. Click the “Apply changes” button.' 2: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/2-rule-chain-template.png - title: 'Log in to the ThingsBoard Cloud and go to the Edge management > Rule chain templates section to modify the Rule Chain you have assigned to the Device profile.' + title: 'Log in to the ThingsBoard Cloud and go to the Edge management > Rule chain templates section to modify the Rule Chain you have assigned to the Device profile. Note: If you use Edge version 4.0, you can proceed with Rule Chain configurations on the Edge instance.' 3: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/3-push-to-cloud-settings.png - title: 'On the Rule Chain edit page, in the Node search bar find the "push to cloud" node. It pushes messages from Edge to Cloud. Once message arrives to this node it will be converted into Cloud event and saved to the local database. Drag and drop the node onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Server attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' + title: 'On the Rule Chain edit page, in the Node search bar find the "push to cloud" node. It pushes messages from Edge to Cloud. Once message arrives to this node it will be converted into Cloud event and saved to the local database. Drag and drop the node onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Server attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' 4: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/4-push-to-cloud-node.png - title: 'Connect the “device profile” node to the "push to edge" node and set the “Alarm Created”, “Alarm Updated”, “Alarm Severity Updated”, and “Alarm Cleared” link labels. Click the “Apply changes” button in the Rule Chain sheet.' + title: 'Connect the “device profile” node to the "push to edge" node and set the “Alarm Created”, “Alarm Updated”, “Alarm Severity Updated”, and “Alarm Cleared” link labels. Click the “Apply changes” button in the Rule Chain sheet.' 5: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/5-send-telemetry-command.png - title: 'To test if the rule and node are working, log in to your Edge instance and navigate to the Entities > Devices section. Find your Device and open the "Device details" page. Click the "Check connectivity" button. Trigger the Alarm Rule by executing the corresponding command in the terminal.' + title: 'To test if the rule and node are working, log in to your Edge instance and navigate to the Entities > Devices section. Find your device and open the "Device details" page. Click the "Check connectivity" button. Trigger the Alarm Rule by executing the corresponding command in the terminal.' 6: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/6-check-alarm-on-edge.png - title: 'To verify the received Alarm notification, go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab. You also can view the incoming Alarm notification in the Notification center.' + title: 'To verify the received alarm notification, go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab. You also can view the incoming alarm notification in the Notification center.' 7: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/7-check-alarm-on-cloud.png - title: 'To verify that the notification is propagated to the Cloud, log in to the ThingsBoard Cloud (Server) and go to the Entities > Devices section, open the "device details" page and select the “Alarm” tab.' + title: 'To verify that the notification is propagated to the Cloud, log in to the ThingsBoard Cloud (Server) and go to the Entities > Devices section, open the "device details" page and select the “Alarm” tab.' 8: image: /images/edge/user-guide/manage-alarms/push-from-edge-to-cloud/8-acknowledge-clear.png - title: 'Make sure to Acknowledge and Clear the notification after you received it. You can do it on either the Cloud or the Edge. If the Uncleared Alarm exists, it will be updated, instead of being created.' + title: 'Make sure to Acknowledge and Clear the notification after you received it. You can do it on either the Cloud or the Edge. If the Uncleared Alarm exists, it will be updated, instead of being created.' --- diff --git a/docs/edge/user-guide/db-overview.md b/docs/edge/user-guide/db-overview.md index 9c99fb1ed2..f3e57d43f7 100644 --- a/docs/edge/user-guide/db-overview.md +++ b/docs/edge/user-guide/db-overview.md @@ -6,37 +6,37 @@ description: Edge Dashboards Overview dashboard-provision: 0: image: /images/edge/user-guide/dashboards/1-server-edge-dashboards.png - title: 'Ensure that you have previously created and configured Dashboards on the ThingsBoard server and then go to the Edge management>Instances section and open the "Manage dashboard" page. View all Dashboards already deployed, or click the "+" icon to deploy the Dashboard to the Edge instance.' + title: 'Ensure that you have previously created and configured Dashboards on the ThingsBoard Server and then go to the Edge management > Instances section and open the "Manage dashboard" page. View all Dashboards already deployed, or click the "+" icon to deploy the Dashboard to the Edge instance.' 1: image: /images/edge/user-guide/dashboards/2-edge-edge-dashboards.png - title: 'To verify that the Dashboards are available, log in to your Edge instance and go to the Dashboards section.' + title: 'To verify that the Dashboards are available, log in to your Edge instance and go to the Dashboards section.' create-dashboard: 0: image: /images/edge/user-guide/dashboards/5-create-new-dashboard.png - title: 'Log in to your ThingsBoard Edge instance and navigate to the “Dashboards” section, then, , click the “+” icon and select the “Create new dashboard” option.' + title: 'Log in to your ThingsBoard Edge instance and navigate to the “Dashboards” section, then click the “+” icon and select the “Create new dashboard” option.' 1: image: /images/edge/user-guide/dashboards/6-new-dashboard-dialog.png - title: 'In the pop-up window, enter a dashboard title. Other fields are optional. Click the "Add" button to proceed' + title: 'In the pop-up window, enter a dashboard title. Other fields are optional. Click the "Add" button to proceed' 2: image: /images/edge/user-guide/dashboards/7-add-widgets-and-save.png - title: 'Once you have created the dashboard, it will be automatically opened. You can configure it by adding widgets. Click the "Save" button to save the changes' + title: 'Once you have created the dashboard, it will be automatically opened. You can configure it by adding widgets. Click the "Save" button to save the changes.' changes-from-edge-to-server: 0: image: /images/edge/user-guide/dashboards/3-new-dashboard-on-edge.png - title: 'Create, configure or make any changes to the Dashboard on the Edge instance.' + title: 'Create, configure or make any changes to the Dashboard on the Edge instance.' 1: image: /images/edge/user-guide/dashboards/4-new-dashboard-on-server.png - title: 'Log in to your ThingsBoard server and go to the “Dashboards” section to see that the changes have been applied to the ThingsBoard server. Make sure you are connected to the internet.' + title: 'Log in to your ThingsBoard Server and go to the Dashboards section to see that the changes have been applied to the ThingsBoard Server. Make sure you are connected to the internet.' assign-customer: 0: image: /images/edge/user-guide/dashboards/8-assign-customers.png - title: 'Log in to your ThingsBoard Edge instance and go to the “Dashboards” section. Click the “Manage assigned customers” button for the dashboard you want to assign a customer to.' + title: 'Log in to your ThingsBoard Edge instance and go to the Dashboards section. Click the “Manage assigned customers” button for the dashboard you want to assign a customer to.' 1: image: /images/edge/user-guide/dashboards/9-add-customers-dialog.png - title: 'Select the customers from the drop-down list to assign them or click the “x” icon to remove them from the dashboard. Click the "Update" button to confirm the assignment or removal.' + title: 'Select the customers from the drop-down list to assign them or click the “x” icon to remove them from the dashboard. Click the "Update" button to confirm the assignment or removal.' --- diff --git a/docs/pe/edge/config/subscribe-to-attribute.md b/docs/pe/edge/config/subscribe-to-attribute.md index 16ea6f6541..af959c2b10 100644 --- a/docs/pe/edge/config/subscribe-to-attribute.md +++ b/docs/pe/edge/config/subscribe-to-attribute.md @@ -6,7 +6,7 @@ description: Bidirectional Attribute Subscription And Update with Post-Processin routeMessagesToCloud: 0: image: /images/pe/edge/config/subscribe-to-attribute/1-rule-chain-templates-pe.webp - title: 'Log in to the ThingsBoard Cloud and go to the Edge management > Rule chain templates section and click on the Rule chain assigned to your Edge instance.' + title: 'Log in to the ThingsBoard Cloud and go to the Edge management > Rule chain templates section and click on the Rule chain assigned to your Edge instance.' 1: image: /images/pe/edge/config/subscribe-to-attribute/2-add-push-to-cloud-pe.webp title: 'On the Rule Chain edit page, in the Node search bar find the "push to cloud" node. It pushes messages from Edge to Cloud. Drag and drop the node onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Client attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' diff --git a/docs/pe/edge/roadmap.md b/docs/pe/edge/roadmap.md index 7b5779c355..122b9574c8 100644 --- a/docs/pe/edge/roadmap.md +++ b/docs/pe/edge/roadmap.md @@ -1,6 +1,6 @@ --- layout: docwithnav-pe-edge -title: ThingsBoard Edge PE Roadmap +title: ThingsBoard Edge Professional Edition Roadmap description: Upcoming releases --- @@ -8,11 +8,16 @@ description: Upcoming releases * TOC {:toc} -## ThingsBoard Edge PE +The product roadmap below covers only **major features** and does not include minor enhancements and bug fixes. -### Upcoming releases -* Edge Profiles Functionality (Templates) -* Functionality to Create or Update Rule Chains Directly on the Edge -* Full Role-Based Access Control (RBAC) Support -* OAuth2 Functionality -* Two-Factor Authentication Functionality \ No newline at end of file +### Edge 4.0.1 + +The upcoming release will include all updates form [ThingsBoard PE](/docs/pe/reference/roadmap/){: target="_blank"}, except the **Calculated Fields** feature. + +The updates related to the Edge: +* **Edge Clustering:** Ability to run multiple Edge nodes in a clustered, high-availability setup. +* **Edge Rule Chain Editing:** Ability to create and edit Rule Chains directly on Edge. + +### Edge 4.1 + +* **Calculated Fields:** Ability to create new attributes and time series data based on data points from multiple entities diff --git a/docs/pe/edge/rule-engine/queues.md b/docs/pe/edge/rule-engine/queues.md index 1be6197df5..70c8cd2da8 100644 --- a/docs/pe/edge/rule-engine/queues.md +++ b/docs/pe/edge/rule-engine/queues.md @@ -5,5 +5,5 @@ description: Queues --- {% assign docsPrefix = "pe/edge/" %} -{% assign cloudDocsPrefix = "pe/" %} +{% assign peDocsPrefix = "pe/" %} {% include docs/edge/user-guide/rule-engine/queues.md %} diff --git a/docs/pe/edge/user-guide/alarms.md b/docs/pe/edge/user-guide/alarms.md index ac6fd84438..02c38b6361 100644 --- a/docs/pe/edge/user-guide/alarms.md +++ b/docs/pe/edge/user-guide/alarms.md @@ -6,64 +6,64 @@ description: Edge Alarms Overview push-to-edge: 0: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/0-device-profile-create-rule.png - title: 'Log in to the ThingsBoard Cloud and go to the Profiles > Device profiles section to create or modify the Device profile. Select the appropriate Default rule chain. Then, configure the Alarm Rule.' + title: 'Log in to the ThingsBoard Cloud and go to the Profiles > Device profiles section to create or modify the Device profile. Select the appropriate Default rule chain. Then, configure the Alarm Rule.' 1: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/1-assign-the-profile.png - title: 'Go to the Entities > Devices section. Then, navigate to the "Groups" tab and open the group associated with your Edge instance. You can create a new Device or edit the existing one. On the "Device details" page, assign newly created (or updated) Device profile to this Device. Click the “Apply changes” button.' + title: 'Go to the Entities > Devices section. Then, navigate to the "Groups" tab and open the group associated with your Edge instance. You can create a new Device or edit the existing one. On the "Device details" page, assign newly created (or updated) Device profile to this Device. Click the “Apply changes” button.' 2: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/2-rule-chain-section.png - title: 'Go to the Rule Chains section. Select the Rule Chain that you have assigned to the Device profile and click on it to modify.' + title: 'Go to the Rule Chains section. Select the Rule Chain that you have assigned to the Device profile and click on it to modify.' 3: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/3-push-node.png - title: 'On the Rule Chain edit page, in the Node search bar find the "push to edge" node. It pushes messages from Cloud to Edge. Once message arrives to this node it will be converted into Edge event and saved to the local database. Drag and drop the bode onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Server attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' + title: 'On the Rule Chain edit page, in the Node search bar find the "push to edge" node. It pushes messages from Cloud to Edge. Once message arrives to this node it will be converted into Edge event and saved to the local database. Drag and drop the bode onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Server attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' 4: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/4-select-link-labels.png - title: 'Connect the “device profile” node to the "push to edge" node and set the “Alarm Created”, “Alarm Updated”, “Alarm Severity Updated”, and “Alarm Cleared” link labels. Click the “Apply changes” button in the Rule Chain sheet.' + title: 'Connect the “device profile” node to the "push to edge" node and set the “Alarm Created”, “Alarm Updated”, “Alarm Severity Updated”, and “Alarm Cleared” link labels. Click the “Apply changes” button in the Rule Chain sheet.' 5: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/5-check-telemetry.png - title: 'To test if the rule and node are working, navigate to the Entities > Devices section, find your Device and open the "Device details" page. Click the "Check connectivity" button. Trigger the Alarm Rule by executing the corresponding command in the terminal.' + title: 'To test if the rule and node are working, navigate to the Entities > Devices section, find your Device and open the "Device details" page. Click the "Check connectivity" button. Trigger the Alarm Rule by executing the corresponding command in the terminal.' 6: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/6-verify-alarm-on-cloud.png - title: 'To verify the received Alarm notification, go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab. You also can view the incoming Alarm notification in the Notification center.' + title: 'To verify the received Alarm notification, go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab. You also can view the incoming Alarm notification in the Notification center.' 7: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/7-verify-alarm-on-edge.png - title: 'To verify that the notification is propagated to the Edge, log in to the Edge instance and go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab.' + title: 'To verify that the notification is propagated to the Edge, log in to the Edge instance and go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab.' 8: image: /images/pe/edge/user-guide/manage-alarms/push-from-cloud-to-edge/8-acknowledge-clear.png - title: 'Make sure to Acknowledge and Clear the notification after you received it. You can do it on either the Cloud or the Edge. If the Uncleared Alarm exists, it will be updated, instead of being created.' + title: 'Make sure to Acknowledge and Clear the notification after you received it. You can do it on either the Cloud or the Edge. If the uncleared Alarm exists, it will be updated, instead of being created.' push-to-cloud: 0: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/0-device-profile.png - title: 'Log in to the ThingsBoard Edge and go to the Profiles > Device profiles section to create or edit the Device profile. Select the appropriate Default rule chain. Set the Alarm Rule.' + title: 'Log in to the ThingsBoard Edge and go to the Profiles > Device profiles section to create or edit the Device profile. Select the appropriate Default rule chain. Set the Alarm Rule.' 1: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/1-assign-profile.png - title: 'Go to the Entities > Devices section. By default, you will be taken to the "All" tab. If you want assign the Device to a specific group, navigate to the "Groups" tab. You can create a new Device or edit the existing one. On the "Device details" page, assign newly created (or updated) Device profile to this Device. Click the “Apply changes” button.' + title: 'Go to the Entities > Devices section. By default, you will be taken to the "All" tab. If you want assign the Device to a specific group, navigate to the "Groups" tab. You can create a new Device or edit the existing one. On the "Device details" page, assign newly created (or updated) Device profile to this Device. Click the “Apply changes” button.' 2: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/2-rule-chain-template.png - title: 'Log in to the ThingsBoard Cloud and go to the Edge management > Rule chain templates section to modify the Rule Chain you have assigned to the Device profile.' + title: 'Log in to the ThingsBoard Cloud and go to the Edge management > Rule chain templates section to modify the Rule Chain you have assigned to the Device profile. Note: If you use Edge version 4.0, you can proceed with Rule Chain configurations on the Edge instance.' 3: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/3-push-to-cloud-settings.png - title: 'On the Rule Chain edit page, in the Node search bar find the "push to cloud" node. It pushes messages from Edge to Cloud. Once message arrives to this node it will be converted into Cloud event and saved to the local database. Drag and drop the node onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Server attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' + title: 'On the Rule Chain edit page, in the Node search bar find the "push to cloud" node. It pushes messages from Edge to Cloud. Once message arrives to this node it will be converted into Cloud event and saved to the local database. Drag and drop the node onto the Rule Chain sheet. Then, in the "Add rule node" pop-up window enter the node title and select the "Server attributes" option in the "Entity attributes scope" field. Click the "Add" button to proceed.' 4: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/4-push-to-cloud-node.png - title: 'Connect the “device profile” node to the "push to edge" node and set the “Alarm Created”, “Alarm Updated”, “Alarm Severity Updated”, and “Alarm Cleared” link labels. Click the “Apply changes” button in the Rule Chain sheet.' + title: 'Connect the “device profile” node to the "push to edge" node and set the “Alarm Created”, “Alarm Updated”, “Alarm Severity Updated”, and “Alarm Cleared” link labels. Click the “Apply changes” button in the Rule Chain sheet.' 5: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/5-send-command.png - title: 'To test if the rule and node are working, log in to your Edge instance and navigate to the Entities > Devices section. Find your Device and open the "Device details" page. Click the "Check connectivity" button. Trigger the Alarm Rule by executing the corresponding command in the terminal.' + title: 'To test if the rule and node are working, log in to your Edge instance and navigate to the Entities > Devices section. Find your Device and open the "Device details" page. Click the "Check connectivity" button. Trigger the Alarm Rule by executing the corresponding command in the terminal.' 6: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/6-check-alarm-on-edge.png - title: 'To verify the received Alarm notification, go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab. You also can view the incoming Alarm notification in the Notification center.' + title: 'To verify the received Alarm notification, go to the Entities > Devices section, open the "Device details" page and select the “Alarm” tab. You also can view the incoming Alarm notification in the Notification center.' 7: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/7-check-alarm-on-cloud.png - title: 'To verify that the notification is propagated to the Cloud, log in to the ThingsBoard Cloud (Server) and go to the Entities > Devices section, open the "device details" page and select the “Alarm” tab.' + title: 'To verify that the notification is propagated to the Cloud, log in to the ThingsBoard Cloud (Server) and go to the Entities > Devices section, open the "device details" page and select the “Alarm” tab.' 8: image: /images/pe/edge/user-guide/manage-alarms/push-from-edge-to-cloud/8-acknowledge-clear.png - title: 'Make sure to Acknowledge and Clear the notification after you received it. You can do it on either the Cloud or the Edge. If the Uncleared Alarm exists, it will be updated, instead of being created.' + title: 'Make sure to Acknowledge and Clear the notification after you received it. You can do it on either the Cloud or the Edge. If the uncleared Alarm exists, it will be updated, instead of being created.' --- {% assign docsPrefix = "pe/edge/" %} -{% assign cloudDocsPrefix = "pe/" %} +{% assign peDocsPrefix = "pe/" %} {% include docs/edge/user-guide/alarms.md %} \ No newline at end of file diff --git a/docs/pe/edge/user-guide/db-overview.md b/docs/pe/edge/user-guide/db-overview.md index 5937394fba..bc7356a7c2 100644 --- a/docs/pe/edge/user-guide/db-overview.md +++ b/docs/pe/edge/user-guide/db-overview.md @@ -6,43 +6,43 @@ description: Edge Dashboards Overview dashboard-provision: 0: image: /images/pe/edge/user-guide/dashboards/3-instances.png - title: 'Ensure that you have previously created, configured and assigned the Dashboard to the appropriate entity group. Then, go to the Edge management>Instances section and open the "Manage edge dashboard groups" page. You can see here all dashboards groups already assigned to the Edge instance. To assign another group to the Edge instance, click the "+" icon. To view the Dashboards in the group, click on the group itself.' + title: 'Ensure that you have previously created, configured and assigned the Dashboard to the appropriate entity group. Then, go to the Edge management > Instances section and open the "Manage edge dashboard groups" page. You can see here all dashboards groups already assigned to the Edge instance. To assign another group to the Edge instance, click the "+" icon. To view the Dashboards in the group, click on the group itself.' 1: image: /images/pe/edge/user-guide/dashboards/4-instances-dashboards.png - title: 'On the Dashboards page, you can see all the dashboards already assigned to the dashboard group. To add another dashboard to the group, click the "+" icon.' + title: 'On the Dashboards page, you can see all the dashboards already assigned to the dashboard group. To add another dashboard to the group, click the "+" icon.' 2: image: /images/pe/edge/user-guide/dashboards/5-dashboards-on-edge.png - title: 'To verify that the Dashboards are provisioned, log in to your Edge Professional Edition instance and go to the Dashboards section.' + title: 'To verify that the dashboards are provisioned, log in to your Edge Professional Edition instance and go to the Dashboards section.' create-dashboard: 0: image: /images/pe/edge/user-guide/dashboards/8-create-new-dashboard.png - title: 'Log in to your ThingsBoard Edge instance and navigate to the “Dashboards” section. By default, you navigate to the dashboard group "All". Click the "+" icon in the upper right corner of the screen, and select "Create new dashboard" option from the drop-down menu.' + title: 'Log in to your Edge instance and navigate to the “Dashboards” section. By default, you navigate to the dashboard group "All". Click the "+" icon in the upper right corner of the screen, and select "Create new dashboard" option from the drop-down menu.' 1: image: /images/pe/edge/user-guide/dashboards/9-new-dashboard-dialog.png - title: 'In the pop-up window, enter a dashboard title. Other fields are optional. Click the "Add" button to proceed' + title: 'In the pop-up window, enter a dashboard title. Other fields are optional. Click the "Add" button to proceed' 2: image: /images/pe/edge/user-guide/dashboards/10-add-widgets-and-save.png - title: 'Once you have created the dashboard, it will be automatically opened. You can configure it by adding widgets. Click the "Save" button to save the changes' + title: 'Once you have created the dashboard, it will be automatically opened. You can configure it by adding widgets. Click the "Save" button to save the changes' changes-from-edge-to-server: 0: image: /images/pe/edge/user-guide/dashboards/6-dashboards-from-edge-to-cloud.png - title: 'Log in to your Edge Professional Edition instance and go to the Dashboards section. Here you can create, configure, or make any changes to your Dashboards.' + title: 'Log in to your Edge Professional Edition instance and go to the Dashboards section. Here you can create, configure, or make any changes to your Dashboards.' 1: image: /images/pe/edge/user-guide/dashboards/7-dashboards-from-edge-to-cloud.png - title: 'Log in to your ThingsBoard server and go to the “Dashboards” section to see that the changes have been applied to the ThingsBoard server. Make sure you are connected to the internet.' + title: 'Log in to your ThingsBoard Server and go to the “Dashboards” section to see that the changes have been applied to the ThingsBoard Server. Make sure you are connected to the internet.' assign-customer: 0: image: /images/pe/edge/user-guide/dashboards/11-edge-dashboards.png - title: 'Log in to your ThingsBoard Edge instance and go to the “Dashboards” section. Then, click the "Dashboard details" button.' + title: 'Log in to your ThingsBoard Edge instance and go to the “Dashboards” section. Then, click the "Dashboard details" button.' 1: image: /images/pe/edge/user-guide/dashboards/12-manage-owner-groups.png - title: 'Click the "Manage owner and groups" button on the Dashboard details page' + title: 'Click the "Manage owner and groups" button on the Dashboard details page' 2: image: /images/pe/edge/user-guide/dashboards/13-update-customer-or-group.png - title: 'In the "Manage owner and groups" pop-up window, select owner and click the "Update" button. You also may update the dashboard group if needed.' + title: 'In the "Manage owner and groups" pop-up window, select owner and click the "Update" button. You also may update the dashboard group if needed.' --- diff --git a/docs/pe/edge/user-guide/integrations/coap.md b/docs/pe/edge/user-guide/integrations/coap.md index f12f93ccd8..720ea874e5 100644 --- a/docs/pe/edge/user-guide/integrations/coap.md +++ b/docs/pe/edge/user-guide/integrations/coap.md @@ -6,58 +6,58 @@ description: CoAP Integration Guide assign-integration: 0: image: /images/pe/edge/integrations/coap/assign-coap-integration-1-edge.png - title: 'Go to the "Edge management" section -> "Instances" page, click on your edge instance to open "Edge details" window, and navigate to the "Attributes" tab. Click "plus" icon to add new server attribute to Edge;' + title: 'Go to the Edge management > Instances section, click your edge instance to open the Edge details window, and navigate to the "Attributes" tab. Click the "plus" icon to add new server attribute to Edge.' 1: image: /images/pe/edge/integrations/coap/assign-coap-integration-2-edge.png - title: 'Name it 'edgeIp' and use Edge IP address and CoAP bind port in following format: 'host:port'. After, click "Add" button;' + title: 'Name it (i.g. "edgeIp") and use the Edge IP address and CoAP bind port in the following format: 'host:port'. Then, click the "Add" button.' 2: image: /images/pe/edge/integrations/coap/assign-coap-integration-3-edge.png - title: 'Added the server attribute ''edgeIP'' to the edge;' + title: 'View the added the server attribute "edgeIP" to the edge.' 3: image: /images/pe/edge/integrations/coap/assign-coap-integration-4-edge.png - title: 'Now, click "Manage edge integrations" icon of Edge entity;' + title: 'Now, click "Manage edge integrations" button of the Edge entity.' 4: image: /images/pe/edge/integrations/coap/assign-coap-integration-5-edge.png - title: 'Click the "+" icon at the top right of the corner. Specify your integration and click "Assign" button to assign it to the Edge;' + title: 'Click the "+" button in the top right of the corner. Specify your integration and click the "Assign" button to assign it to the Edge.' 5: image: /images/pe/edge/integrations/coap/assign-coap-integration-6-edge.png - title: 'Login to your ThingsBoard Edge instance and open "Integrations center" section -> "Integrations" page. You should see your integration. Click on it;' + title: 'Login to your ThingsBoard Edge instance and go to the Integrations center > Integrations section. You should see your integration. To open the "Integration details" window, click on it.' 6: image: /images/pe/edge/integrations/coap/assign-coap-integration-7-edge.png - title: 'In the "Integration details" window placeholder ${{edgeIP}} will be replaced with the value of the attribute.' + title: 'In the "Integration details"" window, the ${{edgeIP}} placeholder will be replaced with the value of the attribute.' coap-converter-binary-events: 0: image: /images/pe/edge/integrations/coap/converter-events-coap-1-edge.png - title: 'Go to the "Integrations center" section -> "Data converters" page, click on the uplink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find an uplink message;' + title: 'Go to the Integrations center > Data converters section, click the uplink converter to open "Data converter details" window, and go to the "Events" tab. There you will find an uplink message.' 1: image: /images/pe/edge/integrations/coap/converter-events-coap-binary-payload-2-edge.png - title: 'To see the incoming message to the converter, click the three dots in the 'In' column;' + title: 'To see the incoming message to the converter, click the three dots in the 'In' column.' 2: image: /images/pe/edge/integrations/coap/converter-events-coap-3-edge.png - title: 'To see the outgoing message from the converter, click the three dots in the 'Out' column.' + title: 'To see the outgoing message from the converter, click the three dots in the 'Out' column.' coap-converter-json-events: 0: image: /images/pe/edge/integrations/coap/converter-events-coap-1-edge.png - title: 'Go to the "Integrations center" section -> "Data converters" page, click on the uplink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find an uplink message;' + title: 'Go to the Integrations center > Data converters section, click on the uplink converter to open the "Data converter details" window, and go to the "Events" tab. There you will find an uplink message.' 1: image: /images/pe/edge/integrations/coap/converter-events-coap-json-payload-2-edge.png - title: 'To see the incoming message to the converter, click the three dots in the 'In' column;' + title: 'To see the incoming message to the converter, click the three dots in the 'In' column.' 2: image: /images/pe/edge/integrations/coap/converter-events-coap-3-edge.png - title: 'To see the outgoing message from the converter, click the three dots in the 'Out' column.' + title: 'To see the outgoing message from the converter, click the three dots in the 'Out' column.' coap-converter-text-events: 0: image: /images/pe/edge/integrations/coap/converter-events-coap-1-edge.png - title: 'Go to the "Integrations center" section -> "Data converters" page, click on the uplink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find an uplink message;' + title: 'Go to the Integrations center > Data converters section, click on the uplink converter to open the "Data converter details" window, and go to the "Events" tab. There you will find an uplink message.' 1: image: /images/pe/edge/integrations/coap/converter-events-coap-text-payload-2-edge.png - title: 'To see the incoming message to the converter, click the three dots in the 'In' column;' + title: 'To see the incoming message to the converter, click the three dots in the 'In' column.' 2: image: /images/pe/edge/integrations/coap/converter-events-coap-3-edge.png - title: 'To see the outgoing message from the converter, click the three dots in the 'Out' column.' + title: 'To see the outgoing message from the converter, click the three dots in the 'Out' column.' --- @@ -68,22 +68,22 @@ coap-converter-text-events: {% assign integrationUrl = "coap" %} {% include templates/edge/integrations/edge-pe-reference.md %} -CoAP Integration allows to stream data from devices that use a CoAP protocol to connect to ThingsBoard Edge and converts payloads of these devices into the ThingsBoard Edge format. +**CoAP Integration** allows streaming data from devices that use a **CoAP** protocol to connect to **ThingsBoard Edge** and converts payloads of these devices into the **ThingsBoard Edge** format. -Please review the integration diagram to learn more. +To learn more, please review the integration diagram. -![image](/images/user-guide/integrations/coap-integration.svg) +![image](/images/user-guide/integrations/coap-integration.svg){: style="display: block; margin: auto"} -## Prerequisites +### Prerequisites -In this tutorial, we will show you how configure CoAP integration with **NO SECURE** security mode selected. +In this tutorial, we will show you how to configure the **CoAP integration** with **NO SECURE** security mode selected. -To simulate CoAP device, please install [coap-client](http://manpages.ubuntu.com/manpages/focal/man5/coap-client.5.html) - utility which is intended to simulate CoAP client that will connect to CoAP integration. +To simulate CoAP device, please install [coap-client](http://manpages.ubuntu.com/manpages/focal/man5/coap-client.5.html){: target="_blank"}. This utility is intended to simulate CoAP client that will connect to CoAP integration. Let's assume that we have a sensor which is sending current temperature and humidity readings. -Our sensor device **SN-001** publishes it's temperature and humidity readings to CoAP Integration on **coap://10.7.3.0** URL - *10.7.3.0* is the IP address of the ThingsBoard Edge in local network. In your specific case please use IP address of **your** edge instance. +Our sensor device **SN-001** publishes its temperature and humidity readings to CoAP Integration on **coap://10.7.3.0** URL - *10.7.3.0* is the IP address of the ThingsBoard Edge in local network. In your specific case, please use the IP address of **your** edge instance. -For demo purposes we assume that our device is smart enough to send data in 3 different payload types: +For demo purposes, we assume that our device is smart enough to send data in 3 different payload types: - **Text** - in this case payload is: ```text SN-001,default,temperature,25.7,humidity,69 @@ -111,20 +111,20 @@ SN-001,default,temperature,25.7,humidity,69 You can use payload type based on your device capabilities and business cases. -## Create converter and integration templates +### Create converter and integration templates -Converter and integration templates are created only on the **ThingsBoard Professional Edition**. -So please use [**ThingsBoard Cloud**](https://thingsboard.cloud/signup) or [**install**](/docs/user-guide/install/pe/installation-options/) your own platform instance to log in as Tenant administrator. +Only the **ThingsBoard Professional Edition** creates converters and integration templates. +So please use [**ThingsBoard Cloud**](https://thingsboard.cloud/signup){: target="_blank"} or [**install**](/docs/user-guide/install/pe/installation-options/){: target="_blank"} your own platform instance to log in as a **Tenant administrator**. -Follow the steps below to add the **MQTT integration**: +To add the **MQTT integration**, follow the steps below: -- Go to "**Edge management**" section -> "**Integration templates**" page and click "plus" button to add new integration. Select type '**MQTT**'. Name it "Edge MQTT integration". Then, click "Next". +- Go to the **Edge management > Integration templates** section and click the **"plus"** button to add a new integration. Select the type '**MQTT**'. Name it **"Edge MQTT integration"**. Then click **"Next"**. {% include templates/edge/integrations/debug-mode-info.md %} ![image](/images/pe/edge/integrations/coap/add-coap-integration-template-1-edge.png) -- The next step is to create an **Uplink data converter**. +- Create an **Uplink data converter**. The purpose of the decoder function is to parse the incoming data and metadata to a format that ThingsBoard can consume. **deviceName** and **deviceType** are required, while **attributes** and **telemetry** are optional. @@ -152,7 +152,7 @@ After adding the uplink converter, click "Next". ![image](/images/pe/edge/integrations/coap/add-coap-integration-template-3-edge.png) -## Assign Integration to Edge +### Assign Integration to Edge Once converter and integration templates are created, we can assign Integration template to Edge. Because we are using placeholder **$\{\{edgeIp\}\}** in the integration configuration, we need to add attribute **edgeIp** to edge first. @@ -161,7 +161,7 @@ Once attribute added, we are ready to assign integration and verify that it's ad {% include images-gallery.html imageCollection="assign-integration" showListImageTitles="true" %} -## Send uplink message +### Send uplink message Once CoAP Integration has been created, the CoAP server register appropriate resources, and then it waits for data from the devices. Let's log in to ThingsBoard **Edge** and go to the **Integrations** page. Find your CoAP integration and click on it. There you can find the CoAP endpoint URL. Click on the icon to copy the url. @@ -174,7 +174,7 @@ JSON payload
%,%json%,%templates/edge/integrations/coap/coap-send-uplink-json Binary payload
%,%binary%,%templates/edge/integrations/coap/coap-send-uplink-binary.md{% endcapture %} {% include content-toggle.html content-toggle-id="coapintegrationsenduplink" toggle-spec=senduplink %} -## Next steps +### Next steps {% assign docsPrefix = "pe/edge/" %} {% include templates/edge/guides-banner-edge.md %} diff --git a/docs/pe/edge/user-guide/integrations/http.md b/docs/pe/edge/user-guide/integrations/http.md index 59963198a2..7fe4290e48 100644 --- a/docs/pe/edge/user-guide/integrations/http.md +++ b/docs/pe/edge/user-guide/integrations/http.md @@ -6,65 +6,65 @@ description: HTTP integration guide downlink-rule: 0: image: /images/pe/edge/integrations/http/downlink-rule-1-edge.png - title: 'Go to the "Edge management" section -> "Rule chain templates" page and click on the "Edge Root Rule Chain" to open it;' + title: 'Go to the Edge management > Rule chain templates section and click on the "Edge Root Rule Chain" to open it.' 1: image: /images/pe/edge/integrations/http/downlink-rule-2-edge.png - title: 'Create an 'integration downlink' node. Specify your integration in its settings;' + title: 'Create an 'integration downlink' node. Specify your integration in the settings;' 2: image: /images/pe/edge/integrations/http/downlink-rule-3-edge.png - title: 'Set the "Attributes Updated" and "Post attributes" links from the 'message type switch' node to the 'integration downlink' node. When the attribute is created or changes are made to the attribute, the downlink message will be sent to the integration. Apply changes.' + title: 'Set the "Attributes Updated" and "Post attributes" links from the 'message type switch' node to the 'integration downlink' node. When the attribute is created or changes are made to the attribute, the downlink message is sent to the integration. Apply the changes.' assign-integration: 0: image: /images/pe/edge/integrations/http/assign-integration-1-edge.png - title: 'Go to the "Edge management" section -> "Instances" page, click on your edge instance to open "Edge details" window, and navigate to the "Attributes" tab. Click "plus" icon to add new server attribute to Edge;' + title: 'Go to the Edge management > Instances section, click on your edge instance to open the "Edge details" window, and navigate to the "Attributes" tab. Click the "plus" button to add a new server attribute to the Edge.' 1: image: /images/pe/edge/integrations/http/assign-integration-2-edge.png - title: 'Named baseUrl and set value as your Edge IP:port. After, click "Add" button;' + title: 'Enter the new attribute name - "baseUrl, and set the value IP:port. Then click the "Add" button.' 2: image: /images/pe/edge/integrations/http/assign-integration-3-edge.png - title: 'Added the server attribute ''baseUrl'' to the edge;' + title: 'The "baseUrl" server attribute is now added to the edge.' 3: image: /images/pe/edge/integrations/http/assign-integration-4-edge.png - title: 'Now, click "Manage edge integrations" icon of Edge entity;' + title: 'To assign the integration to the Edge, click the "Manage edge integrations" button.' 4: image: /images/pe/edge/integrations/http/assign-integration-5-edge.png - title: 'Click the "+" icon at the top right of the corner. Specify your integration and click "Assign" button to assign it to the Edge;' + title: 'Click the "+" button at the top right of the corner. Select your integration from the drop-down menu and click the "Assign" button.' 5: image: /images/pe/edge/integrations/http/assign-integration-6-edge.png - title: 'Login to your ThingsBoard Edge instance and open "Integrations center" section -> "Integrations" page. You should see your integration. Click on it;' + title: 'Login to your ThingsBoard Edge instance and go to the Integrations center > Integrations section. You should see your integration. Click on it.' 6: image: /images/pe/edge/integrations/http/assign-integration-7-edge.png - title: 'In the "Integration details" window placeholder ${{baseUrl}} will be replaced with the value of the attribute.' + title: 'In the "Integration details" window, the ${{baseUrl}} placeholder will be replaced with the value of the attribute.' send-uplink: 0: image: /images/pe/edge/integrations/http/send-uplink-1-edge.png - title: 'Go to the "Integrations center" section -> "Integrations" page. Find your HTTP integration and click on it and copy the "HTTP endpoint URL". Send the uplink message using the command from the tutorial;' + title: 'Go to the Integrations center > Integrations section. Find your HTTP integration and click on it and copy the "HTTP endpoint URL". Send the uplink message using the command from the tutorial;' 1: image: /images/pe/edge/integrations/http/send-uplink-2-edge.png - title: 'Navigate to the "Events" tab. There you will find an uplink message with the status 'OK'. To see the message itself, click the three dots in the "Message" column.' + title: 'Go to the "Events" tab. There you will find an uplink message with the status 'OK'. To see the message, click the three dots in the "Message" column.' device: 0: image: /images/pe/edge/integrations/http/device-1-edge.png - title: 'Go to the "Entities" section -> "Devices" page on the Edge to see the created device with data.' + title: 'To see the created device with data, go to the Entities > Devices section on the Edge.' converter-events: 0: image: /images/pe/edge/integrations/http/converter-events-1-edge.png - title: 'Go to the "Integrations center" section -> "Data converters" page, click on the uplink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find an uplink message;' + title: 'Go to the Integrations center > Data converters section, click on the uplink converter to open the "Data converter details" window, and select the "Events" tab. There you will find an uplink message.' 1: image: /images/pe/edge/integrations/http/converter-events-2-edge.png - title: 'To see the incoming message to the converter, click the three dots in the 'In' column;' + title: 'To see the incoming message to the converter, click the three dots in the "In" column.' 2: image: /images/pe/edge/integrations/http/converter-events-3-edge.png - title: 'To see the outgoing message from the converter, click the three dots in the 'Out' column.' + title: 'To see the outgoing message from the converter, click the three dots in the "Out" column.' send-again-message: 0: image: /images/pe/edge/integrations/http/downlink-responce-1-edge.png - title: 'Send again the uplink message to HTTP integration;' + title: 'Send again the uplink message to the HTTP integration;' 1: image: /images/pe/edge/integrations/http/downlink-responce-2-edge.png title: 'We will receive a response from the ThingsBoard in the terminal.' @@ -72,13 +72,13 @@ send-again-message: downlink-converter-message: 0: image: /images/pe/edge/integrations/http/downlink-converter-message-1-edge.png - title: 'Go to the "Integrations center" section -> "Data converters" page, click on the downlink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find a downlink message;' + title: 'Go to the Integrations center > Data converters section, click on the downlink converter to open the "Data converter details" window, and select the "Events" tab. There you will find a downlink message.' 1: image: /images/pe/edge/integrations/http/downlink-converter-message-2-edge.png - title: 'Click the three dots in the 'In' column to see the message that came from the integration to the converter;' + title: 'Click the three dots in the In column to see the message that came from the integration to the converter.' 2: image: /images/pe/edge/integrations/http/downlink-converter-message-3-edge.png - title: 'Click the three dots in the 'Out' column to see the message sent to the device after processing by the converter.' + title: 'Click the three dots in the Out column to see the message sent to the device after processing by the converter.' --- @@ -89,30 +89,30 @@ downlink-converter-message: {% assign integrationUrl = "http" %} {% include templates/edge/integrations/edge-pe-reference.md %} -## Overview +### Overview -HTTP Integration allows converting existing protocols and payload formats to ThingsBoard Edge message format and is useful in several deployment scenarios: +**HTTP integration** allows existing protocols and payload formats to be converted to the ThingsBoard Edge message format and is useful in multiple deployment scenarios: - - stream device and/or asset data from external system, IoT platform or connectivity provider back-end. - - stream device and/or asset data from your custom application running in the cloud. - - connect the existing device with custom HTTP based protocol to ThingsBoard Edge. + - Stream device and/or asset data from an external system, IoT platform or connectivity provider back-end. + - Stream device and/or asset data from your custom application running in the cloud. + - Connect the existing device to **ThingsBoard Edge** using a custom HTTP-based protocol. -## Create converter and integration templates +### Create converter and integration templates -Converter and integration templates are created only on the **ThingsBoard Professional Edition**. -So please use [**ThingsBoard Cloud**](https://thingsboard.cloud/signup) or [**install**](/docs/user-guide/install/pe/installation-options/) your own platform instance to log in as Tenant administrator. +Only the **ThingsBoard Professional Edition** creates converters and integration templates. +So please use [**ThingsBoard Cloud**](https://thingsboard.cloud/signup){: target="_blank"} or [**install**](/docs/user-guide/install/pe/installation-options/){: target="_blank"} your own platform instance to log in as a **Tenant administrator**. Follow the steps below to add the **HTTP integration**: -- Go to "**Edge management**" section -> "**Integration templates**" page and click "plus" button to add new integration. Select type '**HTTP**'. Name it "Edge HTTP integration". Then, click "Next"; +- Go to the**Edge management > Integration templates** section and click the **"plus"** button to add a new integration. Select the **"HTTP"** type. Name it **"Edge HTTP Integration"**. Then click **Next**; {% include templates/edge/integrations/debug-mode-info.md %} ![image](/images/pe/edge/integrations/http/add-http-integration-template-1-edge.png) -- The next step is create an **Uplink data converter**. +- The next step is to create an **Uplink data converter**. -Uplink is necessary in order to convert the incoming data from the device into the required format for displaying them in ThingsBoard. For this example, use the code below. +Uplink is needed to convert the data coming from the device into the format needed to display it on ThingsBoard. For this example, use the following code: {% include templates/tbel-vs-js.md %} @@ -121,11 +121,11 @@ TBELRecommended%,%accessToken%,%templates/edge/integrations/http/ JavaScript%,%anonymous%,%templates/edge/integrations/http/http-uplink-converter-config-javascript.md{% endcapture %} {% include content-toggle.html content-toggle-id="httpuplinkconverteredgeconfig" toggle-spec=httpuplinkconverteredgeconfig %} -- At the next step is create a **Downlink converter**. +- The next step is to create a **Downlink Converter**. -The Downlink converter transforms outgoing RPC message and then the integration sends it to your device. +The **downlink converter** converts the outbound **RPC message** and then the integration sends it to your device. You can customize a downlink according to your configuration. -Let’s consider an example where we send an attribute update message. For this example, use the code below. +Let's consider an example where we send an attribute update message. For this example, use the following code. {% include templates/tbel-vs-js.md %} @@ -136,37 +136,44 @@ JavaScript%,%anonymous%,%templates/edge/integrations/http/http-do - Finally, we go to the "**Connection**" page: - - Enter **IP address and port of your Edge instance** in the format: 'host:port' as '**Base URL**'. Or, you can use placeholder **$\{\{ATTRIBUTE_KEY\}\}** to substitute integration field with attribute value from specific Edge entity. - In this example, we will use the placeholder **$\{\{baseUrl\}\}** for '**Base URL**'. - - Then, click the "Add" button. + - Enter the **IP address and port of your Edge instance** in the format 'host:port' as the **Base URL**. Or, you can use the placeholder **$\{\{ATTRIBUTE_KEY\}\}** to replace the integration field with an attribute value from a specific Edge entity. + In this example, we will use the placeholder **$\{\{baseUrl\}\}** for **Base URL**. + - Then click the **"Add"** button. ![image](/images/pe/edge/integrations/http/add-http-integration-template-4-edge.png) -
-HTTP integration is created. +**HTTP integration** is created. -## Modify Edge Root Rule Chain for downlinks +### Modify Edge Root Rule Chain for downlinks -We can send a downlink message to the device from Rule chain using the rule node. -To be able to send downlink over integration we need to modify **"Edge Root Rule chain"** on the **ThingsBoard PE**. +We can send a **downlink message** to the device from the **Rule chain** using the rule node. +To send downlink over integration, we need to modify **Edge Root Rule chain**. + +{% capture edge-4 %} +**Please note!**
+If you use **earlier versions of Edge**, you cannot create or edit a **Rule Chain** on the **Edge** itself. It must be configured as a template in the **Cloud (Server)**, and then assigned to the **Edge** instance. + +Starting with **Edge version 4.0**, you can create and edit a **Rule Chain** on the **Edge**. +{% endcapture %} +{% include templates/info-banner.md content=edge-4 %} {% include images-gallery.html imageCollection="downlink-rule" showListImageTitles="true" %} -## Assign Integration to Edge +### Assign Integration to Edge -Once converter and integration templates are created, we can assign Integration template to **Edge**. -Because we are using placeholder **$\{\{baseUrl\}\}** in the integration configuration, we need to add attribute '**baseUrl**' to edge first. -You need to provide **IP address** and **port** of your **Edge** instance as '**baseUrl**' attribute. -Once attribute added, we are ready to assign integration and verify that it's added. +Once the converter and integration templates are created, we can assign the **Integration template** to **Edge**. +Since we are using placeholder **$\{\{baseUrl\}\}** in the integration configuration, we need to add attribute **baseUrl** to Edge first. +You need to provide **IP address** and **port** of your **Edge** instance as **baseUrl** attribute. +Once the attribute is added, we're ready to assign integration and verify that it's added. {% include images-gallery.html imageCollection="assign-integration" showListImageTitles="true" %} -## Send uplink message +### Send uplink message -To send an uplink message, you need '**HTTP endpoint URL**' from the integration. -Log in to ThingsBoard **Edge** and go to the "**Integrations center**" section -> "**Integrations**" page. Find your HTTP integration and click on it. Find and copy the 'HTTP endpoint URL'. +To send an uplink message, you need the **HTTP endpoint URL** from the integration. +Log in to **ThingsBoard Edge** and go to the **Integrations center > Integrations** section. Find your **HTTP integration** and click it. Find and copy the "**HTTP endpoint URL"**. -Use the command below to send a message. Don't forget to replace `$DEVICE_NAME` and `$YOUR_HTTP_ENDPOINT_URL` with corresponding values. +Use the command below to send a message. Remember to replace **$DEVICE_NAME** and **$YOUR_HTTP_ENDPOINT_URL** with the corresponding values. ```ruby curl -v -X POST -d "{\"deviceName\":\"$DEVICE_NAME\",\"temperature\":33,\"model\":\"test\"}" $YOUR_HTTP_ENDPOINT_URL -H "Content-Type:application/json" @@ -175,31 +182,33 @@ curl -v -X POST -d "{\"deviceName\":\"$DEVICE_NAME\",\"temperature\":33,\"model\ ![image](/images/pe/edge/integrations/http/send-uplink-1-edge.png) -Now, navigate to the "**Events**" tab in your HTTP integration. If you have done everything correctly, you will find an uplink message with the status 'OK'. To see the message itself, click the three dots in the 'Message' column. +Now, select the **"Events"** tab in your HTTP integration. If you have done everything correctly, you will see an uplink message with the status **'OK'**. To see the message itself, click on the three dots in the **"Message"** column. ![image](/images/pe/edge/integrations/http/send-uplink-2-edge.png) -When you sent the message, a new device was created. The created device with data can be seen in the "**Entities**" section -> "**Devices**" page on the **Edge**: +When you sent the message, a new device was created. The created device with data can be seen in the **Entities > Devices** section on the **Edge**: ![image](/images/pe/edge/integrations/http/device-1-edge.png) -Also, received data can be viewed in the uplink converter. In the 'In' and 'Out' blocks of the "**Events**" tab: +You can also view the received data in the **Uplink Converter**. In the **"In"** and **"Out"** blocks of the "**Events**" tab: {% include images-gallery.html imageCollection="converter-events" %} -## Send downlink message +### Send downlink message + +Now let's check the downlink functionality. -Now let's check downlink functionality. Let's add a 'firmware' shared attribute. Go to the "**Devices**" page, select your device, and navigate to the "**Attributes**" tab on the **ThingsBoard Edge**. Select the "**Shared attributes**" scope and click on the "plus" icon to create new attribute. -Then set the attribute name, its value (for example, the key name is 'firmware', value: '01052020.v1.1') and save the data. +Let's add a **'firmware'** shared attribute. Go to the **"Devices"** section, select your device, and open the "**Attributes**" tab on the **ThingsBoard Edge**. Select the **"Shared attributes"** scope and click the **"plus"** button to create new attribute. +Then set the **attribute name** and **value** (_e.g., the key name is 'firmware', value: '01052020.v1.1'_), and **save** the data. ![image](/images/pe/edge/integrations/http/add-shared-attribute-1-edge.png) -To make sure that downlink message sent to integration you can check "**Events**" tab of the integration: +To make sure that downlink message is sent to integration, check the **Events** tab of the integration: ![image](/images/pe/edge/integrations/http/downlink-message-1-edge.png) -Now we'll need to send again message to HTTP integration. -Please use the same command that was used before. Don't forget to replace `$DEVICE_NAME` and `$YOUR_HTTP_ENDPOINT_URL` with corresponding values. +Now we need to send another message to the **HTTP integration**. +Use the same command you used before. Remember to replace **$DEVICE_NAME** and **$YOUR_HTTP_ENDPOINT_URL** with the corresponding values. ```ruby curl -v -X POST -d "{\"deviceName\":\"$DEVICE_NAME\",\"temperature\":33,\"model\":\"test\"}" $YOUR_HTTP_ENDPOINT_URL -H "Content-Type:application/json" @@ -208,11 +217,12 @@ curl -v -X POST -d "{\"deviceName\":\"$DEVICE_NAME\",\"temperature\":33,\"model\ {% include images-gallery.html imageCollection="send-again-message" %} -Received data and data that was sent can be viewed in the downlink converter. In the 'In' block of the "**Events**" tab, we see what data entered and in the 'Out' field, the message sent to the device is displayed: +The received and sent data can be viewed in the downlink converter. The received data is displayed in **"In"** block of the **"Events"** tab. +The **"Out"** field shows the message sent to the device: {% include images-gallery.html imageCollection="downlink-converter-message" %} -## Next steps +### Next steps {% assign docsPrefix = "pe/edge/" %} {% include templates/edge/guides-banner-edge.md %} \ No newline at end of file diff --git a/docs/pe/edge/user-guide/integrations/index.md b/docs/pe/edge/user-guide/integrations/index.md index bf98657f4a..d5f84f9a3f 100644 --- a/docs/pe/edge/user-guide/integrations/index.md +++ b/docs/pe/edge/user-guide/integrations/index.md @@ -4,40 +4,40 @@ title: Edge Integrations description: Edge Integrations Documentation converterTemplateCreation: 0: - image: /images/pe/edge/integrations/create-converter-step-1.png + image: /images/pe/edge/integrations/create-converter-step-1.webp title: 'Create Converter template' 1: - image: /images/pe/edge/integrations/create-converter-step-2.png + image: /images/pe/edge/integrations/create-converter-step-2.webp title: 'Converter template configuration' integrationTemplateCreation: 0: - image: /images/pe/edge/integrations/create-integration-step-1.png + image: /images/pe/edge/integrations/create-integration-step-1.webp title: 'Create Integration template' 1: - image: /images/pe/edge/integrations/create-integration-step-2.png + image: /images/pe/edge/integrations/create-integration-step-2.webp title: 'Integration template configuration' placeholderFeature: 0: - image: /images/pe/edge/integrations/placeholder-feature-step-1.png - title: 'Add ipAddress attribute to Edge' + image: /images/pe/edge/integrations/placeholder-feature-step-1.webp + title: 'Go to the Edge management > Instances section, click it and select the "Attributes" tab. Add the ipAddress attribute to Edge.' 1: - image: /images/pe/edge/integrations/placeholder-feature-step-2.png - title: 'Add placeholder ${{ipAddress}} to Integration configuration' + image: /images/pe/edge/integrations/placeholder-feature-step-2.webp + title: 'Go to the Edge management > Instances section, click it and add the ${{ipAddress}} placeholder to the Integration configuration.' 2: - image: /images/pe/edge/integrations/placeholder-feature-step-3.png - title: 'Click Manage Integrations button of Edge entity' + image: /images/pe/edge/integrations/placeholder-feature-step-3.webp + title: 'Go back to the Edge management > Instances section and click the Manage Integrations button of the corresponding Edge entity.' 3: - image: /images/pe/edge/integrations/placeholder-feature-step-4.png - title: 'Assign Integration to the Edge' + image: /images/pe/edge/integrations/placeholder-feature-step-4.webp + title: 'To assign the Integration to the Edge, click the "Assign to edge" button and select it from the drop-down menu. To proceed, click the "Assign" button.' 4: - image: /images/pe/edge/integrations/placeholder-feature-step-5.png - title: 'Login to your ThingsBoard Edge instance and open Integrations page - placeholder is going to be replaced by attribute value' + image: /images/pe/edge/integrations/placeholder-feature-step-5.webp + title: 'To confirm that the placeholder is replaced by the attribute value, log in to your ThingsBoard Edge instance, go to the Integration center > Integrations section and click the integration.' missingPlaceholder: 0: - image: /images/pe/edge/integrations/missing-placeholder.png + image: /images/pe/edge/integrations/missing-placeholder.webp title: 'Add ipAddress attribute to Edge' --- @@ -46,116 +46,119 @@ missingPlaceholder: {:toc} {% assign sinceVersion = "3.4" %} -{% include templates/since.md %} +{% include templates/edge/since-edge.md %} -## Overview +### Overview -Edge Integrations feature was designed in a similar way as Platform Integrations. The only major difference is in the way how integrations and converters are configured. +**Edge Integrations** are similar to [Platform Integrations](/docs/user-guide/integrations/){: target="_blank"}. +The only major difference is how integrations and converters are configured. -To reuse same Integration between multiple Edges, **Integration templates** and **Converter templates** approach was introduced. +To reuse the same integration across multiple Edges, **Integration templates** and **Converter templates** have been introduced. -Integration templates are created on the Cloud, but these templates are not regular Platform Integrations and *not started* on the cloud. -They are assigned to the Edge and *started* once they are provisioned to the Edge. +**Integration templates** are created in the **Cloud**, but they are not regular platform integrations and are not launched in the Cloud. +They are assigned to the **Edge** and launched once they are deployed to the **Edge**. -At the moment Integrations and Converters can not be modified on the Edge - they are modified on the Cloud and all the modifications automatically propagated to the Edge from the Cloud. +At the moment, **Integration and Converter templates cannot be modified on the Edge**. They are modified in the **Cloud**, and any changes are automatically propagated from the **Cloud** to the **Edge**. -Integration configurations fields (URIs, passwords, etc.) could be replaced by Edge attribute value with a help of placeholders. -In this way, single Integration template could be used by multiple Edges, and any specific configuration field of the Integration could be replaced by Edge attribute value. +Integration configuration fields (URIs, passwords, etc.) could be replaced by **Edge attribute** value using **placeholders**. +This way, a single **Integration template** could be used by multiple **Edges**, and any specific integration configuration field could be replaced by an **Edge attribute value**. -## Deployment options +### Deployment options -ThingsBoard Integration has two deployment options: embedded and remote. See details and architecture diagrams below. +**ThingsBoard Integration** has two deployment options: embedded and remote. See the details and architecture diagrams below. -### Embedded integrations +#### Embedded integrations -Embedded integration is running in the main ThingsBoard Edge process. +**Embedded integration** runs in the main **ThingsBoard Edge** process. -Pros: -* simplifies deployment of new integration (just few clicks on ThingsBoard UI); -* minimize latency for message delivery; +**Pros**: +* Simplifies deployment of new integration (just a few clicks on the ThingsBoard UI); +* Minimizes latency for message delivery; -Cons: -* consume resources allocated to main ThingsBoard Edge process: network connections, OS threads and CPU cycles; -* low level of isolation; +**Cons**: +* Consumes resources allocated to the main **ThingsBoard Edge** process (_network connections, OS threads, and CPU cycles_); +* Low level of isolation; - + -### Remote integrations +#### Remote integrations -One can install remote integration in the local network and stream data to the edge over network. +It is possible to install the **remote integration** on the local network and to stream the data to the edge over the network. Let's assume you have local MQTT broker or OPC-UA server deployed on-premises. -Those brokers and/or servers don't have dedicated external IP address, so ThingsBoard Edge can't connect to them directly. +Those brokers and/or servers don't have a dedicated external IP address, so ThingsBoard Edge can't connect to them directly. However, you can install remote integration close to this edge, in the same local network. This integration will connect to the broker/edge, pull the data and store it in the local file system. Remote integration will stream the data to the ThingsBoard Edge deployed in the network once the network connection is available. Pros: -* enables integration with servers deployed in the local network; -* isolates the integration process from main ThingsBoard Edgeprocess; +* Enables integration with servers deployed on the local network; +* Isolates the integration process from the main **ThingsBoard Edge** process. Cons: -* requires installation of a separate package; +* Requires the installation of a separate package; -Learn how to configure integration to run remotely using [this guide](/docs/pe/edge/user-guide/integrations/remote-integrations). +Learn how to configure integration to run remotely in [this guide](/docs/pe/edge/user-guide/integrations/remote-integrations){: target="_blank"}. - + -## Converter templates +### Converter templates -Converter templates could be created only by Tenant administrator. -Go to Cloud and navigate to **Edge management -> Converter templates** page. -This page allows you to create Converter template. These Converter templates are going to be used later in Integration templates configuration. +Converter templates can only be created by a tenant administrator. +To create a Converter template, log in to the **Cloud** and go to the **Edge management > Converter templates** section. +These **Converter templates** are going to be used later in the **Integration templates** configuration. {% include images-gallery.html imageCollection="converterTemplateCreation" %} -You do not need to assign Converter templates to the Edge - once Integration template is assigned to specific Edge, related Uplink/Downlink Converters are provisioned to the Edge automatically. +{% capture converter-templates %} +There is no need to assign converter templates to the **Edge** — once an integration template is assigned to a specific **Edge**, +the corresponding Uplink and Downlink Converters are automatically made available to the **Edge**. +{% endcapture %} +{% include templates/info-banner.md content=converter-templates %} -## Integration templates +### Integration templates -Once Converter template was created you can navigate to **Edge management -> Integration templates** page to create Integration. -This page allows you to create Integration template. These Integration templates are going to be assigned to the Edge. +Once the **Converter template** is created, to create an integration template, go to the **Edge management > Integration templates** section. +These Integration templates are going to be assigned to the Edge. {% include images-gallery.html imageCollection="integrationTemplateCreation" %} -### Integration configuration placeholders +#### Integration configuration placeholders -In most of the cases, Integration have common configuration part for most of the Edges, except some specific field(s). -To be able to use the same Integration template for multiple Edges, with some unique values between Edges, placeholders feature could be used. -You are able to add specific attributes to the Edge, and then use name of this attribute in the Integration template. -This placeholder is going to be replaced by attribute value during the assignment to the Edge. +In most cases, integration has common configuration part for most of the Edges, except for some specific field(s). +To use the same **Integration template** for multiple **Edges** while allowing **certain values to be unique** for each Edge, you can use the **placeholders** feature. +You can **add specific attributes to the Edge** and then use the name of this attribute in the integration template. +This placeholder will be replaced by the attribute value during assignment to the edge. -Let's see on example how HTTP Integration could be configured with unique IP Address value per Edge as 'Base URL'. +Let's look at an example of how **HTTP integration** could be configured with a unique **IP address** value per Edge as the **Base URL**. {% include images-gallery.html imageCollection="placeholderFeature" showListImageTitles="true" %} -You can assign this Integration template to other Edge entities, and every Integration on the Edge is going to have it's unique **'Base URL'** value, that is replaced by attribute value. +You can assign this integration template to other Edge entities, and each integration on the Edge will have its unique **'Base URL'** value that's replaced by the attribute value. -If specific Edge is missing placeholder attribute key, Platform will notify regarding it during the assignment to Edge or Integration configuration update: +If a particular **Edge** is missing a placeholder attribute key, the **Platform** will notify you of this during the **Edge** mapping or integration configuration update: {% include images-gallery.html imageCollection="missingPlaceholder" %} -## Edge limitations - -In the current version, Edge is not able to create customers, device profiles and entity groups. -These limitations affect Uplink Data converter functionality: +### Edge limitations -* If non-existent device type used in the Converter, **'default'** device type will be used. -* Same applies to the customer - if customer is not available on the Edge, device will be assigned to Tenant. -* If entity group non-exists on the edge - 'All' group is going to be used. +In the current release, **Edge** is unable to create customers and entity groups. Note that this limitation affects the functionality of the **Uplink Data Converter**: +* If a non-existent **device type** is used in the converter, the 'default' device type is used. +* if a **Customer** is not available on the Edge, the device is assigned to the **Tenant**. +* If the **entity group** does not exist on the edge, the **'All'** group gets used. -## See Also +### See Also -Explore guides and video tutorials related to specific integrations: +Explore guides and video tutorials for specific integrations: - - [HTTP](/docs/pe/edge/user-guide/integrations/http/) - - [MQTT](/docs/pe/edge/user-guide/integrations/mqtt/) - - [CoAP](/docs/pe/edge/user-guide/integrations/coap/) - - [OPC-UA](/docs/pe/edge/user-guide/integrations/opc-ua/) - - [TCP](/docs/pe/edge/user-guide/integrations/tcp/) - - [UDP](/docs/pe/edge/user-guide/integrations/udp/) + - [HTTP](/docs/pe/edge/user-guide/integrations/http/){: target="_blank"} + - [MQTT](/docs/pe/edge/user-guide/integrations/mqtt/){: target="_blank"} + - [CoAP](/docs/pe/edge/user-guide/integrations/coap/){: target="_blank"} + - [OPC-UA](/docs/pe/edge/user-guide/integrations/opc-ua/){: target="_blank"} + - [TCP](/docs/pe/edge/user-guide/integrations/tcp/){: target="_blank"} + - [UDP](/docs/pe/edge/user-guide/integrations/udp/){: target="_blank"} -## Next steps +### Next steps {% assign docsPrefix = "pe/edge/" %} {% include templates/edge/guides-banner-edge.md %} diff --git a/docs/pe/edge/user-guide/integrations/mqtt.md b/docs/pe/edge/user-guide/integrations/mqtt.md index 302f189ac7..e498975393 100644 --- a/docs/pe/edge/user-guide/integrations/mqtt.md +++ b/docs/pe/edge/user-guide/integrations/mqtt.md @@ -6,75 +6,75 @@ description: MQTT Integration guide assign-integration: 0: image: /images/pe/edge/integrations/mqtt/assign-mqtt-integration-1-edge.png - title: 'Go to the "Edge management" section -> "Instances" page, click on your edge instance to open "Edge details" window, and navigate to the "Attributes" tab. Click "plus" icon to add new server attribute to Edge;' + title: 'Go to the Edge management > Instances section, click on your edge instance to open "Edge details" window, and navigate to the "Attributes" tab. To add a new server attribute to **Edge**, click the "plus" button.' 1: image: /images/pe/edge/integrations/mqtt/assign-mqtt-integration-2-edge.png - title: 'Named 'brokerIp' and set value as 'broker.hivemq.com'. After, click "Add" button;' + title: 'Name it brokerIp and set the value as "broker.hivemq.com". Then click the "Add" button.' 2: image: /images/pe/edge/integrations/mqtt/assign-mqtt-integration-3-edge.png - title: 'Added the server attribute ''brokerIp'' to the edge;' + title: 'The "brokerIp" server attribute is now added to the edge.' 3: image: /images/pe/edge/integrations/mqtt/assign-mqtt-integration-4-edge.png title: 'Now, click "Manage edge integrations" icon of Edge entity;' 4: image: /images/pe/edge/integrations/mqtt/assign-mqtt-integration-5-edge.png - title: 'Click the "+" icon at the top right of the corner. Specify your integration and click "Assign" button to assign it to the Edge;' + title: 'Click the "+" button at the top right of the corner. Select your integration from the drop-down menu and click the "Assign" button.' 5: image: /images/pe/edge/integrations/mqtt/assign-mqtt-integration-6-edge.png - title: 'Login to your ThingsBoard Edge instance and open "Integrations center" section -> "Integrations" page. You should see your integration. Click on it;' + title: 'Login to your ThingsBoard Edge instance and go to the Integrations center > Integrations section. You should see your integration. Click on it.' 6: image: /images/pe/edge/integrations/mqtt/assign-mqtt-integration-7-edge.png - title: 'In the "Integration details" window placeholder ${{brokerIp}} will be replaced with the value of the attribute.' + title: 'In the "Integration details" window, the ${{brokerIp}} placeholder will be replaced with the value of the attribute.' send-uplink-edge: 0: image: /images/pe/edge/integrations/mqtt/send-mqtt-uplink-1-edge.png - title: 'In the integration events tab, you should find an uplink message with the status 'OK'. To see the message itself, click the three dots in the 'Message' column.' + title: 'In the integration "Events" tab, you should find the uplink message with the "OK" status. To see the message, click the three dots in the "Message" column.' 1: image: /images/pe/edge/integrations/mqtt/send-mqtt-uplink-2-edge.png converter-mqtt-events: 0: image: /images/pe/edge/integrations/mqtt/converter-events-mqtt-1-edge.png - title: 'Go to the "Integrations center" section -> "Data converters" page, click on the uplink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find an uplink message;' + title: 'Go to the Integrations center > Data converters section, click on the uplink converter to open the "Data converter details" window, and select the "Events" tab. There you will find an uplink message.' 1: image: /images/pe/edge/integrations/mqtt/converter-events-mqtt-2-edge.png - title: 'To see the incoming message to the converter, click the three dots in the 'In' column;' + title: 'To see the incoming message to the converter, click the three dots in the "In" column.' 2: image: /images/pe/edge/integrations/mqtt/converter-events-mqtt-3-edge.png - title: 'To see the outgoing message from the converter, click the three dots in the 'Out' column.' + title: 'To see the outgoing message from the converter, click the three dots in the "Out" column.' downlink-rule: 0: image: /images/pe/edge/integrations/mqtt/downlink-rule-mqtt-1-edge.png - title: 'Go to the "Edge management" section -> "Rule chain templates" page and click on the "Edge Root Rule Chain" to open it;' + title: 'Go to the Edge management > Rule chain templates section and click the Edge Root Rule Chain to open it.' 1: image: /images/pe/edge/integrations/mqtt/downlink-rule-mqtt-2-edge.png - title: 'Create an 'originator fields' node. Configure adding originator name and originator type to the message metadata - in the downlink converter name of the device will be used to set the proper downlink MQTT topic;' + title: 'Create an originator fields node. Configure to add originator name and originator type to the message metadata - in the downlink converter, the device name is used to set the correct downlink MQTT topic.' 2: image: /images/pe/edge/integrations/mqtt/downlink-rule-mqtt-3-edge.png - title: 'Create an 'integration downlink' node. Specify your integration in its settings;' + title: 'Create an integration downlink node. Specify your integration in its settings;' 3: image: /images/pe/edge/integrations/mqtt/downlink-rule-mqtt-4-edge.png - title: 'Set the "Attributes Updated" and "Post attributes" links from the 'message type switch' node to the 'originator fields' node. And set 'Success' link from the 'originator fields' node to the 'integration downlink' node. When the attribute is created or changes are made to the attribute on the Edge, the downlink message will be sent to the integration. Apply changes.' + title: 'Set the Attributes Updated and Post attributes links from the message type switch node to the originator fields node. And set the Success link from the originator fields node to the integration downlink node. When the attribute is created or changes are made to the attribute on the Edge, the downlink message will be sent to the integration. Apply the changes.' downlink-integration-message: 0: image: /images/pe/edge/integrations/mqtt/downlink-message-mqtt-1-edge.png - title: 'Go to the "Integrations center" section -> "Data converters" page, click on the downlink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find an downlink message;' + title: 'Go to the Integrations center > Data converters section, click on the downlink converter to open the "Data converter details" window, and navigate to the "Events" tab. There you will find the downlink message;' 1: image: /images/pe/edge/integrations/mqtt/downlink-message-mqtt-2-edge.png downlink-converter-message: 0: image: /images/pe/edge/integrations/mqtt/downlink-mqtt-converter-message-1-edge.png - title: 'Go to the "Integrations center" section -> "Data converters" page, click on the downlink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find a downlink message;' + title: 'Go to the Integrations center > Data converters section, click on the downlink converter to open "Data converter details" window, and navigate to the "Events" tab. There you will find the downlink message;' 1: image: /images/pe/edge/integrations/mqtt/downlink-mqtt-converter-message-2-edge.png - title: 'Click the three dots in the 'In' column to see the message that came from the integration to the converter;' + title: 'Click the three dots in the In column to see the message that came from the integration to the converter.' 2: image: /images/pe/edge/integrations/mqtt/downlink-mqtt-converter-message-3-edge.png - title: 'Click the three dots in the 'Out' column to see the message sent to the device after processing by the converter.' + title: 'Click the three dots in the Out column to see the message sent to the device after processing by the converter.' --- @@ -85,52 +85,50 @@ downlink-converter-message: {% assign integrationUrl = "mqtt" %} {% include templates/edge/integrations/edge-pe-reference.md %} -MQTT Integration allows to connect to external MQTT brokers, subscribe to data streams from those brokers and convert any type of payload from your devices to ThingsBoard Edge message format. -Its typical use is whenever your devices are already connected to external MQTT broker or any other IoT platform or connectivity provider with MQTT based back-end. +**MQTT Integration** allows connecting to external MQTT brokers, subscribe to data streams from those brokers, and convert any type of payload from your devices to the ThingsBoard Edge message format. +It is typically used when your devices are already connected to an external MQTT broker or any other IoT platform or connectivity provider with MQTT based backend. -Please review the integration diagram to learn more. +To learn more, please see the integration diagram. ThingsBoard Edge MQTT Integration acts as an MQTT client. -It subscribes to topics and converts the data into telemetry and attribute updates. -In case of downlink message, MQTT integration converts it to the device-suitable format and pushes to external MQTT broker. +It subscribes to topics and converts the data into telemetry and attribute updates. +In the case of a downlink message, MQTT Integration converts it to the device-appropriate format and pushes it to an external MQTT broker. -{% capture difference %} -**Pay attention**: MQTT broker should be either co-located with ThingsBoard Edge instance or deployed in the cloud and have a valid DNS name or static IP address. +{% capture note %} +**Note**: + +The **MQTT broker** should either be co-located with the **ThingsBoard Edge** instance or deployed in the cloud and have a valid DNS name or static IP address. {% endcapture %} -{% include templates/info-banner.md content=difference %} +{% include templates/info-banner.md content=note %} -## Prerequisites +### Prerequisites In this tutorial, we will use: -- **ThingsBoard Professional Edition** instance — [thingsboard.cloud](https://thingsboard.cloud); -- The instance of [ThingsBoard PE Edge](/docs/user-guide/install/pe/edge/installation-options/) installed locally; -- MQTT broker, accessible by **ThingsBoard Edge** instance — broker.hivemq.com (port 1883); -- *mosquitto_pub* and *mosquitto_sub* MQTT clients to send and receive messages. - -Let's assume that we have a sensor which is sending current temperature readings. -Our sensor device **SN-001** publishes it's temperature readings to '**tb-edge/mqtt-integration-tutorial/sensors/SN-001/temperature**', and it is subscribed to '**tb-edge/mqtt-integration-tutorial/sensors/SN-001/rx**' to receive RPC calls. +- [ThingsBoard Professional Edition](https://thingsboard.cloud){: target="_blank"} account; +- Locally installed [ThingsBoard PE Edge](/docs/user-guide/install/pe/edge/installation-options/){: target="_blank"} instance; +- **MQTT broker** that can be accessed through the **ThingsBoard Edge** instance: broker.hivemq.com (port 1883); +- **mosquitto_pub** and **mosquitto_sub** MQTT clients for sending and receiving messages. +- a sensor device that sends temperature readings. In this guide we'll use **SN-001** to **'tb-edge/mqtt-integration-tutorial/sensors/SN-001/temperature'** and is subscribed to **'tb-edge/mqtt-integration-tutorial/sensors/SN-001/rx'** to receive **RPC calls**. We will send a message with temperature readings in a simple format: **`{"value":25.1}`** -We will send a message with temperature readings in a simple format: **`{"value":25.1}`** +### Create converter and integration templates -## Create converter and integration templates - -Converter and integration templates are created only on the **ThingsBoard Professional Edition**. -So please use [**ThingsBoard Cloud**](https://thingsboard.cloud/signup) or [**install**](/docs/user-guide/install/pe/installation-options/) your own platform instance to log in as Tenant administrator. +Only the **ThingsBoard Professional Edition** creates converters and integration templates. +So please use [**ThingsBoard Cloud**](https://thingsboard.cloud/signup){: target="_blank"} or [**install**](/docs/user-guide/install/pe/installation-options/){: target="_blank"} your own platform instance to log in as a **Tenant administrator**. Follow the steps below to add the **MQTT integration**: -- Go to "**Edge management**" section -> "**Integration templates**" page and click "plus" button to add new integration. Select type '**MQTT**'. Name it "Edge MQTT integration". Then, click "Next"; +- Go to the**Edge management > Integration templates** section and click the **"plus"** button to add a new integration. Select the **"MQTT"** type. Name it **"Edge HTTP Integration"**. Then click **Next**; {% include templates/edge/integrations/debug-mode-info.md %} ![image](/images/pe/edge/integrations/mqtt/add-mqtt-integration-template-1-edge.png) -- The next step is to create an **Uplink data converter**. +- The next step is to create an **Uplink data converter**. -The purpose of the decoder function is to parse the incoming data and metadata to a format that ThingsBoard can consume. +The purpose of the decoder function is to parse the incoming data and metadata into a format that ThingsBoard can consume. **deviceName** and **deviceType** are required, while *attributes* and *telemetry* are optional. **Attributes** and **telemetry** are flat key-value objects. Nested objects are not supported. @@ -144,9 +142,9 @@ JavaScript%,%anonymous%,%templates/edge/integrations/mqtt/mqtt-up {% include content-toggle.html content-toggle-id="mqttuplinkconverterconfig" toggle-spec=mqttuplinkconverterconfig %} -- At the next step is to create a **Downlink converter**. +- The next step is to create a **Downlink converter**. -The downlink converter transforming outgoing RPC message and then the Integration sends it to external MQTT broker. +The downlink converter transforms an outgoing RPC message and then the Integration sends it to external MQTT broker. You can customize a downlink according to your configuration. Let's consider an example where we send an attribute update message. For this example, use the code below. @@ -158,9 +156,9 @@ TBELRecommended%,%accessToken%,%templates/edge/integrations/mqtt/ JavaScript%,%anonymous%,%templates/edge/integrations/mqtt/mqtt-downlink-converter-config-javascript.md{% endcapture %} {% include content-toggle.html content-toggle-id="mqttdownlinkconverterconfig" toggle-spec=mqttdownlinkconverterconfig %} -Finally, we go to the "**Connection**" page. +Finally, we go to the **"Connection"** page. -- You can use placeholder **$\{\{ATTRIBUTE_KEY\}\}** to substitute integration field with attribute value from specific Edge entity. +- You can use the placeholder **$\{\{ATTRIBUTE_KEY\}\}** to replace an integration field with an attribute value from a specific Edge entity. In this example, we will use the placeholder **$\{\{brokerIp\}\}** for '**Host**' and **1883** for '**Port**'. - Add a **topic filter**: @@ -169,85 +167,98 @@ tb-edge/mqtt-integration-tutorial/sensors/+/temperature ``` {: .copy-code} -- You can also select an MQTT **QoS** level. We use MQTT QoS level 0 (At most once) by default; +- You can also select an MQTT **QoS** level. level. By default, we use MQTT QoS level 0 (at most once); ![image](/images/pe/edge/integrations/mqtt/add-mqtt-integration-template-4-edge.png) -- Go to the '**Advanced settings**'. It is better to uncheck the '**Clean session**' parameter. Many brokers do not support sticky sessions, so will silently close the connection if you try to connect with this option enabled; -- Let's leave the '**Downlink topic pattern**' by default, meaning that the integration will take the metadata.topic and use it as the downlink topic; -- Click "Add" button to create the integration. +- Go to the '**Advanced settings**'. It is better to uncheck the '**Clean session**' parameter. Many brokers do not support sticky sessions, so they will silently close the connection if you try to connect with this option enabled; +- Let's leave the '**Downlink topic pattern**' by default, which means that the integration will take the **metadata.topic** and use it as the downlink topic; +- Click the **"Add"** button to create the integration. ![image](/images/pe/edge/integrations/mqtt/add-mqtt-integration-template-5-edge.png) -## Modify Edge Root Rule Chain for downlinks +### Modify Edge Root Rule Chain for downlinks + +We can send a downlink message to the device from the **Rule chain** using the **rule node**. To send downlink via integration, modify the **Edge Root Rule chain**. + +{% capture edge-4 %} +**Please note!**
+If you use **earlier versions of Edge**, you cannot create or edit a **Rule Chain** on the **Edge** itself. It must be configured as a template in the **Cloud (Server)**, and then assigned to the **Edge** instance. + +Starting with **Edge version 4.0**, you can create and edit a **Rule Chain** on the **Edge**. +{% endcapture %} +{% include templates/info-banner.md content=edge-4 %} -We can send a downlink message to the device from Rule chain using the rule node. -To be able to send downlink over integration we need to modify '**Edge Root Rule chain**' on the **ThingsBoard PE**. -We'll need to add two rule nodes: ['originator fields'](/docs/pe/user-guide/rule-engine-2-0/enrichment-nodes/#originator-fields) and ['integration downlink'](/docs/pe/user-guide/rule-engine-2-0/action-nodes/#integration-downlink-node) nodes. +We'll need to add two rule nodes: ['originator fields'](/docs/pe/user-guide/rule-engine-2-0/enrichment-nodes/#originator-fields){: target="_blank"} and ['integration downlink'](/docs/pe/user-guide/rule-engine-2-0/action-nodes/#integration-downlink-node){: target="_blank"} nodes. {% include images-gallery.html imageCollection="downlink-rule" showListImageTitles="true" %} -## Assign Integration to Edge +### Assign Integration to Edge -Once converter and integration templates are created, we can assign Integration template to **Edge**. -Because we are using placeholder **$\{\{brokerIp\}\}** in the integration configuration, we need to add attribute '**brokerIp**' to edge first. -You need to provide **IP address** of the MQTT broker. We are using public URL '**broker.hivemq.com**' in this tutorial, but this could be any internal IP address as well. -Once attribute added, we are ready to assign integration and verify that it's added. +Once the converter and integration templates are created, we can assign the **Integration template** to the **Edge**. +Since we are using the placeholder **$\{\{brokerIp\}\}** in the integration configuration, we must first add the attribute **brokerIp** to the Edge. +You need to provide the **IP address** of the MQTT broker. We use the public URL '**broker.hivemq.com**' in this tutorial, but it could be any **internal IP address** as well. +Once the attribute is added, we are ready to assign and verify the integration. {% include images-gallery.html imageCollection="assign-integration" showListImageTitles="true" %} -## Send uplink message +### Send uplink message -To send an uplink message, use the command provided below. It simulates a device sending temperature readings to the integration: +To send an uplink message, use the following command. It simulates a device sending temperature readings to the integration: ```ruby mosquitto_pub -h broker.hivemq.com -p 1883 -t "tb-edge/mqtt-integration-tutorial/sensors/SN-001/temperature" -m '{"value":25.2}' ``` {: .copy-code} -Now, go to the "**Integrations center**" -> "**Integrations**" and navigate to the "**Events**" tab in your MQTT integration on the **ThingsBoard Edge**. If you have done everything correctly, you will find an uplink message with the status 'OK'. To see the message itself, click the three dots in the 'Message' column. +Now, go to the **Integrations center > Integrations** section and select the **"Events"** tab in your MQTT integration on the **ThingsBoard Edge**. +If you have done everything correctly, you will find an uplink message with the **OK** status. To see the message, click the three dots in the **"Message"** column. {% include images-gallery.html imageCollection="send-uplink-edge" %} -When you sent the message, a new device was created. The created device with data can be seen in the "**Entities**" section -> "**Devices**" page: +When you send the message, a new device is created. The created device with data can be seen in the **Entities > Devices** section: ![image](/images/pe/edge/integrations/mqtt/create-mqtt-device-1-edge.png) -Also, received data can be viewed in the uplink converter. In the 'In' and 'Out' blocks of the "**Events**" tab: +You can also view the received data in the uplink converter. In the **In** and **Out** blocks of the **"Events"** tab: {% include images-gallery.html imageCollection="converter-mqtt-events" %} -## Send downlink message to device +### Send downlink message to device -Now let's check downlink functionality. -Open the terminal window and execute the following command: +Now let's check the downlink functionality. +Open a terminal window and run the following command: ```ruby mosquitto_sub -h broker.hivemq.com -p 1883 -t "tb-edge/mqtt-integration-tutorial/sensors/+/rx" ``` {: .copy-code} -Please leave this terminal running in background - in this terminal window you should receive incoming messages sent later by integration. +Keep this terminal running in the background. In this terminal window, you should receive incoming messages sent later by the integration. ![image](/images/pe/edge/integrations/mqtt/terminal-running-in-background.png) -Now, let's add a 'firmware' shared attribute. Go to the "**Devices**" page, select your device, and navigate to the "**Attributes**" tab on the **ThingsBoard Edge**. Select the "**Shared attributes**" scope and click on the "plus" icon to create new attribute. Then set the attribute name, its value (for example, the key name is 'firmware', value: 'v1.0') and save the data. +Now let's add a shared attribute 'firmware'. +Go to the **Devices** page, select your device, and navigate to the **"Attributes"** tab on the **ThingsBoard Edge**. +To create a new attribute, select the **"Shared attributes"** scope and click the "**plus"** button. +Then set the attribute name, its value (_for example, the key name is 'firmware', value: 'v1.0_') and save the data. ![image](/images/pe/edge/integrations/mqtt/add-mqtt-shared-attribute-1-edge.png) -An example of incoming messages from ThingsBoard Edge in the terminal: +An example of incoming messages from **ThingsBoard Edge** in the terminal: ![image](/images/pe/edge/integrations/mqtt/incoming-message-in-terminal.png) -To make sure that downlink message sent to integration you can check "**Events**" tab of the integration: +To ensure that the downlink message is sent to the integration, you can check the **"Events"** tab of the integration: {% include images-gallery.html imageCollection="downlink-integration-message" %} -Received data and data that was sent can be viewed in the downlink converter. In the 'In' block of the "**Events**" tab, we see what data entered and in the 'Out' field, the message sent to the device is displayed: +Received and sent data can be viewed in the downlink converter. +The **"In"** block of the Events tab shows what data has been entered, and the **"Out"** field shows the message sent to the device: {% include images-gallery.html imageCollection="downlink-converter-message" %} -## Next steps +### Next steps {% assign docsPrefix = "pe/edge/" %} {% include templates/edge/guides-banner-edge.md %} \ No newline at end of file diff --git a/docs/pe/edge/user-guide/integrations/opc-ua.md b/docs/pe/edge/user-guide/integrations/opc-ua.md index 2402c8c50b..ee6590dd8d 100644 --- a/docs/pe/edge/user-guide/integrations/opc-ua.md +++ b/docs/pe/edge/user-guide/integrations/opc-ua.md @@ -4,70 +4,74 @@ title: OPC-UA Integration description: OPC-UA Integration Guide addConverter: 0: - image: /images/pe/edge/integrations/opc-ua/add-converter-step-1.png + image: /images/pe/edge/integrations/opc-ua/add-converter-step-1.webp 1: - image: /images/pe/edge/integrations/opc-ua/add-converter-step-2.png + image: /images/pe/edge/integrations/opc-ua/add-converter-step-2.webp modifyConverter: 0: - image: /images/pe/edge/integrations/opc-ua/modify-converter-step-1.png + image: /images/pe/edge/integrations/opc-ua/modify-converter-step-1.webp 1: - image: /images/pe/edge/integrations/opc-ua/modify-converter-step-2.png + image: /images/pe/edge/integrations/opc-ua/modify-converter-step-2.webp addDownlink: 0: - image: /images/pe/edge/integrations/opc-ua/add-downlink-step-1.png + image: /images/pe/edge/integrations/opc-ua/add-downlink-step-1.webp 1: - image: /images/pe/edge/integrations/opc-ua/add-downlink-step-2.png + image: /images/pe/edge/integrations/opc-ua/add-downlink-step-2.webp addIntegration: 0: - image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-1.png + image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-0.webp 1: - image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-2.png + image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-1.webp 2: - image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-3.png + image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-2.webp 3: - image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-4.png + image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-3.webp + 4: + image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-4.webp + 5: + image: /images/pe/edge/integrations/opc-ua/add-integration-template-step-5.webp downlinkRule: 0: - image: /images/pe/edge/integrations/opc-ua/downlink-rule-step-1.png + image: /images/pe/edge/integrations/opc-ua/downlink-rule-step-1.webp 1: - image: /images/pe/edge/integrations/opc-ua/downlink-rule-step-2.png + image: /images/pe/edge/integrations/opc-ua/downlink-rule-step-2.webp 2: - image: /images/pe/edge/integrations/opc-ua/downlink-rule-step-3.png + image: /images/pe/edge/integrations/opc-ua/downlink-rule-step-3.webp airconditionersDashboard: 0: - image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1.png - title: 'Open Dashboard groups and create new Airconditioner group' + image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1.webp + title: 'Go to the Dashboard section and select the "Groups" tab. Click the "Add entity group" button to create a new Air conditioner group.' 1: - image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2.png - title: 'Open newly created Airconditioner group' + image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2.webp + title: 'Open the newly created Air conditioner group.' 2: - image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3.png - title: 'Click import icon and browse recently downloaded airconditioners_dashboard.json file. Click Import button' + image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3.webp + title: 'Click the "Import dashboard" button and browse for recently downloaded "airconditioners_dashboard.json" file. To proceed, click the "Import" button.' 3: - image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4.png - title: 'Go to Edge instance and click on Manage Dashboard icon' + image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4.webp + title: 'In the Edge instance, go to the Edge management > Instances section and click the Manage edge dashboard groups button.' 4: - image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5.png - title: 'Assign Airconditioner group to the edge' + image: /images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5.webp + title: 'Click the "Assign to edge" button and select the Air conditioner group from the drop-down menu to assign it to the Edge.' assignIntegration: 0: - image: /images/pe/edge/integrations/opc-ua/assign-integration-step-1.png - title: 'Add endpointHost attribute to Edge and set value as your Edge 192.168.2.153' + image: /images/pe/edge/integrations/opc-ua/assign-integration-step-1.webp + title: 'Add the endpointHost attribute to the Edge and set the 192.168.2.153 value as your Edge.' 1: - image: /images/pe/edge/integrations/opc-ua/assign-integration-step-2.png - title: 'Click Manage Integrations button of Edge entity' + image: /images/pe/edge/integrations/opc-ua/assign-integration-step-2.webp + title: 'Click the Manage Integrations button of Edge entity.' 2: - image: /images/pe/edge/integrations/opc-ua/assign-integration-step-3.png - title: 'Assign Integration to the Edge' + image: /images/pe/edge/integrations/opc-ua/assign-integration-step-3.webp + title: 'Assign the Integration to the Edge.' 3: - image: /images/pe/edge/integrations/opc-ua/assign-integration-step-4.png - title: 'Login to your ThingsBoard Edge instance and open Integrations page - placeholder is going to be replaced by attribute value' + image: /images/pe/edge/integrations/opc-ua/assign-integration-step-4.webp + title: 'Login to your ThingsBoard Edge instance and open the Integrations page. The placeholder is going to be replaced by the attribute value' device: 0: @@ -102,36 +106,36 @@ rpcDownlink: {% assign integrationUrl = "opc-ua" %} {% include templates/edge/integrations/edge-pe-reference.md %} -## Overview +### Overview -OPC UA Integration allows you to stream data from the OPC UA server to ThingsBoard Edge and converts the device payloads to the ThingsBoard Edge format. +**OPC UA Integration** allows you to stream data from the OPC UA server to ThingsBoard Edge and converts the device payloads to the ThingsBoard Edge format. - + -In this tutorial, we will configure the integration between ThingsBoard Edge and OPC-UA -to get the Airconditioners data from the [OPC UA C++ Demo Server](https://www.unified-automation.com/downloads/opc-ua-servers.html) -and allow the user to switch on/off any Airconditioner using the Integration downlink feature. +In this tutorial, we will configure the integration between **ThingsBoard Edge** and **OPC-UA** +to get the air conditioners data from the [OPC UA C++ Demo Server](https://www.unified-automation.com/downloads/opc-ua-servers.html){: target="_blank"} +and allow the user to switch on/off any air conditioner using the **Integration downlink** feature. -### Prerequisites +#### Prerequisites {% include templates/integration/opc-ua/opc-ua-server-setup-steps.md %} -## Create Converter templates +### Create Converter templates Converter and Integration templates are created on the **Cloud**, so please log in as Tenant administrator to cloud instance. -### Uplink Converter template +#### Uplink Converter template -Before creating the Integration template, you need to create an Uplink and Downlink converter templates in **Converters templates** page. +Before creating the **Integration template**, create an Uplink and Downlink converter templates on the **Converters templates** page. -**Uplink Converter** is a script for parsing and transforming the data received by OPC UA integration. -**Downlink Converter** parses and transforms the data sent from ThingsBoard Edge to the format that is consumed by existing device(s). +* **Uplink Converter** is a script that parses and transforms the data received by the OPC UA integration. +* **Downlink Converter** parses and transforms the data sent from ThingsBoard Edge to the format that is consumed by the existing device(s). -First, we need to create the Uplink Data converter that will be used for receiving the messages from the OPC UA server. +First, we need to create the **Uplink Data converter** that will be used to receive the messages from the OPC UA server. The converter should transform the incoming payload into the required message format. -The result message must contain the **deviceName** and **deviceType**. +The resulting message must contain the **deviceName** and **deviceType**. These fields are used to submit the data to the correct device. -If a device cannot not be found, a new device will be created. +If a device is not found, a new device is created. Here is a sample of the payload from the OPC UA Server: Payload: @@ -154,12 +158,12 @@ Metadata: We will take the **opcUaNode_name** metadata value and map it to the **deviceName** and set the **deviceType** as **default**. -However, you can use another mapping in your specific use cases. +However, you can use a different mapping in your specific use cases. -Also, we will retrieve the values of the **temperature**, **humidity** and **powerConsumption** fields and use them as device telemetries. +We will also retrieve the values of the **temperature**, **humidity** and **powerConsumption** fields and use them as device telemetries. -Click on the "plus" and on "Create new converter". To view the events, enable Debug. -In the function decoder field, specify a script to parse and transform data. +Click the **"plus"** button and select the **"Create new converter"** option. To view the events, enable **"Debug"** mode. +In the **"Function decoder"** field, enter a script to parse and transform data. {% include images-gallery.html imageCollection="addConverter" %} @@ -211,24 +215,26 @@ function decodeToJson(payload) { return result; ``` -{: .copy-code} +{: .copy-code.expandable-14} -The purpose of the decoder function is to parse the incoming data and metadata to a format that ThingsBoard Edge can consume. -**deviceName** and **deviceType** are required, while **attributes** and **telemetry** are optional. -**Attributes** and **telemetry** are flat key-value objects. Nested objects are not supported. +The purpose of the decoder function is to parse the incoming data and metadata into a format that **ThingsBoard Edge** can consume. +* **deviceName** and **deviceType** are required, while **attributes** and **telemetry** are optional. +* **Attributes** and **telemetry** are flat key-value objects. Nested objects are not supported. -You can change the decoder function while creating the converter or after creating it. -If the converter has already been created, then click on the 'pencil' icon to edit it. -Copy the configuration example for the converter (or your own configuration) and insert it into the decoder function. -Save changes by clicking on the 'checkmark' icon. +The decoder function can be changed during converter creation or later. + +* If the converter has already been created, click it to open the **"Data converter details"** window. +* To edit the converter, click the **"Edit"** button (the "pencil" icon). +* Copy the configuration example for the converter (or your own configuration) and paste it into the decoder function. +* To save the changes, click the **"Save"** button (the "checkmark" icon). {% include images-gallery.html imageCollection="modifyConverter" %} -### Downlink Converter template +#### Downlink Converter template -For sending Downlink messages from the ThingsBoard Edge to the OPC UA node, we need to define a Downlink Converter. +To send **Downlink messages** from the **ThingsBoard Edge** to the **OPC UA node**, we need to define a **Downlink converter**. -In general, the output from a Downlink converter should have the following structure: +In general, the output of the **Downlink converter** should have the following structure: ```ruby [{ @@ -238,27 +244,27 @@ In general, the output from a Downlink converter should have the following struc }] ``` -- **contentType** - defines how data will be encoded {TEXT \| JSON \| BINARY}. In case of OPC UA Integration, JSON is used by default. -- **data** - the actual data that will be processed by OPC UA Integration and sent to the target OPC UA nodes: - - **writeValues** - array of write values methods [OPC UA Write Value format](https://documentation.unified-automation.com/uasdkc/1.9.3/html/structOpcUa__WriteValue.html): - - **nodeId** - target node (`ns=;=`) - - **value** - value to write - - **callMethods** - array of call methods [OPC UA Call Methods format](https://documentation.unified-automation.com/uasdkc/1.9.3/html/structOpcUa__CallMethodRequest.html): - - **objectId** - target object - - **methodId** - target method - - **args** - array of method input values -- **metadata** - not used in case of OPC UA Integration and can be empty. +- **contentType:** Defines how the data is encoded **{TEXT \| JSON \| BINARY}**. OPC UA Integration uses **JSON** encoding by default. +- **data:** The actual data that will be processed by OPC UA Integration and sent to the target OPC UA nodes: + - **writeValues:** The array of write values methods [OPC UA Write Value format](https://documentation.unified-automation.com/uasdkc/1.9.3/html/structOpcUa__WriteValue.html){: target="_blank"}: + - **nodeId:** The target node (`ns=;=`) + - **value:** The value to write + - **callMethods:** The array of call methods [OPC UA Call Methods format](https://documentation.unified-automation.com/uasdkc/1.9.3/html/structOpcUa__CallMethodRequest.html): + - **objectId:** The target object + - **methodId:** The target method + - **args:** The array of method input values +- **metadata:** Is not used for the OPC UA Integration and can be empty. -You can customize a downlink according to your configuration. -This converter will process the RPC command to the device using the method **setState** and a boolean **params** value to call the 'Start' or 'Stop' method of the Airconditioner. -Destination node is detected using the **deviceName** field of the incoming message metadata. +You can customize a downlink according to your configuration: +* The converter processes the RPC command to the device using the **setState** method and a boolean **params** value to call the 'Start' or 'Stop' method of the air conditioner. +* The **destination** node is determined using the **deviceName** field of the incoming message metadata. -Create Downlink in **Converter templates** page as well. To see events select **Debug** checkbox. +Create the Downlink in **Converter templates** page as well. To see the events, check the **Debug** checkbox. {% include images-gallery.html imageCollection="addDownlink" %} -An example of downlink converter: +An example of the downlink converter: ```ruby /** Encoder **/ @@ -290,92 +296,100 @@ return result; ``` {: .copy-code} -## Create Integration template - -Now that the Uplink and Downlink converter templates have been created, it is possible to create an integration. -Go to **Integration templates** section and click **Add new integration** button. Name it **OPC-UA Airconditioners**, select type **OPC-UA**, turn the Debug mode on and from drop-down menus add recently created Uplink and Downlink converters. - -Here are the other integration field values: -- Application name: \ (client application name) -- Application uri: \ (client application uri) -- Host: **$\{\{endpointHost\}\}** (we will add Edge attribute **endpointHost** in next steps) -- Port: **Endpoint Port** (see [Prerequisites](#prerequisites)) -- Scan period in seconds: 10 (how often to rescan OPC UA nodes) -- Timeout in milliseconds: 5000 (the timeout, in milliseconds, before failing a request to OPC UA server) -- Security: None (can be *Basic128Rsa15 / Basic256 / Basic256Sha256 / None*) -- Identity: Anonymous (can be *Anonymous / Username*) -- Mapping: - - MappingType: Fully Qualified Name (can be *Fully Qualified Name* / *ID*) - - Device Node Pattern: `Objects\.BuildingAutomation\.AirConditioner_\d+$` (regular expression used to match scanned OPC UA Node FQNs/IDs to device name. +### Create Integration template + +Now that the **Uplink** and **Downlink** converter templates have been created, it is possible to create an integration: +* Go to the **Integration templates** section and click **Add new integration** button. +* Name it **OPC-UA air conditioners**, select the **OPC-UA** type, enable **Debug** mode, and add recently created **Uplink** and **Downlink** converters from the corresponding drop-down menus. + +The other integration field values: +- **Application name:** \ (client application name) +- **Application uri:** \ (client application uri) +- **Host:** **$\{\{endpointHost\}\}** (we will add Edge attribute **endpointHost** in next steps) +- **Port:** **Endpoint Port** (see [Prerequisites](#prerequisites){: target="_blank"}) +- **Scan period in seconds:** 10 (how often to rescan OPC UA nodes) +- **Timeout in milliseconds:** 5000 (the timeout, in milliseconds, before failing a request to OPC UA server) +- **Security:** None (can be *Basic128Rsa15 / Basic256 / Basic256Sha256 / None*) +- **Identity:** Anonymous (can be *Anonymous / Username*) +- **Mapping:** + - **MappingType:** Fully Qualified Name (can be *Fully Qualified Name* / *ID*) + - **Device Node Pattern:** `Objects\.BuildingAutomation\.AirConditioner_\d+$` (regular expression used to match scanned OPC UA Node FQNs/IDs to device name. In this sample, path on OPC UA Explorer is `Objects/BuildingAutomation/AirConditioner_X`, where X is a number from 1 to *N*. That's why we use `Objects\.BuildingAutomation\.AirConditioner_\d+$` as regular expression, because `\d+` means any number from 1 to *N*, and `$` means the end of the string) - - Subscription tags (list of node tags (**Path**) to subscribe with mappings to keys (**Key**) used in the output message): + - The **Subscription tags** (the list of node tags (**Path**) to subscribe with mappings to keys (**Key**) used in the output message): - state - State - temperature - Temperature - humidity - Humidity - powerConsumption - PowerConsumption -Click **Add** to save the Integration. +To save the Integration, click the **Add** button. {% include images-gallery.html imageCollection="addIntegration" %} -## Modify Edge Root Rule chain for Downlinks +### Modify the Edge Root Rule chain for Downlinks + +We can send a downlink message to the device from Rule chain using the rule node: +* To send a downlink over integration, we need to modify the **Edge Root Rule chain**. +{% capture edge-4 %} +**Please note!**
+If you use **earlier versions of Edge**, you cannot create or edit a **Rule Chain** on the **Edge** itself. It must be configured as a template in the **Cloud (Server)**, and then assigned to the **Edge** instance. -We can send a downlink message to the device from Rule chain using the rule node. -To be able to send downlink over integration we need to modify **'Edge Root Rule chain'** on the cloud. -We'll need to add two rule nodes - **originator fields** and **integration downlink** nodes. -Set **'RPC Request to Device'** link to **originator fields** and configure to add originator name and type to the message metadata - in the **downlink converter** name of the device will be used to set proper *OPC-UA* node. -And then add **Success** link from **originator fields** node to **integration downlink** node. -When RPC request is going to be triggered to a device on the Edge, the downlink message will be sent to the integration. +Starting with **Edge version 4.0**, you can create and edit a **Rule Chain** on the **Edge**. +{% endcapture %} +{% include templates/info-banner.md content=edge-4 %} +* Add two rule nodes: the **originator fields** and **integration downlink** nodes. +* Set the **RPC Request to Device** link to the **originator fields** node and configure to add the originator name and type to the message metadata — in the **downlink converter** name of the device will be used to set proper *OPC-UA* node. +* And then add the **Success** link from the **originator fields** node to **integration downlink** node. +* When the RPC request is going to be triggered to a device on the Edge, the downlink message will be sent to the integration. {% include images-gallery.html imageCollection="downlinkRule" %} -## Airconditioners Dashboard +### Air conditioners Dashboard -To visualize the Airconditioners data and test RPC commands, we will create the **Airconditioners** dashboard and assign it to edge. -First, please download the [**airconditioners_dashboard.json**](/docs/pe/edge/user-guide/resources/airconditioners_dashboard.json) file. +To visualize the air conditioners data and test the RPC commands, create the **air conditioners** dashboard and assign it to the **Edge**. +First, please download the [**airconditioners_dashboard.json**](/docs/pe/edge/user-guide/resources/airconditioners_dashboard.json){: target="_blank"} file. {% include images-gallery.html imageCollection="airconditionersDashboard" showListImageTitles="true" %} -## Assign Integration to Edge +### Assign Integration to Edge -Once converters and integration templates are created, we can assign Integration template to Edge. -Because we are using placeholder **$\{\{endpointHost\}\}** in the integration configuration, we need to add attribute **endpointHost** to edge first. -You need to provide **Endpoint Host** of the OPC-UA Server (see [Prerequisites](#prerequisites)). -Once attribute added, we are ready to assign integration and verify that it's added. +Once the converters and integration templates are created, we can assign the **Integration template** to the **Edge**. +Since we are using placeholder **$\{\{endpointHost\}\}** in the integration configuration, we need to add the **endpointHost** attribute to the **Edge** first. +You need to provide the **Endpoint Host** of the OPC-UA Server (see [Prerequisites](#prerequisites){: target="_blank"}). +Once the attribute is added, we are ready to assign the integration and verify that it has been added. {% include images-gallery.html imageCollection="assignIntegration" showListImageTitles="true" %} -## Validation +### Validation -Let's verify that integration was successfully started on Edge and connection to OPC-UA Demo Server was established. +Let's verify that the integration has been successfully started on the Edge and that the connection to the OPC-UA Demo Server has been established. -- Go to the **Device groups** page. You will see the **Airconditioners** group. -- When you open this group, you will see the 10 Airconditioner devices. +- Go to the **Device groups** page. You will see the **Air conditioners** group. +- You can see up-to-the-minute telemetry from all 10 air conditioners. {% include images-gallery.html imageCollection="device" %} -- Open the details of one of the Airconditioners and select the **Latest Telemetry** tab. -- You will see that telemetry values are frequently updated. +- Open the details of one of the Air conditioners and select the **Latest Telemetry** tab. +- You will see that telemetry values are updated frequently. {% include images-gallery.html imageCollection="deviceTelemetry" %} -- Go to **Dashboards** and open the **Airconditioners** dashboard. -- You will see the telemetry till the last minute from all the 10 airconditioners. +- Go to the **Dashboards** section and open the **Air conditioners** dashboard. +- You can see up-to-the-minute telemetry from all 10 air conditioners. {% include images-gallery.html imageCollection="airconditionersDashboardOnEdge" %} -- Open the Airconditioner details page by clicking on the details button in the Entities widget. +- Open the "Air conditioner details" page by clicking the **"Details"** button in the **Entities** widget. {% include images-gallery.html imageCollection="airconditionersDetails" %} -- You will find the Airconditioner status light green. -- Try to switch off the airconditioner by clicking on the **On/Off Round switch**. -- The Airconditioner status light will turn into grey, the temperature will start rising, the humidity will start increasing and the power consumption will stop. +- You will find the Air conditioner status light green. +- To turn off the air conditioner, click the **On/Off Round switch**. +- The air conditioner status light will turn gray, the temperature and humidity begin to rise, and the power consumption stops. {% include images-gallery.html imageCollection="rpcDownlink" %} -## Next steps +### Next steps {% assign docsPrefix = "pe/edge/" %} {% include templates/edge/guides-banner-edge.md %} diff --git a/docs/pe/edge/user-guide/integrations/remote-integrations.md b/docs/pe/edge/user-guide/integrations/remote-integrations.md index eacbc81ba2..6950ea8f69 100644 --- a/docs/pe/edge/user-guide/integrations/remote-integrations.md +++ b/docs/pe/edge/user-guide/integrations/remote-integrations.md @@ -5,69 +5,69 @@ description: Remote Integrations Documentation addConverter: 0: - image: /images/pe/edge/integrations/remote/add-converter-step-1.png + image: /images/pe/edge/integrations/remote/add-converter-step-1.webp title: '1. Open Converter templates menu page. 2. Click ("+") icon and select Create new converter.' 1: - image: /images/pe/edge/integrations/remote/add-converter-step-2.png + image: /images/pe/edge/integrations/remote/add-converter-step-2.webp title: '1. Enter the converter name, e.g., Temperature converter. 2. Select the converter type: Uplink. 3. Insert the code snippet from the example. 4. Click the Add button.' addIntegration: 0: - image: /images/pe/edge/integrations/remote/add-integration-template-step-1.png + image: /images/pe/edge/integrations/remote/add-integration-template-step-1.webp title: '1. Open Integration templates menu page. 2. Click the ("+") icon to add a new integration.' 1: - image: /images/pe/edge/integrations/remote/add-integration-template-step-2.png + image: /images/pe/edge/integrations/remote/add-integration-template-step-2.webp title: '1. Select integration type: HTTP. 2. Input integration name, e.g., HTTP Demo Remote. 3. Click Next button.' 2: - image: /images/pe/edge/integrations/remote/add-integration-template-step-3.png + image: /images/pe/edge/integrations/remote/add-integration-template-step-3.webp title: '1. Click Select existing button. 2. Select uplink data converter: Temperature Converter. 3. Click Next button.' 3: - image: /images/pe/edge/integrations/remote/add-integration-template-step-4.png + image: /images/pe/edge/integrations/remote/add-integration-template-step-4.webp title: 'Enter the converter name, e.g., Temperature converter. 2. Select converter type: Uplink. 3. Insert the code snippet from the example. 4. Click the Add button.' 4: - image: /images/pe/edge/integrations/remote/add-integration-template-step-5.png + image: /images/pe/edge/integrations/remote/add-integration-template-step-5.webp title: 'Verify that our HTTP Demo Remote integration template was created successfully.' assignIntegration: 0: - image: /images/pe/edge/integrations/remote/assign-integration-step-1.png - title: '1. Open Instances menu page. 2. Click on My New Edge.' + image: /images/pe/edge/integrations/remote/assign-integration-step-1.webp + title: 'Go to the Edge management > Instances section and click on the corresponding Edge instance.' 1: - image: /images/pe/edge/integrations/remote/assign-integration-step-2.png - title: '1. Click Attributes tab. 2. Click ("+") icon to add new attribute.' + image: /images/pe/edge/integrations/remote/assign-integration-step-2.webp + title: 'On the Edge details page, select the Attributes tab and add click the "Add" button to add a new attribute.' 2: - image: /images/pe/edge/integrations/remote/assign-integration-step-3.png - title: '1. Enter remoteHttpIntegrationUrl attribute. 2. Set the remote value for your HTTP integration http://IP:port. 3. Click Add button.' + image: /images/pe/edge/integrations/remote/assign-integration-step-3.webp + title: 'In the "Add attribute" pop-up window, enter the remoteHttpIntegrationUrl attribute. Set http://IP:port as the remote URL for your HTTP integration and click the Add button.' 3: - image: /images/pe/edge/integrations/remote/assign-integration-step-4.png - title: 'Open Instances menu page.' + image: /images/pe/edge/integrations/remote/assign-integration-step-4.webp + title: 'Once you added the new attribute, close the Edge details page and stay on the Instances section.' 4: - image: /images/pe/edge/integrations/remote/assign-integration-step-5.png - title: 'Click Manage edge integrations.' + image: /images/pe/edge/integrations/remote/assign-integration-step-5.webp + title: 'To assign the integration to the Edge, click the "Manage edge integrations" button.' 5: - image: /images/pe/edge/integrations/remote/assign-integration-step-6.png - title: 'Click ("+") icon.' + image: /images/pe/edge/integrations/remote/assign-integration-step-6.webp + title: 'Click the Assign to edge button.' 6: - image: /images/pe/edge/integrations/remote/assign-integration-step-7.png - title: '1. Select the target integration. 2. Click Assign button.' + image: /images/pe/edge/integrations/remote/assign-integration-step-7.webp + title: 'In the "Assign Integrations To Edge" pop-up window, select the target integration from the "Entity list" drop-down menu and click the Assign button.' 7: - image: /images/pe/edge/integrations/remote/assign-integration-step-8.png - title: 'Open Edge instance. 1. Open the Integrations menu page 2. Click on HTTP Demo Remote. 3. Check that placeholder is substituted with the value of the attribute.' + image: /images/pe/edge/integrations/remote/assign-integration-step-8.webp + title: 'Open the Edge instance and go to the Integrations center > Integrations section. Click on HTTP Demo Remote integration to check that placeholder is substituted with the value of the attribute.' copyCredentials: 0: - image: /images/pe/edge/integrations/remote/copy-credentials.png + image: /images/pe/edge/integrations/remote/copy-credentials.webp title: '1. Open the Integration templates menu page. 2. Click the integration template row. 3. Click to copy Integration key. 4. Click to copy integration secret.' sendUplink: 0: - image: /images/pe/edge/integrations/remote/send-uplink-step-1.png + image: /images/pe/edge/integrations/remote/send-uplink-step-1.webp 1: - image: /images/pe/edge/integrations/remote/send-uplink-step-2.png + image: /images/pe/edge/integrations/remote/send-uplink-step-2.webp device: 0: - image: /images/pe/edge/integrations/http/device-1-edge.png + image: /images/pe/edge/integrations/remote/device-1-edge.webp title: 'Go to the "Entities" section -> "Devices" page on the Edge to see the created device with data.' --- @@ -75,28 +75,35 @@ device: * TOC {:toc} -## Introduction +### Introduction -It is possible to execute any ThingsBoard Integration remotely from main ThingsBoard Edge instance. -This guide contains step-by-step instructions how to launch ThingsBoard integration remotely. -For example, we will launch HTTP integration and push data over *remote* HTTP integration to ThingsBoard Edge. +It is possible to run any **ThingsBoard Integration** remotely from the main **ThingsBoard Edge** instance. +This guide provides step-by-step instructions for launching **ThingsBoard integration remotely**. -See [deployment options](/docs/pe/edge/user-guide/integrations/#deployment-options) for more general information. +We'll demonstrate how to **set up a remote HTTP integration** to push data to **ThingsBoard Edge**. -## Prerequisites +For more general details, see the [deployment options](/docs/pe/edge/user-guide/integrations/#deployment-options){: target="_blank"}. -We assume you already have a ThingsBoard Edge instance up and running, and connected to the **Server**. +#### Prerequisites -## ThingsBoard Server configuration steps +* A running **ThingsBoard Edge** instance, already connected to the **Server**, with access as a **Tenant administrator**. -Converter and Integration templates are created on the **Server**, so please log in as Tenant administrator to the Server instance. +### ThingsBoard Server configuration steps -### Step 1. Create Uplink Converter +To create **Converter** and **Integration templates**, log in to the **Cloud** instance as **Tenant administrator**. -Before creating the Integration template, you need to create an Uplink converter template in **Converters templates** page. -Uplink is necessary in order to convert the incoming data from the device into the required format for displaying them in ThingsBoard Edge. -Click on the 'plus' and on 'Create new converter'. To view the events, enable Debug. -In the function decoder field, specify a script to parse and transform data. +Before creating the **Integration template**, create an **Uplink converter template** in the **Converters templates** section. + +#### Step 1. Create Uplink Converter + +The **uplink data converter** is needed to convert the incoming data from the device into the format required for display on **ThingsBoard Edge**. +* Log in to the **Cloud** and go to the **Edge management > Converter templates** section. To create a Converter template, click the **"Add data converter"** button (the **+** icon) and select the **"Create new converter"** option. +* In the **"Add data converter"** pop-up window: + * **Name:** Enter the name of the data converter. + * **Type:** Select the **"Uplink"** converter type from the drop-down menu. + * To view the events, enable **Debug** mode. + * **function Decoder:** Enter a script to parse and transform data. + * Click the **"Add"** button. {% include images-gallery.html imageCollection="addConverter" %} @@ -138,48 +145,62 @@ function decodeToJson(payload) { } return result; ``` -{: .copy-code} - -### Step 2. Create Remote Integration - -Now that the Uplink converter template has been created, it is possible to create an integration. +{: .copy-code.expandable-15} + +#### Step 2. Create Remote Integration + +Once the **Uplink converter template** is created, you can proceed to create the **Integration**: +Go to the **Edge management > Integration templates** section, click the **"Add new integration"** button (the + icon) and select the **“Create new integration”** option. +* In the **“Add integration”** pop-up window and fill out the **"Basic settings"** block: + * **Integration type:** Select the **"HTTP"** integration type from the drop-down menu. + * **Name:** Enter the name of the integration. +* In the **"Uplink data converter"** block: + * Select the **"Select existing"** tab. + * **Uplink data converter:** Select the uplink data converter from the drop-down menu. +* The **"Downlink data converter"** block is optional and can be skipped. +* * In the **"Connection"** block: + * **Base URL:** Set **$\{\{remoteHttpIntegrationUrl\}\}** as the base URL. + * **Execute remotely:** Toggle this option to enable remote execution of the integration. +* To save the Integration, click the **Add** button. {% include images-gallery.html imageCollection="addIntegration" %} -### Step 3. Save Remote Integration credentials. - -Let's copy-paste the integration key and secret from the integration details, we'll use them later during **Remote integration installation steps**. +#### Step 3. Save Remote Integration credentials. +Later during the **Remote integration installation steps**, we'll use integration credentials. +* To view and copy the credentials, go to the **Edge management > Integration templates** section and click the integration. +* On the **"Integration details"** page, in the **"Execute remotely"** block copy the **Integration key** and **Secret** by clicking the corresponding button. {% include images-gallery.html imageCollection="copyCredentials" %} -### Step 4. Assign Integration to Edge. +#### Step 4. Assign Integration to Edge. + +Once the converter and integration templates are created, we can assign the **Integration template** to the **Edge**. -Once converter and integration templates are created, we can assign Integration template to Edge. -Because we are using placeholder **$\{\{remoteHttpIntegrationUrl\}\}** in the integration configuration, we need to add attribute **remoteHttpIntegrationUrl** to edge first. -You need to provide **IP address** and **port** of your *HTTP* remote integration as **remoteHttpIntegrationUrl** attribute. -By default, remote HTTP integration uses **8082** port. -We are going to use the same port in the demo, and IP address is going to be set as IP of the machine where remote integration service is going to be started. -Once attribute added, we are ready to assign integration and verify that it's added. +Since we are using the **$\{\{remoteHttpIntegrationUrl\}\}** placeholder in the integration configuration, we must first add the **remoteHttpIntegrationUrl** attribute to the **Edge**. +Provide the **IP address** and **port** of your remote *HTTP* integration as the **remoteHttpIntegrationUrl** attribute. +By default, the HTTP remote integration uses port **8082**. + +We will use the same port in the demo, and the **IP address** will be set as the IP of the machine where the remote integration service will be launched. +Once the attribute is added, we are ready to assign the integration and verify that it has been added. {% include images-gallery.html imageCollection="assignIntegration" showListImageTitles="true" %} -## Remote integration installation steps +### Remote integration installation steps -### Choose your platform and install +#### Choose your platform and install -One can install ThingsBoard Integration via Docker, Debian or RPM packages. -Please use one of the next steps. +You can install the ThingsBoard integration via **Docker**, **Debian** or **RPM packages**. Please use one of the following steps. - * [Docker on Linux or Mac OS](#docker-on-linuxmac) - * [Docker on Windows](#docker-on-windows) - * [Ubuntu](#ubuntu-server) - * [CentOS/RHEL Server](#centosrhel-server) + * [Docker on Linux or Mac OS](#docker-on-linuxmac){: target="_blank"} + * [Docker on Windows](#docker-on-windows){: target="_blank"} + * [Ubuntu](#ubuntu-server){: target="_blank"} + * [CentOS/RHEL Server](#centosrhel-server){: target="_blank"} -### Docker on Linux/Mac +#### Docker on Linux/Mac -- **[Install Docker CE](https://docs.docker.com/engine/installation/)** +- [Install Docker CE](https://docs.docker.com/engine/installation/){: target="_blank"} -- **Choose Integration to install** +- **Choose the Integration to install** {% capture contenttogglespec %} @@ -199,11 +220,11 @@ CoAP
Integration
%,%coap%,%templates/edge/install/integration/coap-docker {% include templates/troubleshooting/dns-issues.md %} -### Docker on Windows +#### Docker on Windows -- **[Install Docker Toolbox for Windows](https://docker-docs.uclv.cu/toolbox/toolbox_install_windows/)** +- [Install Docker Toolbox for Windows](https://docker-docs.uclv.cu/toolbox/toolbox_install_windows/){: target="_blank"} -- **Choose Integration to install** +- **Choose the Integration to install** {% capture contenttogglespecwin %} HTTP Integrations
(HTTP, Sigfox, ThingPark, OceanConnect and
T-Mobile IoT CDP)
%,%http%,%templates/edge/install/integration/http-docker-windows.md%br% @@ -220,13 +241,13 @@ CoAP
Integration
%,%coap%,%templates/edge/install/integration/coap-docker {% include templates/troubleshooting/dns-issues-windows.md %} -### Ubuntu Server +#### Ubuntu Server - **Install Java 17 (OpenJDK)** {% include templates/install/ubuntu-java-install.md %} -- **Choose Integration package to install** +- **Choose the Integration package to install** {% capture ubuntuinstallspec %} HTTP Integrations
(HTTP, Sigfox, ThingPark, OceanConnect and
T-Mobile IoT CDP)
%,%http%,%templates/edge/install/integration/http-ubuntu.md%br% @@ -237,13 +258,13 @@ CoAP
Integration
%,%coap%,%templates/edge/install/integration/coap-ubuntu {% include content-toggle.liquid content-toggle-id="remoteintegrationinstallubuntu" toggle-spec=ubuntuinstallspec %} -### CentOS/RHEL Server +#### CentOS/RHEL Server - **Install Java 17 (OpenJDK)** {% include templates/install/rhel-java-install.md %} -- **Choose Integration package to install** +- **Choose the Integration package to install** {% capture rhelinstallspec %} HTTP Integrations
(HTTP, Sigfox, ThingPark, OceanConnect and
T-Mobile IoT CDP)
%,%http%,%templates/edge/install/integration/http-rhel.md%br% @@ -254,15 +275,20 @@ CoAP
Integration
%,%coap%,%templates/edge/install/integration/coap-rhel.m {% include content-toggle.liquid content-toggle-id="remoteintegrationinstallrhel" toggle-spec=rhelinstallspec %} -## Remote HTTP integration validation +### Remote HTTP integration validation + +To send an uplink message, you need an HTTP endpoint URL from the integration. +Let's log in to the **ThingsBoard Edge** and go to the **Integrations** section. +Find the HTTP integration and click it. There you can find the HTTP endpoint URL. Click the icon to copy the URL. -To send an uplink message, you need HTTP endpoint URL from the integration. -Let's log in to ThingsBoard **Edge** and go to the **Integrations** page. -Find your HTTP integration and click on it. There you can find the HTTP endpoint URL. Click on the icon to copy the url. +{% capture local-deployment %} +**Important!** -**Important!** Please make sure that your machine is able to access machine where remote HTTP integration is running, and port *8082* is not blocked by any firewall rules. +Please make sure that your machine is able to access the machine on which the remote HTTP integration is running, and **the port 8082 is not blocked by any firewall rules**. +{% endcapture %} +{% include templates/info-banner.md content=local-deployment %} -Use this command to send the message. Replace $DEVICE_NAME and $YOUR_HTTP_ENDPOINT_URL with corresponding values. +To send the message, use the following command. Replace **$DEVICE_NAME** and **$YOUR_HTTP_ENDPOINT_URL** with the corresponding values. ```ruby curl -v -X POST -d "{\"deviceName\":\"$DEVICE_NAME\",\"temperature\":33,\"model\":\"test\"}" $YOUR_HTTP_ENDPOINT_URL -H "Content-Type:application/json" @@ -271,27 +297,27 @@ curl -v -X POST -d "{\"deviceName\":\"$DEVICE_NAME\",\"temperature\":33,\"model\ {% include images-gallery.html imageCollection="sendUplink" %} -The created device with data can be seen in the section **Device groups -> All** on the Edge: +The created device with data can be viewed in the **Device groups > All** on the **Edge section**: {% include images-gallery.html imageCollection="device" %} -## Remote integration configuration +### Remote integration configuration -Remote integration configuration is done via ThingsBoard UI and there is no specific steps. -Explore guides and video tutorials related to specific integrations: +Configuring remote integrations is done through the **ThingsBoard** interface, with no special steps required. +Explore the following guides and video tutorials related to the specific integrations: - - [HTTP](/docs/pe/edge/user-guide/integrations/http/) - - [MQTT](/docs/pe/edge/user-guide/integrations/mqtt/) - - [OPC-UA](/docs/pe/edge/user-guide/integrations/opc-ua/) - - [TCP](/docs/pe/edge/user-guide/integrations/tcp/) - - [UDP](/docs/pe/edge/user-guide/integrations/udp/) - - [CoAP](/docs/pe/edge/user-guide/integrations/coap/) + - [HTTP](/docs/pe/edge/user-guide/integrations/http/){: target="_blank"} + - [MQTT](/docs/pe/edge/user-guide/integrations/mqtt/){: target="_blank"} + - [OPC-UA](/docs/pe/edge/user-guide/integrations/opc-ua/){: target="_blank"} + - [TCP](/docs/pe/edge/user-guide/integrations/tcp/){: target="_blank"} + - [UDP](/docs/pe/edge/user-guide/integrations/udp/){: target="_blank"} + - [CoAP](/docs/pe/edge/user-guide/integrations/coap/){: target="_blank"} -## Remote integration troubleshooting +### Remote integration troubleshooting -Please review the log files. Their location is specific to the platform and installation package you have used and is mentioned in the installation steps. +Check the log files. Their location is specific to the platform and installation package you are using and is indicated in the installation steps. -## Next steps +### Next steps {% assign docsPrefix = "pe/edge/" %} {% include templates/edge/guides-banner-edge.md %} diff --git a/docs/pe/edge/user-guide/integrations/tcp.md b/docs/pe/edge/user-guide/integrations/tcp.md index 19015c6fc5..f8d7cb735e 100644 --- a/docs/pe/edge/user-guide/integrations/tcp.md +++ b/docs/pe/edge/user-guide/integrations/tcp.md @@ -5,46 +5,51 @@ description: TCP Integration Guide addConverter: 0: - image: /images/pe/edge/integrations/tcp/add-converter-step-1.png + image: /images/pe/edge/integrations/tcp/add-converter-step-1.webp 1: - image: /images/pe/edge/integrations/tcp/add-converter-step-2.png + image: /images/pe/edge/integrations/tcp/add-converter-step-2.webp modifyConverter: 0: - image: /images/pe/edge/integrations/tcp/modify-converter-step-1.png + image: /images/pe/edge/integrations/tcp/modify-converter-step-1.webp 1: - image: /images/pe/edge/integrations/tcp/modify-converter-step-2.png + image: /images/pe/edge/integrations/tcp/modify-converter-step-2.webp addDownlink: 0: - image: /images/pe/edge/integrations/tcp/add-downlink-step-1.png + image: /images/pe/edge/integrations/tcp/add-downlink-step-1.webp 1: - image: /images/pe/edge/integrations/tcp/add-downlink-step-2.png + image: /images/pe/edge/integrations/tcp/add-downlink-step-2.webp addIntegration: 0: - image: /images/pe/edge/integrations/tcp/add-integration-template-step-1.png + image: /images/pe/edge/integrations/tcp/add-integration-template-step-0.webp 1: - image: /images/pe/edge/integrations/tcp/add-integration-template-step-2.png + image: /images/pe/edge/integrations/tcp/add-integration-template-step-1.webp 2: - image: /images/pe/edge/integrations/tcp/add-integration-template-step-3.png + image: /images/pe/edge/integrations/tcp/add-integration-template-step-2.webp + 3: + image: /images/pe/edge/integrations/tcp/add-integration-template-step-3.webp + 4: + image: /images/pe/edge/integrations/tcp/add-integration-template-step-4.webp downlinkRule: 0: - image: /images/pe/edge/integrations/tcp/downlink-rule-step-1.png + image: /images/pe/edge/integrations/tcp/downlink-rule-step-1.webp 1: - image: /images/pe/edge/integrations/tcp/downlink-rule-step-2.png + image: /images/pe/edge/integrations/tcp/downlink-rule-step-2.webp assignIntegration: - 0: - image: /images/pe/edge/integrations/tcp/assign-integration-step-1.png - title: 'Click Manage Integrations button of Edge entity' - 1: - image: /images/pe/edge/integrations/tcp/assign-integration-step-2.png - title: 'Assign Integration to the Edge' - 2: - image: /images/pe/edge/integrations/tcp/assign-integration-step-3.png - title: 'Login to your ThingsBoard Edge instance and open Integrations page' + 0: + image: /images/pe/edge/integrations/tcp/assign-integration-step-1.webp + title: 'Go to the Edge management > Instances section and click the Manage edge integrations button.' + 1: + image: /images/pe/edge/integrations/tcp/assign-integration-step-2.webp + title: 'On the Integration page, click the "Assign to edge" button. In the "Assign the Integration to the Edge" pop-up window, select the integration from the drop-down menu and click the "Assign" button.' + 2: + image: /images/pe/edge/integrations/tcp/assign-integration-step-3.webp + title: 'Login to your ThingsBoard Edge instance and go to the Integrations center > Integrations section. Confirm the TCP integration on the Edge.' + sendUplink: 0: @@ -85,31 +90,34 @@ downlinkTerminal: {% assign integrationUrl = "tcp" %} {% include templates/edge/integrations/edge-pe-reference.md %} -## Overview +### Overview {% include templates/edge/integrations/tcp-udp/overview.md %} {% include templates/edge/integrations/tcp-udp/remote-only.md %} -Please review the integration diagram to learn more. +To learn more, review the integration diagram: -![image](/images/user-guide/integrations/tcp-integration.svg) +![image](/images/user-guide/integrations/tcp-integration.svg){: style="display: block; margin: auto"} -## Prerequisites +### Prerequisites In this tutorial, we will use: -- ThingsBoard PE Edge; -- TCP Integration, running externally and connected to the cloud ThingsBoard Edge instance; -- **echo** command which intended to display a line of text, and will redirect it's output to **netcat** (**nc**) utility; -- **netcat** (**nc**) utility to establish TCP connections, receive data from there and transfer them; +- [ThingsBoard Edge Professional Edition](/docs/pe/edge/getting-started-guides/what-is-edge/){: target="_blank"}; +- **TCP Integration**: The integration that runs externally and is connected to the **ThingsBoard Edge** instance. +- **echo command**: To display a line of text, and redirect its output to the **netcat** (**nc**) utility. +- **netcat (nc) utility**: To establish TCP connections, receive data from there, and transmit it. Let's assume that we have a sensor which is sending current temperature and humidity readings. -Our sensor device **SN-002** publishes it's temperature and humidity readings to TCP Integration on **10560** port to the machine where TCP Integration is running. +Our sensor device **SN-002** publishes its temperature and humidity readings to TCP Integration on **port 10560** on the machine where TCP Integration is running. -For demo purposes we assume that our device is smart enough to send data in 3 different payload types: -- **Text** - in this case payload is **SN-002,default,temperature,25.7\n\rSN-002,default,humidity,69** -- **JSON** - in this case payload is +For demonstration purposes, we assume that our device is smart enough to send data in 3 different payload types: +- **Text:** The payload is +```text +SN-002,default,temperature,25.7\n\rSN-002,default,humidity,69 +``` +- **JSON:** The payload is: ```json [ @@ -121,37 +129,47 @@ For demo purposes we assume that our device is smart enough to send data in 3 di } ] ``` -- **Binary** - in this case binary payload is **\x30\x30\x30\x30\x11\x53\x4e\x2d\x30\x30\x32\x64\x65\x66\x61\x75\x6c\x74\x32\x35\x2e\x37\x00\x00\x00** (in HEX string). - Here is the description of the bytes in this payload: - - **0-3** bytes - **\x30\x30\x30\x30** - dummy bytes to show how you can skip particular prefix bytes in your payload. These bytes are included for sample purposes; - - **4** byte - **\x11** - payload length. If we convert it to decimal - **17**. So our payload in this case is limited to 17 bytes from the incoming TCP frame; - - **5-10** bytes - **\x53\x4e\x2d\x30\x30\x32** - device name. If we convert it to text - **SN-002**; - - **11-17** bytes - **\x64\x65\x66\x61\x75\x6c\x74** - device type. If we convert it to text - **default**; - - **18-21** bytes - **\x32\x35\x2e\x37** - temperature telemetry. If we convert it to text - **25.7**; - - **22-24** bytes - **\x00\x00\x00** - dummy bytes. We are going to ignore them, because payload size is **17** bytes - from **5** till **21** byte. These bytes are included for sample purposes; -You can select payload type based on your device capabilities and business cases. +- **Binary:** The binary payload is (in HEX string): + +```text +\x30\x30\x30\x30\x11\x53\x4e\x2d\x30\x30\x32\x64\x65\x66\x61\x75\x6c\x74\x32\x35\x2e\x37\x00\x00\x00 +``` +* The bytes description in this payload is following: + * **0-3** bytes: **\x30\x30\x30\x30** - These are the "dummy" bytes. They show how to skip certain prefix bytes in your payload and are included as an example. + * **4** byte: **\x11** - The payload length. If we convert it to decimal, it is **17**. So, in this case, our payload is limited to **17 bytes** from the incoming TCP frame. + * **5-10** bytes: **\x53\x4e\x2d\x30\x30\x32** - The device name. If we convert it to text, it is **SN-002**. + * **11-17** bytes: **\x64\x65\x66\x61\x75\x6c\x74** - The device type. If we convert it to text, it is **default**. + * **18-21** bytes: **\x32\x35\x2e\x37** - The temperature telemetry. If we convert it to text, it is **25.7**. + * **22-24** bytes: **\x00\x00\x00** - These are the "dummy" bytes. We will ignore them because the payload size is **17** bytes (from **5** to **21** byte). These bytes are included as an example. + +Select the **payload type** based on your device capabilities and business cases. {% assign integrationPort = "10560" %} {% include templates/edge/integrations/tcp-udp/firewall.md %} -## Create Converter templates +### Create Converter templates -Converter and Integration templates are created on the **Cloud**, so please log in as Tenant administrator to cloud instance. +To create **Converter** and **Integration templates**, log in to the **Cloud** instance as **Tenant administrator**. -### Uplink Converter template +#### Uplink Converter template -Before creating the Integration template, you need to create an Uplink and Downlink converter templates in **Converters templates** page. -Uplink is necessary in order to convert the incoming data from the device into the required format for displaying them in ThingsBoard Edge. +Before creating the **Integration template**, create an Uplink and Downlink converter templates in **Converters templates** section. -Click on the 'plus' and on 'Create new converter'. To view the events, enable Debug. -In the function decoder field, specify a script to parse and transform data. +The **uplink data converter** is needed to convert the incoming data from the device into the format required for display on **ThingsBoard Edge**. +* Log in to the **Cloud** and go to the **Edge management > Converter templates** section. To create a Converter template, click the **"Add data converter"** button (the **+** icon) and select the **"Create new converter"** option. +* In the **"Add data converter"** pop-up window: + * **Name:** Enter the name of the data converter. + * **Type:** Select the **"Uplink"** converter type from the drop-down menu. + * To view the events, enable **Debug** mode. + * **function Decoder:** Enter a script to parse and transform data. + * Click the **"Add"** button. {% include images-gallery.html imageCollection="addConverter" %} {% include templates/edge/integrations/debug-mode-info.md %} -Choose device payload type to for decoder configuration: +Select the **device payload** type to use for a decoder configuration: {% capture uplinkpayload %} Text payload
%,%text%,%templates/integration/tcp/tcp-uplink-converter-text.md%br% @@ -160,22 +178,30 @@ Binary payload
%,%binary%,%templates/integration/tcp/tcp-uplink-converter-bin {% include content-toggle.liquid content-toggle-id="tcpintegartionuplinkpayload" toggle-spec=uplinkpayload %} -You can change the decoder function while creating the converter or after creating it. -If the converter has already been created, then click on the 'pencil' icon to edit it. -Copy the configuration example for the converter (or your own configuration) and insert it into the decoder function. -Save changes by clicking on the 'checkmark' icon. +You can change the **function Decoder** while creating the converter or after creating it: +* If the converter has already been created, click it to open the **"Data converter details"** window. +* Click the **"Edit"** buton (the pencil icon) to edit the data converter. +* Copy the configuration example or create your own converter configuration and paste it into the **"function Decoder"** field. +* To save the changes, click the **"Save"** button (the checkmark icon). {% include images-gallery.html imageCollection="modifyConverter" %} -### Downlink Converter template +#### Downlink Converter template -Create Downlink in **Converter templates** page as well. To see events select **Debug** checkbox. +Also create the **Downlink Converter Template** in the **Converter Templates** section. +* On the **Edge management > Converter templates** section page, click the **“Add data converter”** button (the + icon) to create another **Converter template**, and select the **“Create new converter”** option. +* In the **“Add data converter”** pop-up window: + * **Name:** Enter the name of the data converter. + * **Type:** Select the **“Downlink”** converter type from the drop-down menu. + * To view the events, enable **Debug** mode. + * **function Decoder:** Enter a script to parse and transform data. + * Click the **“Add”** button. {% include images-gallery.html imageCollection="addDownlink" %} -You can customize a downlink according to your configuration. -Let’s consider an example where we send an attribute update message. -An example of downlink converter: +You can customize a downlink according to your configuration. +Let’s consider an example where we send an attribute update message. +An example of a downlink converter: ```ruby // Encode downlink data from incoming Rule Engine message @@ -202,25 +228,37 @@ return result; ``` {: .copy-code} -## Create Integration template - -Now that the Uplink and Downlink converter templates have been created, it is possible to create an integration. -Go to **Integration templates** section and click **Add new integration** button. Name it **TCP Integration**, select type **TCP**, turn the Debug mode on and from drop-down menus add recently created Uplink and Downlink converters. - -As you mentioned **Execute remotely** is checked and can not be modified - TCP Integration can be only **remote** type. - -Please note down **Integration key** and **Integration secret** - we will use these values later in the configuration on the remote TCP Integration itself. +### Create Integration template + +Now that the **Uplink** and **Downlink converter templates** have been created, it is possible to create the **Integration**: +* Go to the **Edge management > Integration templates** section, click the **"Add new integration"** button (the + icon) and select the **“Create new integration”** option. +* In the **“Add integration”** pop-up window and fill out the **"Basic settings"** block: + * **Integration type:** Select the **"TCP"** integration type from the drop-down menu. + * **Name:** Enter the name of the integration. +* In the **"Uplink data converter"** block: + * Select the **"Select existing"** tab. + * **Uplink data converter:** Select the uplink data converter from the drop-down menu. +* In the **"Downlink data converter"** block: + * Select the **"Select existing"** tab. + * **Downlink data converter:** Select the uplink data converter from the drop-down menu. +* In the **"Connection"** block: + * **Handler Configuration:** Select the device payload type from the drop-down menu. + +{% capture execute-remotely %} +The **Execute remotely** option is selected by default and cannot be changed, the TCP Integration can only be the **remote** type. +{% endcapture %} +{% include templates/info-banner.md content=execute-remotely %} + +We keep other options by default, but there is a short description of them: +- **Max number of pending connects on the socket:** The maximum queue length for incoming connection indications (a request to connect) is set by the backlog parameter. If a connection indication arrives when the queue is full, the connection is denied. +- **Size of the buffer for inbound socket:** Specifies the size (in kilobytes) of the socket’s data receive buffer. +- **Size of the buffer for outbound socket:** Specifies the size (in kilobytes) of the socket’s data send buffer. +- **Enable sending of keep-alive messages on connection-oriented sockets:** When enabled, the socket will periodically send keep-alive probes across the network to the peer, to ensure that the connection remains active. +- **Forces a socket to send the data without buffering (disable Nagle's buffering algorithm):** Disables Nagle’s algorithm on the socket, ensuring that data is sent immediately rather than waiting for a larger amount of data to accumulate. -By default, TCP Integration will use **10560** port, but you can change this to any available port in your case. - -We leave other options by default, but there is brief description of them: -- **Max number of pending connects on the socket** - The maximum queue length for incoming connection indications (a request to connect) is set to the backlog parameter. If a connection indication arrives when the queue is full, the connection is refused; -- **Size of the buffer for inbound socket** - the size in KBytes of the socket data receive buffer; -- **Size of the buffer for outbound socket** - the size in KBytes of the socket data send buffer; -- **Enable sending of keep-alive messages on connection-oriented sockets** - a flag indicating that probes should be periodically sent across the network to the opposing socket to keep the connection alive; -- **Forces a socket to send the data without buffering (disable Nagle's buffering algorithm)** - disables Nagle's algorithm on the socket which delays the transmission of data until a certain volume of pending data has accumulated. +{% include images-gallery.html imageCollection="addIntegration" %} -Choose device payload type for **Handler Configuration**: +Select the device payload type for **Handler Configuration**: {% capture handlerconfiguration %} Text payload
%,%text%,%templates/integration/tcp/tcp-handler-configuration-text.md%br% @@ -229,37 +267,40 @@ Binary payload
%,%binary%,%templates/integration/tcp/tcp-handler-configuratio {% include content-toggle.liquid content-toggle-id="tcpintegrationhandlerconfiguration" toggle-spec=handlerconfiguration %} -Click **Add** to save the Integration. +### Modify the Edge Root Rule chain for Downlinks -{% include images-gallery.html imageCollection="addIntegration" %} +We can send a downlink message to the device from the **Rule chain** using the **rule node**. To send downlink via integration, modify the **Edge Root Rule chain**. +{% capture edge-4 %} +**Please note!**
+If you use **earlier versions of Edge**, you cannot create or edit a **Rule Chain** on the **Edge** itself. It must be configured as a template in the **Cloud (Server)**, and then assigned to the **Edge** instance. -## Modify Edge Root Rule chain for Downlinks +Starting with **Edge version 4.0**, you can create and edit a **Rule Chain** on the **Edge**. +{% endcapture %} +{% include templates/info-banner.md content=edge-4 %} -We can send a downlink message to the device from Rule chain using the rule node. -To be able to send downlink over integration we need to modify **'Edge Root Rule chain'** on the cloud. For example, create an **integration downlink** node and set the **'Attributes updated'** link to it. -When changes are made to device attribute, the downlink message will be sent to the integration. +When changes are made to the device attribute, the downlink message is sent to the integration. {% include images-gallery.html imageCollection="downlinkRule" %} -## Assign Integration to Edge +### Assign Integration to Edge -Once converter and integration templates are created, we can assign Integration template to Edge. +Once the converter and integration templates are created, we can assign the **Integration template** to the **Edge**. {% include images-gallery.html imageCollection="assignIntegration" showListImageTitles="true" %} -### Installing and running external TCP Integration +#### Installing and running external TCP Integration -Please refer to the [Remote Integration guide](/docs/pe/edge/user-guide/integrations/remote-integrations) and install TCP Integration service locally or on separate machine. +See the [Remote Integration guide](/docs/pe/edge/user-guide/integrations/remote-integrations){: target="_blank"} and install the **TCP Integration service** locally or on a separate machine. -Please use **Integration key** and **Integration secret** from the above section for your TCP Integration configuration. +Please use the **Integration key** and **Integration secret** from the above section for your TCP Integration configuration. -## Send uplink message +### Send uplink message -Once ThingsBoard TCP Integration has been created, the TCP server starts, and then it waits for data from the devices. +Once the ThingsBoard TCP Integration is created, the TCP server is started, and then waits for data from the devices. -Choose device payload type to send uplink message: +To send the uplink message, select the device payload type: {% capture senduplink %} Text payload
%,%text%,%templates/integration/tcp/tcp-send-uplink-text.md%br% @@ -270,32 +311,32 @@ Binary payload
%,%binary%,%templates/integration/tcp/tcp-send-uplink-binary.m {% include images-gallery.html imageCollection="sendUplink" %} -The created device with data can be seen in the section **Device groups -> All** on the Edge: +The created device with data can be seen in the **Device groups > All** section of the **Edge** instance: {% include images-gallery.html imageCollection="device" %} -Received data can be viewed in the Uplink converter. In the **'In'** and **'Out'** blocks of the Events tab: +The received data can be viewed in the Uplink converter. In the **'In'** and **'Out'** blocks of the Events tab: {% include images-gallery.html imageCollection="converterEvents" %} -## Send downlink message +### Send downlink message -Now let's check downlink functionality. Let's add **firmware** shared attribute: +Now let's check the downlink functionality. Let's add the **firmware** shared attribute: {% include images-gallery.html imageCollection="addSharedAttribute" %} -To make sure that downlink message sent to integration you can check 'Events' tab of integration: +To ensure that the downlink message is sent to the integration, you can check the **"Events"** tab of the integration: {% include images-gallery.html imageCollection="downlinkMessage" %} -Now we'll need to send again message to TCP integration and see downlink response. -Please use the same command that was used before. +Now we need to send another message to the TCP integration and see the downlink response. +To send the message, use the same command you used before. -An example of sent message and a response from ThingsBoard Edge in the terminal: +See an example of the message that was sent and the response from the **ThingsBoard Edge** in the terminal: {% include images-gallery.html imageCollection="downlinkTerminal" %} -## Next steps +### Next steps {% assign docsPrefix = "pe/edge/" %} {% include templates/edge/guides-banner-edge.md %} diff --git a/docs/pe/edge/user-guide/integrations/udp.md b/docs/pe/edge/user-guide/integrations/udp.md index 81d4dedb8e..1358f381f5 100644 --- a/docs/pe/edge/user-guide/integrations/udp.md +++ b/docs/pe/edge/user-guide/integrations/udp.md @@ -5,46 +5,50 @@ description: UDP Integration Guide addConverter: 0: - image: /images/pe/edge/integrations/udp/add-converter-step-1.png + image: /images/pe/edge/integrations/udp/add-converter-step-1.webp 1: - image: /images/pe/edge/integrations/udp/add-converter-step-2.png + image: /images/pe/edge/integrations/udp/add-converter-step-2.webp modifyConverter: 0: - image: /images/pe/edge/integrations/udp/modify-converter-step-1.png + image: /images/pe/edge/integrations/udp/modify-converter-step-1.webp 1: - image: /images/pe/edge/integrations/udp/modify-converter-step-2.png + image: /images/pe/edge/integrations/udp/modify-converter-step-2.webp addDownlink: 0: - image: /images/pe/edge/integrations/udp/add-downlink-step-1.png + image: /images/pe/edge/integrations/udp/add-downlink-step-1.webp 1: - image: /images/pe/edge/integrations/udp/add-downlink-step-2.png + image: /images/pe/edge/integrations/udp/add-downlink-step-2.webp addIntegration: 0: - image: /images/pe/edge/integrations/udp/add-integration-template-step-1.png + image: /images/pe/edge/integrations/udp/add-integration-template-step-0.webp 1: - image: /images/pe/edge/integrations/udp/add-integration-template-step-2.png + image: /images/pe/edge/integrations/udp/add-integration-template-step-1.webp 2: - image: /images/pe/edge/integrations/udp/add-integration-template-step-3.png + image: /images/pe/edge/integrations/udp/add-integration-template-step-2.webp + 3: + image: /images/pe/edge/integrations/udp/add-integration-template-step-3.webp + 4: + image: /images/pe/edge/integrations/udp/add-integration-template-step-4.webp downlinkRule: 0: - image: /images/pe/edge/integrations/udp/downlink-rule-step-1.png + image: /images/pe/edge/integrations/udp/downlink-rule-step-1.webp 1: - image: /images/pe/edge/integrations/udp/downlink-rule-step-2.png + image: /images/pe/edge/integrations/udp/downlink-rule-step-2.webp assignIntegration: 0: - image: /images/pe/edge/integrations/udp/assign-integration-step-1.png - title: 'Click Manage Integrations button of Edge entity' + image: /images/pe/edge/integrations/udp/assign-integration-step-1.webp + title: 'Go to the Edge management > Instances section and click the Manage edge integrations button.' 1: - image: /images/pe/edge/integrations/udp/assign-integration-step-2.png - title: 'Assign Integration to the Edge' + image: /images/pe/edge/integrations/udp/assign-integration-step-2.webp + title: 'On the Integration page, click the "Assign to edge" button. In the "Assign the Integration to the Edge" pop-up window, select the integration from the drop-down menu and click the "Assign" button.' 2: - image: /images/pe/edge/integrations/udp/assign-integration-step-3.png - title: 'Login to your ThingsBoard Edge instance and open Integrations page' + image: /images/pe/edge/integrations/udp/assign-integration-step-3.webp + title: 'Login to your ThingsBoard Edge instance and go to the Integrations center > Integrations section. Confirm the UDP integration on the Edge.' sendUplink: 0: @@ -85,31 +89,34 @@ downlinkTerminal: {% assign integrationUrl = "udp" %} {% include templates/edge/integrations/edge-pe-reference.md %} -## Overview +### Overview {% include templates/edge/integrations/tcp-udp/overview.md %} {% include templates/edge/integrations/tcp-udp/remote-only.md %} -Please review the integration diagram to learn more. +To learn more, review the integration diagram: -![image](/images/user-guide/integrations/udp-integration.svg) +![image](/images/user-guide/integrations/udp-integration.svg){: style="display: block; margin: auto"} -## Prerequisites +### Prerequisites In this tutorial, we will use: -- ThingsBoard PE Edge; -- UDP Integration, running externally and connected to the ThingsBoard Edge instance; -- **echo** command which intended to display a line of text, and will redirect it's output to **netcat** (**nc**) utility; -- **netcat** (**nc**) utility to establish UDP connections, receive data from there and transfer them; +- [ThingsBoard Edge Professional Edition](/docs/pe/edge/getting-started-guides/what-is-edge/){: target="_blank"}; +- **UDP Integration:** The integration that runs externally and is connected to the **ThingsBoard Edge** instance. +- **echo** command: To display a line of text, and redirect its output to the **netcat** (**nc**) utility. +- **netcat (nc) utility**: To establish TCP connections, receive data from there, and transmit it. -Let's assume that we have a sensor which is sending current temperature and humidity readings. -Our sensor device **SN-001** publishes it's temperature and humidity readings to UDP Integration on **11560** port to the machine where UDP Integration is running. +Let’s assume that we have a sensor which is sending current temperature and humidity readings. +Our sensor device **SN-001** publishes the temperature and humidity readings to UDP Integration on port **11560** to the machine where UDP Integration is running. -For demo purposes we assume that our device is smart enough to send data in 3 different payload types: -- **Text** - in this case payload is **SN-001,default,temperature,25.7,humidity,69** -- **JSON** - in this case payload is +For demonstration purposes, we assume that our device is smart enough to send data in 3 different payload types: +- **Text:** The payload is +```text +SN-001,default,temperature,25.7,humidity,69 +``` +- **JSON:** The payload is ```json [ @@ -121,41 +128,53 @@ For demo purposes we assume that our device is smart enough to send data in 3 di } ] ``` -- **Binary** - in this case payload is: **\x53\x4e\x2d\x30\x30\x31\x64\x65\x66\x61\x75\x6c\x74\x32\x35\x2e\x37\x36\x39** (in HEX string). +- **Binary:** The binary payload is (in HEX string): +```text +\x53\x4e\x2d\x30\x30\x31\x64\x65\x66\x61\x75\x6c\x74\x32\x35\x2e\x37\x36\x39 +``` Here is the description of the bytes in this payload: - - **0-5** bytes - **\x53\x4e\x2d\x30\x30\x31** - device name. If we convert it to text - **SN-001**; - - **6-12** bytes - **\x64\x65\x66\x61\x75\x6c\x74** - device type. If we convert it to text - **default**; - - **13-16** bytes - **\x32\x35\x2e\x37** - temperature telemetry. If we convert it to text - **25.7**; - - **17-18** bytes - **\x36\x39** - humidity telemetry. If we convert it to text - **69**; - -- **Hex** - in this case payload is hexadecimal string **534e2d30303164656661756c7432352e373639**. + - **0-5** bytes: **\x53\x4e\x2d\x30\x30\x3** - The device name. If we convert it to the text, it is **SN-001**. + - **6-12** bytes: **\x64\x65\x66\x61\x75\x6c\x74** - The device type. If we convert it to the text, it is **default**. + - **13-16** bytes: **\x32\x35\x2e\x37** - The temperature telemetry. If we convert it to the text, it is **25.7**. + - **17-18** bytes: **\x36\x39** - The humidity telemetry. If we convert it to text, it is **69**. + +- **Hex:** The payload is a hexadecimal string: +```text +534e2d30303164656661756c7432352e373639 +``` Here is the description of the bytes in this payload: - - **0-5** bytes - **534e2d303031** - device name. If we convert it to text - **SN-001**; - - **6-12** byte - **64656661756c74** - device type. If we convert it to text - **default**; - - **13-16** byte - **32352e37** - temperature telemetry. If we convert it to text: - **25.7**; - - **17-18** byte - **3639** - humidity telemetry. If we convert it to text: - **69**; + - **0-5** bytes: **534e2d303031** - The device name. If we convert it to the text, it is **SN-001**; + - **6-12** byte: **64656661756c74** - The device type. If we convert it to the text, it is **default**; + - **13-16** byte: **32352e37** - The temperature telemetry. If we convert it to the text, it is **25.7**; + - **17-18** byte: **3639** - The humidity telemetry. If we convert it to the text, it is **69**; -You can select payload type based on your device capabilities and business cases. +Based on your device capabilities and business cases, you can choose **the payload type**: {% assign integrationPort = "11560" %} {% include templates/edge/integrations/tcp-udp/firewall.md %} -## Create Converter templates +### Create Converter templates + +To create **Converter** and **Integration templates**, log in to the **Cloud** instance as **Tenant administrator**. -Converter and Integration templates are created on the **Cloud**, so please log in as Tenant administrator to cloud instance. +#### Uplink Converter template -### Uplink Converter template +Before creating the **Integration template**, create an Uplink and Downlink converter templates in **Converters templates** section. -Before creating the Integration template, you need to create an Uplink and Downlink converter templates in **Converters templates** page. -Uplink is necessary in order to convert the incoming data from the device into the required format for displaying them in ThingsBoard Edge. -Click on the 'plus' and on 'Create new converter'. To view the events, enable Debug. -In the function decoder field, specify a script to parse and transform data. +The **uplink data converter** is needed to convert the incoming data from the device into the format required for display on **ThingsBoard Edge**. +* Log in to the **Cloud** and go to the **Edge management > Converter templates** section. To create a Converter template, click the **"Add data converter"** button (the **+** icon) and select the **"Create new converter"** option. +* In the **"Add data converter"** pop-up window: + * **Name:** Enter the name of the data converter. + * **Type:** Select the **"Uplink"** converter type from the drop-down menu. + * To view the events, enable **Debug** mode. + * **function Decoder:** Enter a script to parse and transform data. + * Click the **"Add"** button. {% include images-gallery.html imageCollection="addConverter" %} {% include templates/edge/integrations/debug-mode-info.md %} -Choose device payload type to for decoder configuration: +Select the **device payload** type to use for a decoder configuration: {% capture uplinkpayload %} Text payload
%,%text%,%templates/integration/udp/udp-uplink-converter-text.md%br% @@ -165,22 +184,30 @@ Hex payload
%,%hex%,%templates/integration/udp/udp-uplink-converter-hex.md{% {% include content-toggle.liquid content-toggle-id="udpintegartionuplinkpayload" toggle-spec=uplinkpayload %} -You can change the decoder function while creating the converter or after creating it. -If the converter has already been created, then click on the 'pencil' icon to edit it. -Copy the configuration example for the converter (or your own configuration) and insert it into the decoder function. -Save changes by clicking on the 'checkmark' icon. +You can change the **function Decoder** while creating the converter or after creating it: +* If the converter has already been created, click it to open the **"Data converter details"** window. +* Click the **"Edit"** buton (the 'pencil' icon) to edit the data converter. +* Copy the configuration example or create your own converter configuration and paste it into the **"function Decoder"** field. +* To save the changes, click the **"Save"** button (the 'checkmark' icon). {% include images-gallery.html imageCollection="modifyConverter" %} -### Downlink Converter template +#### Downlink Converter template -Create Downlink in **Converter templates** page as well. To see events select **Debug** checkbox. +Also create the **Downlink Converter Template** in the **Converter Templates** section: +* On the **Edge management > Converter templates** section page, click the **“Add data converter”** button (the + icon) to create another **Converter template**, and select the **“Create new converter”** option. +* In the **“Add data converter”** pop-up window: + * **Name:** Enter the name of the data converter. + * **Type:** Select the **“Downlink”** converter type from the drop-down menu. + * To view the events, enable **Debug** mode. + * **function Decoder:** Enter a script to parse and transform data. + * Click the **“Add”** button. {% include images-gallery.html imageCollection="addDownlink" %} You can customize a downlink according to your configuration. Let’s consider an example where we send an attribute update message. -An example of downlink converter: +An example of a downlink converter: ```ruby // Encode downlink data from incoming Rule Engine message @@ -207,22 +234,34 @@ return result; ``` {: .copy-code} -## Create Integration template - -Now that the Uplink and Downlink converter templates have been created, it is possible to create an integration. -Go to **Integration templates** section and click **Add new integration** button. Name it **UDP Integration**, select type **UDP**, turn the Debug mode on and from drop-down menus add recently created Uplink and Downlink converters. +### Create Integration template + +Now that the **Uplink** and **Downlink converter templates** have been created, it is possible to create the **Integration**: +* Go to the **Edge management > Integration templates** section, click the **"Add new integration"** button (the + icon) and select the **“Create new integration”** option. +* In the **“Add integration”** pop-up window and fill out the **"Basic settings"** block: + * **Integration type:** Select the **"UDP"** integration type from the drop-down menu. + * **Name:** Enter the name of the integration. +* In the **"Uplink data converter"** block: + * Select the **"Select existing"** tab. + * **Uplink data converter:** Select the uplink data converter from the drop-down menu. +* In the **"Downlink data converter"** block: + * Select the **"Select existing"** tab. + * **Downlink data converter:** Select the uplink data converter from the drop-down menu. +* In the **"Connection"** block: + * Enter the **Port** and **Size of the buffer for inbound socket (in KB)** in the corresponding fields. By default, the UDP Integration will use the port **11560**, but can be changed to any available port. + * Enter the **Cache Size** and **Cache time to live in minutes** in the corresponding fields. + * **Enable broadcast - integration will accept broadcast address packets:** Flag to indicate that integration accepts UDP packets sent to broadcast address. + * **Integration key** and **Integration secret**: Copy the values to use later in the configuration. + * **Handler Configuration:** Select the device payload type from the drop-down menu. -As you mentioned **Execute remotely** is checked and can not be modified - UDP Integration can be only **remote** type. - -Please note down **Integration key** and **Integration secret** - we will use these values later in the configuration on the remote UDP Integration itself. - -By default UDP Integration will use **11560** port, but you can change this to any available port in your case. +{% include images-gallery.html imageCollection="addIntegration" %} -We leave other options by default, but there is brief description of them: -- **Enable broadcast - integration will accepts broadcast address packets** - a flag indicating that integration will accept UDP packets that were sent to broadcast address; -- **Size of the buffer for inbound socket** - the size in KBytes of the socket data receive buffer; +{% capture execute-remotely %} +The **Execute remotely** option is selected by default and cannot be changed, the UDP Integration can only be the **remote** type. +{% endcapture %} +{% include templates/info-banner.md content=execute-remotely %} -Choose device payload type for **Handler Configuration**: +Select the device payload type for **Handler Configuration**: {% capture handlerconfiguration %} Text payload
%,%text%,%templates/integration/udp/udp-handler-configuration-text.md%br% @@ -232,37 +271,42 @@ Hex payload
%,%hex%,%templates/integration/udp/udp-handler-configuration-hex. {% include content-toggle.liquid content-toggle-id="udpintegrationhandlerconfiguration" toggle-spec=handlerconfiguration %} -Click **Add** to save the Integration. +To save the Integration, click the **Add** button. -{% include images-gallery.html imageCollection="addIntegration" %} +### Modify the Edge Root Rule chain for Downlinks + +We can send a downlink message to the device from the **Rule chain** using the **rule node**. To send downlink via integration, modify the **Edge Root Rule chain**. +{% capture edge-4 %} +**Please note!**
+If you use **earlier versions of Edge**, you cannot create or edit a **Rule Chain** on the **Edge** itself. It must be configured as a template in the **Cloud (Server)**, and then assigned to the **Edge** instance. -## Modify Edge Root Rule chain for Downlinks +Starting with **Edge version 4.0**, you can create and edit a **Rule Chain** on the **Edge**. +{% endcapture %} +{% include templates/info-banner.md content=edge-4 %} -We can send a downlink message to the device from Rule chain using the rule node. -To be able to send downlink over integration we need to modify **'Edge Root Rule chain'** on the cloud. -For example, create an **integration downlink** node and set the **'Attributes updated'** link to it. -When changes are made to device attribute, the downlink message will be sent to the integration. +For example, you can add an **integration downlink** node and set the **'Attributes Updated'** link to it. +When the device attribute changes, the downlink message is sent to the integration. {% include images-gallery.html imageCollection="downlinkRule" %} -## Assign Integration to Edge +### Assign Integration to Edge -Once converter and integration templates are created, we can assign Integration template to Edge. +Once the converter and integration templates are created, we can assign the integration template to **Edge**. {% include images-gallery.html imageCollection="assignIntegration" showListImageTitles="true" %} -## Installing and running external UDP Integration +### Installing and running external UDP Integration -Please refer to the [Remote Integration guide](/docs/pe/edge/user-guide/integrations/remote-integrations) and install UDP Integration service locally or on separate machine. +Please refer to the [Remote Integration guide](/docs/pe/edge/user-guide/integrations/remote-integrations){: target="_blank"} and install the UDP Integration service locally or on a separate machine. -Please use **Integration key** and **Integration secret** from the above section for your UDP Integration configuration. +Please use the **Integration key** and **Integration secret** from the above section for the UDP Integration configuration. -## Send uplink message +### Send uplink message -Once ThingsBoard UDP Integration has been created, the UDP server starts, and then it waits for data from the devices. +Once the **ThingsBoard UDP Integration** has been created, the UDP server starts, and then it waits for data from the devices. -Choose device payload type to send uplink message: +Select the device payload type to send the uplink message: {% capture senduplink %} Text payload
%,%text%,%templates/integration/udp/udp-send-uplink-text.md%br% @@ -274,35 +318,36 @@ Hex payload
%,%hex%,%templates/integration/udp/udp-send-uplink-hex.md{% endca {% include images-gallery.html imageCollection="sendUplink" %} -The created device with data can be seen in the section **Device groups -> All** on the Edge: +To view the created device with data in the **Device groups > All** section on the Edge: {% include images-gallery.html imageCollection="device" %} -Received data can be viewed in the Uplink converter. In the **'In'** and **'Out'** blocks of the Events tab: +The received data can be viewed in the Uplink converter. In the **'In'** and **'Out'** blocks of the **"Events"** tab: {% include images-gallery.html imageCollection="converterEvents" %} -## Send downlink message +### Send the downlink message -Now let's check downlink functionality. +Now let's check the downlink functionality. -Now we'll need to send again message to UDP integration to see downlink response. -Please use the same command that was used before, but replace parameter **q1** to **q120**. With these changes **nc** utility will wait 120 seconds for downlink message. -Additionally, please remove **w1** parameter. +Now we need to send another message to the UDP integration to see the downlink response. +Please use the same command as before, but replace the parameter **q1** with **q120**. +With these changes, the **nc** utility will wait 120 seconds for the downlink message. +In addition, please remove the **w1** parameter. After you'll send uplink command, you have **120 seconds** to add **firmware** shared attribute: {% include images-gallery.html imageCollection="addSharedAttribute" %} -To make sure that downlink message sent to integration you can check 'Events' tab of integration: +To make sure that the downlink message sent to the integration, you can check the **"Events"** tab of integration: {% include images-gallery.html imageCollection="downlinkMessage" %} -An example of sent message and a response from ThingsBoard Edge in the terminal: +An example of a sent message and a response from ThingsBoard Edge in the terminal: {% include images-gallery.html imageCollection="downlinkTerminal" %} -## Next steps +### Next steps {% assign docsPrefix = "pe/edge/" %} {% include templates/edge/guides-banner-edge.md %} diff --git a/images/edge/rule-engine/1-edge-rule-chain-preview.webp b/images/edge/rule-engine/1-edge-rule-chain-preview.webp new file mode 100644 index 0000000000..e268012cf0 Binary files /dev/null and b/images/edge/rule-engine/1-edge-rule-chain-preview.webp differ diff --git a/images/edge/rule-engine/1-edge-rule-chain.webp b/images/edge/rule-engine/1-edge-rule-chain.webp new file mode 100644 index 0000000000..8edbd2c673 Binary files /dev/null and b/images/edge/rule-engine/1-edge-rule-chain.webp differ diff --git a/images/edge/rule-engine/2-create-rule-chain-template-preview.webp b/images/edge/rule-engine/2-create-rule-chain-template-preview.webp new file mode 100644 index 0000000000..7902fcfa9b Binary files /dev/null and b/images/edge/rule-engine/2-create-rule-chain-template-preview.webp differ diff --git a/images/edge/rule-engine/2-create-rule-chain-template.webp b/images/edge/rule-engine/2-create-rule-chain-template.webp new file mode 100644 index 0000000000..fcd7975233 Binary files /dev/null and b/images/edge/rule-engine/2-create-rule-chain-template.webp differ diff --git a/images/edge/rule-engine/3-in-the-list-preview.webp b/images/edge/rule-engine/3-in-the-list-preview.webp new file mode 100644 index 0000000000..add36f1a65 Binary files /dev/null and b/images/edge/rule-engine/3-in-the-list-preview.webp differ diff --git a/images/edge/rule-engine/3-in-the-list.webp b/images/edge/rule-engine/3-in-the-list.webp new file mode 100644 index 0000000000..64b45fb20d Binary files /dev/null and b/images/edge/rule-engine/3-in-the-list.webp differ diff --git a/images/edge/rule-engine/4-configure-and-safe-preview.webp b/images/edge/rule-engine/4-configure-and-safe-preview.webp new file mode 100644 index 0000000000..7b74f79d70 Binary files /dev/null and b/images/edge/rule-engine/4-configure-and-safe-preview.webp differ diff --git a/images/edge/rule-engine/4-configure-and-safe.webp b/images/edge/rule-engine/4-configure-and-safe.webp new file mode 100644 index 0000000000..c7c5f93918 Binary files /dev/null and b/images/edge/rule-engine/4-configure-and-safe.webp differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-1-preview.png b/images/edge/rule-engine/assign-rule-chain-template-step-1-preview.png deleted file mode 100644 index 074039d98d..0000000000 Binary files a/images/edge/rule-engine/assign-rule-chain-template-step-1-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-1-preview.webp b/images/edge/rule-engine/assign-rule-chain-template-step-1-preview.webp new file mode 100644 index 0000000000..86ab95d661 Binary files /dev/null and b/images/edge/rule-engine/assign-rule-chain-template-step-1-preview.webp differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-1.png b/images/edge/rule-engine/assign-rule-chain-template-step-1.png deleted file mode 100644 index 24e0fde2cf..0000000000 Binary files a/images/edge/rule-engine/assign-rule-chain-template-step-1.png and /dev/null differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-1.webp b/images/edge/rule-engine/assign-rule-chain-template-step-1.webp new file mode 100644 index 0000000000..1c73e7601d Binary files /dev/null and b/images/edge/rule-engine/assign-rule-chain-template-step-1.webp differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-2-preview.png b/images/edge/rule-engine/assign-rule-chain-template-step-2-preview.png deleted file mode 100644 index bb14d5e1d4..0000000000 Binary files a/images/edge/rule-engine/assign-rule-chain-template-step-2-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-2-preview.webp b/images/edge/rule-engine/assign-rule-chain-template-step-2-preview.webp new file mode 100644 index 0000000000..148d6dd74a Binary files /dev/null and b/images/edge/rule-engine/assign-rule-chain-template-step-2-preview.webp differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-2.png b/images/edge/rule-engine/assign-rule-chain-template-step-2.png deleted file mode 100644 index f8c26228cb..0000000000 Binary files a/images/edge/rule-engine/assign-rule-chain-template-step-2.png and /dev/null differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-2.webp b/images/edge/rule-engine/assign-rule-chain-template-step-2.webp new file mode 100644 index 0000000000..49cc18645e Binary files /dev/null and b/images/edge/rule-engine/assign-rule-chain-template-step-2.webp differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-3-preview.png b/images/edge/rule-engine/assign-rule-chain-template-step-3-preview.png deleted file mode 100644 index f0da03e336..0000000000 Binary files a/images/edge/rule-engine/assign-rule-chain-template-step-3-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-3-preview.webp b/images/edge/rule-engine/assign-rule-chain-template-step-3-preview.webp new file mode 100644 index 0000000000..6dee90929f Binary files /dev/null and b/images/edge/rule-engine/assign-rule-chain-template-step-3-preview.webp differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-3.png b/images/edge/rule-engine/assign-rule-chain-template-step-3.png deleted file mode 100644 index 453bea5c81..0000000000 Binary files a/images/edge/rule-engine/assign-rule-chain-template-step-3.png and /dev/null differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-3.webp b/images/edge/rule-engine/assign-rule-chain-template-step-3.webp new file mode 100644 index 0000000000..1eacf853c9 Binary files /dev/null and b/images/edge/rule-engine/assign-rule-chain-template-step-3.webp differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-4-preview.png b/images/edge/rule-engine/assign-rule-chain-template-step-4-preview.png deleted file mode 100644 index f28c2b307f..0000000000 Binary files a/images/edge/rule-engine/assign-rule-chain-template-step-4-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-4-preview.webp b/images/edge/rule-engine/assign-rule-chain-template-step-4-preview.webp new file mode 100644 index 0000000000..83643d73f8 Binary files /dev/null and b/images/edge/rule-engine/assign-rule-chain-template-step-4-preview.webp differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-4.png b/images/edge/rule-engine/assign-rule-chain-template-step-4.png deleted file mode 100644 index ff604d0d5c..0000000000 Binary files a/images/edge/rule-engine/assign-rule-chain-template-step-4.png and /dev/null differ diff --git a/images/edge/rule-engine/assign-rule-chain-template-step-4.webp b/images/edge/rule-engine/assign-rule-chain-template-step-4.webp new file mode 100644 index 0000000000..b2784c9c84 Binary files /dev/null and b/images/edge/rule-engine/assign-rule-chain-template-step-4.webp differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-1-preview.png b/images/edge/rule-engine/create-rule-chain-template-step-1-preview.png deleted file mode 100644 index eb99a17169..0000000000 Binary files a/images/edge/rule-engine/create-rule-chain-template-step-1-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-1-preview.webp b/images/edge/rule-engine/create-rule-chain-template-step-1-preview.webp new file mode 100644 index 0000000000..2b218c24b5 Binary files /dev/null and b/images/edge/rule-engine/create-rule-chain-template-step-1-preview.webp differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-1.png b/images/edge/rule-engine/create-rule-chain-template-step-1.png deleted file mode 100644 index a4a34a6187..0000000000 Binary files a/images/edge/rule-engine/create-rule-chain-template-step-1.png and /dev/null differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-1.webp b/images/edge/rule-engine/create-rule-chain-template-step-1.webp new file mode 100644 index 0000000000..84857bf38f Binary files /dev/null and b/images/edge/rule-engine/create-rule-chain-template-step-1.webp differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-2-preview.png b/images/edge/rule-engine/create-rule-chain-template-step-2-preview.png deleted file mode 100644 index f8b391c8f9..0000000000 Binary files a/images/edge/rule-engine/create-rule-chain-template-step-2-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-2-preview.webp b/images/edge/rule-engine/create-rule-chain-template-step-2-preview.webp new file mode 100644 index 0000000000..c3f8bff98e Binary files /dev/null and b/images/edge/rule-engine/create-rule-chain-template-step-2-preview.webp differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-2.png b/images/edge/rule-engine/create-rule-chain-template-step-2.png deleted file mode 100644 index a8747e7b81..0000000000 Binary files a/images/edge/rule-engine/create-rule-chain-template-step-2.png and /dev/null differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-2.webp b/images/edge/rule-engine/create-rule-chain-template-step-2.webp new file mode 100644 index 0000000000..5e2f7dc8ab Binary files /dev/null and b/images/edge/rule-engine/create-rule-chain-template-step-2.webp differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-3-preview.png b/images/edge/rule-engine/create-rule-chain-template-step-3-preview.png deleted file mode 100644 index 0330bd4511..0000000000 Binary files a/images/edge/rule-engine/create-rule-chain-template-step-3-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-3-preview.webp b/images/edge/rule-engine/create-rule-chain-template-step-3-preview.webp new file mode 100644 index 0000000000..3ae6a33042 Binary files /dev/null and b/images/edge/rule-engine/create-rule-chain-template-step-3-preview.webp differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-3.png b/images/edge/rule-engine/create-rule-chain-template-step-3.png deleted file mode 100644 index a35871f835..0000000000 Binary files a/images/edge/rule-engine/create-rule-chain-template-step-3.png and /dev/null differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-3.webp b/images/edge/rule-engine/create-rule-chain-template-step-3.webp new file mode 100644 index 0000000000..c6f0ad01ac Binary files /dev/null and b/images/edge/rule-engine/create-rule-chain-template-step-3.webp differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-4-preview.png b/images/edge/rule-engine/create-rule-chain-template-step-4-preview.png deleted file mode 100644 index 0a5d3eb79a..0000000000 Binary files a/images/edge/rule-engine/create-rule-chain-template-step-4-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-4-preview.webp b/images/edge/rule-engine/create-rule-chain-template-step-4-preview.webp new file mode 100644 index 0000000000..02500bfa1d Binary files /dev/null and b/images/edge/rule-engine/create-rule-chain-template-step-4-preview.webp differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-4.png b/images/edge/rule-engine/create-rule-chain-template-step-4.png deleted file mode 100644 index a40f69cec3..0000000000 Binary files a/images/edge/rule-engine/create-rule-chain-template-step-4.png and /dev/null differ diff --git a/images/edge/rule-engine/create-rule-chain-template-step-4.webp b/images/edge/rule-engine/create-rule-chain-template-step-4.webp new file mode 100644 index 0000000000..04b5bc6241 Binary files /dev/null and b/images/edge/rule-engine/create-rule-chain-template-step-4.webp differ diff --git a/images/edge/rule-engine/verify-rule-chain-template-step-1-preview.png b/images/edge/rule-engine/verify-rule-chain-template-step-1-preview.png deleted file mode 100644 index d6487e18c0..0000000000 Binary files a/images/edge/rule-engine/verify-rule-chain-template-step-1-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/verify-rule-chain-template-step-1-preview.webp b/images/edge/rule-engine/verify-rule-chain-template-step-1-preview.webp new file mode 100644 index 0000000000..facb5799bc Binary files /dev/null and b/images/edge/rule-engine/verify-rule-chain-template-step-1-preview.webp differ diff --git a/images/edge/rule-engine/verify-rule-chain-template-step-1.png b/images/edge/rule-engine/verify-rule-chain-template-step-1.png deleted file mode 100644 index c05d533ace..0000000000 Binary files a/images/edge/rule-engine/verify-rule-chain-template-step-1.png and /dev/null differ diff --git a/images/edge/rule-engine/verify-rule-chain-template-step-1.webp b/images/edge/rule-engine/verify-rule-chain-template-step-1.webp new file mode 100644 index 0000000000..91111bc58e Binary files /dev/null and b/images/edge/rule-engine/verify-rule-chain-template-step-1.webp differ diff --git a/images/edge/rule-engine/verify-rule-chain-template-step-2-preview.png b/images/edge/rule-engine/verify-rule-chain-template-step-2-preview.png deleted file mode 100644 index 99cccf30c2..0000000000 Binary files a/images/edge/rule-engine/verify-rule-chain-template-step-2-preview.png and /dev/null differ diff --git a/images/edge/rule-engine/verify-rule-chain-template-step-2-preview.webp b/images/edge/rule-engine/verify-rule-chain-template-step-2-preview.webp new file mode 100644 index 0000000000..db7d3bc825 Binary files /dev/null and b/images/edge/rule-engine/verify-rule-chain-template-step-2-preview.webp differ diff --git a/images/edge/rule-engine/verify-rule-chain-template-step-2.png b/images/edge/rule-engine/verify-rule-chain-template-step-2.png deleted file mode 100644 index ddbe9046d2..0000000000 Binary files a/images/edge/rule-engine/verify-rule-chain-template-step-2.png and /dev/null differ diff --git a/images/edge/rule-engine/verify-rule-chain-template-step-2.webp b/images/edge/rule-engine/verify-rule-chain-template-step-2.webp new file mode 100644 index 0000000000..033810d525 Binary files /dev/null and b/images/edge/rule-engine/verify-rule-chain-template-step-2.webp differ diff --git a/images/pe/edge/integrations/create-converter-step-1-preview.png b/images/pe/edge/integrations/create-converter-step-1-preview.png deleted file mode 100644 index 10fa5add46..0000000000 Binary files a/images/pe/edge/integrations/create-converter-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/create-converter-step-1-preview.webp b/images/pe/edge/integrations/create-converter-step-1-preview.webp new file mode 100644 index 0000000000..cf6497011e Binary files /dev/null and b/images/pe/edge/integrations/create-converter-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/create-converter-step-1.png b/images/pe/edge/integrations/create-converter-step-1.png deleted file mode 100644 index f9f2df9c82..0000000000 Binary files a/images/pe/edge/integrations/create-converter-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/create-converter-step-1.webp b/images/pe/edge/integrations/create-converter-step-1.webp new file mode 100644 index 0000000000..32bc049823 Binary files /dev/null and b/images/pe/edge/integrations/create-converter-step-1.webp differ diff --git a/images/pe/edge/integrations/create-converter-step-2-preview.png b/images/pe/edge/integrations/create-converter-step-2-preview.png deleted file mode 100644 index 4795c41d00..0000000000 Binary files a/images/pe/edge/integrations/create-converter-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/create-converter-step-2-preview.webp b/images/pe/edge/integrations/create-converter-step-2-preview.webp new file mode 100644 index 0000000000..d9562f5dfd Binary files /dev/null and b/images/pe/edge/integrations/create-converter-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/create-converter-step-2.png b/images/pe/edge/integrations/create-converter-step-2.png deleted file mode 100644 index e1ff36d459..0000000000 Binary files a/images/pe/edge/integrations/create-converter-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/create-converter-step-2.webp b/images/pe/edge/integrations/create-converter-step-2.webp new file mode 100644 index 0000000000..1abd7844a9 Binary files /dev/null and b/images/pe/edge/integrations/create-converter-step-2.webp differ diff --git a/images/pe/edge/integrations/create-integration-step-1-preview.png b/images/pe/edge/integrations/create-integration-step-1-preview.png deleted file mode 100644 index 177fe831fb..0000000000 Binary files a/images/pe/edge/integrations/create-integration-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/create-integration-step-1-preview.webp b/images/pe/edge/integrations/create-integration-step-1-preview.webp new file mode 100644 index 0000000000..4c0791f6be Binary files /dev/null and b/images/pe/edge/integrations/create-integration-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/create-integration-step-1.png b/images/pe/edge/integrations/create-integration-step-1.png deleted file mode 100644 index 2d5dbf344a..0000000000 Binary files a/images/pe/edge/integrations/create-integration-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/create-integration-step-1.webp b/images/pe/edge/integrations/create-integration-step-1.webp new file mode 100644 index 0000000000..1e4577b904 Binary files /dev/null and b/images/pe/edge/integrations/create-integration-step-1.webp differ diff --git a/images/pe/edge/integrations/create-integration-step-2-preview.png b/images/pe/edge/integrations/create-integration-step-2-preview.png deleted file mode 100644 index ba62cfddfc..0000000000 Binary files a/images/pe/edge/integrations/create-integration-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/create-integration-step-2-preview.webp b/images/pe/edge/integrations/create-integration-step-2-preview.webp new file mode 100644 index 0000000000..5c182da6c1 Binary files /dev/null and b/images/pe/edge/integrations/create-integration-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/create-integration-step-2.png b/images/pe/edge/integrations/create-integration-step-2.png deleted file mode 100644 index 7e6b7b0916..0000000000 Binary files a/images/pe/edge/integrations/create-integration-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/create-integration-step-2.webp b/images/pe/edge/integrations/create-integration-step-2.webp new file mode 100644 index 0000000000..510276b390 Binary files /dev/null and b/images/pe/edge/integrations/create-integration-step-2.webp differ diff --git a/images/pe/edge/integrations/missing-placeholder-preview.png b/images/pe/edge/integrations/missing-placeholder-preview.png deleted file mode 100644 index 5b4c5241e4..0000000000 Binary files a/images/pe/edge/integrations/missing-placeholder-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/missing-placeholder-preview.webp b/images/pe/edge/integrations/missing-placeholder-preview.webp new file mode 100644 index 0000000000..605bef8218 Binary files /dev/null and b/images/pe/edge/integrations/missing-placeholder-preview.webp differ diff --git a/images/pe/edge/integrations/missing-placeholder.png b/images/pe/edge/integrations/missing-placeholder.png deleted file mode 100644 index 8bfe90b054..0000000000 Binary files a/images/pe/edge/integrations/missing-placeholder.png and /dev/null differ diff --git a/images/pe/edge/integrations/missing-placeholder.webp b/images/pe/edge/integrations/missing-placeholder.webp new file mode 100644 index 0000000000..ea19467f46 Binary files /dev/null and b/images/pe/edge/integrations/missing-placeholder.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-converter-step-1-preview.png b/images/pe/edge/integrations/opc-ua/add-converter-step-1-preview.png deleted file mode 100644 index 2b39f331b7..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-converter-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-converter-step-1-preview.webp b/images/pe/edge/integrations/opc-ua/add-converter-step-1-preview.webp new file mode 100644 index 0000000000..4678189608 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-converter-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-converter-step-1.png b/images/pe/edge/integrations/opc-ua/add-converter-step-1.png deleted file mode 100644 index 8e8503f756..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-converter-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-converter-step-1.webp b/images/pe/edge/integrations/opc-ua/add-converter-step-1.webp new file mode 100644 index 0000000000..6f9f7a6064 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-converter-step-1.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-converter-step-2-preview.png b/images/pe/edge/integrations/opc-ua/add-converter-step-2-preview.png deleted file mode 100644 index 8278a23999..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-converter-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-converter-step-2-preview.webp b/images/pe/edge/integrations/opc-ua/add-converter-step-2-preview.webp new file mode 100644 index 0000000000..0f0b2119ab Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-converter-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-converter-step-2.png b/images/pe/edge/integrations/opc-ua/add-converter-step-2.png deleted file mode 100644 index f210a4816e..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-converter-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-converter-step-2.webp b/images/pe/edge/integrations/opc-ua/add-converter-step-2.webp new file mode 100644 index 0000000000..5cbba17006 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-converter-step-2.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-downlink-step-1-preview.png b/images/pe/edge/integrations/opc-ua/add-downlink-step-1-preview.png deleted file mode 100644 index 7b3c408872..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-downlink-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-downlink-step-1-preview.webp b/images/pe/edge/integrations/opc-ua/add-downlink-step-1-preview.webp new file mode 100644 index 0000000000..3e20aef7ca Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-downlink-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-downlink-step-1.png b/images/pe/edge/integrations/opc-ua/add-downlink-step-1.png deleted file mode 100644 index 08450fd56b..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-downlink-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-downlink-step-1.webp b/images/pe/edge/integrations/opc-ua/add-downlink-step-1.webp new file mode 100644 index 0000000000..12bfd6bf2e Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-downlink-step-1.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-downlink-step-2-preview.png b/images/pe/edge/integrations/opc-ua/add-downlink-step-2-preview.png deleted file mode 100644 index 26128614df..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-downlink-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-downlink-step-2-preview.webp b/images/pe/edge/integrations/opc-ua/add-downlink-step-2-preview.webp new file mode 100644 index 0000000000..5d1116b013 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-downlink-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-downlink-step-2.png b/images/pe/edge/integrations/opc-ua/add-downlink-step-2.png deleted file mode 100644 index 523cb56050..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-downlink-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-downlink-step-2.webp b/images/pe/edge/integrations/opc-ua/add-downlink-step-2.webp new file mode 100644 index 0000000000..7787a9c67d Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-downlink-step-2.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-0-preview.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-0-preview.webp new file mode 100644 index 0000000000..4c0791f6be Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-0-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-0.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-0.webp new file mode 100644 index 0000000000..1e4577b904 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-0.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-1-preview.png b/images/pe/edge/integrations/opc-ua/add-integration-template-step-1-preview.png deleted file mode 100644 index 4f388ed330..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-integration-template-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-1-preview.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-1-preview.webp new file mode 100644 index 0000000000..d2737ea95c Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-1.png b/images/pe/edge/integrations/opc-ua/add-integration-template-step-1.png deleted file mode 100644 index 0a631867ad..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-integration-template-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-1.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-1.webp new file mode 100644 index 0000000000..4b15b7be1a Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-1.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-2-preview.png b/images/pe/edge/integrations/opc-ua/add-integration-template-step-2-preview.png deleted file mode 100644 index 7c9f58a834..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-integration-template-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-2-preview.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-2-preview.webp new file mode 100644 index 0000000000..7ad7ce8c2b Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-2.png b/images/pe/edge/integrations/opc-ua/add-integration-template-step-2.png deleted file mode 100644 index 475cce2d39..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-integration-template-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-2.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-2.webp new file mode 100644 index 0000000000..9612bb2580 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-2.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-3-preview.png b/images/pe/edge/integrations/opc-ua/add-integration-template-step-3-preview.png deleted file mode 100644 index a3872761b1..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-integration-template-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-3-preview.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-3-preview.webp new file mode 100644 index 0000000000..764f05b2db Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-3.png b/images/pe/edge/integrations/opc-ua/add-integration-template-step-3.png deleted file mode 100644 index c667c50f08..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-integration-template-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-3.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-3.webp new file mode 100644 index 0000000000..8434e43d64 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-3.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-4-preview.png b/images/pe/edge/integrations/opc-ua/add-integration-template-step-4-preview.png deleted file mode 100644 index 9dc31cb36b..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-integration-template-step-4-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-4-preview.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-4-preview.webp new file mode 100644 index 0000000000..266a1fe8eb Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-4-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-4.png b/images/pe/edge/integrations/opc-ua/add-integration-template-step-4.png deleted file mode 100644 index 35c2ddb807..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/add-integration-template-step-4.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-4.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-4.webp new file mode 100644 index 0000000000..94df3f8da6 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-4.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-5-preview.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-5-preview.webp new file mode 100644 index 0000000000..372e6fc143 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-5-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/add-integration-template-step-5.webp b/images/pe/edge/integrations/opc-ua/add-integration-template-step-5.webp new file mode 100644 index 0000000000..5b6d58c8d6 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/add-integration-template-step-5.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1-preview.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1-preview.png deleted file mode 100644 index 6ff57229f4..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1-preview.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1-preview.webp new file mode 100644 index 0000000000..f9cdacbe30 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1.png deleted file mode 100644 index 6a6b6653b7..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1.webp new file mode 100644 index 0000000000..0106c16ae8 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-1.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2-preview.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2-preview.png deleted file mode 100644 index f76a40babc..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2-preview.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2-preview.webp new file mode 100644 index 0000000000..a8f76fa3bd Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2.png deleted file mode 100644 index 4759475fe9..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2.webp new file mode 100644 index 0000000000..1e883c0bea Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-2.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3-preview.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3-preview.png deleted file mode 100644 index d31cbfbacb..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3-preview.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3-preview.webp new file mode 100644 index 0000000000..c05e451d91 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3.png deleted file mode 100644 index de10a9e431..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3.webp new file mode 100644 index 0000000000..9addb78cf2 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-3.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4-preview.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4-preview.png deleted file mode 100644 index 9e3340a077..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4-preview.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4-preview.webp new file mode 100644 index 0000000000..f23a67b823 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4.png deleted file mode 100644 index f035b7375c..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4.webp new file mode 100644 index 0000000000..8d4e2fe93f Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-4.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5-preview.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5-preview.png deleted file mode 100644 index f78fb822f1..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5-preview.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5-preview.webp new file mode 100644 index 0000000000..93d9dca236 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5.png b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5.png deleted file mode 100644 index b5e61e88be..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5.webp b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5.webp new file mode 100644 index 0000000000..7f9f15bb64 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/airconditioners-dashboard-step-5.webp differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-1-preview.png b/images/pe/edge/integrations/opc-ua/assign-integration-step-1-preview.png deleted file mode 100644 index 5ed01a2e17..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/assign-integration-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-1-preview.webp b/images/pe/edge/integrations/opc-ua/assign-integration-step-1-preview.webp new file mode 100644 index 0000000000..c008a05390 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/assign-integration-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-1.png b/images/pe/edge/integrations/opc-ua/assign-integration-step-1.png deleted file mode 100644 index b8777042e7..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/assign-integration-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-1.webp b/images/pe/edge/integrations/opc-ua/assign-integration-step-1.webp new file mode 100644 index 0000000000..c049ed312c Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/assign-integration-step-1.webp differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-2-preview.png b/images/pe/edge/integrations/opc-ua/assign-integration-step-2-preview.png deleted file mode 100644 index 2855e85a52..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/assign-integration-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-2-preview.webp b/images/pe/edge/integrations/opc-ua/assign-integration-step-2-preview.webp new file mode 100644 index 0000000000..64bafae524 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/assign-integration-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-2.png b/images/pe/edge/integrations/opc-ua/assign-integration-step-2.png deleted file mode 100644 index 24143ff9a6..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/assign-integration-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-2.webp b/images/pe/edge/integrations/opc-ua/assign-integration-step-2.webp new file mode 100644 index 0000000000..fe189cac37 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/assign-integration-step-2.webp differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-3-preview.png b/images/pe/edge/integrations/opc-ua/assign-integration-step-3-preview.png deleted file mode 100644 index 97987642f5..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/assign-integration-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-3-preview.webp b/images/pe/edge/integrations/opc-ua/assign-integration-step-3-preview.webp new file mode 100644 index 0000000000..36df36e2b8 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/assign-integration-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-3.png b/images/pe/edge/integrations/opc-ua/assign-integration-step-3.png deleted file mode 100644 index 3d10efcb6f..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/assign-integration-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-3.webp b/images/pe/edge/integrations/opc-ua/assign-integration-step-3.webp new file mode 100644 index 0000000000..b41ad7d217 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/assign-integration-step-3.webp differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-4-preview.png b/images/pe/edge/integrations/opc-ua/assign-integration-step-4-preview.png deleted file mode 100644 index b346869f2d..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/assign-integration-step-4-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-4-preview.webp b/images/pe/edge/integrations/opc-ua/assign-integration-step-4-preview.webp new file mode 100644 index 0000000000..23d4d2bfef Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/assign-integration-step-4-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-4.png b/images/pe/edge/integrations/opc-ua/assign-integration-step-4.png deleted file mode 100644 index 8c908a1dca..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/assign-integration-step-4.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/assign-integration-step-4.webp b/images/pe/edge/integrations/opc-ua/assign-integration-step-4.webp new file mode 100644 index 0000000000..829fd53d0f Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/assign-integration-step-4.webp differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-1-preview.png b/images/pe/edge/integrations/opc-ua/downlink-rule-step-1-preview.png deleted file mode 100644 index ae660e7bba..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/downlink-rule-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-1-preview.webp b/images/pe/edge/integrations/opc-ua/downlink-rule-step-1-preview.webp new file mode 100644 index 0000000000..225019007b Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/downlink-rule-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-1.png b/images/pe/edge/integrations/opc-ua/downlink-rule-step-1.png deleted file mode 100644 index 4456a829b5..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/downlink-rule-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-1.webp b/images/pe/edge/integrations/opc-ua/downlink-rule-step-1.webp new file mode 100644 index 0000000000..122d5f8cff Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/downlink-rule-step-1.webp differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-2-preview.png b/images/pe/edge/integrations/opc-ua/downlink-rule-step-2-preview.png deleted file mode 100644 index 0ef39f24bb..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/downlink-rule-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-2-preview.webp b/images/pe/edge/integrations/opc-ua/downlink-rule-step-2-preview.webp new file mode 100644 index 0000000000..7287997ebd Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/downlink-rule-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-2.png b/images/pe/edge/integrations/opc-ua/downlink-rule-step-2.png deleted file mode 100644 index 7302bad60e..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/downlink-rule-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-2.webp b/images/pe/edge/integrations/opc-ua/downlink-rule-step-2.webp new file mode 100644 index 0000000000..ad8bf13c42 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/downlink-rule-step-2.webp differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-3-preview.png b/images/pe/edge/integrations/opc-ua/downlink-rule-step-3-preview.png deleted file mode 100644 index 0b52dcef31..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/downlink-rule-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-3-preview.webp b/images/pe/edge/integrations/opc-ua/downlink-rule-step-3-preview.webp new file mode 100644 index 0000000000..4b13fe3c46 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/downlink-rule-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-3.png b/images/pe/edge/integrations/opc-ua/downlink-rule-step-3.png deleted file mode 100644 index 5041124dfc..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/downlink-rule-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/downlink-rule-step-3.webp b/images/pe/edge/integrations/opc-ua/downlink-rule-step-3.webp new file mode 100644 index 0000000000..d0b4c46b65 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/downlink-rule-step-3.webp differ diff --git a/images/pe/edge/integrations/opc-ua/modify-converter-step-1-preview.png b/images/pe/edge/integrations/opc-ua/modify-converter-step-1-preview.png deleted file mode 100644 index 4eaf277311..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/modify-converter-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/modify-converter-step-1-preview.webp b/images/pe/edge/integrations/opc-ua/modify-converter-step-1-preview.webp new file mode 100644 index 0000000000..007ece02dd Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/modify-converter-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/modify-converter-step-1.png b/images/pe/edge/integrations/opc-ua/modify-converter-step-1.png deleted file mode 100644 index e2f9ba689b..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/modify-converter-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/modify-converter-step-1.webp b/images/pe/edge/integrations/opc-ua/modify-converter-step-1.webp new file mode 100644 index 0000000000..afa435474a Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/modify-converter-step-1.webp differ diff --git a/images/pe/edge/integrations/opc-ua/modify-converter-step-2-preview.png b/images/pe/edge/integrations/opc-ua/modify-converter-step-2-preview.png deleted file mode 100644 index f2ae7e8a29..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/modify-converter-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/modify-converter-step-2-preview.webp b/images/pe/edge/integrations/opc-ua/modify-converter-step-2-preview.webp new file mode 100644 index 0000000000..23bcc3fa3d Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/modify-converter-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/opc-ua/modify-converter-step-2.png b/images/pe/edge/integrations/opc-ua/modify-converter-step-2.png deleted file mode 100644 index 5e446e06be..0000000000 Binary files a/images/pe/edge/integrations/opc-ua/modify-converter-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/opc-ua/modify-converter-step-2.webp b/images/pe/edge/integrations/opc-ua/modify-converter-step-2.webp new file mode 100644 index 0000000000..0ecffab403 Binary files /dev/null and b/images/pe/edge/integrations/opc-ua/modify-converter-step-2.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-1-preview.png b/images/pe/edge/integrations/placeholder-feature-step-1-preview.png deleted file mode 100644 index 871cd580d6..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-1-preview.webp b/images/pe/edge/integrations/placeholder-feature-step-1-preview.webp new file mode 100644 index 0000000000..987c6f373e Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-1.png b/images/pe/edge/integrations/placeholder-feature-step-1.png deleted file mode 100644 index 38011bcc78..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-1.webp b/images/pe/edge/integrations/placeholder-feature-step-1.webp new file mode 100644 index 0000000000..2ad303d823 Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-1.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-2-preview.png b/images/pe/edge/integrations/placeholder-feature-step-2-preview.png deleted file mode 100644 index 10446f046e..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-2-preview.webp b/images/pe/edge/integrations/placeholder-feature-step-2-preview.webp new file mode 100644 index 0000000000..528c9d30f1 Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-2.png b/images/pe/edge/integrations/placeholder-feature-step-2.png deleted file mode 100644 index 46322447d9..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-2.webp b/images/pe/edge/integrations/placeholder-feature-step-2.webp new file mode 100644 index 0000000000..51e9efd66d Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-2.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-3-preview.png b/images/pe/edge/integrations/placeholder-feature-step-3-preview.png deleted file mode 100644 index 2928643861..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-3-preview.webp b/images/pe/edge/integrations/placeholder-feature-step-3-preview.webp new file mode 100644 index 0000000000..882494e957 Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-3.png b/images/pe/edge/integrations/placeholder-feature-step-3.png deleted file mode 100644 index cba6209231..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-3.webp b/images/pe/edge/integrations/placeholder-feature-step-3.webp new file mode 100644 index 0000000000..e25583e10e Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-3.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-4-preview.png b/images/pe/edge/integrations/placeholder-feature-step-4-preview.png deleted file mode 100644 index 0770176a98..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-4-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-4-preview.webp b/images/pe/edge/integrations/placeholder-feature-step-4-preview.webp new file mode 100644 index 0000000000..0425602899 Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-4-preview.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-4.png b/images/pe/edge/integrations/placeholder-feature-step-4.png deleted file mode 100644 index 997c763a3a..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-4.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-4.webp b/images/pe/edge/integrations/placeholder-feature-step-4.webp new file mode 100644 index 0000000000..afbf6519d0 Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-4.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-5-preview.png b/images/pe/edge/integrations/placeholder-feature-step-5-preview.png deleted file mode 100644 index 37a1f36528..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-5-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-5-preview.webp b/images/pe/edge/integrations/placeholder-feature-step-5-preview.webp new file mode 100644 index 0000000000..704b638003 Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-5-preview.webp differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-5.png b/images/pe/edge/integrations/placeholder-feature-step-5.png deleted file mode 100644 index 8d3f94a12a..0000000000 Binary files a/images/pe/edge/integrations/placeholder-feature-step-5.png and /dev/null differ diff --git a/images/pe/edge/integrations/placeholder-feature-step-5.webp b/images/pe/edge/integrations/placeholder-feature-step-5.webp new file mode 100644 index 0000000000..de99fcb8ca Binary files /dev/null and b/images/pe/edge/integrations/placeholder-feature-step-5.webp differ diff --git a/images/pe/edge/integrations/remote/add-converter-step-1-preview.png b/images/pe/edge/integrations/remote/add-converter-step-1-preview.png deleted file mode 100644 index 4215cf6e77..0000000000 Binary files a/images/pe/edge/integrations/remote/add-converter-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-converter-step-1-preview.webp b/images/pe/edge/integrations/remote/add-converter-step-1-preview.webp new file mode 100644 index 0000000000..66e217314b Binary files /dev/null and b/images/pe/edge/integrations/remote/add-converter-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/remote/add-converter-step-1.png b/images/pe/edge/integrations/remote/add-converter-step-1.png deleted file mode 100644 index 2fe23a21f9..0000000000 Binary files a/images/pe/edge/integrations/remote/add-converter-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-converter-step-1.webp b/images/pe/edge/integrations/remote/add-converter-step-1.webp new file mode 100644 index 0000000000..21215ab0e7 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-converter-step-1.webp differ diff --git a/images/pe/edge/integrations/remote/add-converter-step-2-preview.png b/images/pe/edge/integrations/remote/add-converter-step-2-preview.png deleted file mode 100644 index c4a6bc7287..0000000000 Binary files a/images/pe/edge/integrations/remote/add-converter-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-converter-step-2-preview.webp b/images/pe/edge/integrations/remote/add-converter-step-2-preview.webp new file mode 100644 index 0000000000..ac98f44027 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-converter-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/remote/add-converter-step-2.png b/images/pe/edge/integrations/remote/add-converter-step-2.png deleted file mode 100644 index b055409789..0000000000 Binary files a/images/pe/edge/integrations/remote/add-converter-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-converter-step-2.webp b/images/pe/edge/integrations/remote/add-converter-step-2.webp new file mode 100644 index 0000000000..b07239401e Binary files /dev/null and b/images/pe/edge/integrations/remote/add-converter-step-2.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-1-preview.png b/images/pe/edge/integrations/remote/add-integration-template-step-1-preview.png deleted file mode 100644 index b286131c0f..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-1-preview.webp b/images/pe/edge/integrations/remote/add-integration-template-step-1-preview.webp new file mode 100644 index 0000000000..961c1846f9 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-1.png b/images/pe/edge/integrations/remote/add-integration-template-step-1.png deleted file mode 100644 index d8093e6821..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-1.webp b/images/pe/edge/integrations/remote/add-integration-template-step-1.webp new file mode 100644 index 0000000000..106fcb2c54 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-1.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-2-preview.png b/images/pe/edge/integrations/remote/add-integration-template-step-2-preview.png deleted file mode 100644 index e46dadb19f..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-2-preview.webp b/images/pe/edge/integrations/remote/add-integration-template-step-2-preview.webp new file mode 100644 index 0000000000..67e6a7bce7 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-2.png b/images/pe/edge/integrations/remote/add-integration-template-step-2.png deleted file mode 100644 index 8d4d56d051..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-2.webp b/images/pe/edge/integrations/remote/add-integration-template-step-2.webp new file mode 100644 index 0000000000..597b4dc334 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-2.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-3-preview.png b/images/pe/edge/integrations/remote/add-integration-template-step-3-preview.png deleted file mode 100644 index b44fe8f5c4..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-3-preview.webp b/images/pe/edge/integrations/remote/add-integration-template-step-3-preview.webp new file mode 100644 index 0000000000..922d38a311 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-3.png b/images/pe/edge/integrations/remote/add-integration-template-step-3.png deleted file mode 100644 index dc3cff1128..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-3.webp b/images/pe/edge/integrations/remote/add-integration-template-step-3.webp new file mode 100644 index 0000000000..af636047ee Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-3.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-4-preview.png b/images/pe/edge/integrations/remote/add-integration-template-step-4-preview.png deleted file mode 100644 index fea0489f12..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-4-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-4-preview.webp b/images/pe/edge/integrations/remote/add-integration-template-step-4-preview.webp new file mode 100644 index 0000000000..e32f3ce03d Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-4-preview.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-4.png b/images/pe/edge/integrations/remote/add-integration-template-step-4.png deleted file mode 100644 index 7ce38eaaa3..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-4.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-4.webp b/images/pe/edge/integrations/remote/add-integration-template-step-4.webp new file mode 100644 index 0000000000..7a4ec5a549 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-4.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-5-preview.png b/images/pe/edge/integrations/remote/add-integration-template-step-5-preview.png deleted file mode 100644 index 15fe44186a..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-5-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-5-preview.webp b/images/pe/edge/integrations/remote/add-integration-template-step-5-preview.webp new file mode 100644 index 0000000000..4f1f4e1d3c Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-5-preview.webp differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-5.png b/images/pe/edge/integrations/remote/add-integration-template-step-5.png deleted file mode 100644 index 7febbca364..0000000000 Binary files a/images/pe/edge/integrations/remote/add-integration-template-step-5.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/add-integration-template-step-5.webp b/images/pe/edge/integrations/remote/add-integration-template-step-5.webp new file mode 100644 index 0000000000..3cad688cd6 Binary files /dev/null and b/images/pe/edge/integrations/remote/add-integration-template-step-5.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-1-preview.png b/images/pe/edge/integrations/remote/assign-integration-step-1-preview.png deleted file mode 100644 index 80b159d6b0..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-1-preview.webp b/images/pe/edge/integrations/remote/assign-integration-step-1-preview.webp new file mode 100644 index 0000000000..92d16cf2f0 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-1.png b/images/pe/edge/integrations/remote/assign-integration-step-1.png deleted file mode 100644 index 3d812f58e5..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-1.webp b/images/pe/edge/integrations/remote/assign-integration-step-1.webp new file mode 100644 index 0000000000..de029a8a53 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-1.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-2-preview.png b/images/pe/edge/integrations/remote/assign-integration-step-2-preview.png deleted file mode 100644 index 47b82f8682..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-2-preview.webp b/images/pe/edge/integrations/remote/assign-integration-step-2-preview.webp new file mode 100644 index 0000000000..c99321aac6 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-2.png b/images/pe/edge/integrations/remote/assign-integration-step-2.png deleted file mode 100644 index 2dc8b33f78..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-2.webp b/images/pe/edge/integrations/remote/assign-integration-step-2.webp new file mode 100644 index 0000000000..17df1babd1 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-2.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-3-preview.png b/images/pe/edge/integrations/remote/assign-integration-step-3-preview.png deleted file mode 100644 index c11018f5e1..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-3-preview.webp b/images/pe/edge/integrations/remote/assign-integration-step-3-preview.webp new file mode 100644 index 0000000000..a145c8965c Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-3.png b/images/pe/edge/integrations/remote/assign-integration-step-3.png deleted file mode 100644 index b72cbbef33..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-3.webp b/images/pe/edge/integrations/remote/assign-integration-step-3.webp new file mode 100644 index 0000000000..86402de308 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-3.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-4-preview.png b/images/pe/edge/integrations/remote/assign-integration-step-4-preview.png deleted file mode 100644 index 308c48c529..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-4-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-4-preview.webp b/images/pe/edge/integrations/remote/assign-integration-step-4-preview.webp new file mode 100644 index 0000000000..acd798cbfa Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-4-preview.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-4.png b/images/pe/edge/integrations/remote/assign-integration-step-4.png deleted file mode 100644 index c396f56c16..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-4.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-4.webp b/images/pe/edge/integrations/remote/assign-integration-step-4.webp new file mode 100644 index 0000000000..2c4210b501 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-4.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-5-preview.png b/images/pe/edge/integrations/remote/assign-integration-step-5-preview.png deleted file mode 100644 index 8f95e22526..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-5-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-5-preview.webp b/images/pe/edge/integrations/remote/assign-integration-step-5-preview.webp new file mode 100644 index 0000000000..ba46108566 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-5-preview.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-5.png b/images/pe/edge/integrations/remote/assign-integration-step-5.png deleted file mode 100644 index 86a929b740..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-5.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-5.webp b/images/pe/edge/integrations/remote/assign-integration-step-5.webp new file mode 100644 index 0000000000..a3f8b35832 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-5.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-6-preview.png b/images/pe/edge/integrations/remote/assign-integration-step-6-preview.png deleted file mode 100644 index 0e598dbc78..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-6-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-6-preview.webp b/images/pe/edge/integrations/remote/assign-integration-step-6-preview.webp new file mode 100644 index 0000000000..7a59968d39 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-6-preview.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-6.png b/images/pe/edge/integrations/remote/assign-integration-step-6.png deleted file mode 100644 index 34ccd7dbc4..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-6.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-6.webp b/images/pe/edge/integrations/remote/assign-integration-step-6.webp new file mode 100644 index 0000000000..d63691368b Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-6.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-7-preview.png b/images/pe/edge/integrations/remote/assign-integration-step-7-preview.png deleted file mode 100644 index ee71f17de1..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-7-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-7-preview.webp b/images/pe/edge/integrations/remote/assign-integration-step-7-preview.webp new file mode 100644 index 0000000000..d3fe701abe Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-7-preview.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-7.png b/images/pe/edge/integrations/remote/assign-integration-step-7.png deleted file mode 100644 index e9695174cd..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-7.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-7.webp b/images/pe/edge/integrations/remote/assign-integration-step-7.webp new file mode 100644 index 0000000000..da98c350fd Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-7.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-8-preview.png b/images/pe/edge/integrations/remote/assign-integration-step-8-preview.png deleted file mode 100644 index 3a23161292..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-8-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-8-preview.webp b/images/pe/edge/integrations/remote/assign-integration-step-8-preview.webp new file mode 100644 index 0000000000..7188ba1e78 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-8-preview.webp differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-8.png b/images/pe/edge/integrations/remote/assign-integration-step-8.png deleted file mode 100644 index 4aeb67fd1d..0000000000 Binary files a/images/pe/edge/integrations/remote/assign-integration-step-8.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/assign-integration-step-8.webp b/images/pe/edge/integrations/remote/assign-integration-step-8.webp new file mode 100644 index 0000000000..a58d5ff731 Binary files /dev/null and b/images/pe/edge/integrations/remote/assign-integration-step-8.webp differ diff --git a/images/pe/edge/integrations/remote/copy-credentials-preview.png b/images/pe/edge/integrations/remote/copy-credentials-preview.png deleted file mode 100644 index 844794c6b8..0000000000 Binary files a/images/pe/edge/integrations/remote/copy-credentials-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/copy-credentials-preview.webp b/images/pe/edge/integrations/remote/copy-credentials-preview.webp new file mode 100644 index 0000000000..63b2988b16 Binary files /dev/null and b/images/pe/edge/integrations/remote/copy-credentials-preview.webp differ diff --git a/images/pe/edge/integrations/remote/copy-credentials.png b/images/pe/edge/integrations/remote/copy-credentials.png deleted file mode 100644 index 409bac6a42..0000000000 Binary files a/images/pe/edge/integrations/remote/copy-credentials.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/copy-credentials.webp b/images/pe/edge/integrations/remote/copy-credentials.webp new file mode 100644 index 0000000000..310ed3696c Binary files /dev/null and b/images/pe/edge/integrations/remote/copy-credentials.webp differ diff --git a/images/pe/edge/integrations/remote/device-1-edge-preview.png b/images/pe/edge/integrations/remote/device-1-edge-preview.png deleted file mode 100644 index 471cde387b..0000000000 Binary files a/images/pe/edge/integrations/remote/device-1-edge-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/device-1-edge-preview.webp b/images/pe/edge/integrations/remote/device-1-edge-preview.webp new file mode 100644 index 0000000000..392ea31e4d Binary files /dev/null and b/images/pe/edge/integrations/remote/device-1-edge-preview.webp differ diff --git a/images/pe/edge/integrations/remote/device-1-edge.png b/images/pe/edge/integrations/remote/device-1-edge.png deleted file mode 100644 index d987ff4237..0000000000 Binary files a/images/pe/edge/integrations/remote/device-1-edge.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/device-1-edge.webp b/images/pe/edge/integrations/remote/device-1-edge.webp new file mode 100644 index 0000000000..351a807a64 Binary files /dev/null and b/images/pe/edge/integrations/remote/device-1-edge.webp differ diff --git a/images/pe/edge/integrations/remote/device-preview.webp b/images/pe/edge/integrations/remote/device-preview.webp new file mode 100644 index 0000000000..1a177e14ad Binary files /dev/null and b/images/pe/edge/integrations/remote/device-preview.webp differ diff --git a/images/pe/edge/integrations/remote/device.png b/images/pe/edge/integrations/remote/device.png deleted file mode 100644 index 2453b08d6f..0000000000 Binary files a/images/pe/edge/integrations/remote/device.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/device.webp b/images/pe/edge/integrations/remote/device.webp new file mode 100644 index 0000000000..8997fbbcaf Binary files /dev/null and b/images/pe/edge/integrations/remote/device.webp differ diff --git a/images/pe/edge/integrations/remote/send-uplink-step-1-preview.png b/images/pe/edge/integrations/remote/send-uplink-step-1-preview.png deleted file mode 100644 index f2029f6322..0000000000 Binary files a/images/pe/edge/integrations/remote/send-uplink-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/send-uplink-step-1-preview.webp b/images/pe/edge/integrations/remote/send-uplink-step-1-preview.webp new file mode 100644 index 0000000000..410a9b8060 Binary files /dev/null and b/images/pe/edge/integrations/remote/send-uplink-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/remote/send-uplink-step-1.png b/images/pe/edge/integrations/remote/send-uplink-step-1.png deleted file mode 100644 index b433bd6335..0000000000 Binary files a/images/pe/edge/integrations/remote/send-uplink-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/send-uplink-step-1.webp b/images/pe/edge/integrations/remote/send-uplink-step-1.webp new file mode 100644 index 0000000000..4e0cefd176 Binary files /dev/null and b/images/pe/edge/integrations/remote/send-uplink-step-1.webp differ diff --git a/images/pe/edge/integrations/remote/send-uplink-step-2-preview.png b/images/pe/edge/integrations/remote/send-uplink-step-2-preview.png deleted file mode 100644 index 0cefd3ef66..0000000000 Binary files a/images/pe/edge/integrations/remote/send-uplink-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/send-uplink-step-2-preview.webp b/images/pe/edge/integrations/remote/send-uplink-step-2-preview.webp new file mode 100644 index 0000000000..e1d21b5548 Binary files /dev/null and b/images/pe/edge/integrations/remote/send-uplink-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/remote/send-uplink-step-2.png b/images/pe/edge/integrations/remote/send-uplink-step-2.png deleted file mode 100644 index 2361c4df49..0000000000 Binary files a/images/pe/edge/integrations/remote/send-uplink-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/remote/send-uplink-step-2.webp b/images/pe/edge/integrations/remote/send-uplink-step-2.webp new file mode 100644 index 0000000000..44eff0234e Binary files /dev/null and b/images/pe/edge/integrations/remote/send-uplink-step-2.webp differ diff --git a/images/pe/edge/integrations/tcp/add-converter-step-1-preview.png b/images/pe/edge/integrations/tcp/add-converter-step-1-preview.png deleted file mode 100644 index bab3a5107f..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-converter-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-converter-step-1-preview.webp b/images/pe/edge/integrations/tcp/add-converter-step-1-preview.webp new file mode 100644 index 0000000000..4678189608 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-converter-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-converter-step-1.png b/images/pe/edge/integrations/tcp/add-converter-step-1.png deleted file mode 100644 index 8e8503f756..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-converter-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-converter-step-1.webp b/images/pe/edge/integrations/tcp/add-converter-step-1.webp new file mode 100644 index 0000000000..6f9f7a6064 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-converter-step-1.webp differ diff --git a/images/pe/edge/integrations/tcp/add-converter-step-2-preview.png b/images/pe/edge/integrations/tcp/add-converter-step-2-preview.png deleted file mode 100644 index 597faae056..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-converter-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-converter-step-2-preview.webp b/images/pe/edge/integrations/tcp/add-converter-step-2-preview.webp new file mode 100644 index 0000000000..8a1a40c582 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-converter-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-converter-step-2.png b/images/pe/edge/integrations/tcp/add-converter-step-2.png deleted file mode 100644 index 205d4752d1..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-converter-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-converter-step-2.webp b/images/pe/edge/integrations/tcp/add-converter-step-2.webp new file mode 100644 index 0000000000..2a2f09baba Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-converter-step-2.webp differ diff --git a/images/pe/edge/integrations/tcp/add-downlink-step-1-preview.png b/images/pe/edge/integrations/tcp/add-downlink-step-1-preview.png deleted file mode 100644 index aff4420ea5..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-downlink-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-downlink-step-1-preview.webp b/images/pe/edge/integrations/tcp/add-downlink-step-1-preview.webp new file mode 100644 index 0000000000..5880a78cbb Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-downlink-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-downlink-step-1.png b/images/pe/edge/integrations/tcp/add-downlink-step-1.png deleted file mode 100644 index de324d74bc..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-downlink-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-downlink-step-1.webp b/images/pe/edge/integrations/tcp/add-downlink-step-1.webp new file mode 100644 index 0000000000..74b501b8d5 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-downlink-step-1.webp differ diff --git a/images/pe/edge/integrations/tcp/add-downlink-step-2-preview.png b/images/pe/edge/integrations/tcp/add-downlink-step-2-preview.png deleted file mode 100644 index 5da42885b5..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-downlink-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-downlink-step-2-preview.webp b/images/pe/edge/integrations/tcp/add-downlink-step-2-preview.webp new file mode 100644 index 0000000000..2d449abcf1 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-downlink-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-downlink-step-2.png b/images/pe/edge/integrations/tcp/add-downlink-step-2.png deleted file mode 100644 index a2176f2e13..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-downlink-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-downlink-step-2.webp b/images/pe/edge/integrations/tcp/add-downlink-step-2.webp new file mode 100644 index 0000000000..a740574e00 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-downlink-step-2.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-0-preview.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-0-preview.webp new file mode 100644 index 0000000000..4c0791f6be Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-0-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-0.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-0.webp new file mode 100644 index 0000000000..1e4577b904 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-0.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-1-preview.png b/images/pe/edge/integrations/tcp/add-integration-template-step-1-preview.png deleted file mode 100644 index 23aa230089..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-integration-template-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-1-preview.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-1-preview.webp new file mode 100644 index 0000000000..8ddd1eba5a Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-1.png b/images/pe/edge/integrations/tcp/add-integration-template-step-1.png deleted file mode 100644 index 0a631867ad..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-integration-template-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-1.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-1.webp new file mode 100644 index 0000000000..4b15b7be1a Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-1.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-2-preview.png b/images/pe/edge/integrations/tcp/add-integration-template-step-2-preview.png deleted file mode 100644 index 2914e7f377..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-integration-template-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-2-preview.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-2-preview.webp new file mode 100644 index 0000000000..748ccf11d8 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-2.png b/images/pe/edge/integrations/tcp/add-integration-template-step-2.png deleted file mode 100644 index d884bc4868..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-integration-template-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-2.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-2.webp new file mode 100644 index 0000000000..9e48fc6a1f Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-2.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-3-preview.png b/images/pe/edge/integrations/tcp/add-integration-template-step-3-preview.png deleted file mode 100644 index 434ea4b60d..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-integration-template-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-3-preview.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-3-preview.webp new file mode 100644 index 0000000000..63e92fc5e1 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-3.png b/images/pe/edge/integrations/tcp/add-integration-template-step-3.png deleted file mode 100644 index 9d2f967c62..0000000000 Binary files a/images/pe/edge/integrations/tcp/add-integration-template-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-3.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-3.webp new file mode 100644 index 0000000000..b612c6bc3a Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-3.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-4-preview.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-4-preview.webp new file mode 100644 index 0000000000..a447ba998e Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-4-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/add-integration-template-step-4.webp b/images/pe/edge/integrations/tcp/add-integration-template-step-4.webp new file mode 100644 index 0000000000..5b1acb3cb3 Binary files /dev/null and b/images/pe/edge/integrations/tcp/add-integration-template-step-4.webp differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-1-preview.png b/images/pe/edge/integrations/tcp/assign-integration-step-1-preview.png deleted file mode 100644 index 5004f09719..0000000000 Binary files a/images/pe/edge/integrations/tcp/assign-integration-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-1-preview.webp b/images/pe/edge/integrations/tcp/assign-integration-step-1-preview.webp new file mode 100644 index 0000000000..6f0b4bb962 Binary files /dev/null and b/images/pe/edge/integrations/tcp/assign-integration-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-1.png b/images/pe/edge/integrations/tcp/assign-integration-step-1.png deleted file mode 100644 index 24143ff9a6..0000000000 Binary files a/images/pe/edge/integrations/tcp/assign-integration-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-1.webp b/images/pe/edge/integrations/tcp/assign-integration-step-1.webp new file mode 100644 index 0000000000..db9c9a41fe Binary files /dev/null and b/images/pe/edge/integrations/tcp/assign-integration-step-1.webp differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-2-preview.png b/images/pe/edge/integrations/tcp/assign-integration-step-2-preview.png deleted file mode 100644 index fbaef18bc0..0000000000 Binary files a/images/pe/edge/integrations/tcp/assign-integration-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-2-preview.webp b/images/pe/edge/integrations/tcp/assign-integration-step-2-preview.webp new file mode 100644 index 0000000000..a95a0ed728 Binary files /dev/null and b/images/pe/edge/integrations/tcp/assign-integration-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-2.png b/images/pe/edge/integrations/tcp/assign-integration-step-2.png deleted file mode 100644 index 16a043ea53..0000000000 Binary files a/images/pe/edge/integrations/tcp/assign-integration-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-2.webp b/images/pe/edge/integrations/tcp/assign-integration-step-2.webp new file mode 100644 index 0000000000..bfd5a196bd Binary files /dev/null and b/images/pe/edge/integrations/tcp/assign-integration-step-2.webp differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-3-preview.png b/images/pe/edge/integrations/tcp/assign-integration-step-3-preview.png deleted file mode 100644 index 62be25d9b8..0000000000 Binary files a/images/pe/edge/integrations/tcp/assign-integration-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-3-preview.webp b/images/pe/edge/integrations/tcp/assign-integration-step-3-preview.webp new file mode 100644 index 0000000000..8b085f5a31 Binary files /dev/null and b/images/pe/edge/integrations/tcp/assign-integration-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-3.png b/images/pe/edge/integrations/tcp/assign-integration-step-3.png deleted file mode 100644 index b63a114808..0000000000 Binary files a/images/pe/edge/integrations/tcp/assign-integration-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/assign-integration-step-3.webp b/images/pe/edge/integrations/tcp/assign-integration-step-3.webp new file mode 100644 index 0000000000..09ee23a5c8 Binary files /dev/null and b/images/pe/edge/integrations/tcp/assign-integration-step-3.webp differ diff --git a/images/pe/edge/integrations/tcp/downlink-rule-step-1-preview.png b/images/pe/edge/integrations/tcp/downlink-rule-step-1-preview.png deleted file mode 100644 index 7eb22dc517..0000000000 Binary files a/images/pe/edge/integrations/tcp/downlink-rule-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/downlink-rule-step-1-preview.webp b/images/pe/edge/integrations/tcp/downlink-rule-step-1-preview.webp new file mode 100644 index 0000000000..76b17a6e40 Binary files /dev/null and b/images/pe/edge/integrations/tcp/downlink-rule-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/downlink-rule-step-1.png b/images/pe/edge/integrations/tcp/downlink-rule-step-1.png deleted file mode 100644 index b5bbcd0c7a..0000000000 Binary files a/images/pe/edge/integrations/tcp/downlink-rule-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/downlink-rule-step-1.webp b/images/pe/edge/integrations/tcp/downlink-rule-step-1.webp new file mode 100644 index 0000000000..16e3d479e8 Binary files /dev/null and b/images/pe/edge/integrations/tcp/downlink-rule-step-1.webp differ diff --git a/images/pe/edge/integrations/tcp/downlink-rule-step-2-preview.png b/images/pe/edge/integrations/tcp/downlink-rule-step-2-preview.png deleted file mode 100644 index fbbc6b84d7..0000000000 Binary files a/images/pe/edge/integrations/tcp/downlink-rule-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/downlink-rule-step-2-preview.webp b/images/pe/edge/integrations/tcp/downlink-rule-step-2-preview.webp new file mode 100644 index 0000000000..a0fffcef54 Binary files /dev/null and b/images/pe/edge/integrations/tcp/downlink-rule-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/downlink-rule-step-2.png b/images/pe/edge/integrations/tcp/downlink-rule-step-2.png deleted file mode 100644 index 213b2cf7c7..0000000000 Binary files a/images/pe/edge/integrations/tcp/downlink-rule-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/downlink-rule-step-2.webp b/images/pe/edge/integrations/tcp/downlink-rule-step-2.webp new file mode 100644 index 0000000000..78b0bb83ac Binary files /dev/null and b/images/pe/edge/integrations/tcp/downlink-rule-step-2.webp differ diff --git a/images/pe/edge/integrations/tcp/modify-converter-step-1-preview.png b/images/pe/edge/integrations/tcp/modify-converter-step-1-preview.png deleted file mode 100644 index 4c586c18f6..0000000000 Binary files a/images/pe/edge/integrations/tcp/modify-converter-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/modify-converter-step-1-preview.webp b/images/pe/edge/integrations/tcp/modify-converter-step-1-preview.webp new file mode 100644 index 0000000000..1d47e81061 Binary files /dev/null and b/images/pe/edge/integrations/tcp/modify-converter-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/modify-converter-step-1.png b/images/pe/edge/integrations/tcp/modify-converter-step-1.png deleted file mode 100644 index 56482272d1..0000000000 Binary files a/images/pe/edge/integrations/tcp/modify-converter-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/modify-converter-step-1.webp b/images/pe/edge/integrations/tcp/modify-converter-step-1.webp new file mode 100644 index 0000000000..d0c19e4c0e Binary files /dev/null and b/images/pe/edge/integrations/tcp/modify-converter-step-1.webp differ diff --git a/images/pe/edge/integrations/tcp/modify-converter-step-2-preview.png b/images/pe/edge/integrations/tcp/modify-converter-step-2-preview.png deleted file mode 100644 index 6969cb7db5..0000000000 Binary files a/images/pe/edge/integrations/tcp/modify-converter-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/modify-converter-step-2-preview.webp b/images/pe/edge/integrations/tcp/modify-converter-step-2-preview.webp new file mode 100644 index 0000000000..ca5d5aa78e Binary files /dev/null and b/images/pe/edge/integrations/tcp/modify-converter-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/tcp/modify-converter-step-2.png b/images/pe/edge/integrations/tcp/modify-converter-step-2.png deleted file mode 100644 index b4c0c0e76d..0000000000 Binary files a/images/pe/edge/integrations/tcp/modify-converter-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/tcp/modify-converter-step-2.webp b/images/pe/edge/integrations/tcp/modify-converter-step-2.webp new file mode 100644 index 0000000000..3838139b50 Binary files /dev/null and b/images/pe/edge/integrations/tcp/modify-converter-step-2.webp differ diff --git a/images/pe/edge/integrations/udp/add-converter-step-1-preview.png b/images/pe/edge/integrations/udp/add-converter-step-1-preview.png deleted file mode 100644 index bab3a5107f..0000000000 Binary files a/images/pe/edge/integrations/udp/add-converter-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-converter-step-1-preview.webp b/images/pe/edge/integrations/udp/add-converter-step-1-preview.webp new file mode 100644 index 0000000000..559b567af7 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-converter-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-converter-step-1.png b/images/pe/edge/integrations/udp/add-converter-step-1.png deleted file mode 100644 index 8e8503f756..0000000000 Binary files a/images/pe/edge/integrations/udp/add-converter-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-converter-step-1.webp b/images/pe/edge/integrations/udp/add-converter-step-1.webp new file mode 100644 index 0000000000..143ac09778 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-converter-step-1.webp differ diff --git a/images/pe/edge/integrations/udp/add-converter-step-2-preview.png b/images/pe/edge/integrations/udp/add-converter-step-2-preview.png deleted file mode 100644 index 8ac3e95400..0000000000 Binary files a/images/pe/edge/integrations/udp/add-converter-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-converter-step-2-preview.webp b/images/pe/edge/integrations/udp/add-converter-step-2-preview.webp new file mode 100644 index 0000000000..b17ab6d38b Binary files /dev/null and b/images/pe/edge/integrations/udp/add-converter-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-converter-step-2.png b/images/pe/edge/integrations/udp/add-converter-step-2.png deleted file mode 100644 index b96b99e63c..0000000000 Binary files a/images/pe/edge/integrations/udp/add-converter-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-converter-step-2.webp b/images/pe/edge/integrations/udp/add-converter-step-2.webp new file mode 100644 index 0000000000..94db4664c4 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-converter-step-2.webp differ diff --git a/images/pe/edge/integrations/udp/add-downlink-step-1-preview.png b/images/pe/edge/integrations/udp/add-downlink-step-1-preview.png deleted file mode 100644 index 57a87f6061..0000000000 Binary files a/images/pe/edge/integrations/udp/add-downlink-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-downlink-step-1-preview.webp b/images/pe/edge/integrations/udp/add-downlink-step-1-preview.webp new file mode 100644 index 0000000000..84ebf34d05 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-downlink-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-downlink-step-1.png b/images/pe/edge/integrations/udp/add-downlink-step-1.png deleted file mode 100644 index 8195da75cb..0000000000 Binary files a/images/pe/edge/integrations/udp/add-downlink-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-downlink-step-1.webp b/images/pe/edge/integrations/udp/add-downlink-step-1.webp new file mode 100644 index 0000000000..06292dda63 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-downlink-step-1.webp differ diff --git a/images/pe/edge/integrations/udp/add-downlink-step-2-preview.png b/images/pe/edge/integrations/udp/add-downlink-step-2-preview.png deleted file mode 100644 index e316fd1c2e..0000000000 Binary files a/images/pe/edge/integrations/udp/add-downlink-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-downlink-step-2-preview.webp b/images/pe/edge/integrations/udp/add-downlink-step-2-preview.webp new file mode 100644 index 0000000000..b2e7c53bfd Binary files /dev/null and b/images/pe/edge/integrations/udp/add-downlink-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-downlink-step-2.png b/images/pe/edge/integrations/udp/add-downlink-step-2.png deleted file mode 100644 index b5d014d8e6..0000000000 Binary files a/images/pe/edge/integrations/udp/add-downlink-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-downlink-step-2.webp b/images/pe/edge/integrations/udp/add-downlink-step-2.webp new file mode 100644 index 0000000000..b260e80e7e Binary files /dev/null and b/images/pe/edge/integrations/udp/add-downlink-step-2.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-0-preview.webp b/images/pe/edge/integrations/udp/add-integration-template-step-0-preview.webp new file mode 100644 index 0000000000..4c0791f6be Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-0-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-0.webp b/images/pe/edge/integrations/udp/add-integration-template-step-0.webp new file mode 100644 index 0000000000..1e4577b904 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-0.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-1-preview.png b/images/pe/edge/integrations/udp/add-integration-template-step-1-preview.png deleted file mode 100644 index 23aa230089..0000000000 Binary files a/images/pe/edge/integrations/udp/add-integration-template-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-1-preview.webp b/images/pe/edge/integrations/udp/add-integration-template-step-1-preview.webp new file mode 100644 index 0000000000..4b1ed05988 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-1.png b/images/pe/edge/integrations/udp/add-integration-template-step-1.png deleted file mode 100644 index 0a631867ad..0000000000 Binary files a/images/pe/edge/integrations/udp/add-integration-template-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-1.webp b/images/pe/edge/integrations/udp/add-integration-template-step-1.webp new file mode 100644 index 0000000000..c56596ee29 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-1.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-2-preview.png b/images/pe/edge/integrations/udp/add-integration-template-step-2-preview.png deleted file mode 100644 index 7a2afe592f..0000000000 Binary files a/images/pe/edge/integrations/udp/add-integration-template-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-2-preview.webp b/images/pe/edge/integrations/udp/add-integration-template-step-2-preview.webp new file mode 100644 index 0000000000..c3c543df88 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-2.png b/images/pe/edge/integrations/udp/add-integration-template-step-2.png deleted file mode 100644 index 65840bd4f7..0000000000 Binary files a/images/pe/edge/integrations/udp/add-integration-template-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-2.webp b/images/pe/edge/integrations/udp/add-integration-template-step-2.webp new file mode 100644 index 0000000000..9fc73f03fa Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-2.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-3-preview.png b/images/pe/edge/integrations/udp/add-integration-template-step-3-preview.png deleted file mode 100644 index d2c0923646..0000000000 Binary files a/images/pe/edge/integrations/udp/add-integration-template-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-3-preview.webp b/images/pe/edge/integrations/udp/add-integration-template-step-3-preview.webp new file mode 100644 index 0000000000..9ac1f1a4fb Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-3.png b/images/pe/edge/integrations/udp/add-integration-template-step-3.png deleted file mode 100644 index 35b5d592d8..0000000000 Binary files a/images/pe/edge/integrations/udp/add-integration-template-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-3.webp b/images/pe/edge/integrations/udp/add-integration-template-step-3.webp new file mode 100644 index 0000000000..9b44813c0f Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-3.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-4-preview.webp b/images/pe/edge/integrations/udp/add-integration-template-step-4-preview.webp new file mode 100644 index 0000000000..8b253b3f7f Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-4-preview.webp differ diff --git a/images/pe/edge/integrations/udp/add-integration-template-step-4.webp b/images/pe/edge/integrations/udp/add-integration-template-step-4.webp new file mode 100644 index 0000000000..f551a6c840 Binary files /dev/null and b/images/pe/edge/integrations/udp/add-integration-template-step-4.webp differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-1-preview.png b/images/pe/edge/integrations/udp/assign-integration-step-1-preview.png deleted file mode 100644 index 5004f09719..0000000000 Binary files a/images/pe/edge/integrations/udp/assign-integration-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-1-preview.webp b/images/pe/edge/integrations/udp/assign-integration-step-1-preview.webp new file mode 100644 index 0000000000..cf786b6597 Binary files /dev/null and b/images/pe/edge/integrations/udp/assign-integration-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-1.png b/images/pe/edge/integrations/udp/assign-integration-step-1.png deleted file mode 100644 index 24143ff9a6..0000000000 Binary files a/images/pe/edge/integrations/udp/assign-integration-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-1.webp b/images/pe/edge/integrations/udp/assign-integration-step-1.webp new file mode 100644 index 0000000000..9072ef9f93 Binary files /dev/null and b/images/pe/edge/integrations/udp/assign-integration-step-1.webp differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-2-preview.png b/images/pe/edge/integrations/udp/assign-integration-step-2-preview.png deleted file mode 100644 index 58059d70e2..0000000000 Binary files a/images/pe/edge/integrations/udp/assign-integration-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-2-preview.webp b/images/pe/edge/integrations/udp/assign-integration-step-2-preview.webp new file mode 100644 index 0000000000..5b4b71ce39 Binary files /dev/null and b/images/pe/edge/integrations/udp/assign-integration-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-2.png b/images/pe/edge/integrations/udp/assign-integration-step-2.png deleted file mode 100644 index e453e47dd9..0000000000 Binary files a/images/pe/edge/integrations/udp/assign-integration-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-2.webp b/images/pe/edge/integrations/udp/assign-integration-step-2.webp new file mode 100644 index 0000000000..4e333a0fe9 Binary files /dev/null and b/images/pe/edge/integrations/udp/assign-integration-step-2.webp differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-3-preview.png b/images/pe/edge/integrations/udp/assign-integration-step-3-preview.png deleted file mode 100644 index 1b032db158..0000000000 Binary files a/images/pe/edge/integrations/udp/assign-integration-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-3-preview.webp b/images/pe/edge/integrations/udp/assign-integration-step-3-preview.webp new file mode 100644 index 0000000000..8255d6349b Binary files /dev/null and b/images/pe/edge/integrations/udp/assign-integration-step-3-preview.webp differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-3.png b/images/pe/edge/integrations/udp/assign-integration-step-3.png deleted file mode 100644 index 582342eef5..0000000000 Binary files a/images/pe/edge/integrations/udp/assign-integration-step-3.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/assign-integration-step-3.webp b/images/pe/edge/integrations/udp/assign-integration-step-3.webp new file mode 100644 index 0000000000..4920f9eb6b Binary files /dev/null and b/images/pe/edge/integrations/udp/assign-integration-step-3.webp differ diff --git a/images/pe/edge/integrations/udp/downlink-rule-step-1-preview.png b/images/pe/edge/integrations/udp/downlink-rule-step-1-preview.png deleted file mode 100644 index b9c704ba76..0000000000 Binary files a/images/pe/edge/integrations/udp/downlink-rule-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/downlink-rule-step-1-preview.webp b/images/pe/edge/integrations/udp/downlink-rule-step-1-preview.webp new file mode 100644 index 0000000000..bd1ea86cd7 Binary files /dev/null and b/images/pe/edge/integrations/udp/downlink-rule-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/udp/downlink-rule-step-1.png b/images/pe/edge/integrations/udp/downlink-rule-step-1.png deleted file mode 100644 index 9b79937452..0000000000 Binary files a/images/pe/edge/integrations/udp/downlink-rule-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/downlink-rule-step-1.webp b/images/pe/edge/integrations/udp/downlink-rule-step-1.webp new file mode 100644 index 0000000000..e1893f7248 Binary files /dev/null and b/images/pe/edge/integrations/udp/downlink-rule-step-1.webp differ diff --git a/images/pe/edge/integrations/udp/downlink-rule-step-2-preview.png b/images/pe/edge/integrations/udp/downlink-rule-step-2-preview.png deleted file mode 100644 index fbbc6b84d7..0000000000 Binary files a/images/pe/edge/integrations/udp/downlink-rule-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/downlink-rule-step-2-preview.webp b/images/pe/edge/integrations/udp/downlink-rule-step-2-preview.webp new file mode 100644 index 0000000000..60223ac77f Binary files /dev/null and b/images/pe/edge/integrations/udp/downlink-rule-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/udp/downlink-rule-step-2.png b/images/pe/edge/integrations/udp/downlink-rule-step-2.png deleted file mode 100644 index 213b2cf7c7..0000000000 Binary files a/images/pe/edge/integrations/udp/downlink-rule-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/downlink-rule-step-2.webp b/images/pe/edge/integrations/udp/downlink-rule-step-2.webp new file mode 100644 index 0000000000..9764a77e04 Binary files /dev/null and b/images/pe/edge/integrations/udp/downlink-rule-step-2.webp differ diff --git a/images/pe/edge/integrations/udp/modify-converter-step-1-preview.png b/images/pe/edge/integrations/udp/modify-converter-step-1-preview.png deleted file mode 100644 index 38360254c9..0000000000 Binary files a/images/pe/edge/integrations/udp/modify-converter-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/modify-converter-step-1-preview.webp b/images/pe/edge/integrations/udp/modify-converter-step-1-preview.webp new file mode 100644 index 0000000000..1526dbaf8b Binary files /dev/null and b/images/pe/edge/integrations/udp/modify-converter-step-1-preview.webp differ diff --git a/images/pe/edge/integrations/udp/modify-converter-step-1.png b/images/pe/edge/integrations/udp/modify-converter-step-1.png deleted file mode 100644 index 232fc7d40a..0000000000 Binary files a/images/pe/edge/integrations/udp/modify-converter-step-1.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/modify-converter-step-1.webp b/images/pe/edge/integrations/udp/modify-converter-step-1.webp new file mode 100644 index 0000000000..d110280629 Binary files /dev/null and b/images/pe/edge/integrations/udp/modify-converter-step-1.webp differ diff --git a/images/pe/edge/integrations/udp/modify-converter-step-2-preview.png b/images/pe/edge/integrations/udp/modify-converter-step-2-preview.png deleted file mode 100644 index e584bd91d4..0000000000 Binary files a/images/pe/edge/integrations/udp/modify-converter-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/modify-converter-step-2-preview.webp b/images/pe/edge/integrations/udp/modify-converter-step-2-preview.webp new file mode 100644 index 0000000000..e4f80f3a0d Binary files /dev/null and b/images/pe/edge/integrations/udp/modify-converter-step-2-preview.webp differ diff --git a/images/pe/edge/integrations/udp/modify-converter-step-2.png b/images/pe/edge/integrations/udp/modify-converter-step-2.png deleted file mode 100644 index 83679017b0..0000000000 Binary files a/images/pe/edge/integrations/udp/modify-converter-step-2.png and /dev/null differ diff --git a/images/pe/edge/integrations/udp/modify-converter-step-2.webp b/images/pe/edge/integrations/udp/modify-converter-step-2.webp new file mode 100644 index 0000000000..481c7337c3 Binary files /dev/null and b/images/pe/edge/integrations/udp/modify-converter-step-2.webp differ diff --git a/images/pe/edge/rule-engine/1-edge-rule-chain-preview.webp b/images/pe/edge/rule-engine/1-edge-rule-chain-preview.webp new file mode 100644 index 0000000000..15224f4a3e Binary files /dev/null and b/images/pe/edge/rule-engine/1-edge-rule-chain-preview.webp differ diff --git a/images/pe/edge/rule-engine/1-edge-rule-chain.webp b/images/pe/edge/rule-engine/1-edge-rule-chain.webp new file mode 100644 index 0000000000..f59cc59efc Binary files /dev/null and b/images/pe/edge/rule-engine/1-edge-rule-chain.webp differ diff --git a/images/pe/edge/rule-engine/2-create-rule-chain-template-preview.webp b/images/pe/edge/rule-engine/2-create-rule-chain-template-preview.webp new file mode 100644 index 0000000000..637b82eb1a Binary files /dev/null and b/images/pe/edge/rule-engine/2-create-rule-chain-template-preview.webp differ diff --git a/images/pe/edge/rule-engine/2-create-rule-chain-template.webp b/images/pe/edge/rule-engine/2-create-rule-chain-template.webp new file mode 100644 index 0000000000..c3ce46be67 Binary files /dev/null and b/images/pe/edge/rule-engine/2-create-rule-chain-template.webp differ diff --git a/images/pe/edge/rule-engine/3-in-the-list-preview.webp b/images/pe/edge/rule-engine/3-in-the-list-preview.webp new file mode 100644 index 0000000000..f7fb059acb Binary files /dev/null and b/images/pe/edge/rule-engine/3-in-the-list-preview.webp differ diff --git a/images/pe/edge/rule-engine/3-in-the-list.webp b/images/pe/edge/rule-engine/3-in-the-list.webp new file mode 100644 index 0000000000..836b8baafe Binary files /dev/null and b/images/pe/edge/rule-engine/3-in-the-list.webp differ diff --git a/images/pe/edge/rule-engine/4-configure-and-safe-preview.webp b/images/pe/edge/rule-engine/4-configure-and-safe-preview.webp new file mode 100644 index 0000000000..168136eca7 Binary files /dev/null and b/images/pe/edge/rule-engine/4-configure-and-safe-preview.webp differ diff --git a/images/pe/edge/rule-engine/4-configure-and-safe.webp b/images/pe/edge/rule-engine/4-configure-and-safe.webp new file mode 100644 index 0000000000..15adb77555 Binary files /dev/null and b/images/pe/edge/rule-engine/4-configure-and-safe.webp differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-1-preview.png b/images/pe/edge/rule-engine/assign-rule-chain-template-step-1-preview.png deleted file mode 100644 index f373cef578..0000000000 Binary files a/images/pe/edge/rule-engine/assign-rule-chain-template-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-1-preview.webp b/images/pe/edge/rule-engine/assign-rule-chain-template-step-1-preview.webp new file mode 100644 index 0000000000..b8ec6c7837 Binary files /dev/null and b/images/pe/edge/rule-engine/assign-rule-chain-template-step-1-preview.webp differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-1.png b/images/pe/edge/rule-engine/assign-rule-chain-template-step-1.png deleted file mode 100644 index 6a5aa4ea02..0000000000 Binary files a/images/pe/edge/rule-engine/assign-rule-chain-template-step-1.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-1.webp b/images/pe/edge/rule-engine/assign-rule-chain-template-step-1.webp new file mode 100644 index 0000000000..47fe271dfa Binary files /dev/null and b/images/pe/edge/rule-engine/assign-rule-chain-template-step-1.webp differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-2-preview.png b/images/pe/edge/rule-engine/assign-rule-chain-template-step-2-preview.png deleted file mode 100644 index 43a6e69833..0000000000 Binary files a/images/pe/edge/rule-engine/assign-rule-chain-template-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-2-preview.webp b/images/pe/edge/rule-engine/assign-rule-chain-template-step-2-preview.webp new file mode 100644 index 0000000000..8ffd94b08e Binary files /dev/null and b/images/pe/edge/rule-engine/assign-rule-chain-template-step-2-preview.webp differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-2.png b/images/pe/edge/rule-engine/assign-rule-chain-template-step-2.png deleted file mode 100644 index 1d23abe695..0000000000 Binary files a/images/pe/edge/rule-engine/assign-rule-chain-template-step-2.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-2.webp b/images/pe/edge/rule-engine/assign-rule-chain-template-step-2.webp new file mode 100644 index 0000000000..6ff6af15d4 Binary files /dev/null and b/images/pe/edge/rule-engine/assign-rule-chain-template-step-2.webp differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-3-preview.png b/images/pe/edge/rule-engine/assign-rule-chain-template-step-3-preview.png deleted file mode 100644 index 62753c8b3a..0000000000 Binary files a/images/pe/edge/rule-engine/assign-rule-chain-template-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-3-preview.webp b/images/pe/edge/rule-engine/assign-rule-chain-template-step-3-preview.webp new file mode 100644 index 0000000000..560980cdd5 Binary files /dev/null and b/images/pe/edge/rule-engine/assign-rule-chain-template-step-3-preview.webp differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-3.png b/images/pe/edge/rule-engine/assign-rule-chain-template-step-3.png deleted file mode 100644 index 77bc992890..0000000000 Binary files a/images/pe/edge/rule-engine/assign-rule-chain-template-step-3.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-3.webp b/images/pe/edge/rule-engine/assign-rule-chain-template-step-3.webp new file mode 100644 index 0000000000..763f5e3ef9 Binary files /dev/null and b/images/pe/edge/rule-engine/assign-rule-chain-template-step-3.webp differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-4-preview.png b/images/pe/edge/rule-engine/assign-rule-chain-template-step-4-preview.png deleted file mode 100644 index 95b1fcaadd..0000000000 Binary files a/images/pe/edge/rule-engine/assign-rule-chain-template-step-4-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-4-preview.webp b/images/pe/edge/rule-engine/assign-rule-chain-template-step-4-preview.webp new file mode 100644 index 0000000000..7e765516a6 Binary files /dev/null and b/images/pe/edge/rule-engine/assign-rule-chain-template-step-4-preview.webp differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-4.png b/images/pe/edge/rule-engine/assign-rule-chain-template-step-4.png deleted file mode 100644 index 1fe0d6db76..0000000000 Binary files a/images/pe/edge/rule-engine/assign-rule-chain-template-step-4.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/assign-rule-chain-template-step-4.webp b/images/pe/edge/rule-engine/assign-rule-chain-template-step-4.webp new file mode 100644 index 0000000000..69a560fb7c Binary files /dev/null and b/images/pe/edge/rule-engine/assign-rule-chain-template-step-4.webp differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-1-preview.png b/images/pe/edge/rule-engine/create-rule-chain-template-step-1-preview.png deleted file mode 100644 index 96b2648c47..0000000000 Binary files a/images/pe/edge/rule-engine/create-rule-chain-template-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-1-preview.webp b/images/pe/edge/rule-engine/create-rule-chain-template-step-1-preview.webp new file mode 100644 index 0000000000..de59c4f1cd Binary files /dev/null and b/images/pe/edge/rule-engine/create-rule-chain-template-step-1-preview.webp differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-1.png b/images/pe/edge/rule-engine/create-rule-chain-template-step-1.png deleted file mode 100644 index a8f2d88d72..0000000000 Binary files a/images/pe/edge/rule-engine/create-rule-chain-template-step-1.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-1.webp b/images/pe/edge/rule-engine/create-rule-chain-template-step-1.webp new file mode 100644 index 0000000000..4108fa9fc7 Binary files /dev/null and b/images/pe/edge/rule-engine/create-rule-chain-template-step-1.webp differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-2-preview.png b/images/pe/edge/rule-engine/create-rule-chain-template-step-2-preview.png deleted file mode 100644 index 54e8fb8d8a..0000000000 Binary files a/images/pe/edge/rule-engine/create-rule-chain-template-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-2-preview.webp b/images/pe/edge/rule-engine/create-rule-chain-template-step-2-preview.webp new file mode 100644 index 0000000000..e61498697d Binary files /dev/null and b/images/pe/edge/rule-engine/create-rule-chain-template-step-2-preview.webp differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-2.png b/images/pe/edge/rule-engine/create-rule-chain-template-step-2.png deleted file mode 100644 index 11b503ac3b..0000000000 Binary files a/images/pe/edge/rule-engine/create-rule-chain-template-step-2.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-2.webp b/images/pe/edge/rule-engine/create-rule-chain-template-step-2.webp new file mode 100644 index 0000000000..1b1d017516 Binary files /dev/null and b/images/pe/edge/rule-engine/create-rule-chain-template-step-2.webp differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-3-preview.png b/images/pe/edge/rule-engine/create-rule-chain-template-step-3-preview.png deleted file mode 100644 index f6b20d75f7..0000000000 Binary files a/images/pe/edge/rule-engine/create-rule-chain-template-step-3-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-3-preview.webp b/images/pe/edge/rule-engine/create-rule-chain-template-step-3-preview.webp new file mode 100644 index 0000000000..71507cb504 Binary files /dev/null and b/images/pe/edge/rule-engine/create-rule-chain-template-step-3-preview.webp differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-3.png b/images/pe/edge/rule-engine/create-rule-chain-template-step-3.png deleted file mode 100644 index bfa4e8c7f7..0000000000 Binary files a/images/pe/edge/rule-engine/create-rule-chain-template-step-3.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-3.webp b/images/pe/edge/rule-engine/create-rule-chain-template-step-3.webp new file mode 100644 index 0000000000..1d7fa5ba03 Binary files /dev/null and b/images/pe/edge/rule-engine/create-rule-chain-template-step-3.webp differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-4-preview.png b/images/pe/edge/rule-engine/create-rule-chain-template-step-4-preview.png deleted file mode 100644 index 64728bbd2a..0000000000 Binary files a/images/pe/edge/rule-engine/create-rule-chain-template-step-4-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-4-preview.webp b/images/pe/edge/rule-engine/create-rule-chain-template-step-4-preview.webp new file mode 100644 index 0000000000..0bb94392e1 Binary files /dev/null and b/images/pe/edge/rule-engine/create-rule-chain-template-step-4-preview.webp differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-4.png b/images/pe/edge/rule-engine/create-rule-chain-template-step-4.png deleted file mode 100644 index f6ea0cd52e..0000000000 Binary files a/images/pe/edge/rule-engine/create-rule-chain-template-step-4.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/create-rule-chain-template-step-4.webp b/images/pe/edge/rule-engine/create-rule-chain-template-step-4.webp new file mode 100644 index 0000000000..17b8a5515a Binary files /dev/null and b/images/pe/edge/rule-engine/create-rule-chain-template-step-4.webp differ diff --git a/images/pe/edge/rule-engine/verify-rule-chain-template-step-1-preview.png b/images/pe/edge/rule-engine/verify-rule-chain-template-step-1-preview.png deleted file mode 100644 index 66fb184b31..0000000000 Binary files a/images/pe/edge/rule-engine/verify-rule-chain-template-step-1-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/verify-rule-chain-template-step-1-preview.webp b/images/pe/edge/rule-engine/verify-rule-chain-template-step-1-preview.webp new file mode 100644 index 0000000000..74d9e3deff Binary files /dev/null and b/images/pe/edge/rule-engine/verify-rule-chain-template-step-1-preview.webp differ diff --git a/images/pe/edge/rule-engine/verify-rule-chain-template-step-1.png b/images/pe/edge/rule-engine/verify-rule-chain-template-step-1.png deleted file mode 100644 index 5a6c0b684f..0000000000 Binary files a/images/pe/edge/rule-engine/verify-rule-chain-template-step-1.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/verify-rule-chain-template-step-1.webp b/images/pe/edge/rule-engine/verify-rule-chain-template-step-1.webp new file mode 100644 index 0000000000..dbb5cdfde2 Binary files /dev/null and b/images/pe/edge/rule-engine/verify-rule-chain-template-step-1.webp differ diff --git a/images/pe/edge/rule-engine/verify-rule-chain-template-step-2-preview.png b/images/pe/edge/rule-engine/verify-rule-chain-template-step-2-preview.png deleted file mode 100644 index 1f8ad28017..0000000000 Binary files a/images/pe/edge/rule-engine/verify-rule-chain-template-step-2-preview.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/verify-rule-chain-template-step-2-preview.webp b/images/pe/edge/rule-engine/verify-rule-chain-template-step-2-preview.webp new file mode 100644 index 0000000000..5b72c25fc4 Binary files /dev/null and b/images/pe/edge/rule-engine/verify-rule-chain-template-step-2-preview.webp differ diff --git a/images/pe/edge/rule-engine/verify-rule-chain-template-step-2.png b/images/pe/edge/rule-engine/verify-rule-chain-template-step-2.png deleted file mode 100644 index 80bc8d44a3..0000000000 Binary files a/images/pe/edge/rule-engine/verify-rule-chain-template-step-2.png and /dev/null differ diff --git a/images/pe/edge/rule-engine/verify-rule-chain-template-step-2.webp b/images/pe/edge/rule-engine/verify-rule-chain-template-step-2.webp new file mode 100644 index 0000000000..8eb9965b93 Binary files /dev/null and b/images/pe/edge/rule-engine/verify-rule-chain-template-step-2.webp differ