Add new electrical unit constants (mV + mA) (#53158)

This commit is contained in:
Marc Mueller 2021-07-20 15:57:11 +02:00 committed by GitHub
parent 08f03c95d2
commit c578541a82
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 34 additions and 23 deletions

View file

@ -6,6 +6,7 @@ from homeassistant.const import (
AREA_SQUARE_METERS, AREA_SQUARE_METERS,
CONF_MONITORED_CONDITIONS, CONF_MONITORED_CONDITIONS,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
ELECTRIC_POTENTIAL_MILLIVOLT,
PERCENTAGE, PERCENTAGE,
PRESSURE_INHG, PRESSURE_INHG,
PRESSURE_MBAR, PRESSURE_MBAR,
@ -32,7 +33,7 @@ SENSOR_UNITS_IMPERIAL = {
"Humidity": PERCENTAGE, "Humidity": PERCENTAGE,
"Pressure": PRESSURE_INHG, "Pressure": PRESSURE_INHG,
"Luminance": f"cd/{AREA_SQUARE_METERS}", "Luminance": f"cd/{AREA_SQUARE_METERS}",
"Voltage": "mV", "Voltage": ELECTRIC_POTENTIAL_MILLIVOLT,
} }
# Metric units # Metric units
@ -41,7 +42,7 @@ SENSOR_UNITS_METRIC = {
"Humidity": PERCENTAGE, "Humidity": PERCENTAGE,
"Pressure": PRESSURE_MBAR, "Pressure": PRESSURE_MBAR,
"Luminance": f"cd/{AREA_SQUARE_METERS}", "Luminance": f"cd/{AREA_SQUARE_METERS}",
"Voltage": "mV", "Voltage": ELECTRIC_POTENTIAL_MILLIVOLT,
} }
# Device class # Device class

View file

@ -8,6 +8,7 @@ from homeassistant.const import (
DEVICE_CLASS_ILLUMINANCE, DEVICE_CLASS_ILLUMINANCE,
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
ELECTRIC_CURRENT_MILLIAMPERE,
ENERGY_WATT_HOUR, ENERGY_WATT_HOUR,
FREQUENCY_HERTZ, FREQUENCY_HERTZ,
LENGTH_MILLIMETERS, LENGTH_MILLIMETERS,
@ -47,7 +48,7 @@ HM_UNIT_HA_CAST = {
"ACTUAL_TEMPERATURE": TEMP_CELSIUS, "ACTUAL_TEMPERATURE": TEMP_CELSIUS,
"BRIGHTNESS": "#", "BRIGHTNESS": "#",
"POWER": POWER_WATT, "POWER": POWER_WATT,
"CURRENT": "mA", "CURRENT": ELECTRIC_CURRENT_MILLIAMPERE,
"VOLTAGE": VOLT, "VOLTAGE": VOLT,
"ENERGY_COUNTER": ENERGY_WATT_HOUR, "ENERGY_COUNTER": ENERGY_WATT_HOUR,
"GAS_POWER": VOLUME_CUBIC_METERS, "GAS_POWER": VOLUME_CUBIC_METERS,

View file

@ -48,6 +48,8 @@ from homeassistant.const import (
CURRENCY_CENT, CURRENCY_CENT,
CURRENCY_DOLLAR, CURRENCY_DOLLAR,
DEGREE, DEGREE,
ELECTRIC_CURRENT_MILLIAMPERE,
ELECTRIC_POTENTIAL_MILLIVOLT,
ENERGY_KILO_WATT_HOUR, ENERGY_KILO_WATT_HOUR,
ENERGY_WATT_HOUR, ENERGY_WATT_HOUR,
FREQUENCY_HERTZ, FREQUENCY_HERTZ,
@ -371,9 +373,9 @@ UOM_FRIENDLY_NAME = {
"38": LENGTH_METERS, "38": LENGTH_METERS,
"39": VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR, "39": VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
"40": SPEED_METERS_PER_SECOND, "40": SPEED_METERS_PER_SECOND,
"41": "mA", "41": ELECTRIC_CURRENT_MILLIAMPERE,
"42": TIME_MILLISECONDS, "42": TIME_MILLISECONDS,
"43": "mV", "43": ELECTRIC_POTENTIAL_MILLIVOLT,
"44": TIME_MINUTES, "44": TIME_MINUTES,
"45": TIME_MINUTES, "45": TIME_MINUTES,
"46": PRECIPITATION_MILLIMETERS_PER_HOUR, "46": PRECIPITATION_MILLIMETERS_PER_HOUR,

View file

@ -11,6 +11,7 @@ from homeassistant.const import (
DEGREE, DEGREE,
DEVICE_CLASS_HUMIDITY, DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
ELECTRIC_POTENTIAL_MILLIVOLT,
ELECTRICAL_CURRENT_AMPERE, ELECTRICAL_CURRENT_AMPERE,
ELECTRICAL_VOLT_AMPERE, ELECTRICAL_VOLT_AMPERE,
ENERGY_KILO_WATT_HOUR, ENERGY_KILO_WATT_HOUR,
@ -61,7 +62,7 @@ SENSORS: dict[str, list[str | None] | dict[str, list[str | None]]] = {
"V_VOLTAGE": [VOLT, "mdi:flash", None], "V_VOLTAGE": [VOLT, "mdi:flash", None],
"V_CURRENT": [ELECTRICAL_CURRENT_AMPERE, "mdi:flash-auto", None], "V_CURRENT": [ELECTRICAL_CURRENT_AMPERE, "mdi:flash-auto", None],
"V_PH": ["pH", None, None], "V_PH": ["pH", None, None],
"V_ORP": ["mV", None, None], "V_ORP": [ELECTRIC_POTENTIAL_MILLIVOLT, None, None],
"V_EC": [CONDUCTIVITY, None, None], "V_EC": [CONDUCTIVITY, None, None],
"V_VAR": ["var", None, None], "V_VAR": ["var", None, None],
"V_VA": [ELECTRICAL_VOLT_AMPERE, None, None], "V_VA": [ELECTRICAL_VOLT_AMPERE, None, None],

View file

@ -2,6 +2,7 @@
from homeassistant.components.sensor import DEVICE_CLASS_TEMPERATURE, SensorEntity from homeassistant.components.sensor import DEVICE_CLASS_TEMPERATURE, SensorEntity
from homeassistant.const import ( from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
ELECTRIC_POTENTIAL_MILLIVOLT,
MASS_GRAMS, MASS_GRAMS,
PERCENTAGE, PERCENTAGE,
TEMP_CELSIUS, TEMP_CELSIUS,
@ -342,7 +343,7 @@ SENSOR_TYPES = {
"kind": "csad_orp", "kind": "csad_orp",
"device_class": None, "device_class": None,
"icon": "mdi:gauge", "icon": "mdi:gauge",
"unit": "mV", "unit": ELECTRIC_POTENTIAL_MILLIVOLT,
"guard_condition": [ "guard_condition": [
{"orp": ""}, {"orp": ""},
], ],

View file

@ -10,6 +10,7 @@ from homeassistant.const import (
DEVICE_CLASS_BATTERY, DEVICE_CLASS_BATTERY,
DEVICE_CLASS_SIGNAL_STRENGTH, DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
ELECTRIC_POTENTIAL_MILLIVOLT,
PERCENTAGE, PERCENTAGE,
TEMP_CELSIUS, TEMP_CELSIUS,
) )
@ -28,7 +29,12 @@ SENSOR_TYPES = {
None, None,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
], ],
"orp": ["Oxydo Reduction Potential", "mV", "mdi:pool", None], "orp": [
"Oxydo Reduction Potential",
ELECTRIC_POTENTIAL_MILLIVOLT,
"mdi:pool",
None,
],
"ph": ["pH", "", "mdi:pool", None], "ph": ["pH", "", "mdi:pool", None],
"tds": ["TDS", CONCENTRATION_PARTS_PER_MILLION, "mdi:pool", None], "tds": ["TDS", CONCENTRATION_PARTS_PER_MILLION, "mdi:pool", None],
"battery": ["Battery", PERCENTAGE, None, DEVICE_CLASS_BATTERY], "battery": ["Battery", PERCENTAGE, None, DEVICE_CLASS_BATTERY],

View file

@ -6,6 +6,7 @@ from homeassistant.const import (
DEVICE_CLASS_BATTERY, DEVICE_CLASS_BATTERY,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_TIMESTAMP, DEVICE_CLASS_TIMESTAMP,
ELECTRIC_POTENTIAL_MILLIVOLT,
PERCENTAGE, PERCENTAGE,
TEMP_CELSIUS, TEMP_CELSIUS,
) )
@ -15,7 +16,7 @@ from .const import ATTRIBUTION, DOMAIN
SENSORS = { SENSORS = {
"Chlorine": { "Chlorine": {
"unit": "mV", "unit": ELECTRIC_POTENTIAL_MILLIVOLT,
"icon": "mdi:pool", "icon": "mdi:pool",
"name": "Chlorine", "name": "Chlorine",
"device_class": None, "device_class": None,
@ -40,13 +41,13 @@ SENSORS = {
"device_class": DEVICE_CLASS_TIMESTAMP, "device_class": DEVICE_CLASS_TIMESTAMP,
}, },
"Chlorine High": { "Chlorine High": {
"unit": "mV", "unit": ELECTRIC_POTENTIAL_MILLIVOLT,
"icon": "mdi:pool", "icon": "mdi:pool",
"name": "Chlorine High", "name": "Chlorine High",
"device_class": None, "device_class": None,
}, },
"Chlorine Low": { "Chlorine Low": {
"unit": "mV", "unit": ELECTRIC_POTENTIAL_MILLIVOLT,
"icon": "mdi:pool", "icon": "mdi:pool",
"name": "Chlorine Low", "name": "Chlorine Low",
"device_class": None, "device_class": None,

View file

@ -30,9 +30,6 @@ ATTR_SPEED = "speed"
ATTR_TARGET_BRIGHTNESS = "target_brightness" ATTR_TARGET_BRIGHTNESS = "target_brightness"
ATTR_UDP_PORT = "udp_port" ATTR_UDP_PORT = "udp_port"
# Units of measurement
CURRENT_MA = "mA"
# Services # Services
SERVICE_EFFECT = "effect" SERVICE_EFFECT = "effect"
SERVICE_PRESET = "preset" SERVICE_PRESET = "preset"

View file

@ -10,6 +10,7 @@ from homeassistant.const import (
DATA_BYTES, DATA_BYTES,
DEVICE_CLASS_SIGNAL_STRENGTH, DEVICE_CLASS_SIGNAL_STRENGTH,
DEVICE_CLASS_TIMESTAMP, DEVICE_CLASS_TIMESTAMP,
ELECTRIC_CURRENT_MILLIAMPERE,
PERCENTAGE, PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT, SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
) )
@ -17,7 +18,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util.dt import utcnow from homeassistant.util.dt import utcnow
from .const import ATTR_LED_COUNT, ATTR_MAX_POWER, CURRENT_MA, DOMAIN from .const import ATTR_LED_COUNT, ATTR_MAX_POWER, DOMAIN
from .coordinator import WLEDDataUpdateCoordinator from .coordinator import WLEDDataUpdateCoordinator
from .models import WLEDEntity from .models import WLEDEntity
@ -47,7 +48,7 @@ class WLEDEstimatedCurrentSensor(WLEDEntity, SensorEntity):
"""Defines a WLED estimated current sensor.""" """Defines a WLED estimated current sensor."""
_attr_icon = "mdi:power" _attr_icon = "mdi:power"
_attr_unit_of_measurement = CURRENT_MA _attr_unit_of_measurement = ELECTRIC_CURRENT_MILLIAMPERE
_attr_device_class = DEVICE_CLASS_CURRENT _attr_device_class = DEVICE_CLASS_CURRENT
def __init__(self, coordinator: WLEDDataUpdateCoordinator) -> None: def __init__(self, coordinator: WLEDDataUpdateCoordinator) -> None:

View file

@ -407,8 +407,10 @@ ENERGY_WATT_HOUR: Final = "Wh"
ENERGY_KILO_WATT_HOUR: Final = "kWh" ENERGY_KILO_WATT_HOUR: Final = "kWh"
# Electrical units # Electrical units
ELECTRIC_CURRENT_MILLIAMPERE: Final = "mA"
ELECTRICAL_CURRENT_AMPERE: Final = "A" ELECTRICAL_CURRENT_AMPERE: Final = "A"
ELECTRICAL_VOLT_AMPERE: Final = "VA" ELECTRICAL_VOLT_AMPERE: Final = "VA"
ELECTRIC_POTENTIAL_MILLIVOLT: Final = "mV"
# Degree units # Degree units
DEGREE: Final = "°" DEGREE: Final = "°"

View file

@ -10,17 +10,13 @@ from homeassistant.components.sensor import (
DEVICE_CLASS_TIMESTAMP, DEVICE_CLASS_TIMESTAMP,
DOMAIN as SENSOR_DOMAIN, DOMAIN as SENSOR_DOMAIN,
) )
from homeassistant.components.wled.const import ( from homeassistant.components.wled.const import ATTR_LED_COUNT, ATTR_MAX_POWER, DOMAIN
ATTR_LED_COUNT,
ATTR_MAX_POWER,
CURRENT_MA,
DOMAIN,
)
from homeassistant.const import ( from homeassistant.const import (
ATTR_DEVICE_CLASS, ATTR_DEVICE_CLASS,
ATTR_ICON, ATTR_ICON,
ATTR_UNIT_OF_MEASUREMENT, ATTR_UNIT_OF_MEASUREMENT,
DATA_BYTES, DATA_BYTES,
ELECTRIC_CURRENT_MILLIAMPERE,
PERCENTAGE, PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT, SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
STATE_UNKNOWN, STATE_UNKNOWN,
@ -101,7 +97,9 @@ async def test_sensors(
assert state.attributes.get(ATTR_ICON) == "mdi:power" assert state.attributes.get(ATTR_ICON) == "mdi:power"
assert state.attributes.get(ATTR_LED_COUNT) == 30 assert state.attributes.get(ATTR_LED_COUNT) == 30
assert state.attributes.get(ATTR_MAX_POWER) == 850 assert state.attributes.get(ATTR_MAX_POWER) == 850
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == CURRENT_MA assert (
state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == ELECTRIC_CURRENT_MILLIAMPERE
)
assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_CURRENT assert state.attributes.get(ATTR_DEVICE_CLASS) == DEVICE_CLASS_CURRENT
assert state.state == "470" assert state.state == "470"