RuuviTag BLE Sensor Beacon scanner.
Project description
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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 525ec6d71c47a1dba430b862973b61c25d559aa5e168eb1fd85d350405581336 |
|
MD5 | dcdafb4fc259d3ee9fe1b4f0f6c7aed5 |
|
BLAKE2b-256 | 046f571cfbac3910317ebb474495e0f0ed9e09e3b893b1de83689b00f3a9e916 |