I sent an email to the launchpad team and they had me rebooted and running pretty quickly. No additional info on a cause.
I’m using zaknye’s container from xcel_itron2mqtt which had polling set to 5 seconds. In the energy launchpad github issues trackers there was mention that either Xcel or Itron’s design goal was for instantaneous usage at 1 second and all other data at 5 seconds. Zaknye’s agent pulled everything at 5 seconds, so that should have been good. But just because I don’t really care about that many data points I slowed the polling rate down to every 10 seconds. I got up and running again yesterday, so we’ll see how this goes.
Do you have the launchpad email handy?
It’s upthread.
Did you get the email address?
Sunday afternoon I sent an email to [email protected].
I stated my service address and account number and asked them to restart the meter.
By 8:00 am Monday they had restarted the meter and it now works nicely.
I didn’t realize this until I found some brilliant Redditor’s post, but if you have an iPhone you can download the Xcel “My Energy Connection” app and update the Wifi from within the app.
The redditor mentioned there are a lot of false negatives, which I can confirm. I updated the Wifi in the app and while it said connection unsuccessful, my Eero immediately sent a push notification that an iTron device was online!
I’ve been reading this topic for a few months, I have to throw this out there. I have an ITron Gen 5 Riva… but not Xcel has anyone found a way to get the data without an API? I just have HA on a Le potato with a RTL-SDR dongle. I have rtlamr2mqtt turned on… I get this…
[2024-09-16 14:09:48] 14:09:48.927543 decode.go:60: Preambles: 00000000000000001110010101100100,111110010101001100000,0001011010100011,01010101010101010001011010100011
[2024-09-16 14:09:48] 14:09:48.927781 main.go:124: GainCount: 29
[2024-09-16 14:47:35] 14:47:35.211647 main.go:343: Receiver context cancelled.
[2024-09-16 14:47:35] 14:47:35.213084 main.go:320: read tcp 127.0.0.1:60664->127.0.0.1:1234: i/o timeout
[2024-09-16 14:47:35] io.ReadFull
[2024-09-16 14:47:35] main.(*Receiver).Run.func2
[2024-09-16 14:47:35] /go/pkg/mod/github.com/bemasher/[email protected]/main.go:181
[2024-09-16 14:47:35] runtime.goexit
[2024-09-16 14:47:35] /usr/local/go/src/runtime/asm_arm64.s:1223
[2024-09-16 18:49:38] Shutdown detected, killing process.
Traceback (most recent call last):
File "/usr/bin/rtlamr2mqtt.py", line 415, in <module>
listen_mode()
File "/usr/bin/rtlamr2mqtt.py", line 392, in listen_mode
for amrline in rtlamr.stdout:
File "/usr/local/lib/python3.10/codecs.py", line 319, in decode
def decode(self, input, final=False):
File "/usr/bin/rtlamr2mqtt.py", line 152, in shutdown
if not external_rtl_tcp and rtltcp.returncode is None:
NameError: name 'external_rtl_tcp' is not defined
[2024-09-17 18:07:34] Using "/data/options.json" config file
[2024-09-17 18:07:34] Fetching default MQTT configuration from http://supervisor/services/mqtt
[2024-09-17 18:07:34] Starting in LISTEN ONLY Mode...
[2024-09-17 18:07:34] Using "/data/options.json" config file
[2024-09-17 18:07:34] Fetching default MQTT configuration from http://supervisor/services/mqtt
[2024-09-17 18:07:34] Configured MQTT sender:
[2024-09-17 18:07:34] > hostname => core-mosquitto
[2024-09-17 18:07:34] > port => 1883
[2024-09-17 18:07:34] > username => addons
[2024-09-17 18:07:34] > client_id => rtlamr2mqtt
[2024-09-17 18:07:34] > base_topic => rtlamr
[2024-09-17 18:07:34] > availability_topic => rtlamr/status
[2024-09-17 18:07:34] > tls => None
[2024-09-17 18:07:34] Starting rtl_tcp with /usr/bin/rtl_tcp
[2024-09-17 18:07:36] Starting rtlamr with ['/usr/bin/rtlamr', '-msgtype=all', '-format=json']
[2024-09-17 18:07:36] You should see all utility meters after this line:
[2024-09-17 18:07:36] 18:07:36.576466 decode.go:45: CenterFreq: 912380000
[2024-09-17 18:07:36] 18:07:36.578884 decode.go:46: SampleRate: 2359296
[2024-09-17 18:07:36] 18:07:36.578954 decode.go:47: DataRate: 32768
[2024-09-17 18:07:36] 18:07:36.578972 decode.go:48: ChipLength: 72
[2024-09-17 18:07:36] 18:07:36.578986 decode.go:49: PreambleSymbols: 32
[2024-09-17 18:07:36] 18:07:36.579001 decode.go:50: PreambleLength: 4608
[2024-09-17 18:07:36] 18:07:36.579017 decode.go:51: PacketSymbols: 736
[2024-09-17 18:07:36] 18:07:36.579032 decode.go:52: PacketLength: 105984
[2024-09-17 18:07:36] 18:07:36.579061 decode.go:59: Protocols: scm,scm+,idm,r900
[2024-09-17 18:07:36] 18:07:36.579081 decode.go:60: Preambles: 111110010101001100000,0001011010100011,01010101010101010001011010100011,00000000000000001110010101100100
[2024-09-17 18:07:36] 18:07:36.579213 main.go:124: GainCount: 29
[2024-09-17 18:42:06] 18:42:06.426947 main.go:343: Receiver context cancelled.
[2024-09-17 18:42:06] 18:42:06.429430 main.go:320: read tcp 127.0.0.1:44328->127.0.0.1:1234: i/o timeout
[2024-09-17 18:42:06] io.ReadFull
[2024-09-17 18:42:06] main.(*Receiver).Run.func2
[2024-09-17 18:42:06] /go/pkg/mod/github.com/bemasher/[email protected]/main.go:181
[2024-09-17 18:42:06] runtime.goexit
[2024-09-17 18:42:06] /usr/local/go/src/runtime/asm_arm64.s:1223
[2024-09-17 19:15:19] Shutdown detected, killing process.
Traceback (most recent call last):
File "/usr/bin/rtlamr2mqtt.py", line 415, in <module>
listen_mode()
File "/usr/bin/rtlamr2mqtt.py", line 392, in listen_mode
for amrline in rtlamr.stdout:
File "/usr/local/lib/python3.10/codecs.py", line 319, in decode
def decode(self, input, final=False):
File "/usr/bin/rtlamr2mqtt.py", line 152, in shutdown
if not external_rtl_tcp and rtltcp.returncode is None:
NameError: name 'external_rtl_tcp' is not defined
[2024-09-17 19:15:25] Using "/data/options.json" config file
[2024-09-17 19:15:25] Fetching default MQTT configuration from http://supervisor/services/mqtt
[2024-09-17 19:15:25] RTLAMR2MQTT Starting...
[2024-09-17 19:15:26] RTL SDR Device 0bda:2838 found on USB port 001:008 - Index: 0
[2024-09-17 19:15:26] No USB device specified in the config file, using the first found.
[2024-09-17 19:15:26] Configured MQTT sender:
[2024-09-17 19:15:26] > hostname => core-mosquitto
[2024-09-17 19:15:26] > port => 1883
[2024-09-17 19:15:26] > username => addons
[2024-09-17 19:15:26] > client_id => rtlamr2mqtt
[2024-09-17 19:15:26] > base_topic => rtlamr
[2024-09-17 19:15:26] > availability_topic => rtlamr/status
[2024-09-17 19:15:26] > tls => None
[2024-09-17 19:15:26] Resetting USB device: /dev/bus/usb/001/008
[2024-09-17 19:15:26] Reset sucessful.
[2024-09-17 19:15:26] Sending message to MQTT:
[2024-09-17 19:15:26] > topic => rtlamr/status
[2024-09-17 19:15:26] > payload => online
[2024-09-17 19:15:26] > retain => True
[2024-09-17 19:15:27] Unknown exception connecting to MQTT broker: [Errno -5] No address associated with hostname
[2024-09-17 19:15:27] Trying to start RTL_TCP: /usr/bin/rtl_tcp -s 2048000
[2024-09-17 19:15:27] RTL_TCP started with PID 10
[2024-09-17 19:15:32] RTL_TCP is ready to receive connections!
[2024-09-17 19:15:32] Trying to start RTLAMR: /usr/bin/rtlamr -msgtype=scm -format=json -filterid=131078691 -unique=true
[2024-09-17 19:15:32] RTLAMR started with PID 15
[2024-09-17 19:15:32] 19:15:32.851893 decode.go:45: CenterFreq: 912600155
[2024-09-17 19:15:32] 19:15:32.852899 decode.go:46: SampleRate: 2359296
[2024-09-17 19:15:32] 19:15:32.853386 decode.go:47: DataRate: 32768
[2024-09-17 19:15:32] 19:15:32.853886 decode.go:48: ChipLength: 72
[2024-09-17 19:15:32] 19:15:32.854515 decode.go:49: PreambleSymbols: 21
[2024-09-17 19:15:32] 19:15:32.855060 decode.go:50: PreambleLength: 3024
[2024-09-17 19:15:32] 19:15:32.856532 decode.go:51: PacketSymbols: 96
[2024-09-17 19:15:32] 19:15:32.857272 decode.go:52: PacketLength: 13824
[2024-09-17 19:15:32] 19:15:32.858040 decode.go:59: Protocols: scm
[2024-09-17 19:15:32] 19:15:32.858787 decode.go:60: Preambles: 111110010101001100000
[2024-09-17 19:15:32] 19:15:32.858979 main.go:124: GainCount: 29
Doesn’t really tell you much on that. Just states your settings for your RTL dongle, the RTL2AMR add-on, and that it crashed. I don’t see any meters there.
That said, I don’t believe the iTrons broadcast on 433 or 915 MHz. Some might! But I haven’t seen it. I highly doubt it’s on the 433 MHz band but it’s worth checking. The utility meters I’ve seen use 915 MHz and use one of SCM, SCM+, or r900 protocols.
Let’s assume it does broadcast, you’d first need to figure out which frequency it’s using. You’ll want to set the frequency to 433 and see if any meters pop up (read the documentation for RTL2AMR, I know it’s in there). Then 915 MHz and see if there’s anything there. Again, read the docs to find out how to search for meters. You’ll database will get hammered if you’re logging everything, so you should really find the meters for your house and configure just those.
Not sure if this group here can assist me, however, following all the documentation everyone has here I setup my meter in launchpad and its connected to my Wifi. I setup the My Energy Connection app on my phone and it works just fine.
Using the addon, I get the following error.
WARNING: Retrying xcelMeter.xcelMeter.setup in 1.0 seconds as it raised ConnectTimeout: HTTPSConnectionPool(host='10.0.0.101', port=8081): Max retries exceeded with url: /sdev/sdi (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f5193b8fa10>, 'Connection to 10.0.0.101 timed out. (connect timeout=4.0)')).
However, if I use the cert/key that was generated and query from a portable device that is also on WIFI, I can get a response. For some reason I can’t get a reply from anything besides another wireless device.
The requests from home assistant are getting allowed through my pfsense firewall so I don’t know where to look next.
EDIT: Also, I tried directly wiring a laptop into the LAN side of the wifi which would bypass any firewall issues and it still is unable to reach the meter.
This got my system working. Thanks for the tip!
However, could someone assist me with something. Due to my network setup (or the device itself) occasionally the call to the meter fails and HA wigs out, recording really high numbers. I then have to manually go in and delete the statistics.
As an example, the xcel_meter call will sometimes return ~4500 or -4500 (which eyeballing looks like the total consumed kWh logged by my device).
What’s the best way to make it so if the call fails, it returns a value that makes sense?
#Sensor that returns current total energy usage from meter in kWh
- sensor:
unique_id: xcel_meter
name: Xcel Meter
command: "OPENSSL_CONF=/config/xcel/openssl.conf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.1.18:8081/upt/1/mr/3/r --cert /config/xcel/cert.pem --key /config/xcel/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
unit_of_measurement: "kWh"
value_template: "{{ value | multiply(0.001) | round(3)}}"
scan_interval: 30
command_timeout: 20
#Sensor that returns instantaneous energy usage from meter in W
- sensor:
unique_id: xcel_meter_instantaneous
name: Xcel Meter Instantaneous Demand
command: "OPENSSL_CONF=/config/xcel/openssl.conf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://10.0.1.18:8081/upt/1/mr/1/r --cert /config/xcel/cert.pem --key /config/xcel/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
unit_of_measurement: "W"
scan_interval: 30
command_timeout: 20
Yeah, I think it has to do with your state class. See this link: New sensor state class: total | Home Assistant Developer Docs
I periodically had this happen but I believe I fixed it by changing from “total_increasing” to just “total”. I think…
What I believe was happening was the home assistant sensor was periodically reading “0” when it didn’t grab a new value quick enough. I think there were a few issues in github that one of the devs mentioned what that window was. Either way. I believe setting it to “total” and leaving the “last reset” value alone has prevented this from happening again. I’ve been moving away from “total_increasing” on pretty much all of my meters and sensors because it just doesn’t work as intended. Or rather, maybe I misunderstood the use case for “total_increasing” when I should just be using “total”.
edit: It most often occurred around reboots and restarts. So I think it had to do with slow start-ups of integrations and helpers. I’m sure there’s a simple fix for this but I haven’t come across it yet.