Crates.io | airrohr-mqtt |
lib.rs | airrohr-mqtt |
version | 0.1.0 |
source | src |
created_at | 2022-06-25 23:07:35.824991 |
updated_at | 2022-06-25 23:07:35.824991 |
description | Homeassistant compatible mqtt bridge for the Airrohr air sensor. |
homepage | |
repository | https://github.com/jklmnn/airrohr-mqtt |
max_upload_size | |
id | 613322 |
size | 70,443 |
Airrohr-mqtt is a Homeassistant compatible mqtt bridge for the Airrohr. It sets up a webserver that takes requests from the Airrohr and converts them into MQTT messages.
pm10
, pm25
)temperature
, humidity
, pressure
)Cargo brings most of the dependencies, however some libraries depend on native C libraries. On Debian based systems the following packages are required:
cmake
libssl-dev
pkg-config
The webserver is based on Rocket so it supports any
environment variables supported by Rocket. It will take the POST
requests
generated by the Airrohr under the /api
path.
Attention: The webserver does not support any authentication. Only make it accessible in trusted environments. Otherwise anyone is able to write any data into Homeassistant.
The server looks for a Settings.toml
file in the local directory. This file
contains the following keys:
server
: MQTT serveruser
: MQTT usernamepassword
: MQTT passwordsensors
: Sensors configuration fileAn example configuration can be found in Settings.toml.def
.
The sensors are configured in sensors.json
. It is a map of Airrohr
sensors to Homeassistant sensors with additional information. E.g. the Airrohr sensor value
{"value_type": "BME280_temperature", "value": "23.50"}
will be transformed into a sensor configuration for Homeassistant to properly interpret the value received via MQTT:
{"BME280_temperature": {"class": "temperature", "unit": "°C", "value_template": "{{ value }}"}}
Additional sensors or different units can be configured without recompilation.
To configure your Airrohr enter the IP, domain and path into the custom API part of the API
configuration. The path should end on /api
but can also have a prefix if you're using a
reverse proxy.
To run the server just provide a Settings.toml
file and run
$ cargo run
By default it will listen to localhost:8000
.
The bridge publishes a device per Airrohr with all of its sensors with the following topics:
homeassistant/sensor/airrohr-12345678/<sensor name>/config
The configuration will include the topic for the value of each sensor. They look as follows:
airrohr/airrohr-12345678/<sensor name>