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-scanner
See 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
tlm
version
- 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();