AURUM – Solar Surplus Optimizer (HACS Integration)

Hey everyone!

I built a custom integration that automatically distributes your PV surplus to household devices — no YAML, no blueprints, fully configurable through the HA UI.

What it does:
AURUM reads your grid meter every 15 seconds and turns devices on/off based on available excess power. Higher priority devices get power first. When the sun goes away, devices are shed in reverse order.

What makes it different:

  • Startup Detection – Recognizes when a washing machine or dishwasher starts a program and protects the cycle from interruption, even when clouds roll in
  • Deadline Scheduling – “Laundry must be done by 18:00” → AURUM starts the machine in time, with or without solar
  • Battery-Aware – Three modes (normal / low_soc / charging) with per-device SOC thresholds
  • Zero YAML – Config flow setup, add/remove devices through the options UI

Requirements:

  • A grid power sensor (Shelly 3EM, SMA, Fronius, Kostal, etc.)
  • Smart plugs for your devices (Shelly Plug, Tasmota, Zigbee, anything HA supports)
  • Optional: Battery SOC sensor

Install via HACS:

  1. HACS → Integrations → Custom repositories
  2. Add https://github.com/cm-makes/aurum-ha as Integration
  3. Search “AURUM”, install, restart

GitHub: GitHub - cm-makes/aurum-ha: AURUM – Solar Surplus Optimizer for Home Assistant · GitHub

Would love to hear your feedback — especially if you have ideas for the roadmap (price-aware scheduling, forecast-based budgets, dashboard cards are all planned).

v1.5.0 Update – several major features shipped

Hey everyone, quick update since the initial post!

v1.5.0 is out and addresses the most-requested items from the roadmap:

:battery: PV Forecast Budget (was “planned” — now live)
AURUM integrates with Solcast or Open-Meteo to calculate how much solar energy is left for the rest of the day. It then limits device runtimes to ensure your battery reliably hits its target SOC. The safety factor adapts daily based on whether the battery actually reached the target.

:electric_plug: Startup Detection — clarification
The original description was a bit vague. Here’s what it actually does:
You press Start on your washing machine → AURUM detects the power draw → immediately pauses it → waits for sufficient PV surplus → resumes automatically. If a configured deadline passes and PV never arrives, AURUM starts on grid power as a fallback. No manual timing needed.

:radio_button: Auto-created Override switches
Every device now automatically gets a switch.aurum_{device}_override and switch.aurum_{device}_muss_heute entity — no manual input_boolean setup in YAML required anymore.

:stethoscope: HA Diagnostics
Settings → AURUM → Download Diagnostics gives you a full JSON snapshot of all internal state — useful for bug reports.

HACS default store submission is pending approval. Until then: custom repo https://github.com/cm-makes/aurum-ha

Full changelog: aurum-ha/CHANGELOG.md at 12a81c2f8f74fbd4cceffc3d4c3071007324e67a · cm-makes/aurum-ha · GitHub

Update: v1.5.7 – First real-world test results

Hey everyone! Quick update after running AURUM on my own washing machine for the past week.

What I learned from testing:
Startup Detection is trickier than expected. A few edge cases turned up that needed fixing — all resolved in v1.5.3–v1.5.7:

  • v1.5.3 – SD parameters (power threshold, detection time, finish detection) are now configurable in the UI — no more hardcoded defaults
  • v1.5.4 – Daily runtime counters now reset correctly after midnight (they were incorrectly persisting from the previous day)
  • v1.5.5 – Budget sensor showed “Unknown” instead of “–” when no cap was active
  • v1.5.6 – Shellys with “restore last state” were turning back ON after HA restart while AURUM was waiting for surplus. AURUM now enforces switch-off every cycle in WAITING state
  • v1.5.7 – SD devices showed state “off” instead of “waiting” while Shelly was intentionally switched off

Also new: Example dashboard fully rewritten in German with clear state descriptions (:arrow_forward: Läuft mit PV-Strom, :hourglass_flowing_sand: Wartet auf PV-Überschuss, etc.)

If you’re testing AURUM — feedback and bug reports very welcome!

Update – v1.8.1 + now officially in HACS

Quick update since the last post – quite a bit has happened.

HACS default store
AURUM was accepted into HACS today. You no longer need to add a custom repository – just search for "AURUM" in HACS → Integrations.

What's new since v1.5.7

v1.8.0 – Stop after daily runtime
New per-device option: set a daily runtime target and AURUM will stop the device once it's reached, even if surplus is still available. Restarts are blocked for the rest of the day (cheap-grid grants and deadline force-starts included); counter resets at midnight and survives HA restarts.

First real-world use: a pool pump running on a timer – set to 400 min/day, AURUM stops it automatically once done.

v1.8.0 – Sensor validation in setup
Power, energy and battery SOC sensors are now validated during onboarding (correct unit, numeric state). Catches the most common first-install mistake before it silently misbehaves.

v1.7.7 – Cheap-grid active sensor
New binary_sensor.aurum_cheap_grid_active – fires whenever any managed device is running on cheap grid power. Useful for external automations (e.g. block battery discharge during cheap windows).

v1.8.1
Push and persistent notifications are now localized – English by default, German when the HA UI language is set to German.

Full changelog: aurum-ha/CHANGELOG.md at 713b1c95761c038a8bfe4890ffed4ac629e20749 · cm-makes/aurum-ha · GitHub

Big update since the last post here — AURUM is now at v1.13.0, and the headline is that it ships with its own dashboard now. :sun:

Built-in dashboard (no YAML, no extra cards) — after updating, an AURUM panel appears in your sidebar automatically. It renders live from AURUM’s own entities and adapts by itself: add or remove a device and its card appears/disappears. Overview chips (PV, grid import/export, battery SOC, surplus, budget, house load, remaining forecast), plus one card per device with a PV | Manual | Off mode selector and all the per-device controls. Follows your theme, localized EN/DE.

More control over when devices run:

Battery priority — count only genuine grid export as surplus, so the battery charges first.

Run conditions — a per-device prerequisite sensor, e.g. “water heater only while the tank is below 55 °C”.

PV power gate — run whenever raw PV is at or above X W and the battery is above its SOC threshold, bypassing the budget cap (great for a pool pump on a sunny morning).

Daily reset hour — align a cheap-grid device’s runtime budget to the solar day instead of midnight.

Reliability — a full adversarial code audit (v1.9.1) fixed 18 issues, there’s a growing unit-test suite (170+), and every release is CI-validated. No breaking changes; the new options are all opt-in.

Community-driven — several of these came straight from GitHub Discussions feedback, and the project just merged its first two community pull requests (the PV power gate and an override-handling fix). Ideas, requests and PRs very welcome. :folded_hands:

Update via HACS → restart. Full release notes: Releases · cm-makes/aurum-ha · GitHub