Sorry, I have not set it up at all or tried but it looks like there is a python package that could pretty easily be integrated to homeassistant as a new integration. That being said it is heavily reliant on web scraping which means that any changes to the coned website could potentially break this. Not sure it’s worth investing the time to write something like this. Also getting it to work and changing all the security settings seems like it would be too much to ask of any user. After looking into it, I decided to just go with a CT clamp device which I just ordered. It measures usage directly at the panel and communicates it internally with homeassistant for $60 it’s definitely worth it.
Which product did you go with?
Shelly EM. It should arrive next week and looks pretty simple…hopefully won’t get electrocuted when installing
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.
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:
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!
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.
+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
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.
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.
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.
@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!
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
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.
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..