Changes for page ThingsBoard
Last modified by Dilisi S on 2025/04/15 23:13
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 2 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -209,9 +209,26 @@ 209 209 210 210 Click on the **TBEL** button if it has not been selected by default. 211 211 212 - The default TBEL function is shownbelow.212 +Modify the default TBEL function to match with your device as described below: 213 213 214 214 215 +* Uncomment** line 11**: 216 + 217 +//var data = decodeToJson(payload)// 218 + 219 + 220 +* **Line 13**: Assign your device name to the **deviceName** field. - We used **Device A** as it is to match with our device, **Device A **in the Devices section. 221 +* From **line 38**: Modify the telemetry section to allow parsed data to be assigned to the fields. 222 + 223 +//telemetry: { 224 + temperature: data.temperature, 225 + humidity: data.humidity, 226 + rawData: payloadStr 227 + }// 228 + 229 + 230 +The modified uplink decoder function to match with **Device A** is shown below. 231 + 215 215 {{code language="JavaScript"}} 216 216 // Decode an uplink message from a buffer 217 217 // payload - array of bytes ... ... @@ -223,7 +223,7 @@ 223 223 var payloadStr = decodeToString(payload); 224 224 225 225 // decode payload to JSON 226 - //var data = decodeToJson(payload);243 +var data = decodeToJson(payload); 227 227 228 228 var deviceName = 'Device A'; 229 229 var deviceType = 'thermostat'; ... ... @@ -251,8 +251,8 @@ 251 251 manufacturer: manufacturer 252 252 }, 253 253 telemetry: { 254 - temperature: 42,255 - humidity: 80,271 + temperature: data.temperature, 272 + humidity: data.humidity, 256 256 rawData: payloadStr 257 257 } 258 258 }; ... ... @@ -262,20 +262,7 @@ 262 262 return result; 263 263 {{/code}} 264 264 265 -We use the same decoder function for all our devices. However, you need to modify a few things for each device. Among these, **deviceName** is a **mandatory** field. You should assign a device name to the **deviceName** field that matches the name of your device in the **Devices** section. 266 266 267 -For example, if your device name is **Device B**, you can change **Device A** to **Device B**. 268 - 269 - 270 -{{code language="JavaScript"}} 271 -var deviceName = 'Device A'; 272 -var deviceType = 'thermostat'; 273 -var customerName = 'Customer C'; 274 -var groupName = 'thermostat devices'; 275 -var manufacturer = 'Example corporation'; 276 -{{/code}} 277 - 278 - 279 279 Once you modify the decoder function, click on the **Add** button. 280 280 281 281 ... ... @@ -345,13 +345,13 @@ 345 345 346 346 **Connection:** 347 347 348 -* **Host**: ClusterURL (Eg. **//011731f7xxxxxxxxxxxfbbedfc63f4.s1.eu.hivemq.cloud//**)352 +* **Host**: Host URL (Eg. **//011731f7xxxxxxxxxxxfbbedfc63f4.s1.eu.hivemq.cloud//**) 349 349 * **Port**: 8883 350 -* **Credentials**: Basic 351 -* **Enable SSL**: YES 354 +* **Credentials type**: Basic 352 352 * **Username**: Username (from your HiveMQ Cloud Cluster with your credentials) 353 353 * **Password:** Password (from your HiveMQ Cloud Cluster with your credentials) 354 -* **Topic: v1/devices/me/telemetry** (The topic can be anything; you can even use just the device name. For example, you can use your device name here, such as devices/a/telemetry.) 357 +* **Enable SSL**: YES 358 +* **Topic: device/a** (The topic can be anything; you can even use just the device name.) 355 355 * **QoS:** 0-At most once 356 356 357 357 [[image:add-integration-connection.png||height="511" width="500"]] ... ... @@ -395,15 +395,15 @@ 395 395 396 396 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. 397 397 398 -The Mosquitto client publishes messages (payloads) on the topic ** v1/devices/me/telemetry**. Of course, you can use any topic for testing.402 +The Mosquitto client publishes messages (payloads) on the topic **/device/a**. Of course, you can use any topic for testing. 399 399 400 -(% id="cke_bm_37386S" style="display:none" %) (%%)The MQTT payload format is as follows , which is common for all **~-~-NB** and **~-~-CB** series devices. The **IMEI** field is mandatory and is used to provision a new device with the name assigned to it in ThingsBoard.404 +(% id="cke_bm_37386S" style="display:none" %) (%%)The MQTT payload format is as follows: 401 401 402 402 {{code language="none"}} 403 -{"IMEI": " S31B-NB", "temperature":7,......}407 +{"IMEI": "350693903995577", "temperature":25, "humidity":80, "pressure":1005} 404 404 {{/code}} 405 405 406 -Once ThingsBoard receives this message, it automaticallycreates(provisions)the devicementionedinhe**IMEI**, forexample, S31B-NB.410 +Once ThingsBoard receives this message, it forwards this payload to the matching device through the integration. 407 407 408 408 409 409 == 5.2 Sending messages == ... ... @@ -412,7 +412,7 @@ 412 412 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. 413 413 414 414 {{code language="none"}} 415 -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}'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}' 416 416 {{/code}} 417 417 418 418 If the integration was performed without errors, the status of the integration changes to 'Active' after the first telemetry transmission. ... ... @@ -421,12 +421,8 @@ 421 421 [[image:integration-active.png]] 422 422 423 423 424 -Also, a new device named **S31B-NB** will appear under **//Entities -> Devices -> All//**. This means the first MQTT message triggers ThingsBoard to provision a device named **S31B-NB**. 425 425 426 426 427 -[[image:new-device.png]] 428 - 429 - 430 430 == 6.3 Viewing messages == 431 431 432 432 ... ... @@ -452,18 +452,22 @@ 452 452 453 453 Select the Event type as **Debug** from the dropdown list. 454 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. 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 456 457 457 458 -[[image:Screenshot 2025-03- 16 at 18.38.59.png]]458 +[[image:Screenshot 2025-03-26 at 19.49.31.png]] 459 459 460 460 461 + 462 + 461 461 Then click on the **three dots (...)** in the **Message** column. You can see the uplink message's **payload** in the **Message** window. 462 462 463 463 464 -[[image:Screenshot 2025-03- 16 at 18.39.12.png]]466 +[[image:Screenshot 2025-03-26 at 19.47.52.png]] 465 465 466 466 469 + 470 + 467 467 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. 468 468 469 469
- Screenshot 2025-03-26 at 19.47.52.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.pradeeka - Size
-
... ... @@ -1,0 +1,1 @@ 1 +168.4 KB - Content
- Screenshot 2025-03-26 at 19.49.31.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.pradeeka - Size
-
... ... @@ -1,0 +1,1 @@ 1 +133.0 KB - Content