Scan for Eddystone beacons using Node.js
Uses noble for BLE peripheral scanning, then attempts to parse discovered peripherals using the Eddystone Protocol Specification.
npm install eddystone-beacon-scannerSee examples folder.
var EddystoneBeaconScanner = require('eddystone-beacon-scanner');Triggered when a beacon is first found.
EddystoneBeaconScanner.on('found', function(beacon) {
// ...
});Triggered when a beacon advertisement detected.
EddystoneBeaconScanner.on('updated', function(beacon) {
// ...
});Triggered when a beacon has not been detected for 5 seconds.
EddystoneBeaconScanner.on('lost', function(beacon) {
// ...
});The beacon object will have the following properties depending on the frame type:
type- Eddystone typetxPower- Measured received power at 0 m in dBmurl- (expanded) URL the beacon is broadcastingtlm- TLM data, only present when interleaved broadcasts are used by the beaconrssi- RSSI of discovered beacondistance- Approximate distance from beacon
type- Eddystone typetxPower- Measured received power at 0 m in dBmnamespace- 10-byte ID Namespaceinstance- 6-byte ID Instancetlm- TLM data, only present when interleaved broadcasts are used by the beaconrssi- RSSI of discovered beacondistance- Approximate distance from beacon
tlmversion- TLM versionvbatt- Battery voltagetemp- TemperatureadvCnt- Advertising PDU countsecCnt- Time since power-on or reboot
rssi- RSSI of discovered beacondistance- Approximate distance from beacon
Start scanning for Eddystone beacons, you can specify whether to allow duplicates (default is false).
You can also specify the grace period (time to wait before declaring the beacon as lost). Default is 5000 ms.
EddystoneBeaconScanner.startScanning(allowDuplicates, gracePeriod);Note: the lost event will only be triggered when allowDuplicates is set to true.
Stop scanning for Eddystone beacons.
EddystoneBeaconScanner.stopScanning();