El contenido no se encuentra disponible en el idioma seleccionado. Estamos trabajando continuamente para agregar más idiomas. Gracias por su apoyo.
- What's New
- Service Overview
- Getting Started
-
User Guide
- Management Platform
- Developer Center
-
Developer Guide
-
Product Development
- Obtaining Development Resources
- Creating a Project and Product
- Developing a Product Model
-
Developing a Codec
- Development Guide
- Offline Development
- Codec Development Examples
-
Reference
- Message Processing Flow
- decode API Description
- Description of encode API
- getManufacturerId Interface Description
- getModel Interface Description
- Precautions on Interface Implementation
- Input/Output Format of the Codec Plug-In
- Implementation Sample Interpretation
- Appendix: Encryption Algorithms Supported by the JDK
- Developing an Application
- Developing a Device
- Self-Service Testing
- Product Release
- Device Interconnection
- Application Interconnection
-
SDK Usage Guide on the Device Side
-
LiteOS SDK Integration Development Guide
- Overview
-
Processfor Connecting Devices to OceanConnect on the Device Side
- Preparations
- Entrypoint Function for LiteOS SDK Device-Cloud Interconnect Components
- Initializing LiteOS SDK Device-Cloud Interconnect Components
- Creating a Data Reporting Task
- Command Processing Function for LiteOS SDK Device-Cloud Interconnect Components
- Main Function Body for LiteOS SDK Device-Cloud Interconnect Components
- Data Structure
- Appendix 1 LWM2M
-
LiteOS SDK Integration Development Guide
-
SDK Usage Guide on the Application Side
-
Huawei IoT Platform Java SDK Usage Guide
- Before You Start
- Requirements for the Development Environment
- Downloading Related Development Resources
- Importing the Java SDK Demo
- Initializing and Configuring Certificates
- Calling Service APIs
- Implementing Callback APIs and Making, Exporting, and Uploading a Callback Certificate
- Service API Calling Process and Precautions
- Testing the SDK
-
Huawei IoT Platform Java SDK Usage Guide
-
Product Development
-
API Reference
-
Northbound API Reference
- Overview
- API Usage Statement
- Secure Application Access
- Device Management
- Data Collection
-
Subscription Management
- Subscribing to Service Data of the IoT Platform
- Subscribing to Management Data of the IoT Platform
- Querying a Subscription
- Querying Subscription in Batches
- Deleting a Subscription
- Deleting Subscriptions in Batches
-
Push Notification
- Pushing Device Registration Notifications
- Pushing Device Binding Notifications
- Pushing Device Information Change Notifications
- Pushing Device Data Change Notifications
- Pushing Batch Device Data Change Notifications
- Pushing Device Service Capability Change Notifications
- Pushing Device Service Capability Addition Notifications
- Pushing Device Service Capability Deletion Notifications
- Pushing Device Deletion Notifications
- Pushing Device Acknowledgment Notifications
- Pushing Device Command Response Notifications
- Pushing Command Status Change Notifications
- Pushing Rule Event Notifications
- Pushing Device Shadow Status Change Notifications
- Pushing Software Upgrade Status Change Notifications
- Pushing Software Upgrade Result Notifications
- Pushing Firmware Upgrade Status Change Notifications
- Pushing Firmware Upgrade Result Notifications
- Command Delivery
- Batch Processing
- Device Group Management
- Device Upgrade
-
Northbound Java SDK API Reference
- SDK Demo Architecture and Usage Guide
- SDK Initialization Configuration and Test
-
Service API List
- Secure Application Access
- Device Management
- Batch Processing
- Subscription Management
-
Message Push
- Pushing Device Registration Notifications
- Pushing Device Binding Notifications
- Pushing Device Information Change Notifications
- Pushing Device Data Change Notifications
- Pushing Batch Device Data Change Notifications
- Pushing Device Service Information Change Notifications
- Pushing Device Deletion Notifications
- Pushing Device Acknowledgment Notifications
- Pushing Device Command Response Notifications
- Pushing Device Event Notifications
- Pushing Device Model Addition Notifications
- Pushing Device Model Deletion Notifications
- Pushing Device Shadow Status Change Notifications
- Pushing Software Upgrade Status Change Notifications
- Pushing Software Upgrade Result Notifications
- Pushing Firmware Upgrade Status Change Notifications
- Pushing Firmware Upgrade Result Notifications
- Pushing NB-IoT Command Status Change Notifications
- Command Delivery (NB-IoT Commands)
- Command Delivery (Non-NB-IoT Commands)
- Data Collection
- Device Group Management
-
Device Upgrade
- Querying a Version Package List
- Querying a Specified Version Package
- Deleting a Specified Version Package
- Creating a Software Upgrade Task
- Creating a Firmware Upgrade Task
- Querying the Result of a Specified Upgrade Task
- Querying Details About Subtasks of a Specified Upgrade Task
- Querying an Upgrade Task List
-
Northbound PHP SDK API Reference
- SDK Demo Architecture and Usage Guide
- SDK Initialization Configuration and Test
-
Service API List
- Secure Application Access
- Device Management
- Batch Processing
- Subscription Management
-
Message Push
- Pushing Device Registration Notifications
- Pushing Device Binding Notifications
- Pushing Device Information Change Notifications
- Pushing Device Data Change Notifications
- Pushing Batch Device Data Change Notifications
- Pushing Device Service Information Change Notifications
- Pushing Device Deletion Notifications
- Pushing Device Acknowledgment Notifications
- Pushing Device Command Response Notifications
- Pushing Device Event Notifications
- Pushing Device Model Addition Notifications
- Pushing Device Model Deletion Notifications
- Pushing Device Shadow Status Change Notifications
- Pushing Software Upgrade Status Change Notifications
- Pushing Software Upgrade Result Notifications
- Pushing Firmware Upgrade Status Change Notifications
- Pushing Firmware Upgrade Result Notifications
- NB-IoT Device Command Status Change Notification
- Command Delivery (NB-IoT Commands)
- Command Delivery (Non-NB-IoT Commands)
- Data Collection
- Device Group Management
-
Device Upgrade
- Querying a Version Package List
- Querying a Specified Version Package
- Deleting a Specified Version Package
- Creating a Software Upgrade Task
- Creating a Firmware Upgrade Task
- Querying the Result of a Specified Upgrade Task
- Querying Details About Subtasks of a Specified Upgrade Task
- Querying an Upgrade Task List
-
Northbound Python SDK API Reference
- SDK Demo Architecture and Usage Guide
- SDK Initialization Configuration and Test
-
Service API List
- Secure Application Access
- Device Management
- Batch Processing
- Subscription Management
-
Message Push
- Pushing Device Registration Notifications
- Pushing Device Binding Notifications
- Pushing Device Information Change Notifications
- Pushing Device Data Change Notifications
- Pushing Batch Device Data Change Notifications
- Pushing Device Service Information Change Notifications
- Pushing Device Deletion Notifications
- Pushing Device Acknowledgment Notifications
- Pushing Device Command Response Notifications
- Pushing Device Event Notifications
- Pushing Device Model Addition Notifications
- Pushing Device Model Deletion Notifications
- Pushing Device Shadow Status Change Notifications
- Pushing Software Upgrade Status Change Notifications
- Pushing Software Upgrade Result Notifications
- Pushing Firmware Upgrade Status Change Notifications
- Pushing Firmware Upgrade Result Notifications
- NB-IoT Device Command Status Change Notification
- Command Delivery (NB-IoT Commands)
- Command Delivery (Non-NB-IoT Commands)
- Data Collection
- Device Group Management
-
Device Upgrade
- Querying a Version Package List
- Querying a Specified Version Package
- Deleting a Specified Version Package
- Creating a Software Upgrade Task
- Creating a Firmware Upgrade Task
- Querying the Result of a Specified Upgrade Task
- Querying Details About Subtasks of a Specified Upgrade Task
- Querying an Upgrade Task List
- AgentLite API Reference (Android)
-
AgentLite API Reference (C)
- Before You Start
- API Description
-
Common Data Structures
- ST_IOTA_DEVICE_INFO Structure
- IEs in EN_IOTA_BIND_IE_TYPE Messages
- Enumerated Values of the EN_IOTA_BIND_RESULT_TYPE Parameter
- IEs in EN_IOTA_LGN_IE_TYPE Messages
- Enumerated Values of the EN_IOTA_LGN_REASON_TYPE Parameter
- Enumerated Values of the EN_IOTA_CFG_TYPE Parameter
- IEs in EN_IOTA_HUB_IE_TYPE Messages
- Enumerated Values of the EN_IOTA_HUB_RESULT_TYPE Parameter
- IEs in EN_IOTA_DATATRANS_IE_TYPE Messages
- IEs in EN_IOTA_DEVUPDATE_IE_TYPE Messages
- Data Types
- AgentLite API Reference (Java)
- MQTT Interface Reference
-
Northbound API Reference
-
FAQs
- FAQs
- Specifications
- Product Use
-
Secondary Development
-
FAQs About Product Development
-
Profile Definition
- How to Develop a Profile
- Upload Is Unavailable When Uploading a Profile to the Developer Center
- Incorrect File Format Is Displayed When Uploading a Profile to the Developer Center
- Message Is Displayed Indicating That the Manufacturer ID and Device Model Exist When Uploading a Profile to the Developer Center
- How to Select a Data Type When Developing a Profile Online
- Profile Cannot Be Edited
-
Plug-In Development
- How to Develop Codecs
- Failed to Deploy a Plug-in That Is Developed Online
- What Is the Code Rule for Fields of the string and varstring Types
- What Is the Code Rule for Fields of the array and variant Types
- Whether Plug-Ins That Are Developed Online Support Transparent Transmission
- How to Use messageId During Online Codec Development
- How to Configure a Command Delivery Response During Online Codec Development
- Failed to Deploy a Plug-in That Is Developed Offline
- Failed to Upload a Plug-in That Is Developed Offline
- Plug-In Package Developed Offline Has Been Checked But Cannot Be Found When Uploading to the IoT Platform
- Codec Exception Occurs After a Plug-In Package Developed Offline That Has Been Checked Is Uploaded to the IoT Platform
- Offline Signature Fails
-
Device Development
- Registered Devices Cannot Connect to the IoT Platform
- Message 513 Is Reported When Devices Are Connected to the IoT Platform
- DTLS Encryption Algorithms Supported by the IoT Platform
- What Does CTNB Mean
- How to Select PSM, DRX, and eDRX
- Devices Cannot Receive Commands from the IoT Platform
- IoT Platform Does Not Receive Data Reported by Devices
- Historical Data Does Not Contain Data Reported By Devices While No Error Occurs
- Duration for Devices to Receive Commands
- Devices Fail to Receive Data Reporting Responses
- Data Reporting Is Successful at One Position But Fails at Another Position
- Command Status Is Not Changed to Successful After a Device Reports the Command Execution Result
- Whether the IoT Platform Can Switch Between the Big-Endian and Little-Endian
- Commands Fail to Be Delivered When a Device in DRX Mode Does Not Report Data in One to Two Days
-
Profile Definition
-
FAQs About Application Development
-
Calling APIs
- Authentication API of the IoT Platform Is Successfully Called Locally But Fails to Be Called on Application Servers
- Error Occurs When an NA Calls an API
- Online Application Simulator Fails to Deliver Commands
- Command Is Successfully Delivered Using the Simulator But Fails to Be Delivered by Calling the API
- Application Server Fails to Deliver Commands and Receives Error Code 403
- How Does an Application Server Deliver a Cache Command
- What Does an Expired Command Mean
- Does the IoT Platform Support Command Resending
- What Does a Timeout Command Mean
- Can the IoT Platform Deliver Commands in Batches
- Are the APIs of the IoT Platform Called Only Using Java
- What Are the Command States on the IoT Platform
- Failed to Call the Calling the Registering Directly Connected Devices API
- APIs Fail To Be Called After a Period of Time While Parameters Remain Unchanged
- Commands Fail to Be Sent After a Period of Time While the Previous Commands Are Successfully Sent
- Historical Data Is Not Returned When the Querying Historical Device Data API Is Called
- Devices Registered with the IoT Platform Are Deleted After a Period of Time
-
Subscription and Push
- Invalid Callback Address Occurs When Calling the Subscription API
- How to Obtain the subscriptionId When Calling the Querying Subscription in Batches API
- Application Server Fails to Receive Data Pushed by the IoT Platform
- How Do I Export the HTTPS Push Certificate
- Difference Between deviceDatachanged and deviceDataschanged
- How Does an Application Server Obtain the IMEI of Devices
- Application Server Receives Data But an Error Is Displayed on the IoT Platform
- Push Messages May Fail to Be Sent to Application Servers
- How Does an Application Servers Obtain The Address Used by the IoT Platform to Push Messages
- Does the IoT Platform Supports Re-push
- How Does an Application Server Receive a Command Status Change Notification
- Application Servers That Have Subscribed to Confirmation Notifications and Command Response Notifications Fail to Receive Push Messages
- Does the IoT Platform Support Only HTTPS Callback Addresses
- Can the IoT Platform Push Data Reported by Different Devices Under the Same Application to Two Servers
- Can a Subscription Address Be a Domain Name
- Can a Callback Address Be Changed
- How Do I Obtain the Callback URL When Calling the Subscription API
-
Calling APIs
-
FAQs About Software/Firmware Upgrade
- What Is Software/Firmware Upgrade
- Can IoT Platform Download Software/Firmware Packages From Third-party Servers
- Can the Target Version Be Earlier Than the Source Version?
- How Do I Obtain Software/Firmware Packages and Their Version Numbers
- Software/Firmware Upgrade Task Is Ended Immediately After Being Created
- What Is the Source Version Required for Uploading a Firmware Package on the Management Portal
- When Reporting Data, Devices Receive the Software/Firmware Version Query Command from the IoT Platform
- Are Services Interrupted During the Software/Firmware Upgrade
- What Are Common Software/Firmware Upgrade Errors
- Retry When Some Devices in the Group Failed to Be Upgraded
- Is Resumable Transmission Supported When the IoT Platform Sends Software/Firmware Packages to Devices
-
Others
- Does the IoT Platform Support Device Registration in Batches
- Does the IoT Platform Perform Flow Control on Applications and Devices
- How Does an Application Server Obtain Data Reported by Devices to the IoT Platform
- Is the Maximum Number of Applications and Devices Restricted on the IoT Platform
- Why Is an Online Device Changed to an Abnormal or Offline State After a Period of Time
- Are Command Delivery and Data Reporting Successful After a Device Becomes Abnormal or Offline
- How Long Does a Device Receive an Immediately-Delivered Command in eDRX Mode
- How Long Is Data Stored on the IoT Platform
- Can Multiple Devices Use One IMEI
-
FAQs About Product Development
- General Reference
Copied.
Codec for Strings and Variable-Length Strings
Scenarios
A smoke detector provides the following functions:
- Reporting smoke alarms (fire severity) and temperature simultaneously, or reporting the temperature separately.
- Reporting description. The data type of description can be string (string type) or varstring (variable-length string type).
NOTE:
This scenario describes how to develop a codec for data in strings and data in variable-length strings. The data reporting and command delivery codecs are developed in the same way. Therefore, data reporting is used as an example and command delivery is not described.
Defining the Profile File
Define the profile file in the development space of the smoke sensor.
Developing a Codec
This section describes only the procedure for developing the codec for reporting the description (other_info). For details on how to develop the codec for reporting the smoke alarms (level) and temperature (temperature), see Codec for Multiple Data Reporting Messages.
- In the development space of the smoke sensor, click Codec Development.
- Configure a data reporting message to report the fire severity and temperature. For details, see 2.
- Configure a data reporting message to report only the temperature. For details, see 3.
- Configure a data reporting message to report the description of the string type.
Add the messageId field to indicate the message type. In this scenario, the value 0x0 is used to identify the message that reports the fire severity and temperature, 0x1 is used to identify the message that reports only the temperature, and 0x2 is used to identify the message that reports the description (of the string type).
Add the other_info field to indicate the description of the string type. In this scenario, set Length to 6.
- Configure a data reporting message to report the description of the variable-length string type.
Add the messageId field to indicate the message type. In this scenario, the value 0x0 is used to identify the message that reports the fire severity and temperature, 0x1 is used to identify the message that reports only the temperature, and 0x3 is used to identify the message that reports the description (of the variable-length string type).
Add the length field to indicate the length of a string. Data Type is configured based on the length of the variable-length string. If the string contains 255 or fewer characters, set this parameter to int8u.
Add the other_info field to indicate the description of the variable-length string type. Set Length Correlation Field to length. The values of Length Correlation Field Difference and Length are automatically filled.
- Drag the property fields in Device Model on the right to set up a mapping with the fields in the data reporting messages.
- Click Save and then Deploy to deploy the codec on the IoT platform.
Testing the Codec
- In the development space of the smoke sensor, click Online Testing and add a virtual device to test the codec.
Select No for Is Physical Device Available and click OK.
- Use the device simulator to report the description of the string type.
For example, a hexadecimal code stream (0231) is reported. 02 indicates the messageId field and specifies that this message reports the description of the string type. 31 indicates the description and its length is one byte.
View the data reporting result ({other_info=null}) in Application Simulator. The length of the description is less than six bytes. Therefore, the codec cannot parse the description.
In the second hexadecimal code stream example (02313233343536), 02 indicates the messageId field and specifies that this message reports the description of the string type. 313233343536 indicates the description and its length is six bytes.
View the data reporting result ({other_info=123456}) in Application Simulator. The length of the description is six bytes. The description is parsed successfully by the codec.
In the third hexadecimal code stream example (023132333435363738), 02 indicates the messageId field and specifies that this message reports the description of the string type. 3132333435363738 indicates the description and its length is eight bytes.
View the data reporting result ({other_info=123456}) in Application Simulator. The length of the description exceeds six bytes. Therefore, the first six bytes are intercepted and parsed by the codec.
In the fourth hexadecimal code stream example (02013132333435), 02 indicates the messageId field and specifies that this message reports the description of the string type. 013132333435 indicates the description and its length is six bytes.
View the data reporting result ({other_info=\u000112345}) in Application Simulator. In the ASCII code table, 01 indicates start of headline which cannot be represented by specific characters. Therefore, 01 is parsed to \u0001.
- Use the device simulator to report the description of the variable-length string type.
For example, a hexadecimal code stream (030141) is reported. In this code stream, 03 indicates the messageId field and specifies that this message reports the description of the variable-length string type. 01 indicates the length of the description (one byte) and its length is one byte. 41 indicates the description and its length is one byte.
View the data reporting result ({other_info=A}) in Application Simulator. A corresponds to 41 in the ASCII code table.
In the second hexadecimal code stream example (03024142), 03 indicates the messageId field and specifies that this message reports the description of the variable-length string type. 02 indicates the length of the description (two bytes) and its length is one byte. 4142 indicates the description and its length is two bytes.
View the data reporting result ({other_info=AB}) in Application Simulator. A corresponds to 41 and B corresponds to 42 in the ASCII code table.
In the third hexadecimal code stream example (030341424344), 03 indicates the messageId field and specifies that this message reports the description of the variable-length string type. The second 03 indicates the length of the description (three bytes) and its length is one byte. 41424344 indicates the description and its length is four bytes.
View the data reporting result ({other_info=ABC}) in Application Simulator. The length of the description exceeds three bytes. Therefore, the first three bytes are intercepted and parsed. In the ASCII code table, A corresponds to 41, B to 42, and C to 43.
In the fourth hexadecimal code stream example (0304414243), 03 indicates the messageId field and specifies that this message reports the description of the variable-length string type. 04 indicates the string length (four bytes) and its length is one byte. 414243 indicates the description and its length is four bytes.
View the data reporting result ({other_info=null}) in Application Simulator. The length of the description is less than four bytes. The codec fails to parse the description.
Summary
- When data is a string or a variable-length string, the codec processes the data based on the ASCII code. When data is reported, the hexadecimal code stream is decoded to a string. For example, 21 is parsed to an exclamation mark (!), 31 to 1, and 41 to A. When a command is delivered, the string is encoded into a hexadecimal code stream. For example, an exclamation mark (!) is encoded into 21, 1 into 31, and A into 41.
- When the data type of a field is varstring(variable-length string type), the field must be associated with the length field. The data type of the length field must be int.
- For variable-length strings, the codecs for command delivery and data reporting are developed in the same way.
- Online developed codecs encode and decode strings and variable-length strings using the ASCII hexadecimal standard table. During decoding (data reporting), if the parsing results cannot be represented by specific characters such as start of headline, start of text, and end of text, the \u+2 byte code stream values are used to indicate the results. For example, 01 is parsed to \u0001 and 02 to \u0002. If the parsing results can be represented by specific characters, specific characters are used.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot