node-red-contrib-clowire
Version:
clowire for node-red
54 lines (45 loc) • 1.18 kB
JavaScript
/**
* buf数据to对象
*
* data 命令缓冲
*/
module.exports.buf2obj = function (data, obj) {
const protocolData = _protocol(data)
if (!protocolData) return null
protocolData.uid = obj.entity_id
console.log(protocolData)
if (obj.uid === protocolData.id && protocolData.address === obj.address)
return protocolData
else
return null
}
/**
* 协议解析0x01,0x20,0x10,0x11,0x00,0x80 {name:"大灯开关",id:1,address:1,cmd:"click",uid:1},
* @param {*} data
*/
function _protocol(data) {
if(!data)return;
let obj = {}
obj.id = data[0]
if (data[5] === 0x80 && data[2] === 0x10) {
if (data[1] !== 0x20) return false
obj.address = data[3] - 0x10
return obj
}
return false
}
/**
* obj转buf
* @param {*} obj
*
*/
module.exports.obj2buf = function (obj, obj1) {
const { entity_id, state } = obj
if ( obj1.entity_id === entity_id) {
let buf = [obj1.uid, 0x06, 0x10, 0x21, 0x00, 0x00]
buf[3] = obj1.address + 0x20
if (state === 'on') buf[5] = 0x01
return buf
}
else return null
}