全部文档
概述 硬件支持 快速开发指南 内核 驱动 通用组件 专业组件 常见问题

LWM2M--协议组件

LWM2M是一种轻量级物联网设备协议,协议主要包含两个主体,一个是LWM2M Server和LWM2M Client,此外,根据需要还可以加入LWM2M引导服务器(Bootstrap Server)或智能卡(SmartCard),对客户端完成引导。当前协议支持LWM2M Client主体,可以通过LWM2M Client连接支持LWM2M Server协议的服务器。通过定时上报客户端信息或者服务器下发对客户端控制完成对设备的管理。

简介

LwM2M全称lightweight Machine to Machine,是OMA(Open Moblile Alliance)定义的物联网协议,主要可以使用在资源受限(包括存储、功耗等)的嵌入式设备。这个协议基于CoAP(Constrained Application Protocol)协议,CoAP协议基于UDP协议,默认UDP端口号非加密为5683,加密端口5684。Eclipse Wakaama:基于C,提供了LwM2M服务器与LwM2M客户端的实现。

目录

使用说明

LWM2M客户端支持加密和非加密方式连接服务器,可以根据LWM2M服务器支持的类型进行选择。

(Top) → Components→ Network→ Protocols→ LWM2M                                              [*] Enable LWM2M
[ ]     Enable LWM2M DTLS encrypt (NEW)
[*]     Enable LWM2M sample
(192.168.1.102) LWM2M Server Addr String (NEW)
(5684)      LWM2M Server Port String (NEW)
[*]     Enable LWM2M client mode
        Select log level (Debug Log Level)  --->
(Top) → Components→ Network→ Protocols→ LWM2M→ Enable LWM2M → Select log level
( ) Error Log Level
( ) Warn Log Level
( ) Info Log Level
(X) Debug Log Level
( ) Verbose Log Level
( ) None Log Level

Enable LWM2M: 使能LWM2M组件;

Enable LWM2M DTLS encrypt:使能LWM2M示例,可以运行shell命令连接LWM2M服务器;

LWM2M Server Addr String:修改设置LWM2M服务器IP地址;

LWM2M Server Port String:修改设置LWM2M服务器端口地址;

Enable LWM2M client mode:使能LWM2M 客户端模式;

Select log level (Debug Log Level):调试打印log级别,默认为debug级别;

shell命令运行示例

LWM2M示例shell命令和功能有四个分别是:

lwm2m_data_sample:用于测试数据加密和解析接口是否正确;

lwm2m_proc_sample:测试主程序运行流程接口;

lwm2m_connect_server_sample:测试LWM2M客户端连接LWM2M服务器,用于定时更新上报数据与服务器,服务器可以通过下发命令到客户端;

lwm2m_disconnect_server_sample:测试LWM2M客户端注销LWM2M服务器连接;

API列表

接口 说明
lwm2m_init 初始化一个lwm2m上下文
lwm2m_deinit 关闭一个lwm2m上下文
lwm2m_step 执行任何请求处理操作
lwm2m_handle_packet 发送收到的数据到liblwm2m库处理
lwm2m_configure 配置匹配的服务器对象实例
lwm2m_add_object 添加对象实例
lwm2m_remove_object 去除对象实例
lwm2m_update_registration 发送更新注册信息到指定的服务器

API说明

lwm2m_init

该函数用于初始化lwm2m上下文运行环境

void* lwm2m_init(void * userData)
参数 说明
userData 用于存放用户相关数据格式到上下文中
返回 说明

lwm2m_deinit

该函数用于删除链表和内存释放相关操作

void lwm2m_deinit(void * handler)
参数 说明
handler 上下文运行环境变量
返回 说明

lwm2m_step

该函数用于执行任何请求处理操作

int lwm2m_step(void *handler,time_t * timeoutP)
参数 说明
handler 上下文运行环境变量
timeoutP 请求超时变量
返回 说明
int 错误码

lwm2m_handle_packet

该函数用于发送收到的数据到liblwm2m库进一步处理

void lwm2m_handle_packet(void* handler, uint8_t * buffer, int length, void *fromSessionH)
参数 说明
handler 上下文运行环境变量
buffer 指向CoAP包的头指针
length 收到的字节数
fromSessionH 存放socket连接信息
返回 说明

lwm2m_configure

该函数用于配置匹配的服务器对象实例

int lwm2m_configure(void * handler,const char * endpointName,const char * msisdn,const char * altPath,uint16_t numObject,lwm2m_object_t * objectList[])
参数 说明
handler 上下文运行环境变量
endpointName 终端名字
msisdn 移动用户号码
altPath 路径更改
numObject 对象数量
objectList[] 对象链表
返回 说明
错误码

lwm2m_add_object

该函数用于添加对象实例到运行环境中

int lwm2m_add_object(void* handler, lwm2m_object_t * objectP)
参数 说明
handler 上下文运行环境变量
objectP 对象指针
返回 说明
int 错误码

lwm2m_remove_object

该函数用于从运行环境中删除对象实例

int lwm2m_remove_object(void* handler, uint16_t id)
参数 说明
handler 上下文运行环境变量
id 对象ID
返回 说明
int 错误码

lwm2m_update_registration

该函数用于更新已给的服务注册信息

int lwm2m_update_registration(void* handler, uint16_t shortServerID, bool withObjects)
参数 说明
handler 上下文运行环境变量
shortServerID 服务器短ID
withObjects 是否带有对象
返回 说明
int 错误码

API接口函数错误码说明

返回 说明
COAP_NO_ERROR = 0x00 没有错误
COAP_IGNORE = 0x01 忽略错误
COAP_201_CREATED = 0x41 创建设备
COAP_202_DELETED = 0x42 删除设备
COAP_204_CHANGED = 0x44 设备变化
COAP_205_CONTENT = 0x45 获取内容失败
COAP_231_CONTINUE = 0x5F 可持续的
COAP_400_BAD_REQUEST = 0x80 错误请求
COAP_401_UNAUTHORIZED = 0x81 未授权
COAP_402_BAD_OPTION= 0x82 错误的选择
COAP_404_NOT_FOUND= 0x84 未发现
COAP_405_METHOD_NOT_ALLOWED= 0x85 方法不被允许
COAP_406_NOT_ACCEPTABLE= 0x86 不可接收的
COAP_408_REQ_ENTITY_INCOMPLETE= 0x88 请求实体未成功
COAP_412_PRECONDITION_FAILED= 0x8C 预处理失败
COAP_413_ENTITY_TOO_LARGE= 0x8D 实体太大
COAP_500_INTERNAL_SERVER_ERROR= 0xA0 内部服务器错误
COAP_501_NOT_IMPLEMENTED= 0xA1 未实现的
COAP_503_SERVICE_UNAVAILABLE= 0xA3 服务不可用

| 🔝回到顶部 |📖目录 |

results matching ""

    No results matching ""