Hallo miteinander,
vielleicht kann mir jemand, der Java beherrscht bei einer Codeumsetzung in PHP helfen.
Es geht um folgenden Datensatz von einem Bluetooth LE Sensor:
Data: 0002ad29c9cddf7f370140f080050740700103664bac38
Das hier sollte meiner Meinung nach der Teil des Codes sein, welcher die Sensordaten auswertet:
function t(t,n){
let r;
r="xl"!==t.hwFamily?e[2*n+7]:2*e[2*n+7],t.adv[n]={a:e[2*n+6],i:r}
}
super(e);
let n=e[3];
this.hwFamily=1==(1&n)?"xl":"gen2",
this.hwVersionNumber=207&n,70!=this.hwVersionNumber&&72!=this.hwVersionNumber||(this.qualityStars=n>>>4&3),
this.acceloX=this.__getAcceloX(e[2]),
this.acceloY=this.__getAcceloY(e[2]),
this.battery=e[4]/256*2+1.5;
let r=63&e[5];
if(63==e[5]&&255==e[4]&&(this.corrupted=!0),
this.temperature=0===r?-40:1.776964*(r-25),
this.slowUpdateRate=!!(64&e[5]),
this.syncPressed=!!(128&e[5]),
this.adv=[],0===n||1===n)t(this,0),t(this,1),t(this,2),t(this,3),t(this,4),t(this,5),t(this,6),t(this,7),
this.adv.sort((e,t)=>e.i-t.i);
else{
let t=0,n=0,r=6;
for(let a=0;a<12;a+=1){
let i=10*a,o=Math.floor(i/8),c=i%8,s=e[r+o]+256*e[r+o+1];s>>>=c;
let A=1+(31&s);s>>>=5;
let u=31&s,l=n+A;
if(n=l,l>255)break;
u&&(u-=1,u*=4,u+=6,this.adv[t]={a:u,i:2*l},t+=1)
}
}
}
__getAcceloY(e){return[-7,1,2,3,4,5,6,0,-6,-5,-8,7,-4,-3,-2,-1][e>>>4&15]}
__getAcceloX(e){return[-7,1,2,3,4,5,6,0,-6,-5,-8,7,-4,-3,-2,-1][15&e]}
Für die Batterie hab ich mal folgendes getestet:
this.battery=e[4]/256*2+1.5; // müsste also c9 sein, dezimal 201 ==> 201 ergibt 3,07 (Volt?)
getBatteryPercentage(){let e=this.getBatteryVoltage();return e=(e-2.2)/.65*100,e<0?0:e>100?100:Math.round(e)} // Alles über 2,85Volt ergibt 100%2,85 -> 100% ; 2,2 -> 0%
Wenn jemand besonders fit in Java ist, würde ich mich über etwas Hilfe freuen.
Ein anderer Sensor der selben Marke wurde hier in Python umgesetzt:
Mopeka pro check
Der Sensor, welcher bei uns erhältlich ist, ist aber keine pro-Version sondern eine andere.
Grüße
Stefan