Con edison smart meter intergration

Shelly EM arrived yesterday and took about 10 minutes to install and configure. Super easy! And I’m not dead.
For some reason there is no video showing the install on a US style panel and most show the European style.
That being said if you remove the panel door and cut the main power breaker, you would connect “L” to one of the breakers(I used a less utilized 20amp single breaker). Just add the wire to whatever is already plugged in there. I connected “N” to the neutral bus (the vertical rod on either side of the panel with lots of white wires screwed in). The clamp wires are pretty clear in the diagram and it goes around the main wire going to the top of the panel, the direction is important and indicated on the clamp but pretty easy to fix if you get it wrong (it will show a negative reading and you just need to turn it around). That was it, put the panel door back on, fire up and configure as per the instructions. Home assistant auto discovered it.

1 Like

How many amps is your panel? Is it 240v? I have 200A service with two hot legs (to support both 120 and 240v loads). I see the EM has a 120A limit.

I have 200A with 2 service lines as well. You would need 2 clamps at 120A each, I wrote more here:

1 Like

Thanks! Will give it a go. Thought about SDR but looked at the meter here in Westchester county and it’s (Silverstream Networks) not on the lists. Research seems to indicate it may be encrypted as well.

Coincidence, in Westchester county as well!

1 Like

just FYI, there is a new feature request to use the smart meters of the local electricity providers, such as ConEd, to Home Assistant.
See Why buy energy monitor devices -- Use data from Smartmeter!

BTW guys I found this Home Assistant addon for ConEd/Oru. But for some reason I wasn’t able to pull data from ConEd. If you’re lucky you may able to do it.

2 Likes

+1 for someone looking to get data out of coned and into HA. Tried all 3 options with no luck, getting quite a few errors on both of bvlaicu’s versions and the oru community addon with 2 active users :slight_smile:

3 Likes




UPDATE: Through 'bvlaicu’s addon, I was able to retrieve data from ConEd at last. Even though the setup took me the entire evening, I’m pleased with how it ended out. Just a quick reminder that it’s not real time or even close to it. I noticed there’s 3 hours delay.

2 Likes

Congratulations and this is amazing!

I had a tough time figuring out how to find the account_uuid. Can you help me (and all of us here) figure out where you get that string? Thank you so much.

2 Likes

Thank you! that’s where I spent most of my time integrating this. Then I found solution here: Issue trying to find Account UUID · Issue #8 · bvlaicu/coned (github.com)

If you need more help let me know.

1 Like

@chintito4ever gratulation that you made it to work to get the data from ConEd.

I am also trying to use the add-on from bvlaicu, but I am constantly getting errors. See the logs below.
I am wondering if you had similar issues and how you solved it?
Any tip you can give?

Thx, Sebastian

Logs:

Params:
EMAIL = s***********@web.de
PASSWORD = **********1f
MFA_TYPE = TOTP
MFA_SECRET = **********LIOF7T
ACCOUNT_UUID = 8ff0f432-7638-11eb-99d8-02001700dbdb
METER_NUMBER = 013798110
SITE = coned
MQTT_HOST = 192.168.5.149
MQTT_USER = mqtt_user
MQTT_PASS = **********pw
Packages list:
Package            Version  
------------------ ---------
appdirs            1.4.4    
asn1crypto         0.24.0   
certifi            2022.6.15
charset-normalizer 2.1.0    
coned              0.3.0    
cryptography       2.6.1    
entrypoints        0.3      
idna               3.3      
importlib-metadata 4.12.0   
keyring            17.1.1   
keyrings.alt       3.1.1    
paho-mqtt          1.6.1    
pip                18.1     
pycrypto           2.6.1    
pyee               8.2.2    
PyGObject          3.30.4   
pyotp              2.6.0    
pyppeteer          1.0.2    
pyxdg              0.25     
requests           2.28.1   
SecretStorage      2.3.1    
setuptools         40.8.0   
six                1.12.0   
tqdm               4.64.0   
typing-extensions  4.3.0    
urllib3            1.26.10  
websockets         10.3     
wheel              0.32.3   
zipp               3.8.1    
Starting endless loop..
[0725/174633.567261:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
DevTools listening on ws://127.0.0.1:58759/devtools/browser/24662d5a-0b34-4f56-b6ed-f8ff85291866
[0725/174634.457062:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
DevTools listening on ws://127.0.0.1:42025/devtools/browser/469f64d7-6600-459f-956d-b9a6994887f0
Task exception was never retrieved
future: <Task finished coro=<Meter.browse() done, defined at /usr/local/lib/python3.7/dist-packages/coned/meter.py:120> exception=TimeoutError('Navigation Timeout Exceeded: 10000 ms exceeded.')>
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/coned/meter.py", line 143, in browse
    await page.goto('https://www.' + self.site + '.com/en/login', {'waitUntil': 'domcontentloaded', 'timeout': 10000})
  File "/usr/local/lib/python3.7/dist-packages/pyppeteer/page.py", line 837, in goto
    raise error
pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 10000 ms exceeded.
Creating Meter
Calling meter.last_read()..
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/coned/meter.py", line 96, in last_read
    await self.browse()
  File "/usr/local/lib/python3.7/dist-packages/coned/meter.py", line 143, in browse
    await page.goto('https://www.' + self.site + '.com/en/login', {'waitUntil': 'domcontentloaded', 'timeout': 10000})
  File "/usr/local/lib/python3.7/dist-packages/pyppeteer/page.py", line 837, in goto
    raise error
pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 10000 ms exceeded.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "run.py", line 26, in <module>
    startTime, endTime, value, uom = asyncio.get_event_loop().run_until_complete(meter.last_read())
  File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.7/dist-packages/coned/meter.py", line 118, in last_read
    raise MeterError("Error requesting meter data")
coned.meter.MeterError: Error requesting meter data
Sleeping 5 mins..

I’m getting the same errors in my log after “Starting endless loop…” Anyone solve this yet? Thanks!

1 Like

I was able to get this to work today with ConEd (Brooklyn), thanks for the tips!!

edit: there’s a time delay in the data that seems not to work so well with HA’s energy monitoring, which expects live data. A friend of mine setup a project that does a similar thing but just to store the data in a MySQL instance and then you can graph it via Grafana or something similar: GitHub - mhoran/coned-rtu: Getting real-time usage reports from Con Edison

2 Likes

Thanks, I’ll check that project out. I have bvlaicu’s working well, but I want to grab the gas usage as well (even though it is delayed.)

Was also able to get this working via bvlaicu’s integration. Was anyone able to get live costing ($/kWh) data in as well or just going with a flat rate?

Can folks who got this working share their logs? I would like to see what went wrong in my config. It’s been a year of this not working. :frowning:

Params:
EMAIL = ******@*********.com
PASSWORD = *******************
MFA_TYPE = TOTP
MFA_SECRET = ****************
ACCOUNT_UUID = ********-****-****-****-************
METER_NUMBER = ********
ACCOUNT_NUMBER = **-****-****-****-*
SITE = coned
MQTT_HOST = hassio.local
MQTT_USER = *****
MQTT_PASS = bin boot data dev etc home lib media mnt opt proc requirements.txt root run run.py run.sh sbin share srv ssl sys tmp usr var
Packages list:
Package            Version  
------------------ ---------
appdirs            1.4.4    
asn1crypto         0.24.0   
certifi            2022.12.7
charset-normalizer 2.1.1    
coned              0.4.0    
cryptography       2.6.1    
entrypoints        0.3      
idna               3.4      
importlib-metadata 5.2.0    
keyring            17.1.1   
keyrings.alt       3.1.1    
paho-mqtt          1.6.1    
pip                18.1     
pycrypto           2.6.1    
pyee               8.2.2    
PyGObject          3.30.4   
pyotp              2.8.0    
pyppeteer          1.0.2    
pyxdg              0.25     
requests           2.28.1   
SecretStorage      2.3.1    
setuptools         40.8.0   
six                1.12.0   
tqdm               4.64.1   
typing-extensions  4.4.0    
urllib3            1.26.13  
websockets         10.4     
wheel              0.32.3   
zipp               3.11.0   
Starting endless loop..
[0105/084820.989495:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
DevTools listening on ws://127.0.0.1:45021/devtools/browser/7a4d1840-a178-41ec-a1c4-7b212eccaafc
[0105/084822.904118:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
DevTools listening on ws://127.0.0.1:43373/devtools/browser/3d2941b4-676b-4db1-847a-2a315513a0c9
[0105/084835.010548:INFO:CONSOLE(24)] "ERR_DUP_SCRIPTS", source: https://www.glancecdn.net/cobrowse/CobrowseJS.ashx?group=19641&site=production (24)
[0105/084837.948702:INFO:CONSOLE(24)] "ERR_DUP_SCRIPTS", source: https://www.glancecdn.net/cobrowse/CobrowseJS.ashx?group=19641&site=production (24)
[0105/084841.594125:INFO:CONSOLE(3)] "Uncaught (in promise) Error: Loading chunk 13 failed.
(error: https://siteintercept.qualtrics.com/dxjsmodule/13.7ca37fd749ece40e6b66.chunk.js?Q_CLIENTVERSION=1.82.1&Q_CLIENTTYPE=web&Q_BRANDID=www.coned.com)", source: https://znetevwa2wlb6en9p-coned.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_etEvWA2WLb6eN9P&Q_LOC=https%3A%2F%2Fwww.coned.com%2Fen%2Flogin&t=1672926520062 (3)
[0105/084841.897410:INFO:CONSOLE(3)] "Uncaught (in promise) Error: Loading chunk 13 failed.
(error: https://siteintercept.qualtrics.com/dxjsmodule/13.7ca37fd749ece40e6b66.chunk.js?Q_CLIENTVERSION=1.82.1&Q_CLIENTTYPE=web&Q_BRANDID=www.coned.com)", source: https://znetevwa2wlb6en9p-coned.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_etEvWA2WLb6eN9P&Q_LOC=https%3A%2F%2Fwww.coned.com%2Fen%2Flogin&t=1672926521405 (3)
[0105/084917.685534:INFO:CONSOLE(2)] "Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.", source: https://acdn-prod-bsdce-ngcx-va.azureedge.net/va/coned-va-build.min.js (2)
[0105/084923.803035:INFO:CONSOLE(24)] "ERR_DUP_SCRIPTS", source: https://www.glancecdn.net/cobrowse/CobrowseJS.ashx?group=19641&site=production (24)
[0105/084925.942613:INFO:CONSOLE(24)] "[Meta Pixel] - Removed URL query parameters due to potential violations.", source: https://connect.facebook.net/en_US/fbevents.js (24)
[0105/084926.881198:INFO:CONSOLE(3)] "Uncaught (in promise) Error: Loading chunk 13 failed.
(error: https://siteintercept.qualtrics.com/dxjsmodule/13.7ca37fd749ece40e6b66.chunk.js?Q_CLIENTVERSION=1.82.1&Q_CLIENTTYPE=web&Q_BRANDID=www.coned.com)", source: https://znetevwa2wlb6en9p-coned.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_etEvWA2WLb6eN9P&Q_LOC=https%3A%2F%2Fwww.coned.com%2Fen%2Faccounts-billing%2Fmy-account%3Faccount%3D63-3066-2265-1103-4&t=1672926566587 (3)
Creating Meter
Calling meter.last_read()..
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/coned/meter.py", line 96, in all_reads
    await self.browse()
  File "/usr/local/lib/python3.7/dist-packages/coned/meter.py", line 225, in browse
    self._LOGGER.debug(f"raw_data = {raw_data}")
NameError: name 'raw_data' is not defined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "run.py", line 28, in <module>
    startTime, endTime, value, uom = asyncio.get_event_loop().run_until_complete(meter.last_read())
  File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.7/dist-packages/coned/meter.py", line 127, in last_read
    all_available_reads = await self.all_reads()
  File "/usr/local/lib/python3.7/dist-packages/coned/meter.py", line 123, in all_reads
    raise MeterError("Error requesting meter data")
coned.meter.MeterError: Error requesting meter data
Task was destroyed but it is pending!
task: <Task pending coro=<sleep() running at /usr/lib/python3.7/asyncio/tasks.py:568> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fa729b5e8>()]> cb=[<TaskWakeupMethWrapper object at 0x7fa729bcd8>()]>
Task was destroyed but it is pending!
task: <Task pending coro=<Meter.browse() running at /usr/local/lib/python3.7/dist-packages/coned/meter.py:206> wait_for=<Task pending coro=<sleep() done, defined at /usr/lib/python3.7/asyncio/tasks.py:555> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fa729b5e8>()]> cb=[<TaskWakeupMethWrapper object at 0x7fa729bcd8>()]>>
Sleeping 5 mins..
1 Like

Has anyone validated the accuracy of the data?
It appeared to work for me too, but if you compare it to the ConEd app/website, it is way under.

I believe it misses one or more updates per hour, so I had to stop using it.
From what I remember, ConEd has the data per 15 minute increments and I think that add-on would error out sometimes and not retry, so it misses some data.

I have the same experience. In my case, it is maybe ~1 out of 8 times successful downloading the reading from ConEd. I also raised an issue here: Inconsistant meter reading · Issue #14 · bvlaicu/coned · GitHub. But no update yet.

Hi. Another ConEd customer here. How did you power the EM itself? My breaker box is behind a panel in the kitchen, so not conducive (conductive?:wink:) to running a power cord to it. Obviously lots of 110 is in the breaker box, but hardwiring it for power supply likely isn’t up to code. I’d welcome any recommendations. Thanks.