You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Brian Salcedo 105efdbda2 add 1 year ago
rtlamr-exporter initial commit 1 year ago
Dockerfile.rtl_tcp initial commit 1 year ago
Dockerfile.rtlamr initial commit 1 year ago add 1 year ago
docker-compose.yml initial commit 1 year ago
prometheus.yml initial commit 1 year ago

Smart Meters

Use RTL-SDR with rtlamr to collect energy consumption information and export it to Prometheus

The data can then be visualized in a user-created dashboard with Grafana


  1. RTL-SDR dongle with drivers installed on the host.
  2. Docker and Docker Compose installed on the same host.


$ docker-compose up -d

The compose file will pull and build all the pieces to bring everything up, and the services will persist across reboots.

Access Grafana at port 3000 of the host. Default username and password is admin/admin

Adding the Prometheus data source

Add the Prometheus data source under Configuration -> Data Sources. The URL is http://prometheus:9090

Save & Test should say the data source is working

Accessing the data

When building queries for your dashboard panels, meter data can be accessed under the following Time Series Selector:


It has the following labels:

message_type -- e.g. SCM, SCM+, R900, ...

meter_id -- ID number of AMR equipment

Labels can be used to narrow the results to your meter(s).

Note: Due to a limitation with my particular SDR, only SCM and R900 message types are collected. See Dockerfile.rtlamr to change if needed.


Do not use rtlamr for malicious purposes. If you do, I don’t want to know about it, I am not and will not be responsible for your actions.

Use Cases

These are a few examples of ways this tool could be used:

  • Track down stray appliances.
  • Track power generated vs. power consumed.
  • Find a water leak with rtlamr rather than from your bill.
  • Optimize your thermostat to reduce energy consumption.
  • Mass collection for research purposes. (Please anonymize your data.)
  • Using data collected to determine living patterns of specific persons with the intent to act on this data, particularly without express permission to do so.
  • Using data collected to facilitate any criminal intent or act.