# DSMR 2 MQTT bridge ## Introduction This bridigng component reads Dutch Smart Meter Requirements (DSMR) telegrams and sends them to a MQTT broker using the [Homie convention](https://homieiot.github.io/). The component is written in Python and is based on the execelent work of others: * [DSMR Parser](https://github.com/ndokter/dsmr_parser) * [Homie4](https://github.com/mjcumming/homie4) ## Configuring the bridge Create some environment variables (e.g. with a .env file) to specify the required settings: ```bash PYTHONPATH="." MQTT_HOST= DSMR_PORT=/dev/ttyUSB0 DSMR_PROTOCOL=V5 ``` If you have forwared the raw serial signal through ser2net, you should use `DSMR_PORT=tcp://:`, e.g.: ```bash DSMR_PORT=tcp://forwarding-pi.local:3334 ``` If you use credentials to access the MQTT broker, then alsp specify: ```bash MQTT_USERNAME= MQTT_PASSWORD= ``` Inspect the source [`settings.py`](dsmr2mqtt/settings.py) to find out about the other less frequently used settings. ## Configuring ser2net On the forwarding computer (e.g a Raspberry Pi) you need to install ser2net: ```bash sudo apt upgrade && sudo apt install ser2net ``` Then edit the configurion file `/etc/ser2net.yaml` and add ```yaml connection: &Dsmr accepter: tcp,3334 connector: serialdev, /dev/ttyUSB0, 115200n81, local ``` ![Works with Homie](https://homieiot.github.io/img/works-with-homie.png) ## Build You can run the app directly from Python, after installing the modules with [poetry](https://python-poetry.org/docs/): ```bash pip install poetry poetry install --without dev --no-root python -m dsmr2mqtt ``` Alternatatively, you can use the supplied Dockerfile to build a Docker container to run app. Building for docker hub can be done with: ```bash VERSION=0.5.1 docker buildx build --push --platform linux/arm64/v8,linux/amd64 --tag git.etxean.net/ardkuijpers/dsmr2mqtt:$VERSION --tag git.etxean.net/ardkuijpers/dsmr2mqtt:latest . ```