Add solar panel view with PV production, battery, grid, home load and Tesla charging

This commit is contained in:
Joan
2026-03-20 13:18:29 +01:00
parent 5bbee94765
commit d53ac19887
5 changed files with 146 additions and 4 deletions

View File

@@ -7,7 +7,11 @@ from config import (
BRIGHTNESS_ENTITY_ID, WEATHER_ENTITY_ID,
INTERIOR_TEMP_ENTITY_ID, INTERIOR_HUMIDITY_ENTITY_ID,
TESLA_BATTERY_ENTITY, TESLA_RANGE_ENTITY,
TESLA_CHARGING_ENTITY, TESLA_PLUGGED_ENTITY
TESLA_CHARGING_ENTITY, TESLA_PLUGGED_ENTITY,
SOLAR_PRODUCTION_ENTITY, SOLAR_BATTERY_ENTITY,
SOLAR_BATTERY_POWER_ENTITY, SOLAR_GRID_POWER_ENTITY,
SOLAR_LOAD_POWER_ENTITY, SOLAR_TODAY_ENERGY_ENTITY,
TESLA_CHARGER_POWER_ENTITY
)
@@ -78,3 +82,35 @@ def get_tesla_status():
"charging": charging.get("state") == "on" if charging else False,
"plugged": plugged.get("state") == "on" if plugged else False,
}
def get_solar_status():
"""Get solar/inverter status from Home Assistant."""
production = get_entity_value(SOLAR_PRODUCTION_ENTITY)
battery = get_entity_value(SOLAR_BATTERY_ENTITY)
battery_power = get_entity_value(SOLAR_BATTERY_POWER_ENTITY)
grid_power = get_entity_value(SOLAR_GRID_POWER_ENTITY)
load_power = get_entity_value(SOLAR_LOAD_POWER_ENTITY)
today_energy = get_entity_value(SOLAR_TODAY_ENERGY_ENTITY)
tesla_charger = get_entity_value(TESLA_CHARGER_POWER_ENTITY)
def safe_float(entity, default=None):
if entity:
try:
return float(entity.get("state", 0))
except (ValueError, TypeError):
pass
return default
# Tesla charger power (already in W)
tesla_power_w = safe_float(tesla_charger, 0)
return {
"production": safe_float(production),
"battery_pct": safe_float(battery),
"battery_power": safe_float(battery_power),
"grid_power": safe_float(grid_power),
"load_power": safe_float(load_power),
"today_energy": safe_float(today_energy),
"tesla_power": tesla_power_w,
}