Don't want the introduction? Skip to Setting It Up
I've been experimenting a lot recently with Home Assistant and trying to connect as many things that already exist in my home to it. I was trying to connect my La Crosse weather station locally (which I'll talk about in another post) and was debugging why my rain sensor wasn't showing up.
As part of that, I stumbled on a command-line tool called rtl_433, a great open-source project which can decode a variety of transmissions from various devices in the ISM band using a cheap RTL-SDR. When I ran it (at 915MHz), I not only saw transmission from my weather station, but also a lot of
ERT-SCM messages. After some googling, I found a Wikipedia article which says
Encoder receiver transmitter (ERT) is a packet radio protocol developed by Itron for automatic meter reading. The technology is used to transmit data from utility meters over a short range so a utility vehicle can collect meter data without a worker physically inspecting each meter.
"That's cool," I thought. "I wonder if I can get that data into Home Assistant." With some more Googling, I found a project by the GitHub user allangood that does exactly that: within a Docker container, it runs rtl_tcp and rtlamr and a small Python program sends that data to Home Assistant via MQTT. You can either follow the instructions in the Readme of the repo or follow my guide below.
Setting It Up
This guide will assume you have Home Assistant set up and connected to an MQTT broker. If you don't have that working, please set up Home Assistant, and connect Mosquitto (if you can install add-ons to Home Assistant, that's the easiest way to set up MQTT).
If you are running Home Assistant on a Raspberry Pi or other bare-metal, the easiest way to set up rtlamr2mqtt is via the Home Assistant Add-On. Simply add the repository to your Add-Ons, then install it from the UI.
If you are running Home Assistant in a Docker container or in a VM and don't want to pass your SDR in (like I am), you should set up the Docker container on your host. Install Docker and Compose, then create a folder to set it up in and open a terminal in it.
docker-compose.yml with the following content:
Before you create the container, we'll need to set up the configuration file. Create a
config.yml in the same directory:
general: sleep_for: 60 # Sleep for a minute after receiving a reading from the meters. Keeps CPU usage and temperatures low. mqtt: ha_autodiscovery: true ha_autodiscovery_topic: homeassistant base_topic: rtlamr host: <MQTT Broker IP> port: 1883 # only required if you have a non-standard port user: mqtt # the user for your MQTT broker password: "<password>" meters: - id: <meter ID> protocol: scm name: electricity_meter unit_of_measurement: kWh icon: mdi:meter-electric-outline device_class: energy state_class: total_increasing - id: <meter ID> protocol: scm name: gas_meter unit_of_measurement: "ft³" icon: mdi:meter-gas-outline device_class: gas state_class: total_increasing
Replace the Meter IDs with the ID from the label on your meter. It will be an eight or ten-digit number with a barcode (usually of the format
## ########[##] (the first two digits don't matter). See the rtlamr docs for examples of what to look for.
I used SCM as the protocol in the above example because that's what both of my meters are, but it may be any of
r900bcd. If SCM doesn't work, try the others, or try running the container in listening mode:
docker run --rm -e LISTEN_ONLY=yes -e RTL_MSGTYPE="all" --device=/dev/bus/usb:/dev/bus/usb allangood/rtlamr2mqtt.
Your units may also be different. Some electricity meters report in Watt-hours (Wh), and some gas/water meters report in cubic meters (m³).
Feel free to customize the configuration to match your setup: the icon can be omitted, or set to whatever you like (the icon name from materialdesignicons prefixed by
device_class only supports
energy (electricity) and
gas, but that allows your meter to be integrated into the Energy dashboard.
The End Result
Once you have everything connected, you'll be able to set up the Energy dashboard and get visualizations like this and much more.
This was a quick overview of rtlamr2mqtt and integrating utility meters into Home Assistant. I strongly suggest reading the docs for that tool because they probably do a much better job explaining certain things and provide more flexibility with setting it up.
If you have questions or comments, please feel free to email me at