function scanForDevices() { NRF.findDevices(function(devs) { cnt++; console.log(`Scancount:${cnt}`); var idx=1; var index=-1; devs.forEach(function(dev) { if (dev.manufacturer!=0xFFFF) return; if (!dev.manufacturerData) return; var d = new DataView(dev.manufacturerData); var version = d.getInt8(0); if (version!=5) return; let Sensorcelcius=0; //Sensorcelcius = d.getInt16(1) * 0.005; let Sensorhumidity=0; //Sensorhumidity = d.getInt16(3) * 0.0024; if (Sensorhumidity < 0) { Sensorhumidity=0; } let mac = dev.id.substr(0,2)+dev.id.substr(3,2)+dev.id.substr(6,2)+dev.id.substr(9,2)+dev.id.substr(12,2)+dev.id.substr(15,2); Sensorlasttime=Math.floor(Date.now() / 1000); // Check if we have this mac in the table // If we do, take the index and update the timestamp and celcius arrays let macsLength = macs.length; for (let i = 0; i < macsLength; i++) { if (macs[i] == mac) { index=i; console.log(`Uppdatemac:${index},${mac},${Sensorcelcius},${Sensorhumidity}`); lasttime[i]=Sensorlasttime; celcius[i]=Sensorcelcius; humidity[i]=Sensorhumidity; } } if (index<0) { if (macs.length>0) { index=macs.length; console.log(`Addmac:${index},${mac},${Sensorcelcius},${Sensorhumidity}`); macs[index]=mac; lasttime[index]=Sensorlasttime; celcius[index]=Sensorcelcius; humidity[index]=Sensorhumidity; } else { console.log(`Firstmac:0,${mac},${Sensorcelcius},${Sensorhumidity}`); macs[0]=mac; lasttime[0]=Sensorlasttime; celcius[0]=Sensorcelcius; humidity[0]=Sensorhumidity; } } idx++; }); console.log(`Maccnt:${macs.length}`); idx=0; //printSensorData(); },{ timeout : 3000, filters : [{ manufacturerData:{0xFFFF:{} }}] }); // scan for 3 sec } function printSensorData() { let idx=0; let timestamp=Math.floor(Date.now() / 1000); console.log(`Timestamp:${timestamp}`); g.clear(); g.drawString(`Scans:${cnt} Nr of sensors:${macs.length}`,0,6); for (let i = 0; i < macs.length; i++) { let macprt = macs[i]; let celciusprt = celcius[i]; let humidityprt = humidity[i]; let age = timestamp - lasttime[i]; if (humidityprt > 0) { g.drawString(`${macprt} (${age}) > ${celciusprt}c ${Math.round(humidityprt)}%`,0,20+(idx*6)); } else { g.drawString(`${macprt} (${age}) > ${celciusprt}c`,0,20+(idx*6)); } console.log(`Macdata:${i},${macprt},${lasttime[i]},${celciusprt},${humidityprt}`); Serial1.println(`Macdata:${i},${macprt},${lasttime[i]},${celciusprt},${humidityprt}`); idx++; } g.flip(); } // Use this to clear flash and start over. // require("Storage").eraseAll() var cnt=0; var macs = []; var lasttime = []; var celcius = []; var humidity = []; LED.write(1); E.setConsole('Bluetooth',{force:true}); Serial1.setup(115200, { tx:D13, rx:D12 }); setInterval(scanForDevices, 60000); // wait 60s between each update from BLE setInterval(printSensorData, 5000); // wait 10s between each update scanForDevices(); /* NRF.setAdvertising({},{ name:"BLEhmi", showName:true, connectable:true, scannable:true, interval:200 }); */