Add state class support to SolarEdge (#52271)

This commit is contained in:
Franck Nijhof 2021-06-29 08:37:33 +02:00 committed by GitHub
parent f1303e02ff
commit a93487f389
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 217 additions and 114 deletions

View file

@ -2,7 +2,11 @@
from datetime import timedelta
import logging
from homeassistant.components.sensor import STATE_CLASS_MEASUREMENT
from homeassistant.const import ENERGY_WATT_HOUR, PERCENTAGE, POWER_WATT
from homeassistant.util import dt as dt_util
from .models import SolarEdgeSensor
DOMAIN = "solaredge"
@ -23,64 +27,153 @@ ENERGY_DETAILS_DELAY = timedelta(minutes=15)
SCAN_INTERVAL = timedelta(minutes=15)
# Supported overview sensor types:
# Key: ['json_key', 'name', unit, icon, default]
SENSOR_TYPES = {
"lifetime_energy": [
"lifeTimeData",
"Lifetime energy",
ENERGY_WATT_HOUR,
"mdi:solar-power",
False,
],
"energy_this_year": [
"lastYearData",
"Energy this year",
ENERGY_WATT_HOUR,
"mdi:solar-power",
False,
],
"energy_this_month": [
"lastMonthData",
"Energy this month",
ENERGY_WATT_HOUR,
"mdi:solar-power",
False,
],
"energy_today": [
"lastDayData",
"Energy today",
ENERGY_WATT_HOUR,
"mdi:solar-power",
False,
],
"current_power": [
"currentPower",
"Current Power",
POWER_WATT,
"mdi:solar-power",
True,
],
"site_details": [None, "Site details", None, None, False],
"meters": ["meters", "Meters", None, None, False],
"sensors": ["sensors", "Sensors", None, None, False],
"gateways": ["gateways", "Gateways", None, None, False],
"batteries": ["batteries", "Batteries", None, None, False],
"inverters": ["inverters", "Inverters", None, None, False],
"power_consumption": ["LOAD", "Power Consumption", None, "mdi:flash", False],
"solar_power": ["PV", "Solar Power", None, "mdi:solar-power", False],
"grid_power": ["GRID", "Grid Power", None, "mdi:power-plug", False],
"storage_power": ["STORAGE", "Storage Power", None, "mdi:car-battery", False],
"purchased_power": ["Purchased", "Imported Power", None, "mdi:flash", False],
"production_power": ["Production", "Production Power", None, "mdi:flash", False],
"consumption_power": ["Consumption", "Consumption Power", None, "mdi:flash", False],
"selfconsumption_power": [
"SelfConsumption",
"SelfConsumption Power",
None,
"mdi:flash",
False,
],
"feedin_power": ["FeedIn", "Exported Power", None, "mdi:flash", False],
"storage_level": ["STORAGE", "Storage Level", PERCENTAGE, None, False],
}
# Supported overview sensors
SENSOR_TYPES = [
SolarEdgeSensor(
key="lifetime_energy",
json_key="lifeTimeData",
name="Lifetime energy",
icon="mdi:solar-power",
last_reset=dt_util.utc_from_timestamp(0),
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement=ENERGY_WATT_HOUR,
),
SolarEdgeSensor(
key="energy_this_year",
json_key="lastYearData",
name="Energy this year",
entity_registry_enabled_default=False,
icon="mdi:solar-power",
unit_of_measurement=ENERGY_WATT_HOUR,
),
SolarEdgeSensor(
key="energy_this_month",
json_key="lastMonthData",
name="Energy this month",
entity_registry_enabled_default=False,
icon="mdi:solar-power",
unit_of_measurement=ENERGY_WATT_HOUR,
),
SolarEdgeSensor(
key="energy_today",
json_key="lastDayData",
name="Energy today",
entity_registry_enabled_default=False,
icon="mdi:solar-power",
unit_of_measurement=ENERGY_WATT_HOUR,
),
SolarEdgeSensor(
key="current_power",
json_key="currentPower",
name="Current Power",
icon="mdi:solar-power",
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement=POWER_WATT,
),
SolarEdgeSensor(
key="site_details",
name="Site details",
entity_registry_enabled_default=False,
),
SolarEdgeSensor(
key="meters",
json_key="meters",
name="Meters",
entity_registry_enabled_default=False,
),
SolarEdgeSensor(
key="sensors",
json_key="sensors",
name="Sensors",
entity_registry_enabled_default=False,
),
SolarEdgeSensor(
key="gateways",
json_key="gateways",
name="Gateways",
entity_registry_enabled_default=False,
),
SolarEdgeSensor(
key="batteries",
json_key="batteries",
name="Batteries",
entity_registry_enabled_default=False,
),
SolarEdgeSensor(
key="inverters",
json_key="inverters",
name="Inverters",
entity_registry_enabled_default=False,
),
SolarEdgeSensor(
key="power_consumption",
json_key="LOAD",
name="Power Consumption",
entity_registry_enabled_default=False,
icon="mdi:flash",
),
SolarEdgeSensor(
key="solar_power",
json_key="PV",
name="Solar Power",
entity_registry_enabled_default=False,
icon="mdi:solar-power",
),
SolarEdgeSensor(
key="grid_power",
json_key="GRID",
name="Grid Power",
entity_registry_enabled_default=False,
icon="mdi:power-plug",
),
SolarEdgeSensor(
key="storage_power",
json_key="STORAGE",
name="Storage Power",
entity_registry_enabled_default=False,
icon="mdi:car-battery",
),
SolarEdgeSensor(
key="purchased_power",
json_key="Purchased",
name="Imported Power",
entity_registry_enabled_default=False,
icon="mdi:flash",
),
SolarEdgeSensor(
key="production_power",
json_key="Production",
name="Production Power",
entity_registry_enabled_default=False,
icon="mdi:flash",
),
SolarEdgeSensor(
key="consumption_power",
json_key="Consumption",
name="Consumption Power",
entity_registry_enabled_default=False,
icon="mdi:flash",
),
SolarEdgeSensor(
key="selfconsumption_power",
json_key="SelfConsumption",
name="SelfConsumption Power",
entity_registry_enabled_default=False,
icon="mdi:flash",
),
SolarEdgeSensor(
key="feedin_power",
json_key="FeedIn",
name="Exported Power",
entity_registry_enabled_default=False,
icon="mdi:flash",
),
SolarEdgeSensor(
key="storage_level",
json_key="STORAGE",
name="Storage Level",
entity_registry_enabled_default=False,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement=PERCENTAGE,
),
]