Remove power sensor from Tesla Wall Connector (#60775)
Add voltage and current sensors for each phase
This commit is contained in:
parent
4dfdb3b96f
commit
5c4422dc72
2 changed files with 72 additions and 36 deletions
|
@ -10,14 +10,13 @@ from homeassistant.components.sensor import (
|
|||
)
|
||||
from homeassistant.const import (
|
||||
DEVICE_CLASS_ENERGY,
|
||||
DEVICE_CLASS_POWER,
|
||||
DEVICE_CLASS_TEMPERATURE,
|
||||
DEVICE_CLASS_VOLTAGE,
|
||||
ELECTRIC_CURRENT_AMPERE,
|
||||
ELECTRIC_POTENTIAL_VOLT,
|
||||
ENERGY_KILO_WATT_HOUR,
|
||||
ENTITY_CATEGORY_DIAGNOSTIC,
|
||||
FREQUENCY_HERTZ,
|
||||
POWER_KILO_WATT,
|
||||
TEMP_CELSIUS,
|
||||
)
|
||||
|
||||
|
@ -73,29 +72,52 @@ WALL_CONNECTOR_SENSORS = [
|
|||
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
||||
),
|
||||
WallConnectorSensorDescription(
|
||||
key="power",
|
||||
name=prefix_entity_name("Power"),
|
||||
native_unit_of_measurement=POWER_KILO_WATT,
|
||||
value_fn=lambda data: round(
|
||||
(
|
||||
(
|
||||
data[WALLCONNECTOR_DATA_VITALS].currentA_a
|
||||
* data[WALLCONNECTOR_DATA_VITALS].voltageA_v
|
||||
)
|
||||
+ (
|
||||
data[WALLCONNECTOR_DATA_VITALS].currentB_a
|
||||
* data[WALLCONNECTOR_DATA_VITALS].voltageB_v
|
||||
)
|
||||
+ (
|
||||
data[WALLCONNECTOR_DATA_VITALS].currentC_a
|
||||
* data[WALLCONNECTOR_DATA_VITALS].voltageC_v
|
||||
)
|
||||
)
|
||||
/ 1000.0,
|
||||
1,
|
||||
),
|
||||
device_class=DEVICE_CLASS_POWER,
|
||||
key="current_a_a",
|
||||
name=prefix_entity_name("Phase A Current"),
|
||||
native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE,
|
||||
value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].currentA_a,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
||||
),
|
||||
WallConnectorSensorDescription(
|
||||
key="current_b_a",
|
||||
name=prefix_entity_name("Phase B Current"),
|
||||
native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE,
|
||||
value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].currentB_a,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
||||
),
|
||||
WallConnectorSensorDescription(
|
||||
key="current_c_a",
|
||||
name=prefix_entity_name("Phase C Current"),
|
||||
native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE,
|
||||
value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].currentC_a,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
||||
),
|
||||
WallConnectorSensorDescription(
|
||||
key="voltage_a_v",
|
||||
name=prefix_entity_name("Phase A Voltage"),
|
||||
native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT,
|
||||
value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].voltageA_v,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
||||
),
|
||||
WallConnectorSensorDescription(
|
||||
key="voltage_b_v",
|
||||
name=prefix_entity_name("Phase B Voltage"),
|
||||
native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT,
|
||||
value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].voltageB_v,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
||||
),
|
||||
WallConnectorSensorDescription(
|
||||
key="voltage_c_v",
|
||||
name=prefix_entity_name("Phase C Voltage"),
|
||||
native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT,
|
||||
value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].voltageC_v,
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
||||
),
|
||||
WallConnectorSensorDescription(
|
||||
key="total_energy_kWh",
|
||||
|
|
|
@ -23,10 +23,27 @@ async def test_sensors(hass: HomeAssistant) -> None:
|
|||
EntityAndExpectedValues(
|
||||
"sensor.tesla_wall_connector_grid_frequency", "50.021", "49.981"
|
||||
),
|
||||
EntityAndExpectedValues("sensor.tesla_wall_connector_power", "7.6", "7.6"),
|
||||
EntityAndExpectedValues(
|
||||
"sensor.tesla_wall_connector_total_energy", "988.022", "989.0"
|
||||
),
|
||||
EntityAndExpectedValues(
|
||||
"sensor.tesla_wall_connector_phase_a_current", "10", "7"
|
||||
),
|
||||
EntityAndExpectedValues(
|
||||
"sensor.tesla_wall_connector_phase_b_current", "11.1", "8"
|
||||
),
|
||||
EntityAndExpectedValues(
|
||||
"sensor.tesla_wall_connector_phase_c_current", "12", "9"
|
||||
),
|
||||
EntityAndExpectedValues(
|
||||
"sensor.tesla_wall_connector_phase_a_voltage", "230.1", "228.1"
|
||||
),
|
||||
EntityAndExpectedValues(
|
||||
"sensor.tesla_wall_connector_phase_b_voltage", "231", "229.1"
|
||||
),
|
||||
EntityAndExpectedValues(
|
||||
"sensor.tesla_wall_connector_phase_c_voltage", "232.1", "230"
|
||||
),
|
||||
]
|
||||
|
||||
mock_vitals_first_update = get_vitals_mock()
|
||||
|
@ -34,13 +51,11 @@ async def test_sensors(hass: HomeAssistant) -> None:
|
|||
mock_vitals_first_update.handle_temp_c = 25.51
|
||||
mock_vitals_first_update.grid_v = 230.15
|
||||
mock_vitals_first_update.grid_hz = 50.021
|
||||
# to calculate power, we calculate power of each phase and sum up
|
||||
# (230.1*10) + (231.1*11) + (232.1*12) = 7628.3 W
|
||||
mock_vitals_first_update.voltageA_v = 230.1
|
||||
mock_vitals_first_update.voltageB_v = 231.1
|
||||
mock_vitals_first_update.voltageB_v = 231
|
||||
mock_vitals_first_update.voltageC_v = 232.1
|
||||
mock_vitals_first_update.currentA_a = 10
|
||||
mock_vitals_first_update.currentB_a = 11
|
||||
mock_vitals_first_update.currentB_a = 11.1
|
||||
mock_vitals_first_update.currentC_a = 12
|
||||
|
||||
mock_vitals_second_update = get_vitals_mock()
|
||||
|
@ -48,13 +63,12 @@ async def test_sensors(hass: HomeAssistant) -> None:
|
|||
mock_vitals_second_update.handle_temp_c = -1.42
|
||||
mock_vitals_second_update.grid_v = 229.21
|
||||
mock_vitals_second_update.grid_hz = 49.981
|
||||
# (228.1*10) + (229.1*11) + (230.1*12) = 7562.3 W
|
||||
mock_vitals_second_update.voltageB_v = 228.1
|
||||
mock_vitals_second_update.voltageC_v = 229.1
|
||||
mock_vitals_second_update.voltageA_v = 230.1
|
||||
mock_vitals_second_update.currentA_a = 10
|
||||
mock_vitals_second_update.currentB_a = 11
|
||||
mock_vitals_second_update.currentC_a = 12
|
||||
mock_vitals_second_update.voltageA_v = 228.1
|
||||
mock_vitals_second_update.voltageB_v = 229.1
|
||||
mock_vitals_second_update.voltageC_v = 230
|
||||
mock_vitals_second_update.currentA_a = 7
|
||||
mock_vitals_second_update.currentB_a = 8
|
||||
mock_vitals_second_update.currentC_a = 9
|
||||
|
||||
lifetime_mock_first_update = get_lifetime_mock()
|
||||
lifetime_mock_first_update.energy_wh = 988022
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue