LuxCloud Made It Into HACS

I woke up, checked GitHub out of habit, and saw the merge notification. LuxCloud, my Home Assistant integration for LuxPower solar inverters, had passed HACS review. It's a small thing to most people. To me it felt like a win I'd been chasing for months without quite admitting it.
For anyone who hasn't touched Home Assistant, HACS is the community app store that sits on top of it. Thousands of people use it to install integrations that never made it into the official Home Assistant core, either because the maintainers haven't gotten to them yet or because the hardware is too niche. LuxPower inverters fall into that second bucket. They're solid units, popular with UK solar installs, but nobody at Home Assistant had built proper support for the cloud API.
So I did.
It started as a personal itch. I run a LuxPower hybrid inverter with battery storage, and I wanted real numbers in my energy dashboard: solar output, battery state of charge, grid import and export, all updating without me refreshing an app on my phone. The official LuxPower app is fine for a glance, but it doesn't talk to anything else in my house. I wanted automations. I wanted a low battery alert that actually fires before the lights go out.
Writing the integration itself was the easy part, or at least the part I expected. Python, async polling, entity classes, the usual Home Assistant scaffolding. What took real time was everything HACS demands before it'll let your code near other people's homes. Hassfest validation. A manifest that actually matches your code. Proper config flow so people aren't hand editing YAML. Tests that run in CI on every push. A changelog. A security policy. None of it is hard on its own, but stacked together it turns a weekend project into something you keep coming back to for weeks.
The control entities were the part that kept me honest. LuxPower's API lets you flip AC charging on and off, set discharge cutoffs, change work mode between self use and backup. Problem is, those write commands only work if your account has installer or owner permissions, and most people register through the app as a standard viewer. I didn't want to ship something that quietly fails for half the people who install it, so those features are marked experimental in the docs, with a clear note on why they might not work. Better to be upfront about a limitation than let someone spend an evening debugging a permissions error I already knew about.
Getting the actual pull into HACS meant satisfying their validation action too, on top of hassfest. Every badge on that README, the HACS one, the release one, the validate workflow, represents a check that has to pass green before your code is trustworthy enough for someone to add to their own smart home. I failed a few of those checks more than once. Missing device classes, an entity naming convention I'd gotten slightly wrong, a manifest field I'd forgotten. Each fix was small. There were just a lot of them.
What made it worth doing wasn't the badge count, though I won't pretend that release tag doesn't feel good sitting there. It was watching the energy dashboard fill in properly for the first time. Solar production, grid consumption, battery charge and discharge, all mapped straight into Home Assistant's built in energy tracking with no manual template sensors holding it together. That's the moment the project stopped being a favour to strangers and became something I use every single day.
Most of what I build at work doesn't get a public release or a version tag. It just needs to work quietly in the background. LuxCloud is different. It's mine from the ground up, it's out in the open on GitHub, and now it sits in a directory that other LuxPower owners can search and install in a couple of clicks.
If you're running one of these inverters and want proper solar and battery data in Home Assistant, the repo is at github.com/BeardedTech0o/ha-luxcloud, and it's searchable in HACS as LuxCloud. Add it as a custom repository, or wait for it to land in the default list.
Once the data's flowing, you can build on top of it. My own setup runs an automation at 0115, just before the cheap overnight rate kicks in. It works out how much I used that day, checks that against the average for the same day over the past few weeks, then adds a variable to cover for solar forecasting that's occasionally wrong. That figure gets set in the app and emailed to me, so I know what to expect before I'm asleep.
You can also set tilt and location separately for each roof space, if your panels don't all face the same way. From there the dashboard gives you a live comparison: what was forecast for the day against what you've actually generated so far, updating as the day goes on. Either way, I'd rather more people get real numbers on their dashboard than keep guessing from an app that only shows today.
There's more coming. Local Modbus support is on the list, along with getting those control entities fully verified against different firmware versions. For now, though, I'm just enjoying the fact that something I built in spare evenings is running on inverters I've never seen, in houses I've never been to.