9.2 IoT Platform Secondary Development-MIQ
9.2 IoT Platform Secondary Development-MIQ
Foreword
⚫ The HUAWEI CLOUD IoT platform enables southbound and northbound data
exchange. Developers need to perform secondary development using this platform
to implement end-to-end IoT services.
2 Huawei Confidential
Objectives
3 Huawei Confidential
Contents
2. Product Development
4 Huawei Confidential
Introduction to Platform Secondary Development
⚫ To create an IoT solution based on the HUAWEI CLOUD IoT platform, you must perform the operations described in the table
below.
Operation Description
Product development Manage products, develop product models and codecs, and perform online debugging on the IoT Device Access (IoTDA) console.
Development on the Carry out development for interconnection between applications and the platform, including calling APIs, obtaining service data, and
application side managing HTTPS certificates.
Development on the Integrate and interconnect devices with the IoT platform, including connecting devices to the IoT platform, reporting service data to the
device side platform, and processing commands delivered by the platform.
⚫ The process of using IoTDA, including product, application, device, and routine management.
Product development: You can perform development operations on the IoTDA console. For example, you can create a product or device,
develop a product model or codec online, perform online debugging, carry out self-service testing, and release products.
Development on the application side: The platform provides robust device management capabilities through APIs. You can develop
applications based on the APIs to meet requirements in different industries such as smart city, smart campus, smart industry, and IoV.
Development on the device side: You can connect devices to the platform by integrating SDKs or modules, or using native protocols.
Routine management: After a physical device is connected to the platform, you can perform routine device management on the IoTDA
console or by calling APIs.
5 Huawei Confidential
Contents
2. Product Development
◼ Product Model
▫ Codec
6 Huawei Confidential
Development Process: Product Development and Development
on the Application Side
Developer
IoTDA console
Commercial use of
Device-side integration Online debugging Device registration
devices
Development on the device
side
7 Huawei Confidential
Product Model (1)
⚫ A product model, also known as a profile, defines the properties of a device, such as the color, size,
collected data, identifiable commands, and reported events. The manufacturer, device type, and
device model are used together to uniquely identify a product model. You can easily develop
product models on the IoTDA console without writing any code.
⚫ A profile (product model) is a file that describes what a device is, what it can do, and how to
control it. You can build an abstract model of a device by defining a product model on the IoT
platform so that the platform can know what services, properties, and commands are supported by
the device, such as its color or any on/off switches. After defining a product model, you can use it
for device registration.
8 Huawei Confidential
Product Model (2)
Product
Service
Product details
capabilities
Manufacturer Manufacturer
Device type Protocol Service Service Service
ID name
Command
Response field
field
⚫ On the IoT platform, the product model is the key to device access. It contains the capabilities and services of a device and the data formats of
upstream and downstream device messages. For example, when a device reports data to the IoT platform, the IoT platform matches the
product model based on the keywords of the reported data and verifies the data format. Only data that is matched is saved on the IoT
platform. If the reported data is not matched with the configuration in the product model, the data is considered invalid and dropped.
9 Huawei Confidential
Product Model (3)
⚫ Product Details
Product details describe basic information about a device, including the manufacturer ID,
manufacturer name, device type, and protocol.
For example, the manufacturer name of a water meter could be ‘HZYB', the manufacturer ID
'TestUtf8ManuId', the device type 'WaterMeter', and the protocol 'CoAP'.
⚫ Service Capabilities
Service capabilities of a device need to be defined. Device capabilities are divided into several
services. The properties, commands, and command parameters of each service are defined in
the product model.
Take a water meter as an example. It has multiple capabilities, such as reporting data about the
water flow, alarms, power, and connections, and receiving commands from a server. When
describing the capabilities of a water meter, the profile includes five services, each of which has
its own properties or commands.
10 Huawei Confidential
Service Capability - Water Meter
Service Description
Used to define parameters reported by the water meter, such as the water flow, temperature, and
Basics (WaterMeterBasic) pressure. If these parameters need to be controlled or modified using commands, you also need to
define parameters in the commands.
Used to define data reported by the water meter in various alarm scenarios. Commands need to be
Alarm (WaterMeterAlarm)
defined if necessary.
Battery (Battery) Used to define data including the voltage and current intensity of the water meter.
Transmission rule (DeliverySchedule) Used to define transmission rules for the water meter. Commands need to be defined if necessary.
Connectivity (Connectivity) Used to define connection parameters of the water meter.
⚫ The HUAWEI CLOUD IoT platform provides multiple methods for developing product models. You can select one that suits
your needs.
Importing models (preset product models on the platform)
Uploading a profile (offline development)
Importing models in an Excel file
User-defined functions (online development)
11 Huawei Confidential
Profile Example
12 Huawei Confidential
Contents
2. Product Development
▫ Product Model
◼ Codec
13 Huawei Confidential
Codec (1)
⚫ What Is a Codec?
The codec decodes binary data reported by devices into JSON data that can be read by the application and
encodes downstream command data in JSON format of the application into binary data that can be
executed by devices.
14 Huawei Confidential
Codec (2)
⚫ Developing a Codec
The platform provides three methods for developing codecs. Offline codec development is complex and
time-consuming. Graphical codec development is recommended.
◼ Graphical development: The codec of a product can be quickly developed in a visualized manner on the IoTDA console.
◼ Offline Development: A codec is developed through secondary development based on the Java codec demo to implement encoding,
decoding, packaging, and quality inspection.
◼ Script-based development: JavaScript scripts are used to implement encoding and decoding.
The IoT platform abstracts and encapsulates the original codec development code. Therefore, developers
can develop codecs simply by defining the format of code streams reported by devices and mapping the
properties in the code streams and the profiles in a graphical way. When the development is complete, the
codec is automatically generated and can be deployed on the IoT platform.
15 Huawei Confidential
Codec (3)
Application platform
Encode Decode
Codecs
method method
Deliver commands in
Report binary data
binary format
IoT device
16 Huawei Confidential
Codec Example
17 Huawei Confidential
Contents
2. Product Development
18 Huawei Confidential
Development on the Application Side
⚫ The IoT platform provides APIs to make application development more easy and efficient. You can call these
open APIs to quickly integrate platform functions, such as product, device, subscription, and rule
management, as well as device command delivery.
Application-side APIs
IAM IoTDA
19 Huawei Confidential
Northbound APIs of the IoT Platform
⚫ The HUAWEI CLOUD IoT platform provides various northbound RESTful APIs for application developers to quickly develop
IoT applications based on the capabilities provided by the platform.
Device messages
Batch task PUT Updates resources on the server.
20 Huawei Confidential
Application Access Authentication
Method: POST
Request: Response:
https://iam.cn-north- //Status Code:
4.myhuaweicloud.com/v3/auth/tokens Status Code: 201 Created
// Response header:
Content-Type: application/json //Body:{
X-Auth-
"auth": { Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
"identity": { //Body: {
"methods": [
"password" ], "token": {
"password": { "catalog": [],
Authentication Return a token "user": { "expires_at": "2020-01-04T09:05:22.701000Z",
"name": "username", "issued_at": "2020-01-03T09:05:22.701000Z",
"password": "********", "methods": [
"domain": { "password"
"name": "domainname" ],
IAM service } "project": {
} "domain": {
} "id": "d78cbac186b744899480f25bd022f...",
}, "name": "IAMDomain"
... },
} ...
}// username indicates the IAM username, and } //X-Auth-Token is the secret used for subsequent device and
password indicates the password for logging in to data operations.
HUAWEI CLOUD.
21 Huawei Confidential
Creating a Device
Method: POST Response:
// Status Code:
Status Code: 201 Created
Request:
Content-Type: application/json
https://{Endpoint}/v5/iot/{project_id}/devices
// Body:
Register Content-Type: application/json
{
X-Auth-Token: ********
"app_id" : "***",
Instance-Id: ********
"app_name" : "***",
{
"device_id" : "***",
"device_id" : "d4922d8a-6c8e-4396-852c-
HUAWEI CLOUD IoT 164aefa6638f",
"node_id" : "***",
"gateway_id" : "***",
platform "node_id" : "ABC123456789",
"device_name" : "***",
"device_name" : "dianadevice",
"node_type" : "***",
"product_id" : "b640f4c203b7910fc3cbd446ed437cbd",
"description" : "***",
Bind "auth_info" : {
"fw_version" : "1.1.0",
"auth_type" : "SECRET",
"sw_version" : "1.1.0",
"secure_access" : true,
"auth_info" : {
"fingerprint" :
"auth_type" : "SECRET",
"dc0f1016f495157344ac5f1296335cff725ef22f",
"secret" : "***",
"secret" : "3b935a250c50dc2c6d481d048cefdc3c",
"fingerprint" : "***",
"timeout" : 300
"secure_access" : true,
},
"timeout" : 300
…
},
}
Directly connected …
Indirectly NB-IoT
devices }
connected devices
(with IP capability) }
devices
22 Huawei Confidential
Modifying Device Information
Method: PUT
Request:
Modify device
https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}
information Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********
HUAWEI CLOUD IoT {
platform "device_name" : "dianadevice",
"description" : "watermeter device",
"extension_info" : {
"aaa" : "xxx",
"bbb" : 0
},
"auth_info" : {
"secure_access" : true,
"timeout" : 300
}
}
23 Huawei Confidential
Querying a Device
Response:
// Status Code:
Status Code: 200 OK
Query a device
Content-Type: application/json
//Body:
Method: GET {
"app_id" : "***",
HUAWEI CLOUD Request: "app_name" : "***",
IoT platform https://{Endpoint}/v5/iot/{project_id}/devices/{device
_id}
"device_id" : "***",
"node_id" : "***",
Content-Type: application/json "gateway_id" : "***",
X-Auth-Token: ******** "device_name" : "***",
Instance-Id: ******** "node_type" : "***",
"description" : "***",
"fw_version" : "1.1.0",
"sw_version" : "1.1.0",
"auth_info" : {
"auth_type" : "***",
"secret" : "***",
"fingerprint" : "***",
"secure_access" : true,
Indirectly Directly connected "timeout" : 300
NB-IoT
connected devices },
devices
devices (with IP capability) ...}
24 Huawei Confidential
Querying Device Messages
Method: GET
Request:
https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/
messages
Content-Type: application/json
Query device messages X-Auth-Token: ********
Instance-Id: ********
Response:
HUAWEI CLOUD IoT // Status Code:
Status Code: 200 OK
platform Content-Type: application/json
{
"device_id" : "d4922d8a-6c8e-4396-852c-164aefa6638f",
"messages" : [ {
"message_id" : "b1224afb-e9f0-4916-8220-
b6bab568e888",
"name" : "message_name",
"message" : "string",
"topic" : "string",
"status" : "PENDING",
"created_time" : "20151212T121212Z",
"finished_time" : "20151212T121212Z"
Indirectly Directly connected NB-IoT }]
connected devices devices }
devices (with IP capability)
25 Huawei Confidential
Deleting a Device
Method: DELETE
Delete a device
Request:
HUAWEI CLOUD IoT https://{Endpoint}/v5/iot/{project_id}/devices/{dev
ice_id}
platform Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********
Response:
Status Code: 204 No Content
26 Huawei Confidential
Contents
2. Product Development
27 Huawei Confidential
Platform Development Process: Development on the Device Side
Device-side integration
Use SDKs for access Use modules for access Use protocols
MQTTS, LoRaWAN, and Modbus
for access
Huawei-certified
IoT Device SDK (C) modules
Select a module
Select an SDK IoT Device SDK (Java)
Non-Huawei-certified
modules
IoT Device SDK Tiny
28 Huawei Confidential
Development on the Device Side (1)
29 Huawei Confidential
Development on the Device Side (2)
MQTT/CoAP/L
The device integrates the
Device
Device SDK wM2M HUAWEI
Common
development Tiny + CLOUD SDK Tiny into the MCU or
IoT single-chip microcomputer
MCU/single-chip Communications
microcomputer module
to connect to the platform.
MQTT/CoAP/L
The device uses the
Device
wM2M HUAWEI
OpenCPU CLOUD OpenCPU module to
module IoT integrate the SDK to
development
OpenCPU module connect to the IoT
platform.
MQTT/CoAP/L
The gateway integrates the
Device
wM2M HUAWEI
Gateway Device SDK + CLOUD Device SDK into the
development IoT MCU/CPU to connect to the
MCU/CPU Module or platform.
network port
30 Huawei Confidential
Using IoT Device SDKs for Access
⚫ You can use Huawei IoT Device SDKs to quickly connect devices to the IoT platform. After being integrated
with an IoT Device SDK, devices that support the TCP/IP protocol stack can communicate directly with the IoT
platform. Devices that do not support the TCP/IP protocol stack, such as Bluetooth and Zigbee devices, need
to use a gateway integrated with the IoT Device SDK to communicate with the platform.
1. Create a product on the IoTDA console or by calling the API Creating a Product.
2. Register the device on the IoTDA console or by calling the API Creating a Device.
3. Implement the functions demonstrated in the figure, including reporting messages/properties, receiving
commands/properties/messages, OTA upgrades, topic customization, and generic-protocol access.
IoTDA
31 Huawei Confidential
Using Huawei - Certified Modules for Access
⚫ Certified modules are pre-integrated with the IoT Device SDK Tiny. They have passed Huawei tests, and comply with
Huawei's AT command specifications. The following benefits are available for Huawei-certified modules:
Device manufacturers do not need to worry about how to connect to the HUAWEI CLOUD IoT platform on the MCU (for example, how to
set the secret encryption algorithm and clientID composition mode during MQTT connection setup). To connect their devices to the
platform, they only need to invoke AT commands. This accelerates device interconnection and commissioning.
The MCU does not need to integrate the MQTT protocol stack or IoT Device SDK Tiny, greatly reducing MCU resource consumption.
Huawei releases certified modules on HUAWEI CLOUD Marketplace so that device manufacturers and service providers can purchase
these certified modules to quickly connect to HUAWEI CLOUD IoT.
⚫ The following figure shows how a certified module is used to connect a device to the platform.
AT command
HUAWEI CLOUD
Applications
IoT platform
Communications
module
Device
32 Huawei Confidential
Device Authentication
⚫ The platform authenticates a device when the device attempts to access the platform. The
authentication process depends on the access method.
Access Type
Call the API Creating a Device or use the IoTDA console to register a device with the
platform, and set the node ID (for example, the IMEI) as the verification code. The
Device connected using LWM2M over
device can use the node ID to get authenticated and connect to the platform.
CoAP
When Datagram Transport Layer Security (DTLS) or DTLS+ is used, the transmission
channel between the device and platform is encrypted by using a PSK.
Call the API Creating a Device or use the IoTDA console to register a device with the
platform, and hardcode the device ID and secret returned by the platform into the
Device using native MQTT or MQTTS
device. A CA certificate is preset on MQTTS devices, but not MQTT devices. The device
uses the device ID and secret to get authenticated and connect to the platform.
33 Huawei Confidential
Authentication for Devices Using LwM2M over CoAP
Device IoT platform Application
6. Perform verification.
34 Huawei Confidential
Authentication for Devices Using Native MQTT or MQTTS
Device IoT platform Application
1. Register a device.
3. Hardcode information.
35 Huawei Confidential
Contents
2. Product Development
36 Huawei Confidential
Platform Development Process: Cloud-based Routine
Management
Commercial use of Subscription and push
applications
Property reporting
Commercial use of
devices Details viewing
Message reporting
Report viewing
Command delivery
Operation record
Software/Firmware
viewing
upgrades
IoTDA Storage management
Message tracing
Upload
HUAWEI CLOUD
Data forwarding
services
Rules
Device linkage
Device shadows
37 Huawei Confidential
Data Reporting
Device shadow viewing on
the console or using an API
Application
API subscription and push
Device
shadows
Gateway property
reporting in batches
(JSON format) Device
Gateway
linkage
Device property
reporting (JSON Data parsing
format) Data Other HUAWEI
Device
forwarding CLOUD services
38 Huawei Confidential
Immediate Delivery of LwM2M/CoAP Device Commands
Device IoT platform Application
1. Deliver the command.
(send_strategy=immediately)
39 Huawei Confidential
Delayed Delivery of LwM2M/CoAP Device Commands
Device IoT platform Application
1. Deliver the command.
(send_strategy=delay)
40 Huawei Confidential
Immediate Delivery of MQTT Device Messages
Device IoT platform Application
1. Deliver a message.
2. Deliver a message.
41 Huawei Confidential
Delayed Delivery of MQTT Device Messages
Device IoT platform Application
1. Deliver a message.
(The device is offline.)
6. Deliver a message.
42 Huawei Confidential
Quiz
1. (Multiple Choice) Which of the following two formats are used by the IoT platform codec to
convert data?
A. Binary data
B. Decimal data
C. JSON data
D. XML data
2. (True or false) An IoT application must be authenticated before being connected to the IoT
platform.
43 Huawei Confidential
Summary
⚫ In this section, you learned how to perform secondary development on the IoT
platform. Secondary development is classified into product development,
development on the device side, development on the application side, and cloud-
side routine management. Development on the product side includes product model
development and codec development.
44 Huawei Confidential
Thank you. 把数字世界带入每个人、每个家庭、
每个组织,构建万物互联的智能世界。
Bring digital to every person, home, and
organization for a fully connected,
intelligent world.