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, 23 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
- 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
- thingsboard-6.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,24 +146,6 @@ 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.2 emqx === 150 - 151 - 152 -The [[emqx>>https://www.emqx.com/zh/mqtt/public-mqtt5-broker]] public MQTT server is only used for MOTT learning and testing, and should not be used in the production environment. 153 - 154 - 155 -[[image:emqx.png||height="420" width="500"]] 156 - 157 - 158 -=== 2.2.3 Ins1.thingseye.io === 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 - 162 -If customers need to use this MQTT connection with ThingsBoard, they need to contact the TE team to obtain three license files. 163 - 164 -[[image:ins1.png||height="310" width="500"]] 165 - 166 - 167 167 = 3. Data Converters = 168 168 169 169 ... ... @@ -176,6 +176,7 @@ 176 176 In the left navigation, click **Integrations center**, and then click **Data converters**. 177 177 178 178 137 + 179 179 [[image:data-converters-list-empty.png]] 180 180 181 181 ... ... @@ -188,133 +188,34 @@ 188 188 189 189 The **Add data converter** window will appear. Name it ‘**MQTT Uplink Converter NB/CB**’ and select the Type as **Uplink**. 190 190 191 -Click on the ** JavaScript**button.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. 192 192 193 -Delete the default decoder function in the code editor. Now copy and paste the following decoder function written in **JavaScript** in to the **code editor**. This decoder function is compatible for both NB and CB series devices. 194 - 195 -{{info}} 196 -Please note that the value assigned to the IMEI field in the payload will be used by ThingsBoard to create a device on the platform with the same name. 197 -{{/info}} 198 - 199 199 {{code language="JavaScript"}} 200 -//Version: 0.1 153 +/** Decoder **/ 154 + 201 201 // decode payload to string 202 202 var payloadStr = decodeToString(payload); 157 +var data = JSON.parse(payloadStr); 203 203 159 +var deviceName = metadata.topic.split("/")[3]; 204 204 // decode payload to JSON 205 -var objdata = {}; 206 -var obj1 = {}; 207 -var data = decodeToJson(payload); 208 -var deviceName = data.IMEI; 209 -delete data.IMEI; 210 -var modelname = "Dragino " + data.Model; 211 -//var mod = data.mod 212 -delete data.Model; 213 -//delete data.mod 214 -var timestamp = new Date().getTime(); 161 +var deviceType = 'sensor'; 215 215 216 -for (var key in data) { 217 - 218 - if (Number(key)) { 219 - obj1[key] = data[key]; 220 - obj1[key][obj1[key].length - 1] = Number(new Date( 221 - obj1[key][obj1[key].length - 1])); 222 - 223 - } 224 -//Alec submitted25/02/25 225 -//turn old key into new 226 - else if (key === "Reading") { 227 - objdata["reading"] = data[key]; 228 - } else if (key === "work mode") { 229 - objdata["work_mode"] = data[key]; 230 - } else if (key === "hum") { 231 - objdata["humidity"] = data[key]; 232 - }else if (key === "hum2") { 233 - objdata["humidity2"] = data[key]; 234 - } else if (key === "hum3") { 235 - objdata["humidity3"] = data[key]; 236 - } else if (key === "tem") { 237 - objdata["temperature"] = data[key]; 238 - } else if (key === "tem2") { 239 - objdata["temperature2"] = data[key]; 240 - } else if (key === "tem3") { 241 - objdata["temperature3"] = data[key]; 242 - } else if (key === "DS18B20_Temp") { 243 - objdata["temperature_pro"] = data[key]; 244 - } else if (key === "ds18b20_temperature") { 245 - objdata["temperature_pro"] = data[key]; 246 - } else if (key === "DS18B20_temperature_pro") { 247 - objdata["temperature_pro"] = data[key]; 248 - } else if (key === "tdc send flag") { 249 - objdata["tdc_send_flag"] = data[key]; 250 - } else if (key === "trigger mode") { 251 - objdata["trigger_mode"] = data[key]; 252 - } else if (key === "soil dielectric constant") { 253 - objdata["soil_dielectric_constant"] = data[key]; 254 - } else if (key === "door open num") { 255 - objdata["door_open_num"] = data[key]; 256 - } else if (key === "door duration") { 257 - objdata["door_duration"] = data[key]; 258 - } else if (key === "count time") { 259 - objdata["count_time"] = data[key]; 260 - } else if (key === "last open time2") { 261 - objdata["last_open_time2"] = data[key]; 262 - } else if (key === "last open time3") { 263 - objdata["last_open_time3"] = data[key]; 264 - } 265 -//Alec submitted25/02/25 266 - else { 267 - objdata[key] = data[key] 268 - } 269 -} 270 -var listdata = [{ 271 - "ts": timestamp, 272 - "values": objdata 273 -}] 274 -for (var key1 in obj1) { 275 - if (modelname == "Dragino RS485-NB") { 276 - listdata.push({ 277 - "ts": obj1[key1][obj1[key1].length - 1], 278 - "values": { 279 - "Payload": obj1[key1][0], 280 - } 281 - }) 282 - } else { 283 - listdata.push({ 284 - "ts": obj1[key1][obj1[key1].length - 1], 285 - "values": { 286 - "values": obj1[key1] 287 - }, 288 - }) 289 - } 290 -} 163 +// Result object with device attributes/telemetry data 291 291 var result = { 292 - 293 293 deviceName: deviceName, 294 - deviceType: modelname,166 + deviceType: deviceType, 295 295 attributes: { 296 - model: modelname, 297 - //customerName: "NB-CB", 298 - //groupName: "NB-CB", 299 - //integrationName: metadata['integrationName'] 300 - 168 + integrationName: metadata['integrationName'], 301 301 }, 302 - telemetry: listdata 303 -} 170 + telemetry: { 171 + temperature: data.temperature, 172 + humidity: data.humidity, 173 + } 174 +}; 304 304 305 -function decodeToString(payload) { 306 - return String.fromCharCode.apply(String, payload); 307 -} 176 +/** Helper functions 'decodeToString' and 'decodeToJson' are already built-in **/ 308 308 309 -function decodeToJson(payload) { 310 - // covert payload to string. 311 - var str = decodeToString(payload); 312 - 313 - // parse string to JSON 314 - var data = JSON.parse(str); 315 - return data; 316 -} 317 - 318 318 return result; 319 319 {{/code}} 320 320 ... ... @@ -322,308 +322,191 @@ 322 322 Click on the **Add** button. 323 323 324 324 325 -[[image:mqtt-uplink.png||width="500"]] 326 326 186 +[[image:add-uplink-data-converter.png||height="529" width="500"]] 327 327 328 328 329 329 You should see that the newly added **MQTT Uplink converter **NB/CB is listed on the **Data Converters** page. 330 330 331 - 332 332 [[image:data-converter-list-showing-uplink-dc.png]] 333 333 334 334 335 -= 4. Add Integration = 336 336 195 +== 3.2 Downlink == 337 337 338 -In the left navigation, click **Integrations center**, and then click **Integrations**. 339 339 198 +On the **Data converters** page, click on the ‘**+**’ button, and then click on the **Create new converter** from the dropdown menu. 340 340 341 -[[image:integrations-list-empty.png]] 342 342 201 +[[image:create-new-converter-menu.png||width="500"]] 343 343 344 -On the **Integrations** page, click on the '**+**' button. 345 345 346 346 347 -The **Add integration**205 +The **Add data converter** window will appear. Name it ‘**MQTT Downlink Converter NB/CB**’ and select the Type as **Downlink**. 348 348 349 - In the **Addintegration**window,configure the followingsettings: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. 350 350 351 351 352 -**Basic settings:** 210 +{{code language="JavaScript"}} 211 +// Encode downlink data from incoming Rule Engine message 353 353 354 - ***Integrationtype**:MQTT355 - ***Name**:MQTTintegrationNB/CB356 - ***Enable integration**:YES357 - ***Allowscreate devicesorassets**:YES213 +// 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 358 358 359 - Click**Next**button.218 +/** Encoder **/ 360 360 220 +var data = {}; 361 361 362 - [[image:add-integration-basic-settings.png||height="511"width="500"]]222 +// Process data from incoming message and metadata 363 363 224 +data.tempFreq = msg.temperatureUploadFrequency; 225 +data.humFreq = msg.humidityUploadFrequency; 364 364 365 - **Uplinkdataconverter:**227 +data.devSerialNumber = metadata['ss_serialNumber']; 366 366 367 - *Clickonthe**Selectexisting** button.368 - * **Uplink dataconverter**: Select**MQTTUplink Converter NB/CB **from the dropdown list.229 +// Result object with encoded downlink payload 230 +var result = { 369 369 370 -Click **Next** button. 232 + // downlink data content type: JSON, TEXT or BINARY (base64 format) 233 + contentType: "JSON", 371 371 235 + // downlink data 236 + data: JSON.stringify(data), 372 372 373 -[[image:add-integration-uplink-data-converter.png||height="511" width="500"]] 238 + // Optional metadata object presented in key/value format 239 + metadata: { 240 + topic: metadata['deviceType']+'/'+metadata['deviceName']+'/upload' 241 + } 374 374 243 +}; 375 375 376 -**Downlink data converter:** 245 +return result; 246 +{{/code}} 377 377 378 -Dragino NB/CB devices don't require a downlink data converter to decode their payloads, so you can skip this step. 379 379 380 -* Click on the **Skip **button in the Downlink data converter section. 381 - 382 -Click **Skip** button. 383 - 384 - 385 -[[image:integration-dl-skip.png||height="511" width="500"]] 386 - 387 - 388 - 389 -**Connection:** 390 - 391 -* **Host**: Cluster URL (Eg. 011731f7xxxxxxxxxxxfbbedfc63f4.s1.eu.hivemq.cloud) 392 -* **Port**: 8883 393 -* **Credentials**: Basic 394 -* **Enable SSL**: YES 395 -* **Username**: Username (from your HiveMQ Cloud Cluster with your credentials) 396 -* **Password:** Password (from your HiveMQ Cloud Cluster with your credentials) 397 -* **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 S31B-NB.) 398 -* **QoS:** 0-At most once 399 - 400 - 401 - 402 -[[image:add-integration-connection.png||height="511" width="500"]] 403 - 404 - 405 -Click on the **Advanced settings** button. 406 - 407 -* **Clean session:** YES 408 -* **Retained**: YES 409 - 410 -[[image:add-integration-connection-advanced-settings.png||height="510" width="500"]] 411 - 412 - 413 -Click on the **Check connection** button to verify the MQTT connection using the provided parameters. 414 - 415 - 416 -[[image:check-connection.png||height="83" width="300"]] 417 - 418 - 419 -If the connection is successful, you will see the **Connected** message. If not, check your connection parameters again. 420 - 421 - 422 -[[image:connection-success.png||height="511" width="500"]] 423 - 424 - 425 425 Click on the **Add** button. 426 426 427 -You should see that the newly added integration is listed on the **Integrations** page. 428 428 429 -Since we haven't received data from a device yet, the integration **Status** is shown as **Pending.** 430 430 253 +[[image:add-downlink-data-converter.png||height="529" width="500"]] 431 431 432 -[[image:new-integration-pending.png]] 433 433 256 +You should see that the newly added **MQTT Downlink** Converter NB/CB is listed on the **Data Converters** page. 434 434 435 -= 5. Verifying the receipt of data from virtual devices = 436 436 259 +[[image:data-converters-list.png]] 437 437 438 -== 5.1 How does it work? == 439 439 440 440 441 - Weuse 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 clientpublishes messages to the MQTT broker (HiveMQ) onaspecified MQTTtopic. ThingsBoard subscribes to these messages usingthe same topic.263 += 4. Add Integration = 442 442 443 -The Mosquitto client publishes messages (payloads) on the topic **v1/devices/me/telemetry**. Of course, you can use any topic for testing. 444 444 445 - (% id="cke_bm_37386S" style="display:none"%) (%%)TheMQTT payloadformat isas follows, which is commonfor all **~-~-NB** and **~-~-CB** series devices.The**IMEI** field is mandatoryandisusedto provisionaewdevicewiththeameassignedtoit inThingsBoard.266 +In the left navigation, click **Integrations center**, and then click **Integrations**. 446 446 447 -{{code language="none"}} 448 -{"IMEI": "S31B-NB", "temperature": 27, ......} 449 -{{/code}} 450 450 451 - Once ThingsBoard receives thismessage,itautomatically creates (provisions) the device mentioned in the **IMEI**, for example, S31B-NB.269 +[[image:integrations-list-empty.png]] 452 452 453 453 454 - ==5.2 Sending messages==272 +On the **Integrations** page, click on the '**+**' button. 455 455 456 456 457 - On the terminal, issue the following MQTT command which simulatesthedevice S31B-NB. The message payloadcontainsthefields temperature and humidity,which hold the values S31B-NB and27, respectively. This payload is also (technically) knownas telemetry.275 +The **Add integration** window appears. 458 458 459 -{{code language="none"}} 460 -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}' 461 -{{/code}} 277 +In the **Add integration** window, configure the following settings: 462 462 463 -If the integration was performed without errors, the status of the integration changes to 'Active' after the first telemetry transmission. 464 464 280 +**Basic settings:** 465 465 466 -[[image:integration-active.png]] 282 +* **Integration type**: MQTT 283 +* **Name**: MQTT integration NB/CB 284 +* **Enable integration**: YES 285 +* **Allows create devices or assets**: YES 467 467 287 +Click **Next** button. 468 468 469 -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**. 470 470 471 471 472 -[[image:ne w-device.png]]291 +[[image:add-integration-basic-settings.png||height="511" width="500"]] 473 473 474 474 475 - == 5.3 Viewingmessages==294 +**Uplink data converter:** 476 476 296 +* Click on the **Select existing** button. 297 +* **Uplink data converter**: Select **MQTT Uplink Converter NB/CB **from the dropdown list. 477 477 478 - Go backto the**Integrations**page.299 +Click **Next** button. 479 479 480 -Click on the **MQTT integration NB/CB** in the **Integrations** page to see its details. 481 481 482 -Click on the **Edit** button (//**pen icon**//). 483 483 484 - Click onhe**Disabled** buttonheupper-rightcorner.303 +[[image:add-integration-uplink-data-converter.png||height="511" width="500"]] 485 485 486 -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. 487 487 488 - Click onheApply** button.306 +**Downlink data converter:** 489 489 490 -Then click on the **Apply changes** (//**tick icon**//) button. 308 +* Click on the **Select existing** button. 309 +* **Downlink data converter**: Select **MQTT Downlink Converter NB/CB **from the dropdown list. 491 491 311 +Click **Next** button. 492 492 493 -[[image:Screenshot 2025-03-18 at 09.23.10.png]] 494 494 495 495 496 - Nowgotohe **Events**tab.315 +[[image:add-integration-downlink-data-converter.png||height="511" width="500"]] 497 497 498 -Select the Event type as **Debug** from the dropdown list. 499 499 500 - Now you cansee all the Uplink messages you are simulating through the MQTT broker. The status should be OK if there isno errors in your integration.318 +**Connection:** 501 501 320 +* **Host**: Cluster URL (Eg. 011731f7928541588a6cdfbbedfc63f4.s1.eu.hivemq.cloud) 321 +* **Port**: 8883 322 +* **Credentials**: Basic 323 +* **Enable SSL**: YES 324 +* **Username**: Username (from your HiveMQ Cloud Cluster with your credentials) 325 +* **Password:** Password (from your HiveMQ Cloud Cluster with your credentials) 326 +* **Topic:** tb/mqtt-integration-tutorial/sensors/+/telemetry (the + replaces any 'device name' and creates devices in the Entities -> Devices) 327 +* **QoS:** 0-At most once 502 502 503 -[[image: Screenshot2025-03-16at18.38.59.png]]329 +[[image:add-integration-connection.png||height="511" width="500"]] 504 504 505 505 506 - Then click on the **threedots (...)** in the **Message** column. Youcanseethe uplink message'spayload**inthe **Message** window.332 +Click on the **Advanced settings** button. 507 507 334 +* **Clean session:** NO 335 +* **Retained**: NO 508 508 509 -[[image: Screenshot2025-03-16at18.39.12.png]]337 +[[image:add-integration-connection-advanced-settings.png||height="510" width="500"]] 510 510 511 511 512 - Now,youhavesuccessfullytested your integrationwith a simulated uplinkpayloadandverifiedthatitis receivedby ThingsBoard,andthedevice isprovisioned.340 +Click on the **Check connection** button to verify the MQTT connection using the provided parameters. 513 513 514 514 515 - = 6. Creatinga Dashboard=343 +[[image:check-connection.png||height="83" width="300"]] 516 516 517 -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. 518 518 346 +If the connection is successful, you will see the **Connected** message. If not, check your connection parameters again. 519 519 520 -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. 521 521 349 +[[image:connection-success.png||height="511" width="500"]] 522 522 523 -First simulate a few messages using MQTT. This time, we have added the 'humidity' field to the payload. Eg: 524 524 525 -{{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}} 526 - 527 - 528 -In **ThingsBoard**, from the left navigation menu, click **Dashboards**. Then, click the **+** button and select **Create new dashboard** from the dropdown menu. 529 - 530 - 531 -[[image:dashboard-1.png]] 532 - 533 - 534 -In the **Title** text box, enter **NB/CB Test Dashboard** as the title of the dashboard. 535 - 536 536 Click on the **Add** button. 537 537 354 +You should see that the newly added integration is listed on the **Integrations** page. 538 538 539 - [[image:dashboard-2.png||height="526" width="500"]]356 +Since we haven't received data from a device yet, the integration **Status** is shown as **Pending.** 540 540 541 541 542 -Click on the **Add widget / Add new widget** button. 543 543 360 +[[image:new-integration-pending.png]] 544 544 545 -[[image:dashboard-3.png]] 546 546 363 += 5. Verifying the receipt of data from the device = 547 547 548 -In the **Select widgets bundle** window, click **Charts**. 549 549 366 +On the terminal, issue the following MQTT command which simulates the device S31B-NB. 550 550 551 -[[image:dashboard-4.png||height="537" width="700"]] 552 - 553 - 554 - 555 -In the **Charts: select widget** window, click **Time series chart**. 556 - 557 - 558 -[[image:dashboard-5.png||height="525" width="700"]] 559 - 560 - 561 -Configure the **Time series chart** widget as follows: 562 - 563 -* **Datasource** - select S31B-NB device you provisioned. 564 -* **Series**: 565 -** **temperature** - you can see this key by default. 566 -** **humidity** - Click **Add series** button. Then add the **humidity** for the key and then type **%** as its unit. 567 -* Click on the **Add** button. 568 - 569 -[[image:timeseries-1.png||height="491" width="700"]] 570 - 571 - 572 -The time-series chart will appear in edit mode. Resize it by clicking and dragging the lower-right corner. 573 - 574 -Click the **Save** button to add the widget to the dashboard. 575 - 576 - 577 -[[image:timeseries-3.png||height="347" width="700"]] 578 - 579 - 580 -Now send the following MQTT messages from the terminal to simulate the data. 581 - 582 - 583 583 {{code language="none"}} 584 -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}' 585 - 586 -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}' 587 - 588 -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}' 589 - 369 +mosquitto_pub -d -q 1 -h mqtt.eu.thingsboard.cloud -p 1883 -t v1/devices/S31B-NB/telemetry -u "24vk3w9h7sqdld1me5eh" -m "{temperature:20}" 590 590 {{/code}} 591 591 592 -The chart will update with the values in realtime, as shown in the below image. 593 - 594 - 595 -[[image:timeseries-4.png||height="316" width="700"]] 596 - 597 - 598 -= 7. Configure NB-IoT Sensor = 599 - 600 - 601 -Now, let's experiment with sending data to ThingsBoard using a real NB-IoT device. For example, we will use the **TS01-NB**. 602 - 603 -First, configure the NB-IoT device with the necessary MQTT settings using AT commands. Below is a list of AT commands you can use. 604 - 605 - 606 -**AT Commands** 607 - 608 -* **AT+PRO=3,3 **~/~/ Use MQTT to connect to ThingsBoard. Payload Type set to 3. 609 -* **AT+SUBTOPIC=<MQTT subscribe topic> Eg: TS01-NB** 610 -* **AT+PUBTOPIC=<MQTT publish topic> Eg: TS01-NB** 611 -* **AT+CLIENT=null** 612 -* **AT+UNAME=<MQTT Username>** 613 -* **AT+PWD=<MQTT Password>** 614 -* **AT+SERVADDR=<Broker address, Port>** 615 - 616 -Test your uplink by pressing the ACT button for 1 second. 617 - 618 - 619 - 620 -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**. 621 - 622 -{{info}} 623 -The ThingsBoard uses the device's IMEI number included in the payload to create a device in the Devices section. 624 -{{/info}} 625 - 626 -[[image:image-4.png]] 627 - 628 - 629 - 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
- 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
- thingsboard-6.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.pradeeka - Size
-
... ... @@ -1,1 +1,0 @@ 1 -119.3 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