If you are a Yarra Valley Water customer in Melbourne with one of their digital meters, this pulls your hourly readings into Home Assistant and writes them into long-term statistics, so they appear on the Water dashboard alongside everything else — including the hours recorded before Home Assistant ever asked for them.
You need a digital meter. If the Usage page of MyAccount shows you an hourly chart, you have one. If it shows quarterly billing figures only, this has nothing to read yet.
What you get
The main thing is a water consumption statistic you add as a source under Settings → Dashboards → Energy → Water. Setting it up backfills the last 30 days, which is as far back as the portal serves, and it accumulates from there.
There are also four sensors for glancing at: litres in the most recent hour, litres across the last complete day, when the meter last reported, and whether the sign-in still works.
Readings arrive about a day late. That is the portal, not the integration — so scroll back a day on the dashboard when you first set it up.
Signing in
There is no API and no OAuth, so it signs in the way you do: email, password, and the code they text you.
Your password is never stored. It is sent once to the portal’s own sign-in and discarded when that request returns — not written to the config entry, not kept in memory. Same with the SMS code. What is kept is the session that sign-in produced, and from then on that session is the only thing used to talk to them.
It cannot sign itself back in, by design and by necessity: they issue a fresh code on every sign-in, so a stored password would buy nothing. Instead the session is kept warm by touching the portal every hour, and if it lapses anyway you get a repair notification and a re-auth prompt.
If you are away and it lapses, nothing is lost as long as you sign in again within a month — the next poll backfills the gap. A fortnight away costs one sign-in and nothing else.
The part I had fun with
Nobody documents when a day’s readings actually get published, and it clearly differs between meters. Rather than polling blindly, it looks every ten minutes from early morning until yesterday’s readings turn up, then stops until tomorrow. Ordinarily that is one or two requests a day.
The start time then steers itself. If the readings were already waiting on the very first attempt, it starts half an hour earlier tomorrow; if finding them took over an hour of empty requests, half an hour later. Over a few mornings it walks to just before publication and settles.
That last part matters more than it sounds. Digital meters are still being rolled out across the network, and the more there are to process each night, the later a given meter’s readings are likely to land. An hour I pick today is the wrong hour eventually, so it follows the drift instead.
Installing
HACS → three-dot menu → Custom repositories → add https://github.com/gheydon/ha-yvw as an Integration, install, restart, then add it from Settings → Devices & services.
Known limits
- 30 days of history is all the portal serves. No further back exists to fetch.
- Hours the meter did not report are skipped rather than stored as zero — the portal pads its response with zero-litre rows, and recording those would invent readings you did not use.
- Multiple properties on one login is the untested case. The code reads every property it finds and asks which to follow, but I only have a single-property login to test against.
What would help
It works well on my meter. The trouble is that it has only ever seen one account, and every assumption in it was worked out from that one.
So if you try it, I would genuinely like to hear how it goes — especially:
- when your meter publishes each morning, once it has settled
- whether a multi-property login lists properly
- anything that broke
Good and bad both welcome. Issues on the repo, or reply here.
This is an independent project by a customer. It is not made by, associated with, endorsed by or supported by Yarra Valley Water — please don’t contact them about it, their support staff didn’t write it and can’t help with it. Anything to do with the integration belongs on the repo.