通过用ScriptEngine编辑创建state,让小米体重秤2的体重值正确显示

1. 首先下载Script Engine

2. 确保电子秤连接到蓝牙
image

3.找到自动化
image

3.1新建一个JavaScript文件(设备id记得要修改)

on({id: 'ble.0.c8:47:8c:99:51:ec.services.181d', change: "ne", ack: true}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;

  //console.log((['Weight: ',(obj.state ? obj.state.val: ""),'Service:',obj.id].join('')));

  const buf = new Buffer(value,'hex');
  console.log("buf: " + buf);
  const buffer2 = new Uint8Array(buf);
  console.log("buffer2: " + buffer2);
  const myInt = buf.readIntLE(1, Buffer.byteLength(buffer2 .slice(0,2))) / 200;
  console.log("your weight is: " + myInt + "KG");
  const sequence = buf.readIntBE(1,Buffer.byteLength(buffer2 .slice(7,9)));
  console.log("your sequence is: " + sequence);
  
  setState("weight",{val:myInt,ack:true},function(){
      var test = getState("weight").val;
  });

  setState("sequence",{val:sequence,ack:true},function(){
      var test = getState("sequence").val;
  });

  'javascript.0.scriptEnabled.miscale'/*scriptEnabled miscale*/
});

3.2然后再新建一个JavaScript文件

createState('javascript.0.weight'),{
    type:'number',
    write:false,
    read:true,
    unit:'KG'
}

createState('javascript.0.sequence'),{
type:'number',
write:false,
read:true,
}

4. 在设备界面中的JavaScript.0中可以找到刚刚新建的两个state以及他们的值(sequence的值应该有误)

image

恭喜你解决了,但这样是为了什么目的呢没看太明白,只是显示在iob里接下来可以干嘛啊?

我是想把数据上传到到可视化中,然后人们站到秤上面之后可以显示相应的数据比如说体脂率什么的。最后根据输入的身高什么的还可以分辨上秤的人是谁。

比如说我做出来就是这样的,不太会弄,编出来的界面有点丑 :joy:
image

1 个赞

有意思,谢谢分享