zoukankan      html  css  js  c++  java
  • 【华为云技术分享】LwM2M协议的学习与分享

    【摘要】 本文主要对于LwM2M协议进行了简单的介绍,包括协议的体系架构以及特性、对象、资源、接口的定义等,希望对你有所帮助。

    协议简介

    LwM2M(Lightweight Machine-To-Machine)协议是由OMA提出并定义的一个适用于资源有限的终端设备的轻量级物联网协议,可以用于快速部署客户端、服务器模式的物联网业务。LwM2M为物联网设备的管理和应用建立了一套标准,它提供了轻便小巧的安全通信接口及高效的数据模型,以实现M2M设备管理和服务支持。

    2 协议特性

    1)     基于资源模型的简单对象

    2)     资源操作:创建/检索/更新/删除/属性配置

    3)     资源的观察/通知

    4)     支持的数据格式:TLV/JSON/Plain Text/Opaque

    5)     传输层协议:UDP/SMS

    6)     安全协议:DTLS

    7)     NAT/防火墙应对方案: Queue模式

    8)     支持多LwM2M Server

    9)     基本的M2M功能:LwM2M Server,访问控制,设备,网络连接监测,固件更新,位置和定位服务,统计

     

    3 体系架构

    对象定义

    首先对象是逻辑上用于特定目的的一组资源的集合。在使用对象功能之前,必须对该对象进行实例化,对象可以有多个对象实例,对象定义的格式如下。

    OMA为LwM2M协议内置了8个对象。具体如下

    LiteOS SDK端云互通组件配合Huawei Ocean Connect物联网开发平台能力,还支持的19号LwM2M APPDATA对象:

    5 资源定义

    LwM2M定义了一个资源模型,所有信息都可以抽象为资源以提供访问。资源是对象的内在组成,隶属于对象,LwM2M客户端可以拥有任意数量的资源。和对象一样,资源也可以有多个实例。

    LwM2M客户端、对象以及资源的关系如图所示:

    资源定义的格式

    6接口定义

    接口模型图如下

    (1)由上图可知,协议的主体包括两部分LwM2M客户端和服务器端,服务器,部署在M2M服务供应商处或网络服务供应商处,客户端,部署在各个LwM2M设备上。

    (2)图中主要包括4个逻辑接口具体如下

    Bootstraping;引导接口:可以向客户端提供注册到服务器的必要信息,如服务器访问信息、客户端支持的资源信息等,不需要出厂之时预置在谁被中。

    Registration:客户端注册接口,实现客户端与服务器互联,通知服务器客户端的“存在”和支持的功能。支持FOTA和SOTA。

    Object/Resource Access :设备管理和服务启用接口,LwM2M允许提供程序访问对象实例和资源,从而使他可以更改设备设置和参数。设备管理与服务实现接口的主控方为LwM2M服务器,服务器向客户端发送指令,客户端对指令做出回应并将回应消息发送给服务器。

    Reporting:信息上报接口,当服务不再正常运行时,用户能够从设备获取错误报告以及发送有关设备状态的查询。

    (3)如图右侧可见:LwM2M协议采用了具备REST的风格的CoAP来完成消息和数据床底,同时使用了基于UDP的DTLS安全传输协议

    消息流程示例

    设备管理和服务实现接口

    LwM2M的接口表示一类功能,设备管理和服务实现接口是LwM2M的四种接口之一。

    接口的具体功能是由一系列的操作来实现的,LwM2M的4种接口被分为上行操作和下行操作。

    上行操作:LwM2M Client -> LwM2M Server

    下行操作:LwM2M Server -> LwM2M Client

    LwM2M Server使用设备管理和服务实现接口来访问LwM2M Client的对象实例和资源。该接口包括7种操作:“Create”、“Read”、“Write”、“Delete”、“Execute”、“Write Attributes”和“Discover”。

    设备管理和服务实现接口的交互过程如图所示:

    设备管理和服务使能接口示例

    对象创建和删除实例

     点击这里,了解更多精彩内容

  • 相关阅读:
    printf打印输出null问题的跟踪
    一个需求的反思
    编写可测试的代码
    编写高质量代码_改善C++程序的150个建议 读书笔记
    GetDlgItem的用法小结
    引用作为函数返回值的一点思考
    LoadRunner 使用介绍
    撰写技术文章的注意事项
    NetLimiter网速测试小坑
    需求管理和开发的一点小思考
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13164714.html
Copyright © 2011-2022 走看看