更新时间:2025-08-13 GMT+08:00

通信协议选择与适配

Tiny中支持MQTT、LWM2M、CoAP、mbedtls、LwIP全套IoT互联互通协议栈,以下主要介绍MQTT、LWM2M、CoAP这三种协议。

表1 支持协议

术语名称

描述

MQTT

MQTT(Message Queue Telemetry Transport)是一个物联网传输协议,被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTTS指MQTT+SSL/TLS,在MQTTS中使用SSL/TLS协议进行加密传输。

CoAP

受约束的应用协议CoAP(Constrained Application Protocol)是一种软件协议,旨在使非常简单的电子设备能够在互联网上进行交互式通信。CoAPS指CoAP over DTLS,在CoAPS中使用DTLS协议进行加密传输。

LwM2M

LwM2M(lightweight Machine to Machine)是由OMA(Open Mobile Alliance)定义的物联网协议,主要使用在资源受限(包括存储、功耗等)的NB-IoT终端。

mbedtls

mbedTLS(前身PolarSSL)是面向嵌入式系统,实现的一套易用的加解密算法和SSL/TLS库。mbedTLS系统开销极小,对于系统资源要求不高。mbedTLS是开源项目,并且使用Apache 2.0许可证,使得用户既可以将mbedTLS使用在开源项目中,也可以应用于商业项目。目前使用mbedTLS的项目很多,例如Monkey HTTP Daemon,LinkSYS路由器。

云服务抽象层API

端云互通组件是IoT Device SDK Tiny中的重要组件,提供端云协同能力和基于MQTT、LwM2M、CoAP协议对接华为云的开放API。

支持MQTT/ LwM2M/CoAP协议、MQTT/ LwM2M协议模组或内置对接华为云模组来对接华为云的开发者,无需关注对接华为云物联网协议的实现细节,仅仅需要将所选择的物联网协议注册到云服务抽象层(OC AL),再调用OC AL提供的抽象层接口即可。

  • OC-MQTT

    OC AL提供的基于MQTT协议抽象层接口代码目录为:…\iot_link\oc\oc_mqtt,OC AL提供的MQTT协议端云互通API请参考最新的oc_mqtt_al.h文件,API接口具体如下:

    目录

    描述

    …/oc_mqtt_al

    适配华为OC服务的MQTT抽象层。通过注册机制,最终调用到用户注册的函数

    …/oc_mqtt_tiny_v5

    SDK内置的soft类设备适配华为OC服务的MQTT的具体实现(针对云端V5版本接口)。

    …/oc_mqtt_profile_v5

    SDK内置的基于物模型的接口,解析了topic,定义了相关的数据格式

  • OC-LwM2M

    OC AL提供的基于LwM2M协议抽象层接口代码目录为:…\iot_link\oc\oc_lwm2m, OC AL提供的基于LwM2M协议端云互通API参考oc_lwm2m_al.h文件,API接口具体如下:

    目录

    描述

    …/oc_lwm2m_al

    华为云服务OC LwM2M的抽象层接口及实现。通过注册,最终调用底层的适配函数

    …/atiny_lwm2m

    SDK内置的soft类设备适配华为OC服务的LwM2M的具体实现。通过抽象层提供的oc_lwm2m_register注册函数,将相关功能注册到SDK中

    …/oc_lwm2m_imp/boudica150

    SDK内置的boudica150适配华为OC服务的LwM2M的具体实现。通过抽象层提供的oc_lwm2m_register注册函数,将相关功能注册到SDK中

  • OC-CoAP

    OC AL提供的基于CoAP协议抽象层接口代码目录为:…\iot_link\oc\oc_coap,OC AL提供的基于CoAP协议端云互通API参考oc_coap_al.h文件,API接口具体如下:

    目录

    描述

    …/oc_coap_al

    华为云服务OC LwM2M的抽象层接口及实现。通过注册,最终调用底层的适配函数

    …/atiny_coap

    SDK内置的soft类设备适配华为OC服务的CoAP的具体实现。通过抽象层提供的oc_coap_register注册函数,将相关功能注册到SDK中

物联组件协议层

IoT Device SDK Tiny集成了LwM2M、CoAP、MQTT等物联网标准协议,您可以直接调用已实现协议,或添加自定义协议,将其注册进SDK中。其协议层目录为:…\network\。

  1. MQTT AL

    根据MQTT标准协议,IoT Device SDK Tiny提供的MQTT服务都是建立在标准的MQTT协议基础上,并提供MQTT协议抽象层接口。适配MQTT的软件结构示意图如下:

    typedef struct
    {
       ///< connect to the server
       void* (* connect)   (mqtt_al_conpara_t *param);
       ///< disconnect from the server
       int    (* disconnect)(void *handle );
       ///< publish a message to the server
       int	   (* publish)    (void *handle, mqtt_al_pubpara_t *msg);
       ///< subscribe a topic to the server
       int    (* subscribe)   (void *handle, mqtt_al_subpara_t *subpara);
       ///< unsubscribe a topic to the server
       int    (* unsubscribe) (void *handle, mqtt_al_unsubpara_t *unsubpara);
       ///< check the mqtt engine status
       en_mqtt_al_connect_state (* check_status) (void *handle);
    }mqtt_al_op_t;
    int mqtt_al_install(mqtt_al_op_t *op);
    表2 MQTT抽象层接口

    接口分类

    接口名

    说明

    MQTT相关接口

    void * mqtt_al_connect( mqtt_al_conpara_t *conparam)

    请求连接

    int mqtt_al_disconnect(void *handle)

    断开连接

    int mqtt_al_publish(void *handle, mqtt_al_pubpara_t *pubpara)

    发布消息

    int mqtt_al_subscribe(void *handle, mqtt_al_subpara_t *subpara)

    订阅请求

    int mqtt_al_unsubscribe(void *handle, mqtt_al_unsubpara_t *unsubpara)

    取消订阅

    en_mqtt_al_connect_state mqtt_al_check_status(void *handle)

    检查连接状态

  2. LWM2M AL

    根据LwM2M标准协议,IoT Device SDK Tiny提供的LwM2M服务都是建立在标准的LwM2M协议基础上,并提供LwM2M协议抽象层接口。适配LwM2M的软件结构示意图如下:

    typedef struct
    {
        /* lwm2m config, prepare endpoint name and message deal callback */
        int (*config)(void **handle, lwm2m_al_init_param_t *init_param);
    
        /* lwm2m deinit */
        int (*deconfig)(void *handle);
    
        /* lwm2m add object */
        int (*add_object)(void *handle, int object_id, int object_instance_id, int resource_id, void *param);
    
        /* lwm2m delete object */
        int (*delete_object)(void *handle, int object_id);
    
        /* lwm2m connect */
        int (*connect)(void *handle);
    
        /* lwm2m disconnect */
        int (*disconnect)(void *handle);
    
        /* lwm2m send */
        int (*send)(void *handle, lwm2m_al_send_param_t *send_param);
    } lwm2m_al_op_t;
    表3 LWM2M 抽象层接口

    接口分类

    接口名

    说明

    LWM2M相关接口

    int (*config)(void **handle, lwm2m_al_init_param_t *init_param);

    配置初始化

    int (*deconfig)(void *handle);

    取消初始化

    int (*add_object)(void *handle, int object_id, int object_instance_id, int resource_id, void *param);

    添加对象

    int (*delete_object)(void *handle, int object_id);

    删除对象

    int (*connect)(void *handle);

    请求连接

    int (*disconnect)(void *handle);

    断开连接

    int (*send)(void *handle, lwm2m_al_send_param_t *send_param);

    发送

  3. COAP AL

    根据COAP标准协议,IoT Device SDK Tiny提供的COAP服务都是建立在标准的COAP协议基础上,并提供COAP协议抽象层接口。适配CoAP的软件结构示意图如下:

    typedef struct
    {
       ///< coap init, prepare context, session, etc
       int    (* init)     (coap_al_initpara_t *initparam);
       ///< coap deinit
       int    (* deinit)   (void *handle);
       ///< coap add option
       void*  (* add_opt)  (coap_al_optpara_t *optparam);
       ///< new coap request
       void*  (* request)  (coap_al_reqpara_t *reqparam);
       ///< send a request to server
       int	   (* send)     (coap_al_sndpara_t *sndparam);
       ///< recv and handle response from server
       int    (* recv)     (coap_al_rcvpara_t *rcvparam);
    }coap_al_op_t;
    int coap_al_install(coap_al_op_t *op);

    相关适配接口介绍:

    接口分类

    接口名

    说明

    CoAP相关接口

    int coap_al_init(coap_al_initpara_t *initparam);

    初始化

    int coap_al_deinit(void *handle);

    取消初始化

    void *coap_al_add_option(coap_al_optpara_t *optparam);

    添加CoAP选项

    void *coap_al_new_request(coap_al_reqpara_t *reqparam);

    创建新的消息请求

    int coap_al_send(coap_al_sndpara_t *sndparam);

    发送消息给服务器

    int coap_al_recv(coap_al_rcvpara_t *rcvparam);

    接收并处理服务器下发的数据

    int coap_al_install(coap_al_op_t *op);

    将协议栈注册到系统中

    int coap_al_uninstall();

    取消注册