Changes for page NSPH01-NB-IoT Soil pH Sensor User Manual
Last modified by Bei Jinggeng on 2024/03/30 17:53
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 2 removed)
Details
- Page properties
-
- Content
-
... ... @@ -18,14 +18,11 @@ 18 18 NSPH01 probe is made by Solid AgCl reference electrode and Pure metal pH sensitive electrode. It can detect soil's** (% style="color:blue" %)pH (%%)**with high accuracy and stable value. The NSPH01 probe can be buried into soil for long time use. 19 19 20 20 NarrowBand-Internet of Things (NB-IoT) is a standards-based low power wide area (LPWA) technology developed to enable a wide range of new IoT devices and services. NB-IoT significantly improves the power consumption of user devices, system capacity and spectrum efficiency, especially in deep coverage. 21 +\\NSPH01 supports different uplink methods include (% style="color:blue" %)**TCP,MQTT,UDP and CoAP **(%%)for different application requirement. 22 +\\NSPH01 is powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%), It is designed for long term use up to 5 years. (Actually Battery life depends on the use environment, update period & uplink method) 23 +\\To use NSPH01, user needs to check if there is NB-IoT coverage in the installation area and with the bands NSPH01 supports. If the local operator supports it, user needs to get a (% style="color:blue" %)**NB-IoT SIM card** (%%)from local operator and install NSPH01 to get NB-IoT network connection. 21 21 22 -NSPH01 supports different uplink methods include (% style="color:blue" %)**TCP,MQTT,UDP and CoAP **(%%)for different application requirement. 23 23 24 -NSPH01 is powered by (% style="color:blue" %)**8500mAh Li-SOCI2 battery**(%%), It is designed for long term use up to 5 years. (Actually Battery life depends on the use environment, update period & uplink method) 25 - 26 -To use NSPH01, user needs to check if there is NB-IoT coverage in the installation area and with the bands NSPH01 supports. If the local operator supports it, user needs to get a (% style="color:blue" %)**NB-IoT SIM card** (%%)from local operator and install NSPH01 to get NB-IoT network connection. 27 - 28 - 29 29 [[image:image-20220907153151-1.png]] 30 30 31 31 ... ... @@ -51,7 +51,6 @@ 51 51 * Micro SIM card slot 52 52 * 8500mAh Battery for long term use 53 53 54 - 55 55 == 1.3 Specification == 56 56 57 57 ... ... @@ -69,7 +69,6 @@ 69 69 * - B20 @H-FDD: 800MHz 70 70 * - B28 @H-FDD: 700MHz 71 71 72 - 73 73 == 1.4 Probe Specification == 74 74 75 75 ... ... @@ -90,16 +90,13 @@ 90 90 * IP68 Protection 91 91 * Length: 3.5 meters 92 92 88 +== 1.5 Applications == 93 93 94 -== 1.5 Applications == 95 - 96 - 97 97 * Smart Agriculture 98 98 92 +== 1.6 Pin mapping and power on == 99 99 100 -== 1.6 Pin mapping and power on == 101 101 102 - 103 103 [[image:image-20220907153300-2.png]] 104 104 105 105 ... ... @@ -131,7 +131,7 @@ 131 131 * The local NB-IoT network used the band that NSPH01 supports. 132 132 * Your operator is able to distribute the data received in their NB-IoT network to your IoT server. 133 133 134 -Below figure shows our testing structure. Here we have NB-IoT network coverage by China Mobile, the band they use is B8. The NSPH01 will use **CoAP(120.24.4.116:5683)**or raw**UDP(120.24.4.116:5601)**or**MQTT(120.24.4.116:1883)**or**TCP(120.24.4.116:5600)**protocol to send data to the test server.126 +Below figure shows our testing structure. Here we have NB-IoT network coverage by China Mobile, the band they use is B8. The NSPH01 will use CoAP(120.24.4.116:5683) or raw UDP(120.24.4.116:5601) or MQTT(120.24.4.116:1883)or TCP(120.24.4.116:5600)protocol to send data to the test server. 135 135 136 136 137 137 [[image:image-20220907153445-4.png]] ... ... @@ -143,7 +143,6 @@ 143 143 144 144 User need to take out the NB-IoT module and insert the SIM card like below. ((% style="color:red" %) Pay attention to the direction(%%)) 145 145 146 - 147 147 [[image:image-20220907153505-5.png]] 148 148 149 149 ... ... @@ -170,6 +170,7 @@ 170 170 * Stop bits: (% style="color:green" %)**1** 171 171 * Parity: (% style="color:green" %)**None** 172 172 * Flow Control: (% style="color:green" %)**None** 164 +* 173 173 174 174 Make sure the switch is in FLASH position, then power on device by connecting the jumper on NSPH01. NSPH01 will output system info once power on as below, we can enter the (% style="color:green" %)**password: 12345678**(%%) to access AT Command input. 175 175 ... ... @@ -215,6 +215,7 @@ 215 215 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5601 ** (%%) ~/~/ to set UDP server address and port 216 216 * (% style="color:blue" %)**AT+CFM=1 ** (%%) ~/~/ If the server does not respond, this command is unnecessar 217 217 210 + 218 218 [[image:image-20220907153643-9.png||height="401" width="734"]] 219 219 220 220 ... ... @@ -235,6 +235,7 @@ 235 235 * (% style="color:blue" %)**AT+PUBTOPIC=NSE01_PUB **(%%)~/~/ Set the sending topic of MQTT 236 236 * (% style="color:blue" %)**AT+SUBTOPIC=NSE01_SUB ** (%%) ~/~/ Set the subscription topic of MQTT 237 237 231 + 238 238 [[image:image-20220907153739-11.png||height="491" width="764"]] 239 239 240 240 ... ... @@ -254,6 +254,7 @@ 254 254 * (% style="color:blue" %)**AT+PRO=4 ** (%%) ~/~/ Set to use TCP protocol to uplink 255 255 * (% style="color:blue" %)**AT+SERVADDR=120.24.4.116,5600 ** (%%) ~/~/ to set TCP server address and port 256 256 251 + 257 257 [[image:image-20220907153818-13.png||height="486" width="668"]] 258 258 259 259 ... ... @@ -268,6 +268,7 @@ 268 268 269 269 * (% style="color:blue" %)**AT+TDC=7200 ** (%%) ~/~/ Set Update Interval to 7200s (2 hour) 270 270 266 + 271 271 (% style="color:red" %)**NOTE: By default, the device will send an uplink message every 2 hours. Each Uplink Include 8 set of records in this 2 hour (15 minute interval / record).** 272 272 273 273 ... ... @@ -279,9 +279,9 @@ 279 279 280 280 Each time the device uploads a data package, 8 sets of recorded data will be attached. Up to 32 sets of recorded data can be uploaded. 281 281 282 -(% border=" 1.5" style="background-color:#ffffcc; color:green; width:520px" %)283 -| =(% scope="row" style="width:50px;" %)**Size(bytes)**|(% style="width:40px" %)**8**|(% style="width:20px" %)**2**|(% style="width:25px" %)**2**|(% style="width:60px" %)**1**|(% style="width:20px" %)**1**|(% style="width:40px" %)**1**|(% style="width:40px" %)**2**|(% style="width:50px" %)**2**|(% style="width:50px" %)**4**|(% style="width:50px" %)**2**|(% style="width:40px" %)**2**|(% style="width:40px" %)**4**284 -| =(% style="width:;" %)**Value**|(% style="width:83px" %)Device ID|(% style="width:44px" %)Ver|(% style="width:42px" %)BAT|(% style="width:124px" %)Signal Strength|(% style="width:57px" %)MOD|(% style="width:80px" %)Interrupt|(% style="width:69px" %)Soil PH|(% style="width:134px" %)Soil Temperature|(% style="width:98px" %)Time stamp|(% style="width:134px" %)Soil Temperature|(% style="width:68px" %)Soil PH|(% style="width:125px" %)Time stamp .....278 +(% border="2" style="background-color:#ffffcc; color:green; width:1160px" %) 279 +|(% style="width:96px" %)**Size(bytes)**|(% style="width:83px" %)**8**|(% style="width:44px" %)**2**|(% style="width:42px" %)**2**|(% style="width:124px" %)1|(% style="width:57px" %)1|(% style="width:80px" %)1|(% style="width:69px" %)2|(% style="width:134px" %)2|(% style="width:98px" %)4|(% style="width:134px" %)2|(% style="width:68px" %)2|(% style="width:125px" %)4 280 +|(% style="width:96px" %)**Value**|(% style="width:83px" %)Device ID|(% style="width:44px" %)Ver|(% style="width:42px" %)BAT|(% style="width:124px" %)Signal Strength|(% style="width:57px" %)MOD|(% style="width:80px" %)Interrupt|(% style="width:69px" %)Soil PH|(% style="width:134px" %)Soil Temperature|(% style="width:98px" %)Time stamp|(% style="width:134px" %)Soil Temperature|(% style="width:68px" %)Soil PH|(% style="width:125px" %)Time stamp ..... 285 285 286 286 If we use the MQTT client to subscribe to this MQTT topic, we can see the following information when the NSPH01 uplink data. 287 287 ... ... @@ -288,47 +288,25 @@ 288 288 [[image:image-20220907153902-15.png||height="581" width="804"]] 289 289 290 290 291 -((( 292 292 The payload is ASCII string, representative same HEX: 293 -))) 294 294 295 -((( 296 - 297 -))) 289 +0x(% style="color:red" %)f868411056754138(% style="color:blue" %)0064(% style="color:green" %)0c78(% style="color:red" %)17(% style="color:blue" %)01(% style="color:green" %)00(% style="color:red" %)**//0225010b6315537b//**010b0226631550fb//**010e022663154d77**//01110225631549f1//**011502246315466b**//01190223631542e5//**011d022163153f62**//011e022163153bde//**011e022163153859**//(%%) where: 298 298 299 -((( 300 -**0x (% style="color:red" %)__f868411056754138__ (% style="color:blue" %)__0064 __ (% style="color:green" %)__0c78__ (% style="color:#00b0f0" %)__17__ (% style="color:#7030a0" %)__01__ (% style="color:#d60093" %)__00__ (% style="color:#a14d07" %)__0225 __ (% style="color:#0020b0" %) __010b__ (% style="color:#420042" %)__6315537b__ (% style="color:#663300" %)//__010b0226631550fb__ __010e022663154d77 01110225631549f1 011502246315466b 01190223631542e5 011d022163153f62 011e022163153bde 011e022163153859__//(%%)** 301 -))) 291 +* (% style="color:red" %)Device ID: 0xf868411056754138 = f868411056754138 292 +* (% style="color:blue" %)Version: 0x0064=100=1.0.0 293 +* (% style="color:green" %)BAT: 0x0c78 = 3192 mV = 3.192V 294 +* (% style="color:red" %)Singal: 0x17 = 23 295 +* (% style="color:blue" %)Mod: 0x01 = 1 296 +* (% style="color:green" %)Interrupt: 0x00= 0 297 +* Soil PH: 0x0225= 549 = 5.49 298 +* Soil Temperature: 0x010B =267=26.7 °C 299 +* Time stamp : 0x6315537b =1662342011 ([[Unix Epoch Time>>url:http://www.epochconverter.com/]]) 300 +* Soil Temperature,Soil PH,Time stamp : 010b0226631550fb 301 +* (% style="color:red" %)8 sets of recorded data: Temperature,Soil PH,Time stamp : 010e022663154d77,....... 302 302 303 -((( 304 - 305 305 306 -**where:** 307 -))) 308 308 309 -* (% style="color:#037691" %)**Device ID:**(%%)** **0xf868411056754138 = f868411056754138 310 310 311 -* (% style="color:#037691" %)**Version:** (%%) 0x0064=100=1.0.0 312 - 313 -* (% style="color:#037691" %)**BAT:** (%%) 0x0c78 = 3192 mV = 3.192V 314 - 315 -* (% style="color:#037691" %)**Singal:** (%%)0x17 = 23 316 - 317 -* (% style="color:#037691" %)**Mod:** (%%) 0x01 = 1 318 - 319 -* (% style="color:#037691" %)**Interrupt:**(%%) 0x00= 0 320 - 321 -* (% style="color:#037691" %)**Soil PH:** (%%) 0x0225= 549 = 5.49 322 - 323 -* (% style="color:#037691" %)**Soil Temperature:**(%%) 0x010b =267=26.7 °C 324 - 325 -* (% style="color:#037691" %)**Time stamp :** (%%) 0x6315537b =1662342011 ([[Unix Epoch Time>>url:http://www.epochconverter.com/]]) 326 - 327 -* (% style="color:#037691" %)**Soil Temperature,Soil PH,Time stamp : **(%%) 010b0226631550fb 328 - 329 -* (% style="color:#037691" %)**8 sets of recorded data:**(%%) Temperature,Soil PH,Time stamp : 010e022663154d77,....... 330 - 331 - 332 332 == 2.4 Payload Explanation and Sensor Interface == 333 333 334 334 ... ... @@ -392,9 +392,9 @@ 392 392 393 393 Get the PH content of the soil. The value range of the register is 300-1000(Decimal), divide this value by 100 to get the percentage of PH in the soil. 394 394 395 -For example, if the data you get from the register is (% style="color:blue" %)**__0x05 0xDC__**(%%), the PH content in the soil is369 +For example, if the data you get from the register is **__0x05 0xDC__**, the PH content in the soil is 396 396 397 - (% style="color:blue" %)**0229(H) = 549(D) /100 = 5.49.**371 +**0229(H) = 549(D) /100 = 5.49.** 398 398 399 399 400 400 ... ... @@ -401,9 +401,8 @@ 401 401 === 2.4.6 Soil Temperature === 402 402 403 403 404 -Get the temperature in the soil. The value range of the register is -4000 - +800(Decimal), divide this value by 100 to get the temperature in the soil. For example, if the data you get from the register is (% style="color:blue" %)**__0x09 0xEC__**(%%), the temperature content in the soil is378 +Get the temperature in the soil. The value range of the register is -4000 - +800(Decimal), divide this value by 100 to get the temperature in the soil. For example, if the data you get from the register is **__0x09 0xEC__**, the temperature content in the soil is 405 405 406 - 407 407 **Example**: 408 408 409 409 If payload is 0105H: ((0x0105 & 0x8000)>>15 === 0),temp = 0105(H)/10 = 26.1 °C ... ... @@ -432,9 +432,8 @@ 432 432 433 433 The lower four bits of this data field shows if this packet is generated by interrupt or not. Click here for the hardware and software set up. 434 434 408 +Example: 435 435 436 -**Example:** 437 - 438 438 0x(00): Normal uplink packet. 439 439 440 440 0x(01): Interrupt Uplink Packet. ... ... @@ -492,6 +492,9 @@ 492 492 * After NSPH01 join NB-IoT network. The LED will be ON for 3 seconds. 493 493 * For each uplink probe, LED will be on for 500ms. 494 494 467 + 468 + 469 + 495 495 == 2.7 Installation and Maintain == 496 496 497 497 ... ... @@ -505,7 +505,7 @@ 505 505 === 2.7.2 Measurement === 506 506 507 507 508 -(% style="color:#037691" %) **Measurement the soil surface:**483 +**(% style="color:#037691" %)Measurement the soil surface:** 509 509 510 510 511 511 [[image:image-20220907154700-18.png]] ... ... @@ -519,7 +519,7 @@ 519 519 Put soil over the probe after insert. And start to measure. 520 520 521 521 522 -(% style="color:#037691" %) **Measurement inside soil:**497 +**(% style="color:#037691" %)Measurement inside soil:** 523 523 524 524 Dig a hole with diameter > 20CM. 525 525 ... ... @@ -537,12 +537,15 @@ 537 537 1. Avoid the probes to touch oily matter. Which will cause issue in accuracy. 538 538 1. The probe is IP68 can be put in water. 539 539 515 + 516 + 517 + 540 540 == 2.8 PH and Temperature alarm function == 541 541 542 542 543 -(% style="color:#037691" %) **➢ AT Command:**521 +**(% style="color:#037691" %)➢ AT Command:** 544 544 545 -(% style="color:blue" %) **AT+ PHALARM=min,max**523 +**(% style="color:blue" %)AT+ PHALARM=min,max** 546 546 547 547 ² When min=3, and max≠0, Alarm higher than max 548 548 ... ... @@ -551,7 +551,7 @@ 551 551 ² When min≠0 and max≠0, Alarm higher than max or lower than min 552 552 553 553 554 -(% style="color:blue" %) **Example:**532 +**(% style="color:blue" %)Example:** 555 555 556 556 AT+ PHALARM =5,8 ~/~/ Alarm when PH lower than 5. 557 557 ... ... @@ -564,33 +564,31 @@ 564 564 ² When min≠0 and max≠0, Alarm higher than max or lower than min 565 565 566 566 567 -(% style="color:blue" %) **Example:**545 +**(% style="color:blue" %)Example:** 568 568 569 569 AT+ TEMPALARM=20,30 ~/~/ Alarm when temperature lower than 20. 570 570 571 571 572 572 573 -== 2.9 551 +== 2.9 Set the number of data to be uploaded and the recording time == 574 574 575 575 576 -(% style="color:#037691" %) **➢ AT Command:**554 +**(% style="color:#037691" %)➢ AT Command:** 577 577 578 -* (% style="color:blue" %)**AT+TR=900** (%%) ~/~/ The unit is seconds, and the default is to record data once every 900 seconds.( The minimum can be set to 180 seconds) 579 -* (% style="color:blue" %)**AT+NOUD=8** (%%) ~/~/ The device uploads 8 sets of recorded data by default. Up to 32 sets of record data can be uploaded. 556 +**(% style="color:blue" %)AT+TR=900** (%%) ~/~/ The unit is seconds, and the default is to record data once every 900 seconds.( The minimum can be set to 180 seconds) 580 580 581 - The di agram belowexplainsthe relationshipbetweenTR, NOUD,andTDCmore clearly**:**558 +**(% style="color:blue" %)AT+NOUD=8** (%%) ~/~/ The device uploads 8 sets of recorded data by default. Up to 32 sets of record data can be uploaded. 582 582 583 -[[image:image-20221009000933-1.png||height="750" width="1043"]] 584 584 561 +== 2.10 Read or Clear cached data == 585 585 586 586 587 - ==2.10 Reador Clearcacheddata==564 +**(% style="color:#037691" %)➢ AT Command:** 588 588 566 +**(% style="color:blue" %)AT+CDP** (%%) ~/~/ Read cached data 589 589 590 -(% style="color: #037691" %)**➢ATCommand:**568 +**(% style="color:blue" %)AT+CDP=0** (%%) ~/~/ Clear cached data 591 591 592 -* (% style="color:blue" %)**AT+CDP** (%%) ~/~/ Read cached data 593 -* (% style="color:blue" %)**AT+CDP=0** (%%) ~/~/ Clear cached data 594 594 595 595 [[image:image-20220907154700-19.png]] 596 596 ... ... @@ -611,9 +611,9 @@ 611 611 == 2.12 Firmware Change Log == 612 612 613 613 614 -Download URL & Firmware Change log: [[https:~~/~~/www.dropbox.com/sh/1 tv07fro2pvjqj8/AAD-2wbfGfluTZfh38fQqdA_a?dl=0>>https://www.dropbox.com/sh/1tv07fro2pvjqj8/AAD-2wbfGfluTZfh38fQqdA_a?dl=0]]590 +Download URL & Firmware Change log: [[https:~~/~~/www.dropbox.com/sh/1zmcakvbkf24f8x/AACmq2dZ3iRB9F1nVWeEB9Moa?dl=0>>url:https://www.dropbox.com/sh/1zmcakvbkf24f8x/AACmq2dZ3iRB9F1nVWeEB9Moa?dl=0]] 615 615 616 -Upgrade Instruction: [[Upgrade Firmware>> ||anchor="H5.1200BHowtoUpgradeFirmware"]]592 +Upgrade Instruction: [[Upgrade Firmware>>path:#H5.1200BHowtoUpgradeFirmware]] 617 617 618 618 619 619 ... ... @@ -644,9 +644,9 @@ 644 644 645 645 Instruction to use as below: 646 646 647 -(% style="color:blue" %) **Step 1: **(%%)Downlink the up-to-date DRAGINO_Battery_Life_Prediction_Table.xlsx from: [[https:~~/~~/www.dragino.com/downloads/index.php?dir=LoRa_End_Node/Battery_Analyze/>>url:https://www.dragino.com/downloads/index.php?dir=LoRa_End_Node/Battery_Analyze/]]623 +**(% style="color:blue" %)Step 1: **(%%)Downlink the up-to-date DRAGINO_Battery_Life_Prediction_Table.xlsx from: [[https:~~/~~/www.dragino.com/downloads/index.php?dir=LoRa_End_Node/Battery_Analyze/>>url:https://www.dragino.com/downloads/index.php?dir=LoRa_End_Node/Battery_Analyze/]] 648 648 649 -(% style="color: blue" %)**Step 2: **(%%) Open it and choose625 +**(% style="color:#037691" %)Step 2: **(%%) Open it and choose 650 650 651 651 * Product Model 652 652 * Uplink Interval ... ... @@ -704,7 +704,7 @@ 704 704 AT+<CMD>=? : Get the value 705 705 706 706 707 -(% style="color:#037691" %) **General Commands**683 +**(% style="color:#037691" %)General Commands** 708 708 709 709 AT : Attention 710 710 ... ... @@ -749,17 +749,17 @@ 749 749 AT+ PHCAL : calibrate PH value 750 750 751 751 752 -(% style="color:#037691" %) **COAP Management**728 +**(% style="color:#037691" %)COAP Management** 753 753 754 754 AT+URI : Resource parameters 755 755 756 756 757 -(% style="color:#037691" %) **UDP Management**733 +**(% style="color:#037691" %)UDP Management** 758 758 759 759 AT+CFM : Upload confirmation mode (only valid for UDP) 760 760 761 761 762 -(% style="color:#037691" %) **MQTT Management**738 +**(% style="color:#037691" %)MQTT Management** 763 763 764 764 AT+CLIENT : Get or Set MQTT client 765 765 ... ... @@ -772,7 +772,7 @@ 772 772 AT+SUBTOPIC : Get or Set MQTT subscription topic 773 773 774 774 775 -(% style="color:#037691" %) **Information**751 +**(% style="color:#037691" %)Information** 776 776 777 777 AT+FDR : Factory Data Reset 778 778 ... ... @@ -790,7 +790,7 @@ 790 790 791 791 Please see this link for how to upgrade: [[http:~~/~~/wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/#H2.HardwareUpgradeMethodSupportList>>url:http://wiki.dragino.com/xwiki/bin/view/Main/Firmware%20Upgrade%20Instruction%20for%20STM32%20base%20products/#H2.HardwareUpgradeMethodSupportList]] 792 792 793 -(% style="color:red" %) **Notice, NSPH01 and LSPH01 share the same mother board. They use the same connection and method to update.**769 +**(% style="color:red" %)Notice, **NSPH01 **and **LSPH01 **share the same mother board. They use the same connection and method to update.** 794 794 795 795 796 796 ... ... @@ -814,7 +814,7 @@ 814 814 == 6.2 AT Command input doesn't work == 815 815 816 816 817 -In the case if user can see the console output but can't type input to the device. Please check if you already include the (% style="color:green" %) **ENTER**(%%) while sending out the command. Some serial tool doesn't send (% style="color:green" %)**ENTER** (%%)while press the send key, user need to add ENTER in their string.793 +In the case if user can see the console output but can't type input to the device. Please check if you already include the **(% style="color:green" %)ENTER**(%%) while sending out the command. Some serial tool doesn't send **(% style="color:green" %)ENTER** (%%)while press the send key, user need to add ENTER in their string. 818 818 819 819 820 820 ... ... @@ -835,12 +835,12 @@ 835 835 836 836 **Dimension and weight**: 837 837 838 -* Device Size: cm 839 -* Device Weight: g 840 -* Package Size / pcs : cm 841 -* Weight / pcs : g 814 +* Size: 195 x 125 x 55 mm 815 +* Weight: 420g 842 842 843 843 818 + 819 + 844 844 = 9. Support = 845 845 846 846
- image-20220923101327-1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Xiaoling - Size
-
... ... @@ -1,1 +1,0 @@ 1 -12.1 KB - Content
- image-20221009000933-1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Edwin - Size
-
... ... @@ -1,1 +1,0 @@ 1 -282.9 KB - Content