My utility company utilizes a smart water meter connected to an account at EyeOnWater.com. While the data seems to be very complete and fairly easy to navigate in order to see various usage patterns, I would like to be able to save the data locally for possible usage at some point. I don't have plans for how I would use it, but I would like to have access to my data.
I have looked around to see if there is anything already written for EyeOnWater but apparently not. Does anyone have any guidance on how to get something like this incorporated? Maybe a similar web repository others have linked to? I have read that some of the smart meters have the signal broadcast to some kind of a device that sends the data to the utility rather than each device being cellular. If that's the case, it appears I could utilize an SDR and something like rtl_433 (but for the right frequency obviously) might work and already be available. I already use such a setup for my weather station and power meter reader, so adding one more to the setup is not an issue. I would still need to get the historical data, but they do offer an export option that might be able to be formatted for import into my database (InfluxDB).
Since I don't expect a prebuilt solution, I'm mainly hoping people with experience with a similar task can provide feedback on what does/doesn't work and ideally a link to a similar project(s) that I could review.
Smart meters usually use encryption with rotating keys that you cannot easily reverse engineer, depending on your location/meter brand.
The website you linked to uses a login form with a POST request. You can use the webinspector to capture the login process and translate this back into node-red with a http request node:
on the login screen, right click> web inspector, go to the network tab
login with your account and look at the pages that are being loaded, it goes from sigin to some other page.
click on the 'header' tab in the 'other' page and look specifically at the 'request' and 'request data' section. This data is the POST data you will need to send using a http request node. You can also right click on the page name in the network tab and select 'copy as cURL' and try to paste the command in a terminal and see if this works.
I have been watching the data from the eyeonwater web interface and it appears that it is far from real time. The data from yesterday has only been posted through 7am as of right now. Over the last week, it has sometimes been up to date within the hour and others over 24 hours delayed. I'm not sure what is typical, but I'm assuming that would make it pretty difficult to correctly harvest the data. If 0 cubic feet in a period could mean either no water used or no data received, I'm not sure how to write a flow. The only thing I can think of is potentially harvesting data that's at least 24 hours old. I'm going to call the utility today to see if they know what the typical maximum delay is, but I don't know if they have that information. From what I gather, eyeonwater.com is a provided by a separate company and my utility simply uploads to them.