Skip to main content

RuuviTag BLE Sensor Beacon scanner.

Project description

PyPi Status

Harvest data from RuuviTag BLE Sensor Beacon with MicroPython Bluetooth enabled micro controller like the pycom devices.

micropython-ruuvitag supports Data Format 2, 3, 4 and 5.

This package comes with a scanner and a tracker. The scanner scans for RuuviTags in a pre defined time and return the result. The tracker continuously scans for RuuviTags and call a callback for each tag found.

Installation

The easiest way to install the package is via upip:

>>> import upip
>>> upip.install('micropython-ruuvitag')

For manual installation copy the ruuvitag directory with all files to your device lib directory.

Install with mpfshell

$ mpfshell ttyUSB0 -s install.mpf

Scanner

RuuviTagScanner scans for RuuviTags and decode the data format. The result is a list with named tuples.

Scan 10 seconds for RuuviTag sensors and print the result:

from ruuvitag.scanner import RuuviTagScanner

rts = RuuviTagScanner()

for ruuvitag in rts.find_ruuvitags(timeout=10):
    print(ruuvitag)

Tracker

RuuviTagTracker scans for RuuviTags, decode the data format and call a callback with a named tuple if recieved data from tag.

from ruuvitag.tracker import RuuviTagTracker

def cb(ruuvitag):
    print(ruuvitag)

rtt = RuuviTagTracker()
rtt.track_ruuvitags(cb)

Whitelist devices

You can collect data from only the devices you want by define a whitelist with mac addresses. Other Devices then will be ignored. Whitelists can be used with RuuviTagScanner and RuuviTagTracker.

whitelist = (b'aa:bb:cc:dd:ee:21', b'aa:bb:cc:dd:ee:42',)
rts = RuuviTagScanner(whitelist)

Blacklist persistence

If the data from a Bluetooth device can not be decoded, the device get on a blacklist as long the MicroPython device is not resetted. For a persistent device blacklist the list should be saved and reloaded.

>>> from ruuvitag import RuuviTagScanner
>>> rts = RuuviTagScanner()
>>> # add back blacklisted devices
>>> rts.blacklist = [b'aa:bb:cc:dd:ee:21', b'aa:bb:cc:dd:ee:42']
>>> # run a new scan
>>> rts.find_ruuvitags(timeout=10)
>>> # get blacklisted devices
>>> rts.blacklist

Named tuple formats

Data Format 2 and 4 (Eddystone-URL)

RuuviTagURL = namedtuple('RuuviTagURL', (
    'mac',
    'rssi',
    'format',
    'humidity',
    'temperature',
    'pressure',
    'id',
))

Data Format 3 (RAWv1) and 5 (RAWv2)

RuuviTagRAW = namedtuple('RuuviTagRAW', (
    'mac',
    'rssi',
    'format',
    'humidity',
    'temperature',
    'pressure',
    'acceleration_x',
    'acceleration_y',
    'acceleration_z',
    'battery_voltage',
    'power_info',
    'movement_counter',
    'measurement_sequence',
))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

micropython-ruuvitag-0.6.0.tar.gz (4.1 kB view details)

Uploaded Source

File details

Details for the file micropython-ruuvitag-0.6.0.tar.gz.

File metadata

  • Download URL: micropython-ruuvitag-0.6.0.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for micropython-ruuvitag-0.6.0.tar.gz
Algorithm Hash digest
SHA256 525ec6d71c47a1dba430b862973b61c25d559aa5e168eb1fd85d350405581336
MD5 dcdafb4fc259d3ee9fe1b4f0f6c7aed5
BLAKE2b-256 046f571cfbac3910317ebb474495e0f0ed9e09e3b893b1de83689b00f3a9e916

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page