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).
EddystoneBeaconScanner.startScanning(allowDuplicates);Note: the lost event will only be triggered when allowDuplicates is set to true.
Stop scanning for Eddystone beacons.
EddystoneBeaconScanner.stopScanning();