No worries! It is a very long forum thread. Thanks for sharing the knowledge.
Thanks for that info on the OpenSSL error, @jeffeb3, I used that to fix my setup last week.
I did some comparisons on my smart meter readings and what Xcel had logged in their billing portal - they were nearly identical, so I have less concern these new meters are causing usage discrepancies.
Has anyone been able to figure out a way to integrate Xcel’s TOU pricing into the new HA Energy Dashboard? I’m really keen to know how much more I can gamify my electricity usage
This video has me very concerned about errors measuring nonlinear loads: Lakewood homeowner's Xcel bill increases 1,500% after smart meters installed - YouTube
The guy’s bill (kWh) for his garage went way up!
I can imagine the problem where the wrong serial number meter is assigned to the wrong bill. That would be my first guess for that garage news story. I doubt that is very common, but I bet it happems more than a broken meter. I bet there are 100x more cases of people thinking their bill is wrong when it is just higher for some other reason. My bill goes up and down all the time with usage and unless I was paying very close attention, I wouldn’t know why. But a fraction of everyone that got a new meter would notice the higher bill and blame the meter. And because there are so many false alarms, and the nature of utilities, it is really hard to get xcel to send out a tech.
But guessing and ranting aside, it is really clear that my meter is at least recording my house now that I can see somewhat instant results. I can see when the furnace turns on. Or the dryer or the stove. It lines up pretty well. I never tried looking at the online version to see if I could verify that.
Patrick did. And he posted about it above. If you are ok getting close, I think a few rules would do the trick:
If you want it down to the penny, follow Patrick’s lead. He has holidays and everything figured out.
I have not read this whole thesis https://ris.utwente.nl/ws/portalfiles/portal/301583311/PhD_Thesis_Tom_V6.0.pdf but it seems the errors on nonlinear loads can be up or down, so in a large house they might tend to cancel out? Battery tenders and well pumps (if newer ECM motors) are good examples of nonlinear loads. Most electronics too…
(Most aftermarket systems like this https://www.amazon.com/Emporia-Monitor-Circuit-Electricity-Metering/dp/B07R11H2Q2/ref=sr_1_4?keywords=house%2Belectricity%2Bmeter%2Bbluetooth&qid=1689124951&sr=8-4&ufe=app_do%3Aamzn1.fos.18630bbb-fcbb-42f8-9767-857e17e03685&th=1
are CT based and likely robust to nonlinear loads, unlike cheap Rowgowski coils.
I’ve been having this issue for quite a while and I’m also in the Denver area (I may have posted about it in this thread). I’ve been in contact through email with the launchpad folks who told me the issue was affecting many people, there was ticket open on it, and I’d receive an email to let me know when it was fixed. Still no email, but I’ve been trying again nearly every day. Today it worked!! So maybe they’ve finally resolved it? Give it a go and good luck!
I got an email response from the launchpad team today that said it was resolved and I was able to edit my Wi-Fi now. I’m now waiting for it to connect. Does it normal connect fairly quickly or has it taken several hours for it to connect? I’m not sure if there’s a delay depending on how often the meter communicates with home base to get the Wi-Fi credentials or if is supposed be sent right away.
I’m also wondering if it has issues with special characters in Wi-Fi passwords which could be why mine isn’t connecting.
I got the same email. Added my WiFi creds and waited for quite a while. It never connected, so I just went through the steps again to add it to WiFI, and this time it connected within 10 seconds or so. You may just click the Edit button and try again.
I too got the email today that the Wifi button was fixed, and it was! I can click on it and add my network, which I did. Then I added my LFI, which shows on the page, but now the wifi isn’t connecting anymore. I’ve edited the wifi details again, and it still shows not connected.
Summary:
- Can now use the Edit button to add my wifi
- Wifi showed connected!
- Added device with the LFI from the xcel_itron2mqtt script
- LFI was added and shows on the page!
- Wifi shows as disconnected no matter what I do. It’s been that way for hours now.
(6 - xcel_itron2mqtt times out trying to connect. I can see my meter on my network in my router control panel. So the meter is actually connected but the Xcel page claims it’s not)
No idea what to do now, I guess I’ll wait until tomorrow and see what happened overnight.
On the LFI setup page, what “Device Type” are you guys choosing? I picked Smart Inverter because it was either that or None…
Mine is still showing not connected on the Wi-Fi but now whenever I go in to edit the Wi-Fi it gives an error saying Connection Unsuccessful, try again. I’ve tried changing to the same Wi-Fi and using different devices and still get the same error. Must still have some bugs but we’re at least getting closer.
All you have to do is change the command line entities.
I created a new command_line.yaml file and included it in the configuration.yaml file.
Then in the new command_line.yaml file the 2 meter sensors are set up like this:
#Sensor that returns current total energy usage from meter in kWh
- sensor:
unique_id: xcel_meter
name: Xcel Meter
command: "OPENSSL_CONF=/config/xcelcerts/openssl.conf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://192.168.1.229:8081/upt/1/mr/3/r --cert /config/cert.pem --key /config/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: 5
command_timeout: 5
#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/xcelcerts/openssl.conf /usr/bin/curl --ciphers ECDHE-ECDSA-AES128-CCM8 --insecure --url https://192.168.1.229:8081/upt/1/mr/1/r --cert /config/cert.pem --key /config/key.pem 2>&1 | grep -o '<value>.*</value>' | grep -Eo '[0-9]+'"
unit_of_measurement: "W"
scan_interval: 5
command_timeout: 5
Double-checked last night and Xcel’s page showed that the meter was there and more importantly was connected to the wifi. After running an nmap scan against the IP I found that the meter was only open on port 8081 for me (xcel_itron2mqtt docs suggest 5353 as the default, that didn’t work to me.)
Once I got the xcel_itron2mqtt environment variables fixed everything started working great, very happy with being able to track my usage (and solar generation!)
I’m finally getting values from this meter into HA. But I’m not sure about how to configure the Energy Dashboard. Given that I have solard and given the values coming from the meter as described by awow69:
3 is added as Grid Consumption, that’s the easy one. And I’ve put in 2 as Solar Production (I’ll probably change this to what’s being report by my Enphase system…but that’s a different thread entirely). But how do I get the Return to Grid value? Would I just put 2 in there or do I need to create a new sensor that subtracts 2 from 3? It’s just not clear what values are what and what goes where.
‘2’ from the iTron is the “returned to grid” value, solar production is from the Enphase system (“Solar Production Today” on my old Envoy-120-1M gateway).
My iTron, or at least the HAN/Metering Agent subsystem, is still having a grand mal seizure every few days. When it clamps down on the port/stops responding, I have to stop polling for a period of time (12-24hrs) before it lets me back in. I complained to Xcel yesterday so we’ll see if they do anything to resolve it. In the meantime I have the polling controlled by an automation set for a 3-minute interval and the sensor on a 1-year scan interval so that I can easily toggle it on and off when needed. When it’s working, it’s great…
Does anybody have a copy of the documentation regarding the smart meter URL’s outputs? I am referring to the /upt/n/mr/n/r
part of the https://xxx.xxx.xxx.xxx:8081/upt/1/mr/3/r
URL.
I can see that changing the numbers changes the returned result, but I can’t tell how, exactly.
I used to use rtlamr to read my net and production meters and cobbled together a bunch of homegrown programs to massage and display the data.
My meters were upgraded this week. I have jumped through the hoops to get the meters both connected to my WiFi and created an LFDI and added that to both accounts (main, and PV). I can use the curl incantations listed earlier to get info from both meters.
Earlier people mentioned https://gitlab.com/xcel-energy-launchpad/energy-launchpadsdk-client/ and a PDF named Itron_SDK_Xcel_2030.5_Metering.pdf therein that sounds like it described what different URLs are available. However, that gitlab.com account no longer exists. Does anyone have a copy of that PDF that they can share?
They moved the repo to github. Here is a copy of the PDF you are looking for. It doesn’t explain all of the API endpoints (I thought there was a post in here that listed all of them) but it does provide information on polling the API.
EDIT
Aha! I found the list of endpoints! Here’s the link to the repo (will not be accessible unless they have shared it with you) https://github.com/Xcel-Energy/energy-launchpadsdk-client/blob/main/docs/meterReadingList.xml
And here’s the contents of the file:
<MeterReadingList xmlns="urn:ieee:std:2030.5:ns" href="/upt/1/mr" subscribable="0" all="20" results="20">
<MeterReading href="/upt/1/mr/20">
<mRID>BBBB14000000000000000000000004D1</mRID>
<description>Power Factor PhaseC</description>
<ReadingLink href="/upt/1/mr/20/r"/>
<ReadingTypeLink href="/rt/20"/>
</MeterReading>
<MeterReading href="/upt/1/mr/19">
<mRID>BBBB13000000000000000000000004D1</mRID>
<description>Power Factor PhaseB</description>
<ReadingLink href="/upt/1/mr/19/r"/>
<ReadingTypeLink href="/rt/19"/>
</MeterReading>
<MeterReading href="/upt/1/mr/18">
<mRID>BBBB12000000000000000000000004D1</mRID>
<description>Power Factor PhaseA</description>
<ReadingLink href="/upt/1/mr/18/r"/>
<ReadingTypeLink href="/rt/18"/>
</MeterReading>
<MeterReading href="/upt/1/mr/17">
<mRID>BBBB11000000000000000000000004D1</mRID>
<description>Power Factor</description>
<ReadingLink href="/upt/1/mr/17/r"/>
<ReadingTypeLink href="/rt/17"/>
</MeterReading>
<MeterReading href="/upt/1/mr/16">
<mRID>BBBB10000000000000000000000004D1</mRID>
<description>Max Demand Delivered</description>
<ReadingLink href="/upt/1/mr/16/r"/>
<ReadingTypeLink href="/rt/16"/>
</MeterReading>
<MeterReading href="/upt/1/mr/15">
<mRID>BBBB0F000000000000000000000004D1</mRID>
<description>Max Demand Received</description>
<ReadingLink href="/upt/1/mr/15/r"/>
<ReadingTypeLink href="/rt/15"/>
</MeterReading>
<MeterReading href="/upt/1/mr/14">
<mRID>BBBB0E000000000000000000000004D1</mRID>
<description>VARh Delivered (Interval)</description>
<ReadingSetListLink href="/upt/1/mr/14/rs" all="0"/>
<ReadingTypeLink href="/rt/14"/>
</MeterReading>
<MeterReading href="/upt/1/mr/13">
<mRID>BBBB0D000000000000000000000004D1</mRID>
<description>VARh Received (Interval)</description>
<ReadingSetListLink href="/upt/1/mr/13/rs" all="1"/>
<ReadingTypeLink href="/rt/13"/>
</MeterReading>
<MeterReading href="/upt/1/mr/12">
<mRID>BBBB0C000000000000000000000004D1</mRID>
<description>VAh Delivered (Interval)</description>
<ReadingSetListLink href="/upt/1/mr/12/rs" all="0"/>
<ReadingTypeLink href="/rt/12"/>
</MeterReading>
<MeterReading href="/upt/1/mr/11">
<mRID>BBBB0B000000000000000000000004D1</mRID>
<description>VAh Received (Interval)</description>
<ReadingSetListLink href="/upt/1/mr/11/rs" all="0"/>
<ReadingTypeLink href="/rt/11"/>
</MeterReading>
<MeterReading href="/upt/1/mr/10">
<mRID>BBBB0A000000000000000000000004D1</mRID>
<description>WH Delivered (Interval)</description>
<ReadingSetListLink href="/upt/1/mr/10/rs" all="1"/>
<ReadingTypeLink href="/rt/10"/>
</MeterReading>
<MeterReading href="/upt/1/mr/9">
<mRID>BBBB09000000000000000000000004D1</mRID>
<description>WH Received (Interval)</description>
<ReadingSetListLink href="/upt/1/mr/9/rs" all="1"/>
<ReadingTypeLink href="/rt/9"/>
</MeterReading>
<MeterReading href="/upt/1/mr/8">
<mRID>BBBB08000000000000000000000004D1</mRID>
<description>WH Net (Interval)</description>
<ReadingSetListLink href="/upt/1/mr/8/rs" all="0"/>
<ReadingTypeLink href="/rt/8"/>
</MeterReading>
<MeterReading href="/upt/1/mr/7">
<mRID>BBBB07000000000000000000000004D1</mRID>
<description>VARh Delivered</description>
<ReadingLink href="/upt/1/mr/7/r"/>
<ReadingSetListLink href="/upt/1/mr/7/rs" all="1"/>
<ReadingTypeLink href="/rt/7"/>
</MeterReading>
<MeterReading href="/upt/1/mr/6">
<mRID>BBBB06000000000000000000000004D1</mRID>
<description>VARh Received</description>
<ReadingLink href="/upt/1/mr/6/r"/>
<ReadingSetListLink href="/upt/1/mr/6/rs" all="1"/>
<ReadingTypeLink href="/rt/6"/>
</MeterReading>
<MeterReading href="/upt/1/mr/5">
<mRID>BBBB05000000000000000000000004D1</mRID>
<description>VAh Delivered</description>
<ReadingLink href="/upt/1/mr/5/r"/>
<ReadingSetListLink href="/upt/1/mr/5/rs" all="1"/>
<ReadingTypeLink href="/rt/5"/>
</MeterReading>
<MeterReading href="/upt/1/mr/4">
<mRID>BBBB04000000000000000000000004D1</mRID>
<description>VAh Received</description>
<ReadingLink href="/upt/1/mr/4/r"/>
<ReadingSetListLink href="/upt/1/mr/4/rs" all="1"/>
<ReadingTypeLink href="/rt/4"/>
</MeterReading>
<MeterReading href="/upt/1/mr/3">
<mRID>BBBB03000000000000000000000004D1</mRID>
<description>Current Summation Delivered</description>
<ReadingLink href="/upt/1/mr/3/r"/>
<ReadingSetListLink href="/upt/1/mr/3/rs" all="1"/>
<ReadingTypeLink href="/rt/3"/>
</MeterReading>
<MeterReading href="/upt/1/mr/2">
<mRID>BBBB02000000000000000000000004D1</mRID>
<description>Current Summation Received</description>
<ReadingLink href="/upt/1/mr/2/r"/>
<ReadingSetListLink href="/upt/1/mr/2/rs" all="1"/>
<ReadingTypeLink href="/rt/2"/>
</MeterReading>
<MeterReading href="/upt/1/mr/1">
<mRID>BBBB01000000000000000000000004D1</mRID>
<description>Instantaneous Demand</description>
<ReadingLink href="/upt/1/mr/1/r"/>
<ReadingTypeLink href="/rt/1"/>
</MeterReading>
</MeterReadingList>
Here is the contents of the email where they mention the move:
Hello Xcel Energy Launchpad user,We have migrated our Xcel Energy Launchpad SDK repositories from GitLab to GitHub.
You will need to register your email for a GitHub account or pass us your existing GitHub username to invite. Please reply to this email to provide us your GitHub email, and we will add you to the new repos within 5 business days.
Once you have registered and we have invited you to the new space, you will need to clone new repository down or adjust your upstream path on your local git instance.
Our recommended route is to clone the repo again, but if you would like to go the upstream path, below are the steps:
Steps to adjust upstream
Check your current upstream
git remote
Note your remote path. It should be:
“$ git remote -v
origin https://gitlab.com/xcel-energy-launchpad/energy-launchpadsdk-cloud.git (fetch)
origin https://gitlab.com/xcel-energy-launchpad/energy-launchpadsdk-cloud.git (push)”
Rename your origin
git remote rename origin old-origin
git remote -v should now show your origin name as old-origin
Pass in new upstream path
git remote add origin https://github.com/Xcel-Energy/energy-launchpadsdk-cloud.git
git remote -v should now show old-origin and origin.
Doing a git pull will now pull from new GitHub location.
Thank you,
Xcel Energy Launchpad
This is awesome. Thank you!
I am also in the Denver area and have an Enphase Envoy on my PV through Sunrun however I haven’t dug in to how I can connect directly to it. They used a cell card on mine so it’s not even on my Wi-Fi. How did you connect to your Envoy?