Skip to content

Homeassistant compatible mqtt bridge for the Airrohr air sensor.

License

Notifications You must be signed in to change notification settings

jklmnn/airrohr-mqtt

Repository files navigation

Airrohr-mqtt

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.

Supported Features

Homeassistant features

  • Device advertisement via MQTT
  • Updating sensor values via MQTT
  • Configurable sensor properties

Sensors

  • SDS011 (pm10, pm25)
  • BME280 (temperature, humidity, pressure)

Building

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

Configuration

Webserver

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.

Settings

The server looks for a Settings.toml file in the local directory. This file contains the following keys:

  • server: MQTT server
  • user: MQTT username
  • password: MQTT password
  • sensors: Sensors configuration file

An example configuration can be found in Settings.toml.def.

Sensors

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.

Airrohr

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.

Airrohr Config Page

Running

To run the server just provide a Settings.toml file and run

$ cargo run

By default it will listen to localhost:8000.

Running with Systemd

One way to persist the execution, is to start it with systemd in the context of the current user. An example configuration is provided in airrohr-mqtt.service.EXAMPLE.

You want to copy this file to ~/.config/systemd/user/airrohr-mqtt.service. Enable it with systemctl --user enable airrohr-mqtt.service, start with systemctl --user start airrohr-mqtt.service.

Console output can be observed by journalctl --user-unit airrohr-mqtt.service.

In order to make it run, even when the user is not logged in, make sure to enable lingering. You can use loginctllike so: loginctl enable-linger

MQTT Integration

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>

Airrohr Data Page

Homeassistant Device

About

Homeassistant compatible mqtt bridge for the Airrohr air sensor.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages