RuuviTag sensor for hass.io
This project leverages python3 native bluetooth sockets. For python to have access to the Bluetooth socket family it needs to have been compiled with either lib-bluetooth.h or bluez.h in your operating system.
Recent operating systems like Ubuntu and Raspian should support this when using python3. HASS.io also works after this pull request as well as the official python library after this pull request
Note: If you're not using HASS.io official image, please check bellow the pre-requisites before continuing.
How to get started:
custom_components
in this repo to <config folder>/custom_components
(but do not change configuration.yaml
yet).configuration.yaml
according to the instructions bellow.The configuration.yaml has to be edited like this
sensor:
- platform: ruuvi
sensors:
- mac: 'MA:CA:DD:RE:SS:00'
name: 'livingroom'
- mac: 'MA:CA:DD:RE:SS:01'
name: 'bathroom'
⚠️ Important note: Do not add more than one ruuvi platform per adapter in the sensors configuration.
The code in setup_platform
is called once per platform, so at boot time multiple blocking requests to IO will be performed,
resulting in only one of the platforms beings successfully setup.
If you don't want to monitor all of variables from all of the tags, it is possible to pick which ones you want Home Assistant to save and monitor. You can do that for each sensor by passing the monitored_conditions
parameter like so:
sensor:
- platform: ruuvi
sensors:
- mac: 'MA:CA:DD:RE:SS:00'
name: 'livingroom'
monitored_conditions:
- temperature
- humidity
- pressure
If you don't provide any, all of the available data will be monitored. The available conditions for monitoring are:
temperature
humidity
pressure
acceleration
acceleration_x
acceleration_y
acceleration_z
battery
movement_counter
The hass component supports passing the bluetoth adapter.
- platform: ruuvi
sensors:
- mac: 'MA:CA:DD:RE:SS:00'
name: 'livingroom'
adapter: "hci0"
Adapter defaults to the default of ble library
Because we're getting data from the devices every second or so (and updating HomeAssistand database every seconds) this can greatly impact the lifespan of your SD card and storage device (eg. Raspberry pi). As a compromise, we're only updating the sensor's state every 10 seconds. Howver you can change this value by passing a value to the max_update_frequency
as you please. Eg. 0 will update HomeAssistant state as soon as the new data arrives and not lose any data, 10 will discard all data recieved 10 seconds after each sensor update.
- platform: ruuvi
sensors:
- mac: 'MA:CA:DD:RE:SS:00'
name: 'livingroom'
max_update_frequency: 5
If you really want all the data possibe, consider setting max_update_frequency
to 0, and configuring recorder to only submit changes to the database less often. For example, only recording changes to the database every 10 seconds. Note that this configuration has nothing to do with this integration
recorder:
commit_interval: 10
You might choose to install Homeassistant directly on your machine or through other methods other than the official HASS image. If you do so, here are some pointers to make this custom component work.
Run bleson-setcap.sh if you have installed homeassistant to debian/similar according to default instructions. Requires sudo access!
(https://www.home-assistant.io/docs/installation/virtualenv/)
Install bleson https://github.com/TheCellule/python-bleson
Give python superuser permissions so btle scans become possible
#Make sure you have setcap
sudo apt install libcap2-bin
~$> source /xx/bin/activate
~$> which pythonX /srv/homeassistant/bin/python3
~$> readlink -f /srv/homeassistant/bin/python3 /usr/bin/python3.8
~$> sudo setcap cap_net_raw,cap_net_admin+eip /usr/bin/python3.8
# Tested with
* rasperry pi 4 running Hassio (4 ruuvi sensors)
* raspberry pi 3b+ with homeassistant venv installation and 6 sensors
* Intel NUC with homeassistant venv installation and 6 sensors
* (add please reach out so I'll your setup here)
# Contributors
This work is a mesh of multiple projects that have been refactored for use in HASS.
- Adding native python bluetooth sockets in HASS base python image - https://github.com/home-assistant/docker-base/pull/53
- Refactoring and reuse of some code from https://github.com/ttu/ruuvitag-sensor to create https://github.com/sergioisidoro/simple-ruuvitag
- Refactoring the work from https://github.com/JonasR-/ruuvi_hass to support bluezson
## Big thanks to:
* [Tomi Tuhkanen](https://github.com/ttu) for all the work in ruuvitag-sensor lib
* [peltsippi](https://github.com/peltsippi)
* [JonasR-](https://github.com/JonasR-)
* [perapp](https://github.com/perapp)
* [rkallensee](https://github.com/rkallensee)