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!