Node.js module for reading data from a Ruuvitag weather station.
Tested on Raspberry Pi 3. Depends on noble. See instructions on how to enable BLE on RasPi and how to run without root.
npm install node-ruuvitag
const ruuvi = require('node-ruuvitag');
ruuvi.on('found', tag => {
console.log('Found RuuviTag, id: ' + tag.id);
tag.on('updated', data => {
console.log('Got data from RuuviTag ' + tag.id + ':\n' +
JSON.stringify(data, null, '\t'));
});
});
ruuvi.on('warning', message => {
console.error(new Error(message));
});
Module ruuvi
emits a found
event, when a new RuuviTag
is discovered. Event's payload is a ruuviTag
object (see below)
Module relays noble's warning
events (see below)
Finds available ruuvitags. Returns a promise which is resolved with an
array of ruuviTag
objects or rejected with an error if no tags were
found.
If you call findTags
multiple times, it always returns all
found RuuviTags this far.
Is an eventEmitter
.
Properties:
-
id
: id of beacon -
address
: address of beacon -
addressType
: addressType of address -
connectable
: flag if beacon is connectable
Events:
updated
: emitted when weather station data is received.
Object data
has
following properties (depending on data format):
-
url
-- original broadcasted url if any temperature
pressure
humidity
-
eddystoneId
-- in data format 4 rssi
-
battery
(battery voltage) accelerationX
accelerationY
accelerationZ
-
txPower
-- in data format 5 -
movementCounter
-- in data format 5 -
measurementSequenceNumber
-- in data format 5 -
mac
-- in data format 5
See data formats for info about RuuviTag sensor values.