<
From version < 178.1 >
edited by Dilisi S
on 2025/03/27 01:16
To version < 182.1 >
edited by Dilisi S
on 2025/03/27 02:50
>
Change comment: Mar 26 - heavy edits

Summary

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 shown below.
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**: Cluster URL (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": 27, ......}
407 +{"IMEI": "350693903995577", "temperature":25, "humidity":80, "pressure":1005}
404 404  {{/code}}
405 405  
406 -Once ThingsBoard receives this message, it automatically creates (provisions) the device mentioned in the **IMEI**, for example, 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
Copyright ©2010-2024 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0