"""Constants for the Kostal Plenticore Solar Inverter integration.""" from homeassistant.components.sensor import ( ATTR_LAST_RESET, ATTR_STATE_CLASS, STATE_CLASS_MEASUREMENT, ) from homeassistant.const import ( ATTR_DEVICE_CLASS, ATTR_ICON, ATTR_UNIT_OF_MEASUREMENT, DEVICE_CLASS_BATTERY, DEVICE_CLASS_ENERGY, DEVICE_CLASS_POWER, ENERGY_KILO_WATT_HOUR, PERCENTAGE, POWER_WATT, ) from homeassistant.util.dt import utc_from_timestamp DOMAIN = "kostal_plenticore" ATTR_ENABLED_DEFAULT = "entity_registry_enabled_default" LAST_RESET_NEVER = utc_from_timestamp(0) # Defines all entities for process data. # # Each entry is defined with a tuple of these values: # - module id (str) # - process data id (str) # - entity name suffix (str) # - sensor properties (dict) # - value formatter (str) SENSOR_PROCESS_DATA = [ ( "devices:local", "Inverter:State", "Inverter State", {ATTR_ICON: "mdi:state-machine"}, "format_inverter_state", ), ( "devices:local", "Dc_P", "Solar Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_ENABLED_DEFAULT: True, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local", "Grid_P", "Grid Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_ENABLED_DEFAULT: True, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local", "HomeBat_P", "Home Power from Battery", {ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER}, "format_round", ), ( "devices:local", "HomeGrid_P", "Home Power from Grid", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local", "HomeOwn_P", "Home Power from Own", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local", "HomePv_P", "Home Power from PV", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local", "Home_P", "Home Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local:ac", "P", "AC Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_ENABLED_DEFAULT: True, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local:pv1", "P", "DC1 Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local:pv2", "P", "DC2 Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local:pv3", "P", "DC3 Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local", "PV2Bat_P", "PV to Battery Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local", "EM_State", "Energy Manager State", {ATTR_ICON: "mdi:state-machine"}, "format_em_manager_state", ), ( "devices:local:battery", "Cycles", "Battery Cycles", {ATTR_ICON: "mdi:recycle", ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT}, "format_round", ), ( "devices:local:battery", "P", "Battery Power", { ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "devices:local:battery", "SoC", "Battery SoC", {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_DEVICE_CLASS: DEVICE_CLASS_BATTERY}, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:Autarky:Day", "Autarky Day", {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:chart-donut"}, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:Autarky:Month", "Autarky Month", {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:chart-donut"}, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:Autarky:Total", "Autarky Total", { ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:chart-donut", ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:Autarky:Year", "Autarky Year", {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:chart-donut"}, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:OwnConsumptionRate:Day", "Own Consumption Rate Day", {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:chart-donut"}, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:OwnConsumptionRate:Month", "Own Consumption Rate Month", {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:chart-donut"}, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:OwnConsumptionRate:Total", "Own Consumption Rate Total", { ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:chart-donut", ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, }, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:OwnConsumptionRate:Year", "Own Consumption Rate Year", {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:chart-donut"}, "format_round", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHome:Day", "Home Consumption Day", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHome:Month", "Home Consumption Month", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHome:Year", "Home Consumption Year", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHome:Total", "Home Consumption Total", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, ATTR_LAST_RESET: LAST_RESET_NEVER, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomeBat:Day", "Home Consumption from Battery Day", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomeBat:Month", "Home Consumption from Battery Month", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomeBat:Year", "Home Consumption from Battery Year", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomeBat:Total", "Home Consumption from Battery Total", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, ATTR_LAST_RESET: LAST_RESET_NEVER, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomeGrid:Day", "Home Consumption from Grid Day", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomeGrid:Month", "Home Consumption from Grid Month", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomeGrid:Year", "Home Consumption from Grid Year", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomeGrid:Total", "Home Consumption from Grid Total", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, ATTR_LAST_RESET: LAST_RESET_NEVER, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomePv:Day", "Home Consumption from PV Day", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomePv:Month", "Home Consumption from PV Month", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomePv:Year", "Home Consumption from PV Year", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyHomePv:Total", "Home Consumption from PV Total", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, ATTR_LAST_RESET: LAST_RESET_NEVER, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv1:Day", "Energy PV1 Day", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv1:Month", "Energy PV1 Month", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv1:Year", "Energy PV1 Year", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv1:Total", "Energy PV1 Total", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, ATTR_LAST_RESET: LAST_RESET_NEVER, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv2:Day", "Energy PV2 Day", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv2:Month", "Energy PV2 Month", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv2:Year", "Energy PV2 Year", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv2:Total", "Energy PV2 Total", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, ATTR_LAST_RESET: LAST_RESET_NEVER, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv3:Day", "Energy PV3 Day", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv3:Month", "Energy PV3 Month", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv3:Year", "Energy PV3 Year", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:EnergyPv3:Total", "Energy PV3 Total", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, ATTR_LAST_RESET: LAST_RESET_NEVER, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:Yield:Day", "Energy Yield Day", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_ENABLED_DEFAULT: True, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:Yield:Month", "Energy Yield Month", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:Yield:Year", "Energy Yield Year", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, }, "format_energy", ), ( "scb:statistic:EnergyFlow", "Statistic:Yield:Total", "Energy Yield Total", { ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR, ATTR_DEVICE_CLASS: DEVICE_CLASS_ENERGY, ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT, ATTR_LAST_RESET: LAST_RESET_NEVER, }, "format_energy", ), ] # Defines all entities for settings. # # Each entry is defined with a tuple of these values: # - module id (str) # - process data id (str) # - entity name suffix (str) # - sensor properties (dict) # - value formatter (str) SENSOR_SETTINGS_DATA = [ ( "devices:local", "Battery:MinHomeComsumption", "Battery min Home Consumption", {ATTR_UNIT_OF_MEASUREMENT: POWER_WATT, ATTR_DEVICE_CLASS: DEVICE_CLASS_POWER}, "format_round", ), ( "devices:local", "Battery:MinSoc", "Battery min Soc", {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE, ATTR_ICON: "mdi:battery-negative"}, "format_round", ), ( "devices:local", "Battery:Strategy", "Battery Strategy", {}, "format_round", ), ]