Home

Awesome

Migration

Please go to docs.ruuvi.com for up-to-date information, this repository is online only for reference.

Ruuvi sensor protocols

Communication interfaces between Ruuvi devices and ouside world are decribed here. For clarity, each section is marked with a lifecycle stage:

Ruuvi as a sensor beacon

Lifecycle: In production

Ruuvi devices use BLE Advertisement as their primary method of transmitting information to users. This is a one-to-many relationship, there is no pairing or connections being established.

As the data is beaconed to the world, there is no guarantee that any single measurement is read. Instead the data is broadcast often enough to let any receivers get updates often enough.

The broadcasted data formats are described in details on their own page.

BLE GATT Connection

Lifecycle: Alpha

For some use cases the broadcasted data is not optimal. One such example is reading logs off the devices. A log can have thousands of datapoints, and broadcasting them when there are no listeners would waste energy and bandwidth. Larger blocks of data where reception of every data packet is important are transferred primarly via BLE GATT.

Transport layer is described at the page gatt communication and the application layer is described at the page gatt formats.

NFC

Lifecycle: In production

RuuviTags have NFC tag capablity. This is used for identifying a specific tag and returning any sensitive information to user, as NFC read requires physical access to the tag. NFC reports 4 UTF-8 encoded text fields:

Real-Time Transfer

Lifecycle: Alpha

Segger RTT is a serial protocol for transferring data out of microcontrollers with a wired connection. It is relevant only for developers, and mentioned here only for completeness sake.