Get your smart electric, water and gas meter scm readings into home assistant with a RTL-SDR

I have the same model gas meter, 100G DLS. I let rtlamr run for several minutes and it didn’t find my gas meter. The specs say it uses SCM+, so that should work. The specs also note it can be equipped with encryption so maybe that’s the problem.

Hi – I’m in CO as well. Recently had my previously working iTron electric meter “upgraded” by Xcel to one of their smart meters. Annoying, I had been reading it with RTLAMR2MQTT for a couple of years now. Are you able to read anything from the new meter? I believe this is the conversion to get into m3

converted_gas:
        value_template: "{{ ((states.sensor.power_meter_2.state | float / 100 * 2.83168)) | round(0) }}"
        unit_of_measurement: m³

I’m with Nicor in the U.S. Midwest, and I have a Sensus (FlexNet) 300GM. Everything I’m reading online so far suggests that this is not currently compatible with any USB-RTL (SDR) type solution, or nobody has figured out how to reverse engineer it yet.

Has anyone made any progress with these types of devices yet?

2 Likes

I found a bug today that prevented my gas meter from being seen. In essence you need to change this line in config/rtlamr2mqtt/rtl2mqtt.sh to this:

 DEVICEID="$(echo $line | jq --raw-output '.Message.ID,.Message.EndpointID | select( . != null )' | tr -s ' ' '_')"

Now that I’ve got my gas meter sensor pulling with rtlamr2mqtt, I can’t get it to show up as a source in the Energy configuration. This is what it looks like now:

- platform: mqtt
  state_topic: "readings/95229911/meter_reading"
  name: "Gas Meter"
  unit_of_measurement: ft3
  value_template: >
    {% set ft3 = (value | float) / 100 %}
    {{ ft3 }}
  state_class: total_increasing
  device_class: gas

It doesn’t show up because according to HA, “that’s caused by a bug in the integration providing the entity.” Ok? What to do?

Apparently, the unit_of_measurement needs to be ft³ or m³ and not ft3 or m3 for HA to pick it up in the Energy dashboard.

This is the code that grabbed from above and im getting state of the electric sensor as unavailable. Yet I can go to developer and listen and all the Matt data is being sent over. Am I missing something???

- platform: mqtt
  state_topic: "rtl_433/reading/SCM/4/37823822/message"
  name: "Electric Meter"
  unique_id: electric_meter_01
  unit_of_measurement: kWh
  device_class: energy
  state_class: measurement
  availability_topic: rtl_433/status/availability
  last_reset_topic: amr/status/last_reset
  value_template: "{{ value_json.Message.Consumption }}"
  json_attributes_template: "{{ value_json.Message | tojson }}"
  json_attributes_topic: "rtl_433/reading/37823822/message"

My gas meter only reports when Xcel drives around and pings it, so it took 2 months before my gas meter showed up in the consumption panel. Yikes.

1 Like

Hmm, that looks correct to me. Perhaps the availability_topic is not triggering.

Try removing availability_topic and last_reset_topic and then change state class:

state_class: total_increasing


now it’s showing unknown instead of unavailable doing what you suggested. Thank you btw for trying to help figure this out with me…


here’s a screen shot of me listening in on MQTT just now so you can see the data coming in as well.

I have RTLAMR setup to pickup my consumptions signals from my Xcel energy meters to send in to InfluxDB. I am trying to figure out how to pull these readings from InfluxDB in to the HA Energy panel rather than have the RasPi with RTLAMR sending it to Influx and HA (Influx and my HA are both running on the same server). I have the Influx sensor setup but it doesn’t show as a consumption sensor in the energy panel: InfluxDB - Home Assistant

I even tried changing the unit of measure from W to Wh to kWh. Anyone get an InfluxDB sensor setup like this to feed in to the Energy panel?

I am only picking up consumption (Wh) readings from the main Xcel meter and the PV production meter though I am still trying to figure out how to get the production (energy to grid) from the main Xcel meter. When our PV was installed, Xcel put in an OpenWay Itron C2SO SK9AMI7 Bidirectional meter for the main meter. I have only found the consumption reading using RTLAMR and all my efforts to sniff any ZigBee traffic have been a dead end so if anyone else has info on getting the energy sent to the grid from these meters, I would love to hear more.

P.S. I am also in CO. Seems to be a trend in this thread

Do you have one of the OpenWay Itron meters? I have been able to pickup consumption off these newer Xcel smart meters using RTLAMR. I had to scan all SCM and SCM+ signals and find the new meter ID when Xcel swapped mine out. The endpoint type I found for my meters was 110 which was very different from the supported meter list so I recommend just scanning by protocol and comparing consumption from what you see on your meter display plus trying to match a meter ID to a number on your unit.

1 Like

Hi @MacGyver33

Mine is Itron Gen5 Riva (model G5R1).

I ran ‘rtlamr -msgtype=scm,scm+ -unique=true’ and output is as follows:

{Time:2021-12-18T18:19:30.770 SCM:{ID:XXX Type: 7 Tamper:{Phy:02 Enc:01} Consumption: 3674303 CRC:0xFE96}}
{Time:2021-12-18T18:19:30.831 SCM:{ID:XXX Type: 5 Tamper:{Phy:01 Enc:01} Consumption: 1030964 CRC:0x6BFA}}

I’m not seeing any Type’s other than 5, 7, 12 (and a few Endpoint Type:0x07 & 0x6E) but nothing seems to tie out to what’s listed on the display. Any thoughts? Thanks

What are the differences between the one posted previously: GitHub - jdeath/RTLAMR2MQQT

And this one below?

Your meter sends a different attribute for the meter reading, you are showing consumption_data instead of Consumption which is what my meter reports.

You’ll need to use a different value template parser to get the reading.

For example:

value_template: "{{ value_json.Message.consumption_data | float }}"

Note that I have not used either of these 2 projects, but upon reviewing the code, I think the following is correct:

  • The allangood project is designed for using a manually set-up SDR, probably on a completely separate installation running on a separate computer. This one is more flexible but requires more set-up to work correctly.
  • The jdeath one is for people who are running HASSIO and want to plug the SDR dongle directly into the computer that runs HASS. This is nice because then you have less setup to do. The downside is that you might run into performance issues since the RTL-SDR reciever, decoder and parser is running on the same machine that you also have HASSIO running on.
2 Likes

Did you ever get this working? I have the same meter (gas company just swapped out my old, working meter with this one :frowning: )
I think it may only send when it gets a signal to broadcast (per the gas company guy I spoke to…)

after reading this, bought a RPi 4 and SDR radio to mqtt the data into HA.

it seems the original nano SDR that @biochemguy references is not avialalble anymore (just the 2 is), so I got their mini version 2+, hopefully it works the same…I guess I will find out in a few days

hi!

Finally put all my stuff together using my nano SDR and RPi4 and follwed the instructions step-by-step (copy-paste), no errors during install.

I placed my mqtt local broker IP, in the settings file (left everything else defauly), but when i check if the service runs, I gete some errors here:

any idea what this means and what permissions its asking for?

pi@raspberrypi:~ $ sudo service amridm2mqtt status
● amridm2mqtt.service - AMR IDM to MQTT
     Loaded: loaded (/etc/systemd/system/amridm2mqtt.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2022-05-06 13:25:36 MDT; 1min 13s ago
    Process: 483 ExecStart=/opt/amridm2mqtt/amrscm2mqtt (code=exited, status=203/EXEC)
   Main PID: 483 (code=exited, status=203/EXEC)
        CPU: 7ms

May 06 13:25:36 raspberrypi systemd[1]: Started AMR IDM to MQTT.
May 06 13:25:36 raspberrypi systemd[483]: amridm2mqtt.service: Failed to locate executable /opt/amridm2mqtt/amrscm2mqtt: Permission denied
May 06 13:25:36 raspberrypi systemd[483]: amridm2mqtt.service: Failed at step EXEC spawning /opt/amridm2mqtt/amrscm2mqtt: Permission denied
May 06 13:25:36 raspberrypi systemd[1]: amridm2mqtt.service: Main process exited, code=exited, status=203/EXEC
May 06 13:25:36 raspberrypi systemd[1]: amridm2mqtt.service: Failed with result 'exit-code'.