Add solar panel view with PV production, battery, grid, home load and Tesla charging
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user