var payload = {
"gender":1,
"birthday":"1990-01-01",
"height":172,
"bmi":23.3,
"bmr":0,
"body_age":0,
"bodyfat":0,
"bodyfat_left_arm":0,
"bodyfat_left_leg":0,
"bodyfat_right_arm":0,
"bodyfat_right_leg":0,
"bodyfat_trunk":0,
"bone":0,
"lbm":0,
"muscle":0,
"protein":0,
"subfat":0,
"visfat":0,
"water":0,
"weight":0,
"sinew":0,
"sinew_left_arm":0,
"sinew_left_leg":0,
"sinew_right_arm":0,
"sinew_right_leg":0,
"sinew_trunk":0,
"score":0,
"sn":"1234567890",
"modelcode":11 // 10体脂秤 11身高体重测量仪
};
//modelcode=10
var bytes = [123,34,98,105,114,116,104,100,97,121,34,58,34,49,57,57,48,45,48,49,45,48,49,34,44,34,98,109,105,34,58,50,51,46,51,44,34,98,109,114,34,58,48,44,34,98,111,100,121,95,97,103,101,34,58,48,44,34,98,111,100,121,102,97,116,34,58,48,44,34,98,111,100,121,102,97,116,95,108,101,102,116,95,97,114,109,34,58,48,44,34,98,111,100,121,102,97,116,95,108,101,102,116,95,108,101,103,34,58,48,44,34,98,111,100,121,102,97,116,95,114,105,103,104,116,95,97,114,109,34,58,48,44,34,98,111,100,121,102,97,116,95,114,105,103,104,116,95,108,101,103,34,58,48,44,34,98,111,100,121,102,97,116,95,116,114,117,110,107,34,58,48,44,34,98,111,110,101,34,58,48,44,34,103,101,110,100,101,114,34,58,49,44,34,104,101,105,103,104,116,34,58,49,55,50,44,34,108,98,109,34,58,48,44,34,109,111,100,101,108,99,111,100,101,34,58,49,48,44,34,109,117,115,99,108,101,34,58,48,44,34,112,114,111,116,101,105,110,34,58,48,44,34,115,99,111,114,101,34,58,48,44,34,115,105,110,101,119,34,58,48,44,34,115,105,110,101,119,95,108,101,102,116,95,97,114,109,34,58,48,44,34,115,105,110,101,119,95,108,101,102,116,95,108,101,103,34,58,48,44,34,115,105,110,101,119,95,114,105,103,104,116,95,97,114,109,34,58,48,44,34,115,105,110,101,119,95,114,105,103,104,116,95,108,101,103,34,58,48,44,34,115,105,110,101,119,95,116,114,117,110,107,34,58,48,44,34,115,110,34,58,34,49,50,51,52,53,54,55,56,57,48,34,44,34,115,117,98,102,97,116,34,58,48,44,34,118,105,115,102,97,116,34,58,48,44,34,119,97,116,101,114,34,58,48,44,34,119,101,105,103,104,116,34,58,48,125];
// modelcode=11
//var bytes = [123,34,98,105,114,116,104,100,97,121,34,58,34,49,57,57,48,45,48,49,45,48,49,34,44,34,98,109,105,34,58,50,51,46,51,44,34,98,109,114,34,58,48,44,34,98,111,100,121,95,97,103,101,34,58,48,44,34,98,111,100,121,102,97,116,34,58,48,44,34,98,111,100,121,102,97,116,95,108,101,102,116,95,97,114,109,34,58,48,44,34,98,111,100,121,102,97,116,95,108,101,102,116,95,108,101,103,34,58,48,44,34,98,111,100,121,102,97,116,95,114,105,103,104,116,95,97,114,109,34,58,48,44,34,98,111,100,121,102,97,116,95,114,105,103,104,116,95,108,101,103,34,58,48,44,34,98,111,100,121,102,97,116,95,116,114,117,110,107,34,58,48,44,34,98,111,110,101,34,58,48,44,34,103,101,110,100,101,114,34,58,49,44,34,104,101,105,103,104,116,34,58,49,55,50,44,34,108,98,109,34,58,48,44,34,109,111,100,101,108,99,111,100,101,34,58,49,49,44,34,109,117,115,99,108,101,34,58,48,44,34,112,114,111,116,101,105,110,34,58,48,44,34,115,99,111,114,101,34,58,48,44,34,115,105,110,101,119,34,58,48,44,34,115,105,110,101,119,95,108,101,102,116,95,97,114,109,34,58,48,44,34,115,105,110,101,119,95,108,101,102,116,95,108,101,103,34,58,48,44,34,115,105,110,101,119,95,114,105,103,104,116,95,97,114,109,34,58,48,44,34,115,105,110,101,119,95,114,105,103,104,116,95,108,101,103,34,58,48,44,34,115,105,110,101,119,95,116,114,117,110,107,34,58,48,44,34,115,110,34,58,34,49,50,51,52,53,54,55,56,57,48,34,44,34,115,117,98,102,97,116,34,58,48,44,34,118,105,115,102,97,116,34,58,48,44,34,119,97,116,101,114,34,58,48,44,34,119,101,105,103,104,116,34,58,48,125];
var session = {};
var deviceConfig = {};
var metadata = {};
metadata.category = "BFS1";
result = decode(session,bytes,metadata,deviceConfig);
function decode(session,payload,metadata,deviceConfig) {
var result = {};
console.log(payload);
var tempStr = byteToString(payload);
console.log(tempStr);
payload = {};
payload = JSON.parse(tempStr);
//console.log("convert payload:" + payload);
result.sn = payload.sn;
result.category = metadata["category"];
if (payload.modelcode == 10) {
result.category = "BFS1";
} else if (payload.modelcode == 11) {
result.category = "HWMI";
}
var shadow = {};
shadow.Gender = payload.gender.toString()
shadow.Birthday = payload.birthday;
shadow.Height = payload.height;
shadow.Bmi = payload.bmi;
shadow.Bmr = payload.bmr;
shadow.BodyAge = payload.body_age;
shadow.BodyFat = payload.bodyfat;
shadow.BodyFatLeftArm = payload.bodyfat_left_arm;
shadow.BodyFatLeftLeg = payload.bodyfat_left_leg;
shadow.BodyFatRightArm = payload.bodyfat_right_arm;
shadow.BodyFatRightLeg = payload.bodyfat_right_leg;
shadow.BodyFatTrunk = payload.bodyfat_trunk;
shadow.Bone = payload.bone;
shadow.Lbm = payload.lbm;
shadow.Muscle = payload.muscle;
shadow.Protein = payload.protein;
shadow.SubFat = payload.subfat;
shadow.VisFat = payload.visfat;
shadow.Water = payload.water;
shadow.Weight = payload.weight;
shadow.Sinew = payload.sinew;
shadow.SinewLeftArm = payload.sinew_left_arm;
shadow.SinewLeftLeg = payload.sinew_left_leg;
shadow.SinewRightArm = payload.sinew_right_arm;
shadow.SinewRightLeg = payload.sinew_right_leg;
shadow.SinewTrunk = payload.sinew_trunk;
shadow.Score = payload.score;
result.shadow = shadow;
console.log(result);
function byteToString(arr) {
if(typeof arr === 'string') {
return arr;
}
var str = '',
_arr = arr;
for(var i = 0; i < _arr.length; i++) {
var one = _arr[i].toString(2),
v = one.match(/^1+?(?=0)/);
if(v && one.length == 8) {
var bytesLength = v[0].length;
var store = _arr[i].toString(2).slice(7 - bytesLength);
for(var st = 1; st < bytesLength; st++) {
store += _arr[st + i].toString(2).slice(2);
}
str += String.fromCharCode(parseInt(store, 2));
i += bytesLength - 1;
} else {
str += String.fromCharCode(_arr[i]);
}
}
return str;
}
return result;
}
console