Adds new sensors and configuration entities to V2C Trydan (#122883)

* Adds new controls and sensors

* update snapshot

* Update homeassistant/components/v2c/strings.json

Co-authored-by: Charles Garwood <cgarwood@newdealmultimedia.com>

* Add unit

* move icons to icons.json

* update snapshot

* missing translation fix

---------

Co-authored-by: Charles Garwood <cgarwood@newdealmultimedia.com>
This commit is contained in:
Diogo Gomes 2024-07-31 11:31:35 +01:00 committed by GitHub
parent 233c04a469
commit 02d4d1a75b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 284 additions and 5 deletions

View file

@ -21,6 +21,15 @@
},
"battery_power": {
"default": "mdi:home-battery"
},
"ssid": {
"default": "mdi:wifi"
},
"ip_address": {
"default": "mdi:ip"
},
"signal_status": {
"default": "mdi:signal"
}
},
"switch": {

View file

@ -13,6 +13,7 @@ from homeassistant.components.number import (
NumberEntity,
NumberEntityDescription,
)
from homeassistant.const import EntityCategory, UnitOfElectricCurrent
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
@ -37,11 +38,34 @@ TRYDAN_NUMBER_SETTINGS = (
key="intensity",
translation_key="intensity",
device_class=NumberDeviceClass.CURRENT,
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
native_min_value=MIN_INTENSITY,
native_max_value=MAX_INTENSITY,
value_fn=lambda evse_data: evse_data.intensity,
update_fn=lambda evse, value: evse.intensity(value),
),
V2CSettingsNumberEntityDescription(
key="min_intensity",
translation_key="min_intensity",
device_class=NumberDeviceClass.CURRENT,
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
native_min_value=MIN_INTENSITY,
native_max_value=MAX_INTENSITY,
value_fn=lambda evse_data: evse_data.min_intensity,
update_fn=lambda evse, value: evse.min_intensity(value),
),
V2CSettingsNumberEntityDescription(
key="max_intensity",
translation_key="max_intensity",
device_class=NumberDeviceClass.CURRENT,
entity_category=EntityCategory.CONFIG,
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
native_min_value=MIN_INTENSITY,
native_max_value=MAX_INTENSITY,
value_fn=lambda evse_data: evse_data.max_intensity,
update_fn=lambda evse, value: evse.max_intensity(value),
),
)

View file

@ -15,7 +15,13 @@ from homeassistant.components.sensor import (
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.const import UnitOfEnergy, UnitOfPower, UnitOfTime
from homeassistant.const import (
EntityCategory,
UnitOfElectricPotential,
UnitOfEnergy,
UnitOfPower,
UnitOfTime,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
@ -45,12 +51,20 @@ TRYDAN_SENSORS = (
V2CSensorEntityDescription(
key="charge_power",
translation_key="charge_power",
icon="mdi:ev-station",
native_unit_of_measurement=UnitOfPower.WATT,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER,
value_fn=lambda evse_data: evse_data.charge_power,
),
V2CSensorEntityDescription(
key="voltage_installation",
translation_key="voltage_installation",
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.VOLTAGE,
value_fn=lambda evse_data: evse_data.voltage_installation,
entity_registry_enabled_default=False,
),
V2CSensorEntityDescription(
key="charge_energy",
translation_key="charge_energy",
@ -86,6 +100,7 @@ TRYDAN_SENSORS = (
V2CSensorEntityDescription(
key="meter_error",
translation_key="meter_error",
entity_category=EntityCategory.DIAGNOSTIC,
value_fn=lambda evse_data: get_meter_value(evse_data.slave_error),
entity_registry_enabled_default=False,
device_class=SensorDeviceClass.ENUM,
@ -100,6 +115,28 @@ TRYDAN_SENSORS = (
value_fn=lambda evse_data: evse_data.battery_power,
entity_registry_enabled_default=False,
),
V2CSensorEntityDescription(
key="ssid",
translation_key="ssid",
entity_category=EntityCategory.DIAGNOSTIC,
value_fn=lambda evse_data: evse_data.SSID,
entity_registry_enabled_default=False,
),
V2CSensorEntityDescription(
key="ip_address",
translation_key="ip_address",
entity_category=EntityCategory.DIAGNOSTIC,
value_fn=lambda evse_data: evse_data.IP,
entity_registry_enabled_default=False,
),
V2CSensorEntityDescription(
key="signal_status",
translation_key="signal_status",
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
value_fn=lambda evse_data: evse_data.signal_status,
entity_registry_enabled_default=False,
),
)

View file

@ -33,12 +33,21 @@
"number": {
"intensity": {
"name": "Intensity"
},
"max_intensity": {
"name": "Max intensity"
},
"min_intensity": {
"name": "Min intensity"
}
},
"sensor": {
"charge_power": {
"name": "Charge power"
},
"voltage_installation": {
"name": "Installation voltage"
},
"charge_energy": {
"name": "Charge energy"
},
@ -93,6 +102,15 @@
"empty_message": "Empty message",
"undefined_error": "Undefined error"
}
},
"ssid": {
"name": "SSID"
},
"ip_address": {
"name": "IP address"
},
"signal_status": {
"name": "Signal status"
}
},
"switch": {

View file

@ -126,7 +126,7 @@
'options': dict({
}),
'original_device_class': <SensorDeviceClass.POWER: 'power'>,
'original_icon': 'mdi:ev-station',
'original_icon': None,
'original_name': 'Charge power',
'platform': 'v2c',
'previous_unique_id': None,
@ -141,7 +141,6 @@
'attributes': ReadOnlyDict({
'device_class': 'power',
'friendly_name': 'EVSE 1.1.1.1 Charge power',
'icon': 'mdi:ev-station',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfPower.WATT: 'W'>,
}),
@ -255,6 +254,103 @@
'state': '0.0',
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_installation_voltage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_id': 'sensor.evse_1_1_1_1_installation_voltage',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.VOLTAGE: 'voltage'>,
'original_icon': None,
'original_name': 'Installation voltage',
'platform': 'v2c',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'voltage_installation',
'unique_id': 'da58ee91f38c2406c2a36d0a1a7f8569_voltage_installation',
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_installation_voltage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'voltage',
'friendly_name': 'EVSE 1.1.1.1 Installation voltage',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
}),
'context': <ANY>,
'entity_id': 'sensor.evse_1_1_1_1_installation_voltage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_ip_address-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.evse_1_1_1_1_ip_address',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'IP address',
'platform': 'v2c',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'ip_address',
'unique_id': 'da58ee91f38c2406c2a36d0a1a7f8569_ip_address',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_ip_address-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'EVSE 1.1.1.1 IP address',
}),
'context': <ANY>,
'entity_id': 'sensor.evse_1_1_1_1_ip_address',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_meter_error-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
@ -304,7 +400,7 @@
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': None,
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.evse_1_1_1_1_meter_error',
'has_entity_name': True,
'hidden_by': None,
@ -428,3 +524,98 @@
'state': '0.0',
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_signal_status-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.evse_1_1_1_1_signal_status',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Signal status',
'platform': 'v2c',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'signal_status',
'unique_id': 'da58ee91f38c2406c2a36d0a1a7f8569_signal_status',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_signal_status-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'EVSE 1.1.1.1 Signal status',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'context': <ANY>,
'entity_id': 'sensor.evse_1_1_1_1_signal_status',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_ssid-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': None,
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.evse_1_1_1_1_ssid',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'SSID',
'platform': 'v2c',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'ssid',
'unique_id': 'da58ee91f38c2406c2a36d0a1a7f8569_ssid',
'unit_of_measurement': None,
})
# ---
# name: test_sensor[sensor.evse_1_1_1_1_ssid-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'EVSE 1.1.1.1 SSID',
}),
'context': <ANY>,
'entity_id': 'sensor.evse_1_1_1_1_ssid',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'unknown',
})
# ---