Solar Energy Management (SEM) — Smart solar + EV + battery orchestration

Hi everyone,

I’d like to share Solar Energy Management (SEM) — a Home Assistant integration that turns your solar panels, battery, and EV charger into one intelligent system.

The Problem

Home Assistant’s Energy Dashboard shows you great data — but it doesn’t act on it. Your EV still charges from the grid even when the sun is shining. Your battery and EV compete for solar. Night charging wastes money when tomorrow will be sunny.

What SEM Does

SEM reads your solar production every 10 seconds and automatically:

  • Adjusts EV charging current (6-32A) to match real-time solar surplus — pauses for clouds, resumes when sun returns
  • Coordinates battery and EV with a 4-zone SOC strategy — battery charges to priority level first, then EV gets the surplus
  • Reduces night charging when tomorrow’s solar forecast is good — why charge from the grid tonight if the sun will do it tomorrow?
  • Sheds loads before peak demand — tracks your 15-minute rolling average and protects you from demand charges

3 switches, everything else automatic. No YAML, no automations to build, no templates to maintain.

Hardware Support

Works with any inverter, battery, and EV charger that has a Home Assistant integration:

  • Huawei SUN2000, SolarEdge, Fronius
  • KEBA P30, Easee, go-eCharger, Wallbox
  • Huawei LUNA2000, BYD, Tesla Powerwall
  • Any smart meter with power sensors in HA

SEM auto-detects your hardware from the HA Energy Dashboard — no manual sensor configuration needed.

Setup

3-step wizard, takes about 5 minutes:

  1. SEM reads your Energy Dashboard sensors automatically
  2. Select your EV charger sensors
  3. Set battery capacity and peak limit — done

Auto-generates a 5-tab monitoring dashboard (Home, Energy, Costs, Battery, EV).

Install

Available on HACS:

  1. HACS > Integrations > search Solar Energy Management
  2. Download, restart, add integration

Or as custom repository: https://github.com/traktore-org/sem-community

What You Get

  • 150+ sensors (power, energy, flows, costs, performance)
  • Smart EV charging with solar surplus matching
  • Battery-EV coordination (4-zone SOC strategy)
  • Night charging with forecast reduction
  • Peak load management
  • Cost tracking (daily/monthly in your local currency)
  • 6 languages (EN, DE, FR, IT, ES, NL)

Feedback and contributions welcome!

GitHub: GitHub - traktore-org/sem-community: Intelligent solar energy orchestration for Home Assistant — EV charging, battery management, multi-charger control, heat pump SG-Ready, 15 languages, 1100+ tests · GitHub

2 Likes

I will try this one, was just looking for something like this and found it on google. whoop

v1.2.1 Update — Multi-charger support, full localization, battery auto-detect

Hi everyone, a quick update on what landed in the last two releases (v1.2.0 + v1.2.1):

Charger support expanded
SEM now auto-detects and controls 8 EV charger integrations out of the box:

  • KEBA P30 — full control + display notifications
  • Easee — dynamic current limit + action_command start/stop (no flash wear)
  • Wallbox Pulsar — number entity + pause/resume switch
  • go-eCharger — HTTP and MQTT variants, frc force-state select
  • Zaptec — available_current + button start/stop
  • ChargePoint — amperage select + button start/stop
  • Heidelberg Energy Control — Modbus number entity
  • OpenWB 2.x — chargemode select + current number entity

Each charger gets the correct service parameters, start/stop commands, and entity types automatically
— zero manual configuration needed. If your charger isn’t listed but exposes
power/connected/charging sensors in HA, you can configure it manually in the setup flow.

Inverter compatibility

  • Battery sign auto-detect — SEM now automatically handles inverters with opposite battery
    conventions (Enphase, GoodWe, Tesla Powerwall, Sunsynk/DEYE). No more manual sign configuration.
  • Battery capacity auto-detect — reads rated capacity directly from the inverter sensor (Huawei,
    GoodWe, SolarEdge, etc.) instead of requiring manual input.
  • kW → W conversion — handled automatically for chargers that report in kW (Easee, Wallbox).

Full localization (6 languages)
The entire integration is now translated — not just the dashboard labels, but also:

  • Charging state messages (“Solarmodus - Laden aktiv”)
  • Mobile notifications (“Solarladen gestartet: 16A (4800W)”)
  • Energy tips and recommendations
  • Dashboard Jinja templates (Peak Load, Trees Equivalent, investment ROI, etc.)

Supported languages: English, German, French, Spanish, Italian, Dutch.

Options flow fixed
The “Unknown error occurred” crash in the options flow on HA 2026.4 is fixed. Root cause was a
NumberSelector step value (0.0001) below HA’s minimum, combined with null config defaults. All 6
options flow steps now work reliably.

What’s next

  • Waiting on community feedback for Easee + GoodWe (#68) — if you have one of these, please test and
    report!
  • Fronius, SMA, SolarEdge Modbus, Enphase — should work via Energy Dashboard, but we’d love
    confirmation from real users
  • HACS default repository submission is in the review queue (#6972)

Changelog: v1.2.1 release notes
Issues & feedback: GitHub Issues

1 Like

v1.2.4 — Expanded Hardware Compatibility + EV Intelligence (Preview)

Two updates this week:

Hardware compatibility expanded
SEM now auto-detects 7 additional EV chargers out of the box:

  • OCPP-compatible (ABB Terra, Vestel, Grizzl-E, and any OCPP 1.6/2.0 charger)
  • Ohme (Home Pro)
  • Peblar Rocksolid
  • V2C Trydan
  • Alfen Eve
  • Blue Current
  • OpenEVSE

Battery discharge control detection now covers 6 more inverter brands: SolarEdge (Modbus Multi),
Enphase (IQ Battery), Tesla Powerwall, Victron, Kostal Plenticore, and Sungrow. Combined with the
existing support, SEM now covers 15+ inverter brands and 15+ EV chargers — all auto-detected from the
HA entity registry.

The EV Charging Power chart on the dashboard now shows a stacked solar/battery/grid breakdown so you
can see exactly where your charging energy comes from.

EV Intelligence (preview, coming in a future release)
We’re working on something exciting: SEM now detects the characteristic power tapering when your
car’s BMS reduces current near full charge. From real data on our KEBA + VW setup:

10,050W → 9,500W → 8,850W → 8,530W → 6,730W → 4,430W → 0W

SEM uses this to:

  • Estimate SOC without a car API — tracks energy between full charges, calibrates from real vehicle
    SOC when available
  • Learn your driving pattern — “Monday 8 kWh, Wednesday 0 kWh (WFH), Saturday 15 kWh”
  • Skip unnecessary night charges — if SOC is 85% and you use 20%/day, SEM skips 3 nights of grid
    charging
  • Predict completion — “EV nearly full — 5 min remaining” notification
  • Track battery health — works from partial charges (40%→80%), no need to drive to empty

11 new sensors including ev_estimated_soc, ev_nights_until_charge, ev_charge_needed, and
ev_battery_health. This is currently in testing on our production system and will land in a future
release once validated.

SEM v1.4.1 — What’s New

A lot has happened since the original post. Here’s the current state of SEM:


New Features (v1.3.0 → v1.4.1)

Multi-EV Charger Control Configure and control multiple EV chargers with priority-based surplus distribution. Highest-priority charger gets power first, remainder flows to the next. Independent stall detection, session tracking, and taper detection per charger. Add/remove chargers via the options flow.

Battery Charge Scheduler Forecast-aware grid-to-battery charging during cheap tariff windows. Tracks cycle cost, supports negative tariffs, and automatically replans when forecast or prices change. Enable via the options flow — disabled by default.

Heat Pump SG-Ready 4-state relay control (BLOCKED → NORMAL → BOOST → FORCE_ON) driven by solar surplus. Optionally raises your climate entity setpoint during surplus periods. Configure relay1, relay2, and thresholds in the options flow.

EV Intelligence Detects your car’s BMS charge taper without needing a car API. Estimates SOC by tracking energy since the last full charge. Learns daily driving consumption per weekday with temperature correction. Smart night charge skip with 3-skip safety net.

Dynamic Tariffs Three modes: Static (fixed rates), Dynamic (Tibber, Nordpool, aWATTar with auto-detection), or Calendar (time-based HT/NT schedules). Price-responsive surplus device activation during cheap windows.

Notification Flexibility Notifications now work with any service — HA Companion App (notify.mobile_app_*), REST webhooks (rest_command.*), or generic services like Matrix, Slack, Telegram. The config flow dropdown lists all available services.

15 Languages Added: cs, da, fi, hu, no, pl, pt, ro, sv. Was 6, now 15.

225+ Entities Power, energy, flows, costs, forecasts, PV analytics, surplus control, load management, EV intelligence, battery scheduler — all auto-created.


Comparison (Updated)

SEM evcc emhass Predbat PV Excess
EV solar surplus :white_check_mark: :white_check_mark: :x: :x: :white_check_mark:
Battery management :white_check_mark: :x: :white_check_mark: :white_check_mark: partial
Multi-EV charger :white_check_mark: :white_check_mark: :x: :x: :x:
Heat pump SG-Ready :white_check_mark: :white_check_mark: :x: :x: :x:
Battery scheduler :white_check_mark: :x: :white_check_mark: :white_check_mark: :x:
Auto dashboard :white_check_mark: own UI :x: :x: :x:
Cost tracking :white_check_mark: :x: :x: :x: :x:
Notifications :white_check_mark: :x: :x: :x: :x:
EV Intelligence :white_check_mark: :x: :x: :x: :x:
PV analytics :white_check_mark: :x: :x: :x: :x:
15 languages :white_check_mark: :white_check_mark: :x: :x: :x:
Pure HACS install :white_check_mark: Go binary Docker AppDaemon :white_check_mark:
Zero-config setup :white_check_mark: config file complex config file manual

Supported Hardware

Inverters: Huawei SUN2000, SolarEdge, Fronius, GoodWe, Enphase, SMA, Growatt, Solis, Kostal, SolaX, Victron, Tesla Powerwall

EV Chargers: KEBA, Easee, Wallbox, go-eCharger, Zaptec, ChargePoint, Heidelberg, OpenWB, OCPP, Ohme, Peblar, V2C Trydan, Alfen Eve, Blue Current, OpenEVSE

Batteries: Huawei LUNA, BYD, Tesla Powerwall, Sonnen — any battery with SOC + power sensors

Tariffs: Tibber, Nordpool, aWATTar, static rates, calendar-based HT/NT


Beta Releases

Want to help test new features before they go stable? Enable “Show beta versions” in HACS when redownloading SEM. Your testing and feedback helps ship stable releases faster.


The 4-Zone Battery Strategy

Zone SOC Range Behavior
Zone 1 Below 30% All solar → battery. EV blocked.
Zone 2 30–70% Solar surplus only. Battery doesn’t help EV.
Zone 3 70–90% Battery can assist EV during solar dips.
Zone 4 Above 90% EV starts even without solar. Battery fully assists.

All thresholds configurable on the Control tab.


Dashboard (8 Tabs)

The auto-generated dashboard now has 8 tabs: Home (animated system diagram), Overview (7-day chart, weather, recommendations), Energy (detailed charts), Battery (SOC zones, health), EV (sessions, taper, virtual SOC), Costs (savings, ROI), Control (drag-and-drop priorities, settings), System (diagnostics, coordinator health).


Quality & Testing

  • HA Quality Scale: Platinum — strict typing, full async, stale device cleanup
  • 1400+ automated tests on Python 3.12 + 3.13
  • Energy spike protection — automatically skips accumulation when sensors restart after integration updates

:package: GitHub: traktore-org/sem-community
:bug: Issues: Report a bug or request a feature

SEM is free and open-source. A :star: on GitHub helps visibility!

v1.4.1 — April 30, 2026

1 Like

Hi,

As you know I have 2 Wallbox Pulsar Plus chargers
See screenshot below. Do you think this works for setting the charger max amps
There is no specific service call for the wallbox.

Hi @RienduPre! Great to see you here too — we’ve been working on your GitHub issues.

Yes, SEM can control your Wallbox Pulsar Plus! The latest beta (v1.4.2-beta.1) adds support for chargers
that use a number.* entity instead of a service call:

  1. In SEM options → EV Chargers → Edit your charger
  2. Set the Current Control Entity to your Wallbox’s number.* max current entity
  3. Leave the “Set-Current Service” field empty

SEM calls number.set_value on it to dynamically adjust charging current based on solar surplus.

Multi-charger is also supported — add your second Wallbox via the charger menu. Each charger gets its own
sensors (sensor.sem_charger_{id}_power, _session_energy, _session_solar_share) and SEM distributes surplus
by priority: highest-priority charger gets power first, remainder flows to the next.

For setup details: Multi-Device Guide

To get the beta: HACS → Integrations → SEM → Redownload → enable “Show beta versions” → select
v1.4.2-beta.1.

Let me know if you need help configuring the Wallbox entities!

I really like this integration, it provides everything I need and the dashboard views are really modern looking. Well done on this, amazing work!

One thing I would like to know/request. I am with Amber Electric, here is Australia. Amber offers flexible pricing for both usage and feed-in, they also provide a price forecast for both. There is a HA integration to get this data and I want to know how I can use it in SEM?

Hi Jonathan, thanks for the kind words, glad you like SEM!

Great news: Amber Electric is now supported as of v1.4.6-beta.1 (just released).

SEM auto-detects your Amber integration and uses:

  • Live import price — real-time cost calculations in AUD
  • 12-hour price forecast — SEM picks the cheapest 30-minute slots for EV night charging and battery scheduling
  • Dynamic feed-in rate — your export revenue is calculated from Amber’s live feed-in price, not a static value
  • Spike avoidance — SEM classifies Amber price spikes and avoids charging during them

To try it:

  1. In HACS → SEM → enable “Show beta versions”
  2. Update to v1.4.6-beta.1
  3. Restart HA
  4. SEM should auto-detect your Amber sensors — check the System tab for tariff_provider: amber
  5. Your live Amber price and forecast windows should appear on the Control tab

If you’re already on dynamic tariff mode, it should just work. If not, go to Settings → Integrations → SEM → Configure and set tariff mode to “Dynamic”.

This is a beta — I’d appreciate your feedback on whether the auto-detection works and if the price forecasts look correct.
Report anything on #162.

1 Like

v1.5.0 — Quality Scale Platinum + GoodWe Fix

Hey everyone, quick update — v1.5.0 is out with some solid improvements under the hood.

What's new

Quality Scale Platinum — SEM now passes all 54 Home Assistant Integration Quality Scale rules. This means proper async I/O, typed
code, clean service lifecycle, translated exceptions, and full entity compliance. Not just a badge — it makes SEM more reliable on
slow hardware (SD cards) and during HA restarts.

GoodWe battery SOC fix — If you're running GoodWe (especially ESA series) and your battery SOC was stuck on "unavailable", this is
fixed. The auto-detection now uses the HA device registry as fallback when entity naming doesn't follow the standard prefix pattern.

EV Intelligence improvement — Fixed an issue where the virtual SOC estimate could drift after multiple HA restarts. The KEBA total
energy counter now actively calibrates the prediction every cycle.

Real-world numbers (today, May 10)

Running on Huawei SUN2000 + LUNA2000 + KEBA P30:

  • 24.8 kWh solar production
  • 96% autarky (grid import: 0.33 kWh)
  • Battery cycled from 30% to 100% by noon
  • 11 surplus-controlled devices managed automatically
  • Coordinator update cycle: 10-12ms

Help wanted

  • Translations: We have 15 languages but some need polishing (cs, da, fi, hu, no, pl, pt, ro, sv). Native speakers welcome! See #179
  • Hardware reports: Running a non-Huawei setup? Let us know how v1.5.0 works for you in Discussion #103

Update via HACS or grab it from GitHub.

2 Likes