mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
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
@ -10,14 +10,13 @@ from homeassistant.components.sensor import (
|
|||||||
)
|
)
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
DEVICE_CLASS_ENERGY,
|
DEVICE_CLASS_ENERGY,
|
||||||
DEVICE_CLASS_POWER,
|
|
||||||
DEVICE_CLASS_TEMPERATURE,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
DEVICE_CLASS_VOLTAGE,
|
DEVICE_CLASS_VOLTAGE,
|
||||||
|
ELECTRIC_CURRENT_AMPERE,
|
||||||
ELECTRIC_POTENTIAL_VOLT,
|
ELECTRIC_POTENTIAL_VOLT,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
ENTITY_CATEGORY_DIAGNOSTIC,
|
ENTITY_CATEGORY_DIAGNOSTIC,
|
||||||
FREQUENCY_HERTZ,
|
FREQUENCY_HERTZ,
|
||||||
POWER_KILO_WATT,
|
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -73,29 +72,52 @@ WALL_CONNECTOR_SENSORS = [
|
|||||||
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
|
||||||
),
|
),
|
||||||
WallConnectorSensorDescription(
|
WallConnectorSensorDescription(
|
||||||
key="power",
|
key="current_a_a",
|
||||||
name=prefix_entity_name("Power"),
|
name=prefix_entity_name("Phase A Current"),
|
||||||
native_unit_of_measurement=POWER_KILO_WATT,
|
native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE,
|
||||||
value_fn=lambda data: round(
|
value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].currentA_a,
|
||||||
(
|
|
||||||
(
|
|
||||||
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,
|
|
||||||
state_class=STATE_CLASS_MEASUREMENT,
|
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(
|
WallConnectorSensorDescription(
|
||||||
key="total_energy_kWh",
|
key="total_energy_kWh",
|
||||||
|
@ -23,10 +23,27 @@ async def test_sensors(hass: HomeAssistant) -> None:
|
|||||||
EntityAndExpectedValues(
|
EntityAndExpectedValues(
|
||||||
"sensor.tesla_wall_connector_grid_frequency", "50.021", "49.981"
|
"sensor.tesla_wall_connector_grid_frequency", "50.021", "49.981"
|
||||||
),
|
),
|
||||||
EntityAndExpectedValues("sensor.tesla_wall_connector_power", "7.6", "7.6"),
|
|
||||||
EntityAndExpectedValues(
|
EntityAndExpectedValues(
|
||||||
"sensor.tesla_wall_connector_total_energy", "988.022", "989.0"
|
"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()
|
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.handle_temp_c = 25.51
|
||||||
mock_vitals_first_update.grid_v = 230.15
|
mock_vitals_first_update.grid_v = 230.15
|
||||||
mock_vitals_first_update.grid_hz = 50.021
|
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.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.voltageC_v = 232.1
|
||||||
mock_vitals_first_update.currentA_a = 10
|
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_first_update.currentC_a = 12
|
||||||
|
|
||||||
mock_vitals_second_update = get_vitals_mock()
|
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.handle_temp_c = -1.42
|
||||||
mock_vitals_second_update.grid_v = 229.21
|
mock_vitals_second_update.grid_v = 229.21
|
||||||
mock_vitals_second_update.grid_hz = 49.981
|
mock_vitals_second_update.grid_hz = 49.981
|
||||||
# (228.1*10) + (229.1*11) + (230.1*12) = 7562.3 W
|
mock_vitals_second_update.voltageA_v = 228.1
|
||||||
mock_vitals_second_update.voltageB_v = 228.1
|
mock_vitals_second_update.voltageB_v = 229.1
|
||||||
mock_vitals_second_update.voltageC_v = 229.1
|
mock_vitals_second_update.voltageC_v = 230
|
||||||
mock_vitals_second_update.voltageA_v = 230.1
|
mock_vitals_second_update.currentA_a = 7
|
||||||
mock_vitals_second_update.currentA_a = 10
|
mock_vitals_second_update.currentB_a = 8
|
||||||
mock_vitals_second_update.currentB_a = 11
|
mock_vitals_second_update.currentC_a = 9
|
||||||
mock_vitals_second_update.currentC_a = 12
|
|
||||||
|
|
||||||
lifetime_mock_first_update = get_lifetime_mock()
|
lifetime_mock_first_update = get_lifetime_mock()
|
||||||
lifetime_mock_first_update.energy_wh = 988022
|
lifetime_mock_first_update.energy_wh = 988022
|
||||||
|
Loading…
x
Reference in New Issue
Block a user