Add DC voltage and current to Kostal inverter (#54878)

This commit is contained in:
Mas2112 2021-09-30 11:41:55 +02:00 committed by GitHub
parent 0c1c1f7845
commit 1f5720199c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 78 additions and 0 deletions

View File

@ -10,8 +10,12 @@ from homeassistant.const import (
ATTR_ICON,
ATTR_UNIT_OF_MEASUREMENT,
DEVICE_CLASS_BATTERY,
DEVICE_CLASS_CURRENT,
DEVICE_CLASS_ENERGY,
DEVICE_CLASS_POWER,
DEVICE_CLASS_VOLTAGE,
ELECTRIC_CURRENT_AMPERE,
ELECTRIC_POTENTIAL_VOLT,
ENERGY_KILO_WATT_HOUR,
PERCENTAGE,
POWER_WATT,
@ -135,6 +139,28 @@ SENSOR_PROCESS_DATA = [
},
"format_round",
),
(
"devices:local:pv1",
"U",
"DC1 Voltage",
{
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_POTENTIAL_VOLT,
ATTR_DEVICE_CLASS: DEVICE_CLASS_VOLTAGE,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
},
"format_round",
),
(
"devices:local:pv1",
"I",
"DC1 Current",
{
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_CURRENT_AMPERE,
ATTR_DEVICE_CLASS: DEVICE_CLASS_CURRENT,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
},
"format_float",
),
(
"devices:local:pv2",
"P",
@ -146,6 +172,28 @@ SENSOR_PROCESS_DATA = [
},
"format_round",
),
(
"devices:local:pv2",
"U",
"DC2 Voltage",
{
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_POTENTIAL_VOLT,
ATTR_DEVICE_CLASS: DEVICE_CLASS_VOLTAGE,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
},
"format_round",
),
(
"devices:local:pv2",
"I",
"DC2 Current",
{
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_CURRENT_AMPERE,
ATTR_DEVICE_CLASS: DEVICE_CLASS_CURRENT,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
},
"format_float",
),
(
"devices:local:pv3",
"P",
@ -157,6 +205,28 @@ SENSOR_PROCESS_DATA = [
},
"format_round",
),
(
"devices:local:pv3",
"U",
"DC3 Voltage",
{
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_POTENTIAL_VOLT,
ATTR_DEVICE_CLASS: DEVICE_CLASS_VOLTAGE,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
},
"format_round",
),
(
"devices:local:pv3",
"I",
"DC3 Current",
{
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_CURRENT_AMPERE,
ATTR_DEVICE_CLASS: DEVICE_CLASS_CURRENT,
ATTR_STATE_CLASS: STATE_CLASS_MEASUREMENT,
},
"format_float",
),
(
"devices:local",
"PV2Bat_P",

View File

@ -231,6 +231,14 @@ class PlenticoreDataFormatter:
except (TypeError, ValueError):
return state
@staticmethod
def format_float(state: str) -> int | str:
"""Return the given state value as float rounded to three decimal places."""
try:
return round(float(state), 3)
except (TypeError, ValueError):
return state
@staticmethod
def format_energy(state: str) -> float | str:
"""Return the given state value as energy value, scaled to kWh."""