Estimote Proximity Beacon with Raspberry Pi

Hi Guys,

I have an IOT project in mind using estimote proximity beacons and raspberry pi. I would like to switch on a light when raspberry pi detects the respective beacon in its range. One beacon will be associated with one particular light.

How can I make the raspberry pi detect the estimote beacons and trigger the light control ??

is there any guide that i can follow for reference ?

Thanks in Advance,

Gokz

You can use our Node.js script for detecting Estimote Telemetry packets:

https://github.com/estimote/estimote-specs

It’s based on noble, a Node.js Bluetooth detection library, which works on Raspberry Pi. You just need to install bluez, there are installation instructions for Raspbian here:

https://github.com/noble/noble#ubuntudebianraspbian

1 Like

Thank you for the response.

Will i be able to detect a unique id along with the telemetry packets coming from the particular proximity beacon ??

The Estimote Telemetry packet contains half of the full device identifier—should be unique enough for most cases (:

Have got the following error while trying to run the node js. I have no experience with nodejs though! Can you help?

pi@RPIv:~/estimote-specs-master $ node -v
v13.8.0

pi@RPIv:~/estimote-specs-master $ node estimote-telemetry.js
internal/modules/cjs/loader.js:983
throw err;
^

Error: Cannot find module ‘bluetooth-hci-socket’
Require stack:

  • /home/pi/estimote-specs-master/node_modules/noble/lib/hci-socket/hci.js
  • /home/pi/estimote-specs-master/node_modules/noble/lib/hci-socket/bindings.js
  • /home/pi/estimote-specs-master/node_modules/noble/lib/resolve-bindings.js
  • /home/pi/estimote-specs-master/node_modules/noble/index.js
  • /home/pi/estimote-specs-master/estimote-telemetry.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
    at Function.Module._load (internal/modules/cjs/loader.js:862:27)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object. (/home/pi/estimote-specs-master/node_modules/noble/lib/hci-socket/hci.js:6:26)
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Object.Module._extensions…js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19) {
    code: ‘MODULE_NOT_FOUND’,
    requireStack: [
    ‘/home/pi/estimote-specs-master/node_modules/noble/lib/hci-socket/hci.js’,
    ‘/home/pi/estimote-specs-master/node_modules/noble/lib/hci-socket/bindings.js’,
    ‘/home/pi/estimote-specs-master/node_modules/noble/lib/resolve-bindings.js’,
    ‘/home/pi/estimote-specs-master/node_modules/noble/index.js’,
    ‘/home/pi/estimote-specs-master/estimote-telemetry.js’
    ]
    }

It looks like it is a known noble issue that has been closed: https://github.com/noble/bleno/issues/440
Downgrading nodejs might help.

Downgrade to what version? It is not answered in that link you sent me…

Downgrading is dependent on how your nodejs is installed (from apt, nvm or manually). You need to refer to proper manual. nvm (Node Version Manager) for example allows you to easily switch between Node versions.
I found some other resolved issues with that error that claimed that downgrading to node 8.x helps. However with nvm you can easily experiment with that and try some newer versions.

Installed node via npm
Using Node 8.17.0
I get another error now!

module.js:550
throw err;
^

Error: Cannot find module ‘…/build/Release/binding.node’
at Function.Module._resolveFilename (module.js:548:15)
at Function.Module._load (module.js:475:25)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object. (/home/pi/estimote-specs-master/node_modules/bluetooth-hci-socket/lib/native.js:3:15)
at Module._compile (module.js:653:30)
at Object.Module._extensions…js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
I’ve been trying for weeks to get it to run… but no success!