The all-in-one Home Assistant integration for your PV system with fixed-price tariffs.
For spot/variable tariffs (aWATTar, smartENERGY, Tibber) with battery management: pv_management
| Feature | Description |
|---|---|
| Amortization | See in real-time how much of your PV system is paid off |
| Energy Benchmark | Compare your consumption with AT/DE/CH averages |
| Battery Tracking | SOC, efficiency, cycles — all at a glance |
| Electricity Quota | Yearly kWh budget with seasonal weighting |
| ROI Calculation | Return on Investment — before and after amortization |
| Daily Costs | Grid import, feed-in, and net electricity cost per day |
| PV-Strings | Compare up to 4 PV strings — production, peak power, efficiency (kWh/kWp) |
| Notifications | Milestones, quota warnings, monthly reports |
Track how well your PV system performs!
- Annual PV Production (kWh/year): Extrapolated from benchmark tracking period
- Specific Yield (kWh/kWp): Annual production per installed capacity — the standard metric for PV performance
- Per-string Specific Yield: Compare strings fairly based on their installed kWp
- Performance Ratio (%): Measured peak vs. installed capacity — shows how close a string gets to nameplate power
- Installed capacity (kWp) per string as optional config — falls back to measured peaks if not set
- Uses the sum of all string kWp for the system-wide specific yield
| Sensor | What it shows | Example |
|---|---|---|
| Jahresproduktion | Annual PV production (extrapolated) | 14,200 kWh/year |
| Spezifischer Ertrag | Annual production per kWp | 967 kWh/kWp |
| Osten Spez. Ertrag | Per-string specific yield | 890 kWh/kWp |
| Osten Performance Ratio | Peak vs. installed capacity | 92.5% |
Tip: In Austria/Germany, 900-1100 kWh/kWp per year is typical. Specific yield helps you spot underperforming strings.
Compare up to 4 PV strings — with optional power sensor and installed capacity.
| Sensor | What it shows | Example |
|---|---|---|
| {Name} Produktion | Total tracked kWh | 670 kWh |
| {Name} Tagesproduktion | Average kWh per day | 4.5 kWh/day |
| {Name} Anteil | Share of total production | 35% |
| {Name} Peak | Highest power ever recorded (requires power sensor) | 3.2 kW |
| {Name} Spez. Ertrag | Annual kWh per installed kWp (requires kWp or power sensor) | 890 kWh/kWp |
| {Name} Performance Ratio | Measured peak vs. installed capacity (requires both) | 92.5% |
Compare your electricity consumption with the averag 8000 e for your country — completely offline, no cloud needed.
- Countries: Austria, Germany, Switzerland
- Household size: 1-6 persons
- 6 sensors: Average, own consumption, comparison (%), CO2 avoided, efficiency score (0-100), rating
- Heat pump optional: HP consumption is benchmarked separately for fair comparison
| Sensor | What it shows | Example |
|---|---|---|
| Benchmark Average | Reference consumption for your country/household | 4000 kWh/year |
| Benchmark Own Consumption | Your consumption extrapolated to 1 year | 3200 kWh/year |
| Benchmark Comparison | Deviation from average | -20% |
| Benchmark CO2 Avoided | CO2 savings from PV per year | 180 kg/year |
| Benchmark Efficiency Score | Overall rating 0-100 | 72 points |
| Benchmark Rating | Text classification | "Sehr gut" |
- Open HACS > Integrations > 3-dot menu > Custom repositories
- URL:
https://github.com/hoizi89/pv_management_fix - Category: Integration
- Install and restart Home Assistant
Copy custom_components/pv_management_fix to config/custom_components/, then restart.
- Settings > Devices & Services > Add Integration
- Search for "PV Energy Management+"
- Select your sensors:
- PV Production (required) — kWh counter
- Grid Export (optional) — for earnings calculation
- Grid Import (optional) — for quota & cost tracking
- Consumption (optional) — for autarky rate
- Enter fixed price (e.g. 10.92 ct/kWh net)
- Set markup factor (default: 2.0 — turns 10ct net into 20ct gross)
- Configure installation cost and Amortization Helper (input_number)
All settings can be changed later under Options.
| Sensor | Unit | Description |
|---|---|---|
| Amortization | % | How much of the system is paid off |
| Total Savings | EUR | Savings from self-consumption + feed-in |
| Remaining Cost | EUR | Remaining until amortization |
| Status | — | e.g. "45.2% amortized" or "Amortized! +500 EUR profit" |
| Remaining Days | Days | Estimated days until amortization |
| Amortization Date | Date | When the system will be paid off |
| Self Consumption | kWh | PV electricity consumed directly |
| Feed-in | kWh | PV electricity exported to grid |
| Self Consumption Ratio | % | Share of PV production used directly |
| Autarky Rate | % | Share of consumption covered by PV |
| Savings per Day/Month/Year | EUR | Average savings |
| CO2 Savings | kg | Avoided CO2 emissions |
| ROI | % | Return on Investment |
| ROI per Year | %/year | Annual ROI |
| Electricity Price Gross | EUR/kWh | For Energy Dashboard |
| Sensor | Unit | Description |
|---|---|---|
| Feed-in Today | EUR | Today's feed-in earnings |
| Grid Import Today | EUR | Today's grid import cost |
| Net Electricity Cost Today | EUR | Grid import minus feed-in |
Appears when enabled under Options > Energy Benchmark.
| Sensor | Unit | Description |
|---|---|---|
| Durchschnitt | kWh/year | Reference consumption (E-Control/BDEW/BFE) |
| Eigener Verbrauch | kWh/year | Your household consumption extrapolated |
| Netzbezug Jahres | kWh/year | Annual grid import extrapolated |
| Jahresproduktion | kWh/year | Annual PV production extrapolated |
| Spezifischer Ertrag | kWh/kWp | Annual production per installed kWp (requires PV strings) |
| Vergleich | % | Deviation (negative = better than average) |
| CO2 Vermieden | kg/year | CO2 savings from PV |
| Effizienz Score | Points | 0-100 overall rating (see breakdown below) |
| Bewertung | — | Hervorragend / Sehr gut / Gut / Durchschnittlich |
| WP Durchschnitt | kWh/year | Reference HP consumption (only with HP) |
| WP Verbrauch | kWh/year | Your HP consumption (only with HP) |
The score (0-100 points) measures how well your PV system is performing. The sensor attributes show the detailed breakdown.
| Component | Max Points | How it works |
|---|---|---|
| Autarky Rate | 35 | How independent you are from the grid. 100% autarky = 35 points |
| Specific Yield | 25 | How well your system is utilized. 900 kWh/kWp (good for Central Europe) = 25 points |
| Self-Consumption Ratio | 20 | How much PV production you use yourself. 100% = 20 points |
| Consumption vs Average | 20 | Your consumption compared to country average. -50% below avg = 20 points |
Score interpretation:
- 80-100: Excellent — highly optimized system with good autarky and utilization
- 60-79: Very good — solid performance, minor optimization potential
- 40-59: Good — typical residential PV system
- 20-39: Average — significant room for improvement
- 0-19: Needs improvement — consider battery storage or load shifting
Tips to improve your score:
- A battery improves both autarky and self-consumption
- Shift heavy loads to daytime (dishwasher, washing machine, EV charging)
- Smart heat pump control (heat during solar hours)
- Check your string orientation — specific yield shows how well each string performs
Appears when at least one PV string is configured under Options > PV-Strings.
| Sensor | Unit | Description |
|---|---|---|
| {Name} Produktion | kWh | Total tracked production for this string |
| {Name} Tagesproduktion | kWh/day | Average daily production |
| {Name} Anteil | % | Share of total string production |
| {Name} Peak | kW | Highest power ever recorded (requires power sensor) |
| {Name} Spez. Ertrag | kWh/kWp | Annual production per kWp (requires kWp or power sensor) |
| {Name} Performance Ratio | % | Measured peak vs. installed capacity (requires kWp + power) |
Appears when at least one battery sensor is configured.
| Sensor | Unit | Description |
|---|---|---|
| Battery SOC | % | State of charge with dynamic icon |
| Battery Charge Total | kWh | Total energy charged into battery |
| Battery Discharge Total | kWh | Total energy discharged from battery |
| Battery Efficiency | % | Discharge / Charge x 100 |
| Battery Cycles | Cycles | Estimated: Charge / Capacity |
Appears when the quota is enabled.
| Sensor | Unit | Description |
|---|---|---|
| Quota Remaining | kWh | Remaining kWh in yearly budget |
| Quota Usage | % | Percent of quota used |
| Quota Reserve | kWh | Over/under budget (positive = good) |
| Quota Daily Budget | kWh/day | Allowed daily consumption |
| Quota Today Remaining | kWh | Daily budget minus today's consumption |
| Quota Forecast | kWh | Yearly consumption projection |
| Quota Remaining Days | Days | Remaining days in period |
| Quota Status | — | Text summary |
Under Settings > Devices & Services > PV Energy Management+ > Configure:
| Category | What you can configure |
|---|---|
| Sensors | PV Production, Grid Export, Grid Import, Consumption |
| Electricity Prices | Fixed price, markup factor, dynamic sensor, feed-in tariff |
| Amortization Helper | input_number for persistent storage |
| Historical Data | Already amortized amount, energy offsets |
| Electricity Quota | Yearly kWh, start date, meter reading, seasonal calculation |
| Battery | SOC, charge/discharge sensors, capacity |
| Energy Benchmark | Country, household size, heat pump |
| PV-Strings | Up to 4 strings with name, kWh sensor, optional power sensor (W), and optional installed capacity (kWp) |
Use sensor.pv_fixpreis_strompreis_brutto as the electricity price entity in the Home Assistant Energy Dashboard. The sensor outputs the gross price in EUR/kWh.
type: entities
title: PV Amortization
entities:
- entity: sensor.pv_fixpreis_status
- entity: sensor.pv_fixpreis_amortisation
- entity: sensor.pv_fixpreis_gesamtersparnis
- entity: sensor.pv_fixpreis_restbetrag
- entity: sensor.pv_fixpreis_restlaufzeit
- entity: sensor.pv_fixpreis_roi
- type: divider
- entity: sensor.pv_fixpreis_eigenverbrauch
- entity: sensor.pv_fixpreis_einspeisung
- entity: sensor.pv_fixpreis_eigenverbrauchsquote
- type: divider
- entity: sensor.pv_fixpreis_ersparnis_pro_monat
- entity: sensor.pv_fixpreis_co2_ersparnistype: entities
title: Energy Benchmark
entities:
- entity: sensor.pv_fixpreis_benchmark_effizienz_score
- entity: sensor.pv_fixpreis_benchmark_bewertung
- type: divider
- entity: sensor.pv_fixpreis_benchmark_eigener_verbrauch
- entity: sensor.pv_fixpreis_benchmark_durchschnitt
- entity: sensor.pv_fixpreis_benchmark_vergleich
- type: divider
- entity: sensor.pv_fixpreis_benchmark_co2_vermiedentype: entities
title: Battery
entities:
- entity: sensor.pv_fixpreis_batterie_ladestand
- entity: sensor.pv_fixpreis_batterie_effizienz
- entity: sensor.pv_fixpreis_batterie_zyklen
- entity: sen
8000
sor.pv_fixpreis_batterie_ladung_gesamt
- entity: sensor.pv_fixpreis_batterie_entladung_gesamttype: entities
title: Electricity Quota
entities:
- entity: sensor.pv_fixpreis_kontingent_status
- entity: sensor.pv_fixpreis_kontingent_verbleibend
- entity: sensor.pv_fixpreis_kontingent_verbrauch
- entity: sensor.pv_fixpreis_kontingent_reserve
- entity: sensor.pv_fixpreis_kontingent_tagesbudget
- entity: sensor.pv_fixpreis_kontingent_heute_verbleibend
- entity: sensor.pv_fixpreis_kontingent_prognosetype: entities
title: Electricity Costs Today
entities:
- entity: sensor.pv_fixpreis_netzbezug_heute
- entity: sensor.pv_fixpreis_einspeisung_heute
- entity: sensor.pv_fixpreis_stromkosten_netto_heuteThe integration fires pv_management_event events for custom automations:
trigger:
- platform: event
event_type: pv_management_event
event_data:
type: amortisation_milestone
action:
- service: notify.mobile_app
data:
title: "PV Milestone!"
message: "{{ trigger.event.data.message }}"trigger:
- platform: event
event_type: pv_management_event
event_data:
type: quota_warning_80
action:
- service: notify.mobile_app
data:
title: "Electricity Quota"
message: "{{ trigger.event.data.message }}"| Feature | pv_management (Spot) | pv_management_fix (Fixed) |
|---|---|---|
| Amortization | Yes | Yes |
| Energy Tracking | Yes | Yes |
| Energy Benchmark | Yes | Yes |
| PV-Strings | Yes | Yes |
| Battery Tracking | No | Yes |
| ROI Calculation | No | Yes |
| Electricity Quota | No | Yes |
| Daily Costs | Yes | Yes |
| Recommendation Signal | Yes | No |
| Auto-Charge | Yes | No |
| Discharge Control | Yes | No |
| EPEX Quantile | Yes | No |
| Solcast | Yes | No |
For spot tariffs (aWATTar, smartENERGY) with battery management: pv_management
- NEW: Annual PV Production — Extrapolated yearly PV production from benchmark tracking
- NEW: Specific Yield (kWh/kWp) — System-wide and per-string, using installed capacity or measured peaks as fallback
- NEW: Performance Ratio — Per-string comparison of measured peak vs. installed nameplate capacity
- NEW: Installed capacity (kWp) — Optional config per PV string for accurate specific yield
- NEW: Netzbezug Jahres — Annual grid import extrapolated from benchmark period
- Benchmark now uses snapshot-based tracking (independent lifecycle, proper reset)
- Removed "Benchmark" prefix from sensor names (device grouping provides context)
- WP sensor Wh→kWh auto-conversion safety net
- NEW: PV-String Peak & Efficiency — Optional power sensor (W) per string for automatic peak tracking (kW) and efficiency calculation (kWh/kWp)
- Fair comparison of strings with different module counts
- NEW: Energy Benchmark — Compare with DACH averages (AT/DE/CH), CO2 savings, efficiency score 0-100
- NEW: Heat Pump — Optional HP sensor for fair benchmark comparison
- Rename: "PV Management Fixpreis" -> "PV Energy Management+"
- Domain and entity IDs remain unchanged (no breaking change)
- Fix:
remaining_amount->remaining_cost(crash on milestones) - Fix: Missing "Helper" menu translation
- NEW: Battery tracking (SOC, charge, discharge, efficiency, cycles)
- NEW: ROI sensors (Return on Investment + annual ROI)
- Fix: Quota sensors appear without HA restart
- Battery-compatible self-consumption and autarky rate calculation
- NEW: Markup factor for automatic gross price calculation
- NEW: Energy Dashboard sensor (EUR/kWh)
- NEW: Helper sync, milestone events, quota warnings, monthly summary
- NEW: Electricity quota (yearly kWh budget)
- Initial release
MIT License — see LICENSE