查看“︁Emqx-lwm2m”︁的源代码
←
Emqx-lwm2m
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 源代码 == https://github.com/emqx/emqx-lwm2m == 说明 == emqx的[[LwM2M]]网关插件。此插件通常不需要从源代码安装,直接在EMQX的dashboard的插件页面启用emqx_lwm2m(也可使用源代码ReadMe.md中方式命令启用)。 == [[LwM2M]]与[[MQTT]] 的映射 == 对与MQTT的应用而言,最主要的部分便是主题(Topic)与负载消息(Payload)。 因此,对于LwM2M网关而言,所有的LwM2M操作均将转换到MQTT的主题与负载消息中。最终用户通过发布MQTT消息下发LwM2M命令、订阅MQTT消息获取LwM2M客户端的上行数据。 注意:下列说明中,{}中的内容为变量,会根据实际情况变化。 {| class="wikitable" |+MQTT主题 !主题 !说明 |- |<code>lwm2m/{?EndpointName}/up/resp</code> |用于LwM2M客户端的上行数据,其中<code>{?EndpointName}为LwM2M客户端名称</code> |- |<code>lwm2m/{?EndpointName}/dn</code> |用于向LwM2M客户端发送下行数据,其中<code>{?EndpointName}为LwM2M客户端名称</code> |- |<code>lwm2m/{?EndpiontName}/up/notify</code> |用于LwM2M客户端的通知数据,其中<code>{?EndpointName}为LwM2M客户端名称</code> |} LwM2M网关转换的MQTT消息的负载消息部分通常采用Json格式。 === 注册/更新 (LwM2M客户端注册接口) === {| class="wikitable" |+ MQTT消息 !主题 !负载消息 !说明 |- |<code>lwm2m/{?EndpointName}/up/resp</code> |<syntaxhighlight lang="json"> { "msgType": {?MsgType}, "data": { "ep": {?EndpointName}, "lt": {?LifeTime}, "sms": {?MSISDN}, "lwm2m": {?Lwm2mVersion}, "b": {?Binding}, "alternatePath": {?AlternatePath}, "objectList": {?ObjectList} } } </syntaxhighlight> | * {?EndpointName}:字符串,LwM2M客户端名称 * {?MsgType}:字符串,消息类型。register=注册,update=更新 |} === 下行命令与上行响应 (设备管理与服务启用接口) === {| class="wikitable" |+MQTT消息 !主题 !负载消息 !说明 |- |<code>lwm2m/{?EndpointName}/dn</code> |<syntaxhighlight lang="json"> { "reqID": {?ReqID}, "msgType": {?MsgType}, "data": {?Data} } </syntaxhighlight> |此MQTT消息主要用于向LwM2M客户端下发命令。 * {?EndpointName}:字符串,LwM2M客户端名称 * {?ReqID}:整数,请求ID,与响应相匹配。 * {?MsgType}:字符串,消息类型。read=读,discover=发现,write=写,write-attr=写属性,execute=执行,create=创建,delete=删除。 * {?Data}:Json对象,具体内容取决与消息类型。 ** 当消息类型为read或discover时'''。'''<syntaxhighlight lang="json"> { "path": {?ResourcePath} } </syntaxhighlight> *** {?ResourcePath}:字符串,资源路径。如:"3/0", "/3/0/0", "/3/0/6/0" ** 当消息类型为write(写单次)时。<syntaxhighlight lang="json"> { "path": {?ResourcePath}, "type": {?ValueType}, "value": {?Value} } </syntaxhighlight> *** {?ValueType}:字符串,值类型。可为下列值之一:"Time", "String", "Integer", "Float", "Boolean", "Opaque", "Objlnk"。 *** {?Value}:值,取决于值类型。 ** 当消息类型为write(批量写)时。<syntaxhighlight lang="json"> { "basePath": {?BasePath}, "content": [ { "path": {?ResourcePath}, "type": {?ValueType}, "value": {?Value} } ] } </syntaxhighlight> *** 最终路径是basePath与path的结合。content为json数组。 ** 当消息类型为write-attr时。<syntaxhighlight lang="json"> { "path": {?ResourcePath}, "pmin": {?PeriodMin}, "pmax": {?PeriodMax}, "gt": {?GreaterThan}, "lt": {?LessThan}, "st": {?Step} } </syntaxhighlight> *** {?PeriodMin}:数值,LwM2M通知类属性-最小间隔。 *** {?PeriodMax}:数值,LwM2M通知类属性-最大间隔。 *** {?GreaterThan}:数值,LwM2M通知类属性-大于。 *** {?LessThan}:数值,LwM2M通知类属性-小于。 *** {?Step}:数值,LwM2M通知类属性-步进。 ** 当消息类型为execute时。<syntaxhighlight lang="json"> { "path": {?ResourcePath}, "args": {?Arguments} } </syntaxhighlight> *** {?Arguments}:字符串,LwM2M执行参数。 ** 当消息类型为create时。<syntaxhighlight lang="json"> { "basePath": "/{?ObjectID}", "content": [ { "path": {?ResourcePath}, "type": {?ValueType}, "value": {?Value} } ] } </syntaxhighlight> *** {?ObjectID}:数值,对象ID。 ** 当消息类型为delete时。<syntaxhighlight lang="json"> { "path": "{?ObjectID}/{?ObjectInstanceID}" } </syntaxhighlight> *** {?ObjectInstanceID}:数值,对象实例ID。 |- |<code>lwm2m/{?EndpointName}/up/resp</code> |<syntaxhighlight lang="json"> { "reqID": {?ReqID}, "imei": {?IMEI}, "imsi": {?IMSI}, "msgType": {?MsgType}, "data": {?Data} } </syntaxhighlight> |此MQTT消息主要用于LwM2M客户端的响应数据。 * {?EndpointName}:字符串,LwM2M客户端名称 * {?MsgType}:字符串,消息类型。read=读,discover=发现,write=写,write-attr=写属性,execute=执行,create=创建,delete=删除,ack=空响应。 * {?Data}:Json对象,取决于消息类型。 ** 当消息类型为 write, write-attr, execute, create, delete或 read(当无内容时)时。<syntaxhighlight lang="json"> { "code": {?StatusCode}, "codeMsg": {?CodeMsg}, "reqPath": {?RequestPath} } </syntaxhighlight> *** {?StatusCode}:字符串,状态码。如 "2.01", "4.00"等 *** {?CodeMsg}:字符串,响应消息。如"content", "bad_request"等 *** {?RequestPath}:字符串,资源路径。 ** 当消息类型为discover时。<syntaxhighlight lang="json"> { "code": {?StatusCode}, "codeMsg": {?CodeMsg}, "reqPath": {?RequestPath}, "content": [ {?Link}, ... ] } </syntaxhighlight> *** {?Link}:字符串,Link格式。如<code>"</3>"</code>, <code>"<3/0/1>;dim=8"等</code> ** 当消息类型为read(有响应内容)时。<syntaxhighlight lang="json"> { "code": {?StatusCode}, "codeMsg": {?CodeMsg}, "content": {?Content} } </syntaxhighlight> *** {?Content}:json对象数组。<syntaxhighlight lang="json"> [ { "path": {?ResourcePath}, "value": {?Value} } ] </syntaxhighlight> ** 当消息类型为ack时,无data字段。 |} === 订阅 (信息上报接口-订阅/取消订阅) === {| class="wikitable" |+ MQTT消息 !主题 !负载消息 !说明 |- |<code>lwm2m/{?EndpointName}/dn</code> |<syntaxhighlight lang="json"> { "reqID": {?ReqID}, "msgType": {?MsgType}, "data": { "path": {?ResourcePath} } } </syntaxhighlight> |此MQTT消息主要用于向LwM2M客户端下发订阅/取消订阅命令。 * {?EndpointName}:字符串,LwM2M客户端名称 * {?ReqID}:整数,请求ID,与响应相匹配。 * {?MsgType}:字符串,消息类型。observe=订阅,cancel-observe=取消订阅 * {?ResourcePath}:字符串,资源路径。 |- |<code>lwm2m/{?EndpointName}/up/resp</code> |<syntaxhighlight lang="json"> { "reqID": {?ReqID}, "msgType": {?MsgType}, "data": { "code": {?StatusCode}, "codeMsg": {?CodeMsg}, "reqPath": {?RequestPath}, "content": [ { "path": {?ResourcePath}, "value": {?Value} } ] } } </syntaxhighlight> |此MQTT消息主要用于LwM2M客户端的响应数据。 * {?EndpointName}:字符串,LwM2M客户端名称 * {?MsgType}:字符串,消息类型。observe=订阅,cancel-observe=取消订阅,ack=空响应。 |} === 通知 (信息上报接口 - 通知) === {| class="wikitable" |+MQTT消息 !主题 !负载消息 !说明 |- |<code>lwm2m/{?EndpiontName}/up/notify</code> |<syntaxhighlight lang="json"> { "reqID": {?ReqID}, "msgType": {?MsgType}, "seqNum": {?ObserveSeqNum}, "data": { "code": {?StatusCode}, "codeMsg": {?CodeMsg}, "reqPath": {?RequestPath}, "content": [ { "path": {?ResourcePath}, "value": {?Value} } ] } } </syntaxhighlight> |此MQTT消息主要用于LwM2M客户端通知消息。 * {?EndpointName}:字符串,LwM2M客户端名称 * {?MsgType}:字符串,消息类型。一定为notify * {?ObserveSeqNum}:数值,CoAP消息的"Observe"值。 * content字段同read响应的content字段。 |}
返回
Emqx-lwm2m
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息