#mqtt #home-assistant #iot

app airrohr-mqtt

Homeassistant compatible mqtt bridge for the Airrohr air sensor

1 unstable release

0.1.0 Jun 25, 2022

#1082 in Hardware support

Apache-2.0

21KB
248 lines

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.

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

Dependencies

~30–66MB
~1M SLoC