Changes for page ThingsBoard
Last modified by Dilisi S on 2025/04/23 19:23
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (1 modified, 0 added, 25 removed)
- Screenshot 2025-03-16 at 18.38.59.png
- Screenshot 2025-03-16 at 18.39.12.png
- Screenshot 2025-03-18 at 09.23.10.png
- Screenshot 2025-03-26 at 18.15.08.png
- Screenshot 2025-03-26 at 19.47.52.png
- Screenshot 2025-03-26 at 19.49.31.png
- add-integration-connection.png
- dashboard-1.png
- dashboard-2.png
- dashboard-3.png
- dashboard-4.png
- dashboard-5.png
- device-provision-1.png
- device-provision-2.png
- emqx.png
- image-4.png
- ins1.png
- integration-active.png
- integration-dl-skip.png
- mqtt-uplink.png
- new-device.png
- telemetry-1.png
- telemetry-2.png
- timeseries-1.png
- timeseries-3.png
- timeseries-4.png
Details
- Page properties
-
- Content
-
... ... @@ -22,10 +22,7 @@ 22 22 To complete this tutorial, you need to have the following: 23 23 24 24 * ThingsBoard cloud account 25 -* MQTT Broker (public or private) such as, 26 -** **[[HiveMQ Cloud>>https://www.hivemq.com]] - You can create a free account to try it or subscribe for a paid account. - We use HiveMQ Cloud as the MQTT broker to build example in this tutorial.** 27 -** [[emqx>>https://www.emqx.com/zh/mqtt/public-mqtt5-broker]] - The public MQTT server is only used for MOTT learning and testing, and should not be used in the production environment. 28 -** [[lns1.thingseye.io>>http://lns1.thingseye.io/]] - This is Dragino's MQTT broker, which requires a CA certificate to use. 25 +* HiveMQ Cloud account 29 29 30 30 == 2.1 ThingsBoard Cloud == 31 31 ... ... @@ -43,35 +43,14 @@ 43 43 [[image:thingsboard-2.png]] 44 44 45 45 46 -You can sign up with your **Google**,**GitHub**,**Facebook**, or**Apple**account. If not you can create an account with providing your**name**,**email address**and a**password**.43 +You can sign up with your Google, GitHub, Facebook, or Apple account. If not you can create an account with providing your name, email address and a password. 47 47 48 -Click on the **Sign up** button. 49 - 50 50 [[image:thingsboard-3.png||height="651" width="500"]] 51 51 52 52 53 -You will be navigated to the following page. 54 - 55 -[[image:thingsboard-5.png||height="109" width="500"]] 56 - 57 - 58 -simultaneously, you will receive an email to confirm your email address. Click on the **Activate Your Account** button. 59 - 60 - 61 -[[image:thingsboard-4.png||height="249" width="500"]] 62 - 63 - 64 -Now losing to the account using your credentials: 65 - 66 - 67 -[[image:thingsboard-6.png||height="244" width="500"]] 68 - 69 - 70 70 == 2.2 HiveMQ Cloud == 71 71 72 -=== 2.2.1 HiveMQ Cloud === 73 73 74 - 75 75 Go to [[https:~~/~~/www.hivemq.com>>https://www.hivemq.com]] 76 76 77 77 Click on the **Start Free** button. ... ... @@ -146,156 +146,147 @@ 146 146 You will need these MQTT connection parameters when configuring the MQTT integration in the '**Add Integration**' section. 147 147 148 148 149 -= ==2.2.2emqx===125 += 3. Data Converters = 150 150 151 151 152 -Th e[[emqx>>https://www.emqx.com/zh/mqtt/public-mqtt5-broker]]publicMQTT serverisonlyused forMOTTlearningandtesting,andshould notbeusedintheproduction environment.128 +In **ThingsBoard**, **Data Converters** are components used to transform incoming or outgoing data between different formats, typically to convert raw telemetry data from devices into a structured format that ThingsBoard can understand, or vice versa. 153 153 154 154 155 - [[image:emqx.png||height="420"width="500"]]131 +== 3.1 Uplink == 156 156 157 157 158 - === 2.2.3Ins1.thingseye.io===134 +In the left navigation, click **Integrations center**, and then click **Data converters**. 159 159 160 -[[lns1.thingseye.io>>http://lns1.thingseye.io/]] is the Dragino's MQTT broker, which requires a CA certificate file, Certificate file, and the Private key file to use. 161 161 162 -If customers need to use this MQTT connection with ThingsBoard, they need to contact the TE team to obtain three license files. 163 163 164 -[[image: ins1.png||height="310" width="500"]]138 +[[image:data-converters-list-empty.png]] 165 165 166 166 167 - =3.CreatingDevices=141 +On the **Data converters** page, click on the ‘**+**’ button, and then click on the **Create new converter** from the dropdown menu. 168 168 169 169 170 -First, you need to create devices in ThingsBoard to represent your physical devices. For example, you can name it **Device A**, and the second device could be **Device B** or any name you prefer. The device name should be unique within the **Devices** space. 171 171 145 +[[image:create-new-converter-menu.png||height="259" width="500"]] 172 172 173 -In the left navigation, click Entities -> Devices. 174 174 175 - Click theDevice** button(thebutton withthe+** sign),andfromthedropdown menu,clickAdd new device**.148 +The **Add data converter** window will appear. Name it ‘**MQTT Uplink Converter NB/CB**’ and select the Type as **Uplink**. 176 176 177 - In theAddnewdevice**dialogbox,enter the devicename in theName** textbox.For example,wewilluse**DeviceA**.150 +Click on the **TBEL** button if not selected it by default. Delete the existing decoder function in the code editor. Now copy and paste the following decoder function written in **TBEL (ThingsBoard Expression Language)** in to the **code editor**. This decoder function is compatible for both NB and CB series devices. 178 178 179 -Click the **Add** button. 152 +{{code language="JavaScript"}} 153 +/** Decoder **/ 180 180 181 -Skip the **connectivity testing** by clicking the **Close** button. 155 +// decode payload to string 156 +var payloadStr = decodeToString(payload); 157 +var data = JSON.parse(payloadStr); 182 182 183 -The device is created and listed on the **Devices** page. Note that its initial state is **Inactive** because it has not received any data yet. 159 +var deviceName = metadata.topic.split("/")[3]; 160 +// decode payload to JSON 161 +var deviceType = 'sensor'; 184 184 163 +// Result object with device attributes/telemetry data 164 +var result = { 165 + deviceName: deviceName, 166 + deviceType: deviceType, 167 + attributes: { 168 + integrationName: metadata['integrationName'], 169 + }, 170 + telemetry: { 171 + temperature: data.temperature, 172 + humidity: data.humidity, 173 + } 174 +}; 185 185 186 - =4.DataConverters=176 +/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/ 187 187 178 +return result; 179 +{{/code}} 188 188 189 -In **ThingsBoard**, **Data Converters** are components used to transform incoming or outgoing data between different formats, typically to convert raw telemetry data from devices into a structured format that ThingsBoard can understand, or vice versa. 190 190 182 +Click on the **Add** button. 191 191 192 -== 4.1 Uplink == 193 193 194 194 195 - In the left navigation, click **Integrations center**,andthen click**Datas**.186 +[[image:add-uplink-data-converter.png||height="529" width="500"]] 196 196 197 197 198 - [[image:data-converters-list-empty.png]]189 +You should see that the newly added **MQTT Uplink converter **NB/CB is listed on the **Data Converters** page. 199 199 191 +[[image:data-converter-list-showing-uplink-dc.png]] 200 200 201 -On the **Data converters** page, click on the ‘**+**’ button, and then click on the **Create new converter** from the dropdown menu. 202 202 203 203 195 +== 3.2 Downlink == 204 204 205 -[[image:create-new-converter-menu.png||height="259" width="500"]] 206 206 198 +On the **Data converters** page, click on the ‘**+**’ button, and then click on the **Create new converter** from the dropdown menu. 207 207 208 -The **Add data converter** window will appear. Name it ‘**MQTT Uplink Converter NB/CB**’ and select the Type as **Uplink**. 209 209 210 - Click on the**TBEL** button if it has notbeenselected by default.201 +[[image:create-new-converter-menu.png||width="500"]] 211 211 212 -Modify the default TBEL function to match with your device as described below: 213 213 214 214 215 -* Uncomment** line11**:205 +The **Add data converter** window will appear. Name it ‘**MQTT Downlink Converter NB/CB**’ and select the Type as **Downlink**. 216 216 217 - //vardata=decodeToJson(payload)//207 +Click on the **TBEL** button if not selected it by default. Now copy and paste the following encoder function written in **TBEL (ThingsBoard Expression Language)** in to the **code editor**. This encoder function is compatible for both NB and CB series devices. 218 218 219 219 220 - * **Line 13**: Assign your device name tothe **deviceName**field. - Weused **Device A**as it is to match with ourdevice, **Device A **inthe Devices section.221 - *From **line 38**: Modify thetelemetry sectionto allow parseddatatobe assigned tothefields.210 +{{code language="JavaScript"}} 211 +// Encode downlink data from incoming Rule Engine message 222 222 223 -//telemetry: { 224 - temperature: data.temperature, 225 - humidity: data.humidity, 226 - rawData: payloadStr 227 - }// 213 +// msg - JSON message payload downlink message json 214 +// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc. 215 +// metadata - list of key-value pairs with additional data about the message 216 +// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter 228 228 218 +/** Encoder **/ 229 229 230 - The modified uplink decoderfunction to matchwith**Device A** is shown below.220 +var data = {}; 231 231 232 -{{code language="JavaScript"}} 233 -// Decode an uplink message from a buffer 234 -// payload - array of bytes 235 -// metadata - key/value object 222 +// Process data from incoming message and metadata 236 236 237 -/** Decoder **/ 224 +data.tempFreq = msg.temperatureUploadFrequency; 225 +data.humFreq = msg.humidityUploadFrequency; 238 238 239 -// decode payload to string 240 -var payloadStr = decodeToString(payload); 227 +data.devSerialNumber = metadata['ss_serialNumber']; 241 241 242 -// decode payloadto JSON243 -var data=decodeToJson(payload);229 +// Result object with encoded downlink payload 230 +var result = { 244 244 245 -var deviceName = 'Device A'; 246 -var deviceType = 'thermostat'; 247 -var customerName = 'Customer C'; 248 -var groupName = 'thermostat devices'; 249 -var manufacturer = 'Example corporation'; 250 -// use assetName and assetType instead of deviceName and deviceType 251 -// to automatically create assets instead of devices. 252 -// var assetName = 'Asset A'; 253 -// var assetType = 'building'; 232 + // downlink data content type: JSON, TEXT or BINARY (base64 format) 233 + contentType: "JSON", 254 254 255 -// Result object with device/asset attributes/telemetry data 256 -var result = { 257 -// Use deviceName and deviceType or assetName and assetType, but not both. 258 - deviceName: deviceName, 259 - deviceType: deviceType, 260 -// assetName: assetName, 261 -// assetType: assetType, 262 -// customerName: customerName, 263 - groupName: groupName, 264 - attributes: { 265 - model: 'Model A', 266 - serialNumber: 'SN111', 267 - integrationName: metadata['integrationName'], 268 - manufacturer: manufacturer 269 - }, 270 - telemetry: { 271 - temperature: data.temperature, 272 - humidity: data.humidity, 273 - rawData: payloadStr 274 - } 275 -}; 235 + // downlink data 236 + data: JSON.stringify(data), 276 276 277 -/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/ 238 + // Optional metadata object presented in key/value format 239 + metadata: { 240 + topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload' 241 + } 278 278 243 +}; 244 + 279 279 return result; 280 280 {{/code}} 281 281 282 282 283 - Once you modify the decoder function, click on the **Add** button.249 +Click on the **Add** button. 284 284 285 285 286 -[[image:mqtt-uplink.png||width="500"]] 287 287 253 +[[image:add-downlink-data-converter.png||height="529" width="500"]] 288 288 289 289 290 -You should see that the newly added **MQTT Uplinkconverter**NB/CB is listed on the **Data Converters** page.256 +You should see that the newly added **MQTT Downlink** Converter NB/CB is listed on the **Data Converters** page. 291 291 292 292 293 -[[image:data-converter-list -showing-uplink-dc.png]]259 +[[image:data-converters-list.png]] 294 294 295 295 296 -= 5. Add Integration = 297 297 263 += 4. Add Integration = 298 298 265 + 299 299 In the left navigation, click **Integrations center**, and then click **Integrations**. 300 300 301 301 ... ... @@ -320,6 +320,7 @@ 320 320 Click **Next** button. 321 321 322 322 290 + 323 323 [[image:add-integration-basic-settings.png||height="511" width="500"]] 324 324 325 325 ... ... @@ -331,31 +331,31 @@ 331 331 Click **Next** button. 332 332 333 333 302 + 334 334 [[image:add-integration-uplink-data-converter.png||height="511" width="500"]] 335 335 336 336 337 337 **Downlink data converter:** 338 338 339 -Dragino NB/CB devices don't require a downlink data converter to decode their payloads, so you can skip this step. 308 +* Click on the **Select existing** button. 309 +* **Downlink data converter**: Select **MQTT Downlink Converter NB/CB **from the dropdown list. 340 340 341 - *Clickon the**Skip**buttonin the Downlink data converter section.311 +Click **Next** button. 342 342 343 -Click **Skip** button. 344 344 345 345 346 -[[image:integration-dl -skip.png||height="511" width="500"]]315 +[[image:add-integration-downlink-data-converter.png||height="511" width="500"]] 347 347 348 348 349 - 350 350 **Connection:** 351 351 352 -* **Host**: Host**//011731f7xxxxxxxxxxxfbbedfc63f4.s1.eu.hivemq.cloud//**)320 +* **Host**: Cluster URL (Eg. 011731f7928541588a6cdfbbedfc63f4.s1.eu.hivemq.cloud) 353 353 * **Port**: 8883 354 -* **Credentials type**: Basic 322 +* **Credentials**: Basic 323 +* **Enable SSL**: YES 355 355 * **Username**: Username (from your HiveMQ Cloud Cluster with your credentials) 356 356 * **Password:** Password (from your HiveMQ Cloud Cluster with your credentials) 357 -* **Enable SSL**: YES 358 -* **Topic: device/a** (The topic can be anything; you can even use just the device name.) 326 +* **Topic:** tb/mqtt-integration-tutorial/sensors/+/telemetry (the + replaces any 'device name' and creates devices in the Entities -> Devices) 359 359 * **QoS:** 0-At most once 360 360 361 361 [[image:add-integration-connection.png||height="511" width="500"]] ... ... @@ -363,8 +363,8 @@ 363 363 364 364 Click on the **Advanced settings** button. 365 365 366 -* **Clean session:** YES367 -* **Retained**: YES334 +* **Clean session:** NO 335 +* **Retained**: NO 368 368 369 369 [[image:add-integration-connection-advanced-settings.png||height="510" width="500"]] 370 370 ... ... @@ -388,201 +388,17 @@ 388 388 Since we haven't received data from a device yet, the integration **Status** is shown as **Pending.** 389 389 390 390 359 + 391 391 [[image:new-integration-pending.png]] 392 392 393 393 394 -= 6. Verifying the receipt of data fromvirtualdevices=363 += 5. Verifying the receipt of data from the device = 395 395 396 396 397 - ==6.1Howdoesitwork?==366 +On the terminal, issue the following MQTT command which simulates the device S31B-NB. 398 398 399 - 400 -We use the Mosquitto MQTT client to simulate MQTT messages, acting as a virtual device. First, install the Mosquitto client on your computer from [[this link>>url:https://mosquitto.org/download/]]. The Mosquitto client publishes messages to the MQTT broker (HiveMQ) on a specified MQTT topic. ThingsBoard subscribes to these messages using the same topic. 401 - 402 -The Mosquitto client publishes messages (payloads) on the topic **/device/a**. Of course, you can use any topic for testing. 403 - 404 -(% id="cke_bm_37386S" style="display:none" %) (%%)The MQTT payload format is as follows: 405 - 406 406 {{code language="none"}} 407 - {"IMEI":"350693903995577","temperature":25, "humidity":80, "pressure":1005}369 +mosquitto_pub -d -q 1 -h mqtt.eu.thingsboard.cloud -p 1883 -t v1/devices/S31B-NB/telemetry -u "24vk3w9h7sqdld1me5eh" -m "{temperature:20}" 408 408 {{/code}} 409 409 410 -Once ThingsBoard receives this message, it forwards this payload to the matching device through the integration. 411 - 412 - 413 -== 5.2 Sending messages == 414 - 415 - 416 -On the terminal, issue the following MQTT command which simulates the device S31B-NB. The message payload contains the fields temperature and humidity, which hold the values S31B-NB and 27, respectively. This payload is also (technically) known as telemetry. 417 - 418 -{{code language="none"}} 419 -mosquitto_pub -d -q 1 -h 011731f7928xxxxx.s1.eu.hivemq.cloud -p 8883 -u "xxxxx" -P "xxxxx" -t "device/a" -m '{"IMEI":"350693903995577", "temperature":30, "humidity":80, "pressure":1005}' 420 -{{/code}} 421 - 422 -If the integration was performed without errors, the status of the integration changes to 'Active' after the first telemetry transmission. 423 - 424 - 425 -[[image:integration-active.png]] 426 - 427 - 428 - 429 - 430 -== 6.3 Viewing messages == 431 - 432 - 433 -Go back to the **Integrations** page. 434 - 435 -Click on the **MQTT integration NB/CB** in the **Integrations** page to see its details. 436 - 437 -Click on the **Edit** button (//**pen icon**//). 438 - 439 -Click on the **Disabled** button in the upper-right corner. 440 - 441 -Turn on the **All messages (15 min)** option. This will enable displaying all messages in the **Events** tab. This setting will expire in 15 minutes, and you will need to repeat the same steps if you want to view the messages in the Events tab later. 442 - 443 -Click on the **Apply** button. 444 - 445 -Then click on the **Apply changes** (//**tick icon**//) button. 446 - 447 - 448 -[[image:Screenshot 2025-03-18 at 09.23.10.png]] 449 - 450 - 451 -Now go to the **Events** tab. 452 - 453 -Select the Event type as **Debug** from the dropdown list. 454 - 455 -Now you can see all the Uplink messages you are simulating through the MQTT broker. The status should be **OK **if there is no errors in your integration. 456 - 457 - 458 -[[image:Screenshot 2025-03-26 at 19.49.31.png]] 459 - 460 - 461 - 462 - 463 -Then click on the **three dots (...)** in the **Message** column. You can see the uplink message's **payload** in the **Message** window. 464 - 465 - 466 -[[image:Screenshot 2025-03-26 at 19.47.52.png]] 467 - 468 - 469 - 470 - 471 -Now, you have successfully tested your integration with a simulated uplink payload and verified that it is received by ThingsBoard, and the device is provisioned. 472 - 473 - 474 -= 7. Creating a Dashboard = 475 - 476 -ThingsBoard **Dashboards** provide a powerful way to visualize and monitor real-time and historical data from connected devices. They allow users to create interactive, customizable panels displaying telemetry data, device status, and other key metrics. With a variety of widgets, including charts, maps, and tables, dashboards help users gain insights, track trends, and manage IoT deployments efficiently. 477 - 478 - 479 -This section guides you on how to create a dashboard to display temperature and humidity data from the device on a time-series chart. You may also use other widgets in ThingsBoard to display data according to your requirements. 480 - 481 - 482 -First simulate a few messages using MQTT. This time, we have added the 'humidity' field to the payload. Eg: 483 - 484 -{{code language="none"}}mosquitto_pub -d -q 1 -h 011731f7928xxxxx.s1.eu.hivemq.cloud -p 8883 -t "v1/devices/me/telemetry" -u "xxxxx" -P "xxxxx" -m '{"IMEI": "S31B-NB", "temperature": 22, "humidity":80}'{{/code}} 485 - 486 - 487 -In **ThingsBoard**, from the left navigation menu, click **Dashboards**. Then, click the **+** button and select **Create new dashboard** from the dropdown menu. 488 - 489 - 490 -[[image:dashboard-1.png]] 491 - 492 - 493 -In the **Title** text box, enter **NB/CB Test Dashboard** as the title of the dashboard. 494 - 495 -Click on the **Add** button. 496 - 497 - 498 -[[image:dashboard-2.png||height="526" width="500"]] 499 - 500 - 501 -Click on the **Add widget / Add new widget** button. 502 - 503 - 504 -[[image:dashboard-3.png]] 505 - 506 - 507 -In the **Select widgets bundle** window, click **Charts**. 508 - 509 - 510 -[[image:dashboard-4.png||height="537" width="700"]] 511 - 512 - 513 - 514 -In the **Charts: select widget** window, click **Time series chart**. 515 - 516 - 517 -[[image:dashboard-5.png||height="525" width="700"]] 518 - 519 - 520 -Configure the **Time series chart** widget as follows: 521 - 522 -* **Datasource** - select S31B-NB device you provisioned. 523 -* **Series**: 524 -** **temperature** - you can see this key by default. 525 -** **humidity** - Click **Add series** button. Then add the **humidity** for the key and then type **%** as its unit. 526 -* Click on the **Add** button. 527 - 528 -[[image:timeseries-1.png||height="491" width="700"]] 529 - 530 - 531 -The time-series chart will appear in edit mode. Resize it by clicking and dragging the lower-right corner. 532 - 533 -Click the **Save** button to add the widget to the dashboard. 534 - 535 - 536 -[[image:timeseries-3.png||height="347" width="700"]] 537 - 538 - 539 -Now send the following MQTT messages from the terminal to simulate the data. 540 - 541 - 542 -{{code language="none"}} 543 -mosquitto_pub -d -q 1 -h 011731f7928xxxxx.s1.eu.hivemq.cloud -p 8883 -t "v1/devices/me/telemetry" -u "xxxxx" -P "xxxxx" -m '{"IMEI": "S31B-NB", "temperature": 22, "humidity":70}' 544 - 545 -mosquitto_pub -d -q 1 -h 011731f7928xxxxx.s1.eu.hivemq.cloud -p 8883 -t "v1/devices/me/telemetry" -u "xxxxx" -P "xxxxx" -m '{"IMEI": "S31B-NB", "temperature": 27, "humidity":72}' 546 - 547 -mosquitto_pub -d -q 1 -h 011731f7928xxxxx.s1.eu.hivemq.cloud -p 8883 -t "v1/devices/me/telemetry" -u "xxxxx" -P "xxxxx" -m '{"IMEI": "S31B-NB", "temperature": 19, "humidity":80}' 548 - 549 -{{/code}} 550 - 551 -The chart will update with the values in realtime, as shown in the below image. 552 - 553 - 554 -[[image:timeseries-4.png||height="316" width="700"]] 555 - 556 - 557 -= 8. Configure NB-IoT Sensor = 558 - 559 - 560 -Now, let's experiment with sending data to ThingsBoard using a real NB-IoT device. For example, we will use the **TS01-NB**. 561 - 562 -First, configure the NB-IoT device with the necessary MQTT settings using AT commands. Below is a list of AT commands you can use. 563 - 564 - 565 -**AT Commands** 566 - 567 -* **AT+PRO=3,3 **~/~/ Use MQTT to connect to ThingsBoard. Payload Type set to 3. 568 -* **AT+SUBTOPIC=<MQTT subscribe topic> Eg: TS01-NB** 569 -* **AT+PUBTOPIC=<MQTT publish topic> Eg: TS01-NB** 570 -* **AT+CLIENT=null** 571 -* **AT+UNAME=<MQTT Username>** 572 -* **AT+PWD=<MQTT Password>** 573 -* **AT+SERVADDR=<Broker address, Port>** 574 - 575 -Test your uplink by pressing the ACT button for 1 second. 576 - 577 - 578 - 579 -The following image shows the uplink payload of a real Dragino device. The publish topic is **TS01-NB**, and the device name is **861275077962896**, which is represented by the **IMEI**. 580 - 581 -{{info}} 582 -The ThingsBoard uses the device's IMEI number included in the payload to create a device in the Devices section. 583 -{{/info}} 584 - 585 -[[image:image-4.png]] 586 - 587 - 588 - 372 +If the integration was performed without errors, after the transmission of the first telemetry, a new device with the name “S31B-NB” will appear in the Devices → All. Also, you can verify the input and output data, respectively, before and after conversion in Data converters → UDP Uplink Converter NB/CB → Events.
- Screenshot 2025-03-16 at 18.38.59.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -221.2 KB - Content
- Screenshot 2025-03-16 at 18.39.12.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -211.9 KB - Content
- Screenshot 2025-03-18 at 09.23.10.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -78.7 KB - Content
- Screenshot 2025-03-26 at 18.15.08.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -92.2 KB - Content
- Screenshot 2025-03-26 at 19.47.52.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -168.4 KB - Content
- Screenshot 2025-03-26 at 19.49.31.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -133.0 KB - Content
- add-integration-connection.png
-
- Size
-
... ... @@ -1,1 +1,1 @@ 1 -1 58.1KB1 +124.4 KB - Content
- dashboard-1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -271.1 KB - Content
- dashboard-2.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -112.2 KB - Content
- dashboard-3.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -141.3 KB - Content
- dashboard-4.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -803.7 KB - Content
- dashboard-5.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -476.1 KB - Content
- device-provision-1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -265.7 KB - Content
- device-provision-2.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -213.9 KB - Content
- emqx.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -39.1 KB - Content
- image-4.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -96.0 KB - Content
- ins1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -28.8 KB - Content
- integration-active.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -64.2 KB - Content
- integration-dl-skip.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -105.5 KB - Content
- mqtt-uplink.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -175.1 KB - Content
- new-device.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -143.3 KB - Content
- telemetry-1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -191.9 KB - Content
- telemetry-2.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -185.1 KB - Content
- timeseries-1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -179.1 KB - Content
- timeseries-3.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -174.2 KB - Content
- timeseries-4.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -159.0 KB - Content