# node-ruuvitag

> Read data from RuuviTag weather station

Latest version **5.2.0** (published 2025-08-15) · BSD-3 license · 0 weekly downloads

## Install

```sh
npm install node-ruuvitag
pnpm add node-ruuvitag
yarn add node-ruuvitag
bun add node-ruuvitag
```

## Health

**Score 25/100 (F)** — status: maintenance-mode.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 5.2.0 |
| Published | 2025-08-15 |
| First published | 2017-07-03 |
| Weekly downloads | 0 |
| License | BSD-3 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >6.0.0 |
| Dependencies | 1 |
| Unpacked size | 34.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 43 |
| Maintainers | pakastin |

## Links

- npm: https://www.npmjs.com/package/node-ruuvitag
- Repository: https://github.com/pakastin/node-ruuvitag
- Homepage: https://github.com/pakastin/node-ruuvitag#readme
- Issues: https://github.com/pakastin/node-ruuvitag/issues
- npm.io page: https://npm.io/package/node-ruuvitag

## Dependencies (1)

- [@abandonware/noble](https://npm.io/package/@abandonware/noble.md) ^1.9.2-26

## Recent versions

- 5.2.0 (latest) — 2025-08-15
- 5.1.0 — 2024-09-14
- 5.0.0 — 2024-01-17
- 4.7.0 — 2022-11-16
- 4.6.1 — 2020-07-15
- 4.6.0 — 2020-07-15
- 4.5.1 — 2020-06-02
- 4.5.0 — 2020-05-29
- 4.4.1 — 2020-05-29
- 4.4.0 — 2020-05-29
- 4.3.0 — 2020-05-29
- 4.2.2 — 2020-05-24
- 4.2.1 — 2020-05-04
- 4.2.0 — 2020-01-23
- 4.1.0 — 2018-02-28
- … 8 more at https://npm.io/package/node-ruuvitag/versions

## README

# node-ruuvitag
Node.js module for reading data from a [Ruuvitag](http://tag.ruuvi.com)
weather station.

Tested on Raspberry Pi 3. Depends on [noble](https://github.com/abandonware/noble). See [instructions](https://github.com/abandonware/noble) on
 how to enable BLE on RasPi and how to run without root.

### Installation

```
npm install node-ruuvitag
```


### Usage example
```js
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));
});

```

### Events
#### found
Module ```ruuvi``` emits a ```found``` event, when a new RuuviTag
is discovered. Event's payload is a ```ruuviTag``` object (see below)
### warning
Module relays noble's [```warning``` events](https://github.com/noble/noble#warnings) (see below)

### API

##### ruuvi.findTags()

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.

### ```ruuviTag``` object

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](https://github.com/ruuvi/ruuvi-sensor-protocols) for
info about RuuviTag sensor values.

---
_Source: https://npm.io/package/node-ruuvitag · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
