Find RuuviTag sensor beacons and get data from selected sensor and decode data from eddystone url
Project description
RuuviTag Sensor is a Python library for communicating with RuuviTag BLE Sensor Beacon and for decoding sensord data from broadcasted eddystone-url.
Requirements
RuuviTag with Weather Station firmware
Setup guide
Python 2.7 and 3
Linux
Package’s Windows and OSX supports are only for testing and url decoding
Bluez
sudo apt-get install bluez bluez-hcidump
Superuser rights
Package uses internally hciconf, hcitool and hcidump, which require superuser rights
Installation
Install latest released version
$ pip install ruuvitag_sensor
Install latest developement version
$ pip install git+https://github.com/ttu/ruuvitag-sensor
# Or clone this repository and install locally
$ pip install -e .
Usage
RuuviTag sensors can be identified using MAC addresses.
Find sensors
from ruuvitag_sensor.ruuvi import RuuviTagSensor
sensors = RuuviTagSensor.find_ruuvitags()
# find_ruuvitags function will print the mac address and the state of a sensor when it is found
# find_ruuvitags function returns same information in a dictionary
Get data from sensor
from ruuvitag_sensor.ruuvi import RuuviTagSensor
sensor = RuuviTagSensor('AA:2C:6A:1E:59:3D')
# update state from the device
state = sensor.update()
# get latest state (does not get it from the device)
state = sensor.state
print(state)
Get data for specified sensors
from ruuvitag_sensor.ruuvi import RuuviTagSensor
# List of macs of sensors which data will be collected
macs = ['AA:2C:6A:1E:59:3D', 'CC:2C:6A:1E:59:3D']
# get_data_for_sensors will look data for the duration of timeout_in_sec
timeout_in_sec = 4
datas = RuuviTagSensor.get_data_for_sensors(macs, timeout_in_sec)
# Dictionary will have lates data for each sensor
print(datas['AA:2C:6A:1E:59:3D'])
print(datas['CC:2C:6A:1E:59:3D'])
Parse data
from ruuvitag_sensor.ruuvi import RuuviTagSensor
from ruuvitag_sensor.url_decoder import UrlDecoder
full_data = '043E2A0201030157168974A5F41E0201060303AAFE1616AAFE10EE037275752E76692341412C3E672B49246AB9'
data = full_data[26:]
encoded = RuuviTagSensor.convert_data(data)
sensor_data = UrlDecoder().decode_data(encoded)
print(sensor_data)
Command line
$ python ruuvitag_sensor -h
usage: ruuvitag_sensor [-h] [-g MAC_ADDRESS] [-f] [--version]
optional arguments:
-h, --help show this help message and exit
-g MAC_ADDRESS, --get MAC_ADDRESS
Get data
-f, --find Find broadcasting RuuviTags
--version show program's version number and exit
Tests
Tests use unittest.mock library, so Python 3.3. or newer is required.
Run with nosetests
$ pip install nose
$ nosetests
Run with setup
$ python setup.py test
Examples
Examples are in examples directory.
Change log
License
Licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
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 ruuvitag_sensor-0.3.4.zip.
File metadata
- Download URL: ruuvitag_sensor-0.3.4.zip
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a7c9de95a1acf674c98a07aeb919e407bc16f0e42f57b1e99c391edb5a2c586
|
|
| MD5 |
aef497ec2f0a97d8f3e57d5d223e79fd
|
|
| BLAKE2b-256 |
9df3e7c9598c0dc3a7d613f2125f62dc6faa24a1c969a40e5516af9efaa26cef
|