1 """Sensors for Tesla Wall Connector."""
3 from dataclasses
import dataclass
9 SensorEntityDescription,
15 UnitOfElectricCurrent,
16 UnitOfElectricPotential,
24 from .
import WallConnectorData
25 from .const
import DOMAIN, WALLCONNECTOR_DATA_LIFETIME, WALLCONNECTOR_DATA_VITALS
26 from .entity
import WallConnectorEntity, WallConnectorLambdaValueGetterMixin
28 _LOGGER = logging.getLogger(__name__)
37 8:
"charging_finished",
39 10:
"charging_reduced",
44 @dataclass(frozen=True)
46 SensorEntityDescription, WallConnectorLambdaValueGetterMixin
48 """Sensor entity description with a function pointer for getting sensor value."""
51 WALL_CONNECTOR_SENSORS = [
54 translation_key=
"status_code",
55 entity_category=EntityCategory.DIAGNOSTIC,
56 value_fn=
lambda data: data[WALLCONNECTOR_DATA_VITALS].evse_state,
57 entity_registry_enabled_default=
False,
61 translation_key=
"status",
62 device_class=SensorDeviceClass.ENUM,
63 value_fn=
lambda data: EVSE_STATE.get(
64 data[WALLCONNECTOR_DATA_VITALS].evse_state
66 options=
list(EVSE_STATE.values()),
70 translation_key=
"handle_temp_c",
71 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
72 value_fn=
lambda data: round(data[WALLCONNECTOR_DATA_VITALS].handle_temp_c, 1),
73 device_class=SensorDeviceClass.TEMPERATURE,
74 entity_category=EntityCategory.DIAGNOSTIC,
75 state_class=SensorStateClass.MEASUREMENT,
79 translation_key=
"pcba_temp_c",
80 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
81 value_fn=
lambda data: round(data[WALLCONNECTOR_DATA_VITALS].pcba_temp_c, 1),
82 device_class=SensorDeviceClass.TEMPERATURE,
83 entity_category=EntityCategory.DIAGNOSTIC,
84 state_class=SensorStateClass.MEASUREMENT,
88 translation_key=
"mcu_temp_c",
89 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
90 value_fn=
lambda data: round(data[WALLCONNECTOR_DATA_VITALS].mcu_temp_c, 1),
91 device_class=SensorDeviceClass.TEMPERATURE,
92 entity_category=EntityCategory.DIAGNOSTIC,
93 state_class=SensorStateClass.MEASUREMENT,
97 translation_key=
"grid_v",
98 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
99 value_fn=
lambda data: round(data[WALLCONNECTOR_DATA_VITALS].grid_v, 1),
100 device_class=SensorDeviceClass.VOLTAGE,
101 state_class=SensorStateClass.MEASUREMENT,
102 entity_category=EntityCategory.DIAGNOSTIC,
106 translation_key=
"grid_hz",
107 native_unit_of_measurement=UnitOfFrequency.HERTZ,
108 value_fn=
lambda data: round(data[WALLCONNECTOR_DATA_VITALS].grid_hz, 3),
109 device_class=SensorDeviceClass.FREQUENCY,
110 state_class=SensorStateClass.MEASUREMENT,
111 entity_category=EntityCategory.DIAGNOSTIC,
115 translation_key=
"current_a_a",
116 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
117 value_fn=
lambda data: data[WALLCONNECTOR_DATA_VITALS].currentA_a,
118 device_class=SensorDeviceClass.CURRENT,
119 state_class=SensorStateClass.MEASUREMENT,
120 entity_category=EntityCategory.DIAGNOSTIC,
124 translation_key=
"current_b_a",
125 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
126 value_fn=
lambda data: data[WALLCONNECTOR_DATA_VITALS].currentB_a,
127 device_class=SensorDeviceClass.CURRENT,
128 state_class=SensorStateClass.MEASUREMENT,
129 entity_category=EntityCategory.DIAGNOSTIC,
133 translation_key=
"current_c_a",
134 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
135 value_fn=
lambda data: data[WALLCONNECTOR_DATA_VITALS].currentC_a,
136 device_class=SensorDeviceClass.CURRENT,
137 state_class=SensorStateClass.MEASUREMENT,
138 entity_category=EntityCategory.DIAGNOSTIC,
142 translation_key=
"voltage_a_v",
143 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
144 value_fn=
lambda data: data[WALLCONNECTOR_DATA_VITALS].voltageA_v,
145 device_class=SensorDeviceClass.VOLTAGE,
146 state_class=SensorStateClass.MEASUREMENT,
147 entity_category=EntityCategory.DIAGNOSTIC,
151 translation_key=
"voltage_b_v",
152 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
153 value_fn=
lambda data: data[WALLCONNECTOR_DATA_VITALS].voltageB_v,
154 device_class=SensorDeviceClass.VOLTAGE,
155 state_class=SensorStateClass.MEASUREMENT,
156 entity_category=EntityCategory.DIAGNOSTIC,
160 translation_key=
"voltage_c_v",
161 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
162 value_fn=
lambda data: data[WALLCONNECTOR_DATA_VITALS].voltageC_v,
163 device_class=SensorDeviceClass.VOLTAGE,
164 state_class=SensorStateClass.MEASUREMENT,
165 entity_category=EntityCategory.DIAGNOSTIC,
168 key=
"session_energy_wh",
169 translation_key=
"session_energy_wh",
170 native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
171 suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
172 value_fn=
lambda data: data[WALLCONNECTOR_DATA_VITALS].session_energy_wh,
173 device_class=SensorDeviceClass.ENERGY,
174 state_class=SensorStateClass.TOTAL_INCREASING,
178 native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
179 suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
180 value_fn=
lambda data: data[WALLCONNECTOR_DATA_LIFETIME].energy_wh,
181 device_class=SensorDeviceClass.ENERGY,
182 state_class=SensorStateClass.TOTAL_INCREASING,
189 config_entry: ConfigEntry,
190 async_add_entities: AddEntitiesCallback,
192 """Create the Wall Connector sensor devices."""
193 wall_connector_data = hass.data[DOMAIN][config_entry.entry_id]
197 for description
in WALL_CONNECTOR_SENSORS
204 """Wall Connector Sensor Entity."""
206 entity_description: WallConnectorSensorDescription
210 wall_connector_data: WallConnectorData,
211 description: WallConnectorSensorDescription,
213 """Initialize WallConnectorSensorEntity."""
215 super().
__init__(wall_connector_data)
219 """Return the state of the sensor."""
None __init__(self, WallConnectorData wall_connector_data, WallConnectorSensorDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)