egg-thing-parser
Install
$ npm i egg-thing-parser --save
Usage
// {app_root}/config/plugin.jsexportsthingParser = enable: true package: 'egg-thing-parser';
Configuration
// {app_root}/config/config.default.jsexportsthingParser = {};
see config/config.default.js for more detail.
Example
数据解析
// TLV数据解析:app.thing.tlv.parser.parse(buffer)// 输入:Buffer// 输出: version: "1.0.0" id:xxxx // 消息id,4字节无符号整数 operations: code: xxxx // 操作码,1字节无符号整数 operation: 'response' // 操作类型 'request','response' type: 'device' // 设备类型 'device'-普通设备,'subDevice'-子设备 target: 'resource' // 操作对象 'resource'-资源,'system'-系统 method:'read' // 操作名 'read', 'write', 'notify', 'reset', 'recovery', 'register', 'deregister','enable','disable','label','upgrade','online','offline' // 操作码信息 code: xxxx // 响应码,1字节无符号整数 time: "xxxxxx" // 时间戳(插件注入,非设备上报) data: groupId: 3 // 组合功能点Id params: 3: value: 1: value: "xxxx" type: "boolean" // 数据类型 - ['boolean', 'enum', 'integer', 'float', 'buffer', 'string', 'exception'] resource: "common" // 资源类型 - ['common'-普通, 'static'-固定, 'combine'-组合] message: "property" // 功能点类型 - ['property'-属性, 'event'-事件, 'reserve'-保留字段, 'custom'-自定义] type: "buffer" resource: "combine" message: "property" 2: value: "xxxx" type: "boolean" resource: "static" message: "property"
数据封装
// TLV数据封装: app.thing.tlv.packager.package(json)// 输出:Buffer// 输入: version: '1.0.0' // 版本号:1.0.0 id: xxxx // 消息id,4字节无符号整数 operations: code: xxxx // 操作码,1字节无符号整数(当code存在时,code的值即为操作码值,否则需要通过method、target、type和operation共同计算出操作码) operation: 'response' // 操作类型 'request','response' type: 'device' // 设备类型 'device','subDevice' target: 'resource' // 操作对象 'resource','system' method:'read' // 操作名 'read', 'write', 'notify', 'reset', 'recovery', 'register', 'deregister','enable','disable','label','upgrade','online','offline' // 操作码信息 code: xxxx // 响应码,1字节无符号整数(operation为response时必须传) data: groupId: xxxx // 组合功能点id,2字节无符号整数(当groupId存在时,data为其包含的子功能点数据) params: functionId: xxxx // 功能点id,2字节无符号整数 valueType: 'string' // 数据类型 [ 'boolean', 'enum', 'integer', 'float', 'buffer', 'exception', 'string' ] value: 'asdf' // 当method为read且operation为request时,只需传functionId即可
Questions & Suggestions
Please open an issue here.