<
From version < 182.1 >
edited by Dilisi S
on 2025/03/27 02:50
To version < 181.1 >
edited by Dilisi S
on 2025/03/27 02:49
>
Change comment: Uploaded new attachment "Screenshot 2025-03-26 at 19.49.31.png", version {1}

Summary

Details

Page properties
Content
... ... @@ -212,22 +212,22 @@
212 212  Modify the default TBEL function to match with your device as described below:
213 213  
214 214  
215 -* Uncomment** line 11**:
215 +~1. Uncomment line 11:
216 216  
217 -//var data = decodeToJson(payload)//
217 +var data = decodeToJson(payload)
218 218  
219 +[[image:Screenshot 2025-03-26 at 18.15.08.png||height="219" width="500"]]
219 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 222  
223 -//telemetry: {
222 +3. Modify the telemetry section to allow parsed data to be assigned to the fields.
223 +
224 +telemetry: {
224 224   temperature: data.temperature,
225 225   humidity: data.humidity,
226 226   rawData: payloadStr
227 - }//
228 + }
228 228  
229 229  
230 -The modified uplink decoder function to match with **Device A** is shown below.
231 231  
232 232  {{code language="JavaScript"}}
233 233  // Decode an uplink message from a buffer
... ... @@ -242,7 +242,7 @@
242 242  // decode payload to JSON
243 243  var data = decodeToJson(payload);
244 244  
245 -var deviceName = 'Device A';
245 +var deviceName = 'Device B';
246 246  var deviceType = 'thermostat';
247 247  var customerName = 'Customer C';
248 248  var groupName = 'thermostat devices';
... ... @@ -279,7 +279,20 @@
279 279  return result;
280 280  {{/code}}
281 281  
282 +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.
282 282  
284 +For example, if your device name is **Device B**, you can change **Device A** to **Device B**.
285 +
286 +
287 +{{code language="JavaScript"}}
288 +var deviceName = 'Device A';
289 +var deviceType = 'thermostat';
290 +var customerName = 'Customer C';
291 +var groupName = 'thermostat devices';
292 +var manufacturer = 'Example corporation';
293 +{{/code}}
294 +
295 +
283 283  Once you modify the decoder function, click on the **Add** button.
284 284  
285 285  
... ... @@ -349,13 +349,13 @@
349 349  
350 350  **Connection:**
351 351  
352 -* **Host**: Host URL (Eg. **//011731f7xxxxxxxxxxxfbbedfc63f4.s1.eu.hivemq.cloud//**)
365 +* **Host**: Cluster URL (Eg. **//011731f7xxxxxxxxxxxfbbedfc63f4.s1.eu.hivemq.cloud//**)
353 353  * **Port**: 8883
354 -* **Credentials type**: Basic
367 +* **Credentials**: Basic
368 +* **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.)
371 +* **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.)
359 359  * **QoS:** 0-At most once
360 360  
361 361  [[image:add-integration-connection.png||height="511" width="500"]]
... ... @@ -399,15 +399,15 @@
399 399  
400 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 401  
402 -The Mosquitto client publishes messages (payloads) on the topic **/device/a**. Of course, you can use any topic for testing.
415 +The Mosquitto client publishes messages (payloads) on the topic **v1/devices/me/telemetry**. Of course, you can use any topic for testing.
403 403  
404 -(% id="cke_bm_37386S" style="display:none" %) (%%)The MQTT payload format is as follows:
417 +(% 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.
405 405  
406 406  {{code language="none"}}
407 -{"IMEI": "350693903995577", "temperature":25, "humidity":80, "pressure":1005}
420 +{"IMEI": "S31B-NB", "temperature": 27, ......}
408 408  {{/code}}
409 409  
410 -Once ThingsBoard receives this message, it forwards this payload to the matching device through the integration.
423 +Once ThingsBoard receives this message, it automatically creates (provisions) the device mentioned in the **IMEI**, for example, S31B-NB.
411 411  
412 412  
413 413  == 5.2 Sending messages ==
... ... @@ -416,7 +416,7 @@
416 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 417  
418 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}'
432 +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}'
420 420  {{/code}}
421 421  
422 422  If the integration was performed without errors, the status of the integration changes to 'Active' after the first telemetry transmission.
... ... @@ -425,8 +425,12 @@
425 425  [[image:integration-active.png]]
426 426  
427 427  
441 +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**.
428 428  
429 429  
444 +[[image:new-device.png]]
445 +
446 +
430 430  == 6.3 Viewing messages ==
431 431  
432 432  
... ... @@ -452,22 +452,18 @@
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.
472 +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-26 at 19.49.31.png]]
475 +[[image:Screenshot 2025-03-16 at 18.38.59.png]]
459 459  
460 460  
461 -
462 -
463 463  Then click on the **three dots (...)** in the **Message** column. You can see the uplink message's **payload** in the **Message** window.
464 464  
465 465  
466 -[[image:Screenshot 2025-03-26 at 19.47.52.png]]
481 +[[image:Screenshot 2025-03-16 at 18.39.12.png]]
467 467  
468 468  
469 -
470 -
471 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 472  
473 473  
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0