HELP WANTED! - If you want to contribute, contact @sergioisidoro by email :)
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:
- Copy the contents of
custom_components
in this repo to<config folder>/custom_components
(but do not changeconfiguration.yaml
yet). - Restart HA to install the custom component and all the dependencies.
- Add the sensors to
configuration.yaml
according to the instructions bellow. - Restart HA again
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'
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
#Activate virtual environment, make sure to use proper path according to your installation
~$> source /xx/bin/activate
#Use the python version you've built your venv with! These apply to python3 & default homeassistant venv installation paths etc
~$> which pythonX
/srv/homeassistant/bin/python3
#Find actual executable
~$> readlink -f /srv/homeassistant/bin/python3
/usr/bin/python3.8
#Give permissions
~$> sudo setcap cap_net_raw,cap_net_admin+eip /usr/bin/python3.8
- 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)
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 - home-assistant/docker-base#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
- Tomi Tuhkanen for all the work in ruuvitag-sensor lib
- peltsippi
- JonasR-
- perapp
- rkallensee