Use strings instead of f-strings for constants (#40619)

This commit is contained in:
springstan 2020-11-09 10:09:53 +01:00 committed by GitHub
parent c8a940c59f
commit 30b94892c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 91 additions and 75 deletions

View File

@ -1,6 +1,7 @@
"""Constants for AccuWeather integration.""" """Constants for AccuWeather integration."""
from homeassistant.const import ( from homeassistant.const import (
ATTR_DEVICE_CLASS, ATTR_DEVICE_CLASS,
CONCENTRATION_PARTS_PER_CUBIC_METER,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
LENGTH_FEET, LENGTH_FEET,
LENGTH_INCHES, LENGTH_INCHES,
@ -13,7 +14,6 @@ from homeassistant.const import (
TEMP_FAHRENHEIT, TEMP_FAHRENHEIT,
TIME_HOURS, TIME_HOURS,
UV_INDEX, UV_INDEX,
VOLUME_CUBIC_METERS,
) )
ATTRIBUTION = "Data provided by AccuWeather" ATTRIBUTION = "Data provided by AccuWeather"
@ -22,7 +22,6 @@ ATTR_FORECAST = CONF_FORECAST = "forecast"
ATTR_LABEL = "label" ATTR_LABEL = "label"
ATTR_UNIT_IMPERIAL = "Imperial" ATTR_UNIT_IMPERIAL = "Imperial"
ATTR_UNIT_METRIC = "Metric" ATTR_UNIT_METRIC = "Metric"
CONCENTRATION_PARTS_PER_CUBIC_METER = f"p/{VOLUME_CUBIC_METERS}"
COORDINATOR = "coordinator" COORDINATOR = "coordinator"
DOMAIN = "accuweather" DOMAIN = "accuweather"
MANUFACTURER = "AccuWeather, Inc." MANUFACTURER = "AccuWeather, Inc."

View File

@ -9,7 +9,6 @@ import voluptuous as vol
from homeassistant.components.binary_sensor import DEVICE_CLASS_CONNECTIVITY from homeassistant.components.binary_sensor import DEVICE_CLASS_CONNECTIVITY
from homeassistant.config_entries import SOURCE_IMPORT from homeassistant.config_entries import SOURCE_IMPORT
from homeassistant.const import ( from homeassistant.const import (
AREA_SQUARE_METERS,
ATTR_LOCATION, ATTR_LOCATION,
ATTR_NAME, ATTR_NAME,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
@ -17,9 +16,9 @@ from homeassistant.const import (
CONF_API_KEY, CONF_API_KEY,
DEGREE, DEGREE,
EVENT_HOMEASSISTANT_STOP, EVENT_HOMEASSISTANT_STOP,
IRRADIATION_WATTS_PER_SQUARE_METER,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
POWER_WATT,
PRESSURE_INHG, PRESSURE_INHG,
SPEED_MILES_PER_HOUR, SPEED_MILES_PER_HOUR,
TEMP_FAHRENHEIT, TEMP_FAHRENHEIT,
@ -211,7 +210,7 @@ SENSOR_TYPES = {
TYPE_SOILTEMP9F: ("Soil Temp 9", TEMP_FAHRENHEIT, TYPE_SENSOR, "temperature"), TYPE_SOILTEMP9F: ("Soil Temp 9", TEMP_FAHRENHEIT, TYPE_SENSOR, "temperature"),
TYPE_SOLARRADIATION: ( TYPE_SOLARRADIATION: (
"Solar Rad", "Solar Rad",
f"{POWER_WATT}/{AREA_SQUARE_METERS}", IRRADIATION_WATTS_PER_SQUARE_METER,
TYPE_SENSOR, TYPE_SENSOR,
None, None,
), ),

View File

@ -32,10 +32,10 @@ from homeassistant.const import (
LENGTH_KILOMETERS, LENGTH_KILOMETERS,
LENGTH_MILLIMETERS, LENGTH_MILLIMETERS,
PERCENTAGE, PERCENTAGE,
PRECIPITATION_MILLIMETERS_PER_HOUR,
PRESSURE_HPA, PRESSURE_HPA,
SPEED_KILOMETERS_PER_HOUR, SPEED_KILOMETERS_PER_HOUR,
TEMP_CELSIUS, TEMP_CELSIUS,
TIME_HOURS,
) )
from homeassistant.core import callback from homeassistant.core import callback
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
@ -85,13 +85,13 @@ SENSOR_TYPES = {
"windgust": ["Wind gust", SPEED_KILOMETERS_PER_HOUR, "mdi:weather-windy"], "windgust": ["Wind gust", SPEED_KILOMETERS_PER_HOUR, "mdi:weather-windy"],
"precipitation": [ "precipitation": [
"Precipitation", "Precipitation",
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
"mdi:weather-pouring", "mdi:weather-pouring",
], ],
"irradiance": ["Irradiance", IRRADIATION_WATTS_PER_SQUARE_METER, "mdi:sunglasses"], "irradiance": ["Irradiance", IRRADIATION_WATTS_PER_SQUARE_METER, "mdi:sunglasses"],
"precipitation_forecast_average": [ "precipitation_forecast_average": [
"Precipitation forecast average", "Precipitation forecast average",
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
"mdi:weather-pouring", "mdi:weather-pouring",
], ],
"precipitation_forecast_total": [ "precipitation_forecast_total": [

View File

@ -33,8 +33,7 @@ from homeassistant.const import (
POWER_WATT, POWER_WATT,
TEMP_CELSIUS, TEMP_CELSIUS,
TIME_DAYS, TIME_DAYS,
TIME_HOURS, VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
VOLUME_CUBIC_METERS,
) )
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
@ -160,14 +159,14 @@ SENSOR_TYPES = {
ATTR_AIR_FLOW_SUPPLY: { ATTR_AIR_FLOW_SUPPLY: {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_LABEL: "Supply airflow", ATTR_LABEL: "Supply airflow",
ATTR_UNIT: f"{VOLUME_CUBIC_METERS}/{TIME_HOURS}", ATTR_UNIT: VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
ATTR_ICON: "mdi:fan", ATTR_ICON: "mdi:fan",
ATTR_ID: SENSOR_FAN_SUPPLY_FLOW, ATTR_ID: SENSOR_FAN_SUPPLY_FLOW,
}, },
ATTR_AIR_FLOW_EXHAUST: { ATTR_AIR_FLOW_EXHAUST: {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
ATTR_LABEL: "Exhaust airflow", ATTR_LABEL: "Exhaust airflow",
ATTR_UNIT: f"{VOLUME_CUBIC_METERS}/{TIME_HOURS}", ATTR_UNIT: VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
ATTR_ICON: "mdi:fan", ATTR_ICON: "mdi:fan",
ATTR_ID: SENSOR_FAN_EXHAUST_FLOW, ATTR_ID: SENSOR_FAN_EXHAUST_FLOW,
}, },

View File

@ -18,15 +18,14 @@ from homeassistant.const import (
DEGREE, DEGREE,
LENGTH_CENTIMETERS, LENGTH_CENTIMETERS,
LENGTH_KILOMETERS, LENGTH_KILOMETERS,
LENGTH_MILLIMETERS,
PERCENTAGE, PERCENTAGE,
PRECIPITATION_MILLIMETERS_PER_HOUR,
PRESSURE_MBAR, PRESSURE_MBAR,
SPEED_KILOMETERS_PER_HOUR, SPEED_KILOMETERS_PER_HOUR,
SPEED_METERS_PER_SECOND, SPEED_METERS_PER_SECOND,
SPEED_MILES_PER_HOUR, SPEED_MILES_PER_HOUR,
TEMP_CELSIUS, TEMP_CELSIUS,
TEMP_FAHRENHEIT, TEMP_FAHRENHEIT,
TIME_HOURS,
UV_INDEX, UV_INDEX,
) )
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
@ -111,11 +110,11 @@ SENSOR_TYPES = {
], ],
"precip_intensity": [ "precip_intensity": [
"Precip Intensity", "Precip Intensity",
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
"in", "in",
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
"mdi:weather-rainy", "mdi:weather-rainy",
["currently", "minutely", "hourly", "daily"], ["currently", "minutely", "hourly", "daily"],
], ],
@ -331,11 +330,11 @@ SENSOR_TYPES = {
], ],
"precip_intensity_max": [ "precip_intensity_max": [
"Daily Max Precip Intensity", "Daily Max Precip Intensity",
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
"in", "in",
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
"mdi:thermometer", "mdi:thermometer",
["daily"], ["daily"],
], ],

View File

@ -44,13 +44,14 @@ from homeassistant.components.lock import DOMAIN as LOCK
from homeassistant.components.sensor import DOMAIN as SENSOR from homeassistant.components.sensor import DOMAIN as SENSOR
from homeassistant.components.switch import DOMAIN as SWITCH from homeassistant.components.switch import DOMAIN as SWITCH
from homeassistant.const import ( from homeassistant.const import (
AREA_SQUARE_METERS,
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
CURRENCY_CENT, CURRENCY_CENT,
CURRENCY_DOLLAR, CURRENCY_DOLLAR,
DEGREE, DEGREE,
ENERGY_KILO_WATT_HOUR, ENERGY_KILO_WATT_HOUR,
ENERGY_WATT_HOUR,
FREQUENCY_HERTZ, FREQUENCY_HERTZ,
IRRADIATION_WATTS_PER_SQUARE_METER,
LENGTH_CENTIMETERS, LENGTH_CENTIMETERS,
LENGTH_FEET, LENGTH_FEET,
LENGTH_INCHES, LENGTH_INCHES,
@ -62,15 +63,20 @@ from homeassistant.const import (
MASS_KILOGRAMS, MASS_KILOGRAMS,
MASS_POUNDS, MASS_POUNDS,
PERCENTAGE, PERCENTAGE,
POWER_KILO_WATT,
POWER_WATT, POWER_WATT,
PRECIPITATION_MILLIMETERS_PER_HOUR,
PRESSURE_HPA, PRESSURE_HPA,
PRESSURE_INHG, PRESSURE_INHG,
PRESSURE_MBAR, PRESSURE_MBAR,
SERVICE_LOCK, SERVICE_LOCK,
SERVICE_UNLOCK, SERVICE_UNLOCK,
SPEED_INCHES_PER_DAY,
SPEED_INCHES_PER_HOUR,
SPEED_KILOMETERS_PER_HOUR, SPEED_KILOMETERS_PER_HOUR,
SPEED_METERS_PER_SECOND, SPEED_METERS_PER_SECOND,
SPEED_MILES_PER_HOUR, SPEED_MILES_PER_HOUR,
SPEED_MILLIMETERS_PER_DAY,
STATE_CLOSED, STATE_CLOSED,
STATE_CLOSING, STATE_CLOSING,
STATE_LOCKED, STATE_LOCKED,
@ -95,6 +101,8 @@ from homeassistant.const import (
VOLT, VOLT,
VOLUME_CUBIC_FEET, VOLUME_CUBIC_FEET,
VOLUME_CUBIC_METERS, VOLUME_CUBIC_METERS,
VOLUME_FLOW_RATE_CUBIC_FEET_PER_MINUTE,
VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
VOLUME_GALLONS, VOLUME_GALLONS,
VOLUME_LITERS, VOLUME_LITERS,
) )
@ -328,8 +336,8 @@ UOM_FRIENDLY_NAME = {
"4": TEMP_CELSIUS, "4": TEMP_CELSIUS,
"5": LENGTH_CENTIMETERS, "5": LENGTH_CENTIMETERS,
"6": VOLUME_CUBIC_FEET, "6": VOLUME_CUBIC_FEET,
"7": f"{VOLUME_CUBIC_FEET}/{TIME_MINUTES}", "7": VOLUME_FLOW_RATE_CUBIC_FEET_PER_MINUTE,
"8": f"{VOLUME_CUBIC_METERS}", "8": VOLUME_CUBIC_METERS,
"9": TIME_DAYS, "9": TIME_DAYS,
"10": TIME_DAYS, "10": TIME_DAYS,
"12": "dB", "12": "dB",
@ -343,13 +351,13 @@ UOM_FRIENDLY_NAME = {
"21": "%AH", "21": "%AH",
"22": "%RH", "22": "%RH",
"23": PRESSURE_INHG, "23": PRESSURE_INHG,
"24": f"{LENGTH_INCHES}/{TIME_HOURS}", "24": SPEED_INCHES_PER_HOUR,
UOM_INDEX: "index", # Index type. Use "node.formatted" for value UOM_INDEX: "index", # Index type. Use "node.formatted" for value
"26": TEMP_KELVIN, "26": TEMP_KELVIN,
"27": "keyword", "27": "keyword",
"28": MASS_KILOGRAMS, "28": MASS_KILOGRAMS,
"29": "kV", "29": "kV",
"30": "kW", "30": POWER_KILO_WATT,
"31": "kPa", "31": "kPa",
"32": SPEED_KILOMETERS_PER_HOUR, "32": SPEED_KILOMETERS_PER_HOUR,
"33": ENERGY_KILO_WATT_HOUR, "33": ENERGY_KILO_WATT_HOUR,
@ -358,14 +366,14 @@ UOM_FRIENDLY_NAME = {
"36": LIGHT_LUX, "36": LIGHT_LUX,
"37": "mercalli", "37": "mercalli",
"38": LENGTH_METERS, "38": LENGTH_METERS,
"39": f"{VOLUME_CUBIC_METERS}/{TIME_HOURS}", "39": VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
"40": SPEED_METERS_PER_SECOND, "40": SPEED_METERS_PER_SECOND,
"41": "mA", "41": "mA",
"42": TIME_MILLISECONDS, "42": TIME_MILLISECONDS,
"43": "mV", "43": "mV",
"44": TIME_MINUTES, "44": TIME_MINUTES,
"45": TIME_MINUTES, "45": TIME_MINUTES,
"46": f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", "46": PRECIPITATION_MILLIMETERS_PER_HOUR,
"47": TIME_MONTHS, "47": TIME_MONTHS,
"48": SPEED_MILES_PER_HOUR, "48": SPEED_MILES_PER_HOUR,
"49": SPEED_METERS_PER_SECOND, "49": SPEED_METERS_PER_SECOND,
@ -388,7 +396,7 @@ UOM_FRIENDLY_NAME = {
"71": UV_INDEX, "71": UV_INDEX,
"72": VOLT, "72": VOLT,
"73": POWER_WATT, "73": POWER_WATT,
"74": f"{POWER_WATT}/{AREA_SQUARE_METERS}", "74": IRRADIATION_WATTS_PER_SQUARE_METER,
"75": "weekday", "75": "weekday",
"76": DEGREE, "76": DEGREE,
"77": TIME_YEARS, "77": TIME_YEARS,
@ -408,7 +416,7 @@ UOM_FRIENDLY_NAME = {
"103": CURRENCY_DOLLAR, "103": CURRENCY_DOLLAR,
"104": CURRENCY_CENT, "104": CURRENCY_CENT,
"105": LENGTH_INCHES, "105": LENGTH_INCHES,
"106": f"{LENGTH_MILLIMETERS}/{TIME_DAYS}", "106": SPEED_MILLIMETERS_PER_DAY,
"107": "", # raw 1-byte unsigned value "107": "", # raw 1-byte unsigned value
"108": "", # raw 2-byte unsigned value "108": "", # raw 2-byte unsigned value
"109": "", # raw 3-byte unsigned value "109": "", # raw 3-byte unsigned value
@ -420,8 +428,8 @@ UOM_FRIENDLY_NAME = {
"116": LENGTH_MILES, "116": LENGTH_MILES,
"117": PRESSURE_MBAR, "117": PRESSURE_MBAR,
"118": PRESSURE_HPA, "118": PRESSURE_HPA,
"119": f"{POWER_WATT}{TIME_HOURS}", "119": ENERGY_WATT_HOUR,
"120": f"{LENGTH_INCHES}/{TIME_DAYS}", "120": SPEED_INCHES_PER_DAY,
} }
UOM_TO_STATES = { UOM_TO_STATES = {

View File

@ -27,11 +27,11 @@ from homeassistant.const import (
LENGTH_MILLIMETERS, LENGTH_MILLIMETERS,
PERCENTAGE, PERCENTAGE,
POWER_WATT, POWER_WATT,
PRECIPITATION_MILLIMETERS_PER_HOUR,
PRESSURE_HPA, PRESSURE_HPA,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT, SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
SPEED_METERS_PER_SECOND, SPEED_METERS_PER_SECOND,
TEMP_CELSIUS, TEMP_CELSIUS,
TIME_HOURS,
UV_INDEX, UV_INDEX,
VOLT, VOLT,
) )
@ -70,7 +70,7 @@ DATA_TYPES = OrderedDict(
("Humidity", PERCENTAGE), ("Humidity", PERCENTAGE),
("Barometer", PRESSURE_HPA), ("Barometer", PRESSURE_HPA),
("Wind direction", DEGREE), ("Wind direction", DEGREE),
("Rain rate", f"{LENGTH_MILLIMETERS}/{TIME_HOURS}"), ("Rain rate", PRECIPITATION_MILLIMETERS_PER_HOUR),
("Energy usage", POWER_WATT), ("Energy usage", POWER_WATT),
("Total usage", ENERGY_KILO_WATT_HOUR), ("Total usage", ENERGY_KILO_WATT_HOUR),
("Sound", None), ("Sound", None),

View File

@ -8,9 +8,9 @@ from homeassistant.const import (
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
POWER_WATT, POWER_WATT,
PRECIPITATION_MILLIMETERS_PER_HOUR,
SPEED_METERS_PER_SECOND, SPEED_METERS_PER_SECOND,
TEMP_CELSIUS, TEMP_CELSIUS,
TIME_HOURS,
UV_INDEX, UV_INDEX,
) )
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
@ -40,7 +40,7 @@ SENSOR_TYPES = {
SENSOR_TYPE_HUMIDITY: ["Humidity", PERCENTAGE, None, DEVICE_CLASS_HUMIDITY], SENSOR_TYPE_HUMIDITY: ["Humidity", PERCENTAGE, None, DEVICE_CLASS_HUMIDITY],
SENSOR_TYPE_RAINRATE: [ SENSOR_TYPE_RAINRATE: [
"Rain rate", "Rain rate",
f"{LENGTH_MILLIMETERS}/{TIME_HOURS}", PRECIPITATION_MILLIMETERS_PER_HOUR,
"mdi:water", "mdi:water",
None, None,
], ],

View File

@ -5,8 +5,8 @@ from homeassistant.const import (
POWER_WATT, POWER_WATT,
TIME_HOURS, TIME_HOURS,
TIME_SECONDS, TIME_SECONDS,
VOLUME_CUBIC_FEET, VOLUME_FLOW_RATE_CUBIC_FEET_PER_MINUTE,
VOLUME_CUBIC_METERS, VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
) )
from homeassistant.core import callback from homeassistant.core import callback
@ -63,8 +63,8 @@ class Metering(ZigbeeChannel):
unit_of_measure_map = { unit_of_measure_map = {
0x00: POWER_WATT, 0x00: POWER_WATT,
0x01: f"{VOLUME_CUBIC_METERS}/{TIME_HOURS}", 0x01: VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
0x02: f"{VOLUME_CUBIC_FEET}/{TIME_HOURS}", 0x02: VOLUME_FLOW_RATE_CUBIC_FEET_PER_MINUTE,
0x03: f"ccf/{TIME_HOURS}", 0x03: f"ccf/{TIME_HOURS}",
0x04: f"US gal/{TIME_HOURS}", 0x04: f"US gal/{TIME_HOURS}",
0x05: f"IMP gal/{TIME_HOURS}", 0x05: f"IMP gal/{TIME_HOURS}",

View File

@ -370,18 +370,18 @@ ATTR_TEMPERATURE = "temperature"
# #### UNITS OF MEASUREMENT #### # #### UNITS OF MEASUREMENT ####
# Power units # Power units
POWER_WATT = "W" POWER_WATT = "W"
POWER_KILO_WATT = f"k{POWER_WATT}" POWER_KILO_WATT = "kW"
# Voltage units # Voltage units
VOLT = "V" VOLT = "V"
# Energy units # Energy units
ENERGY_WATT_HOUR = f"{POWER_WATT}h" ENERGY_WATT_HOUR = "Wh"
ENERGY_KILO_WATT_HOUR = f"k{ENERGY_WATT_HOUR}" ENERGY_KILO_WATT_HOUR = "kWh"
# Electrical units # Electrical units
ELECTRICAL_CURRENT_AMPERE = "A" ELECTRICAL_CURRENT_AMPERE = "A"
ELECTRICAL_VOLT_AMPERE = f"{VOLT}{ELECTRICAL_CURRENT_AMPERE}" ELECTRICAL_VOLT_AMPERE = "VA"
# Degree units # Degree units
DEGREE = "°" DEGREE = "°"
@ -392,8 +392,8 @@ CURRENCY_DOLLAR = "$"
CURRENCY_CENT = "¢" CURRENCY_CENT = "¢"
# Temperature units # Temperature units
TEMP_CELSIUS = f"{DEGREE}C" TEMP_CELSIUS = "°C"
TEMP_FAHRENHEIT = f"{DEGREE}F" TEMP_FAHRENHEIT = "°F"
TEMP_KELVIN = "K" TEMP_KELVIN = "K"
# Time units # Time units
@ -420,7 +420,7 @@ LENGTH_MILES: str = "mi"
# Frequency units # Frequency units
FREQUENCY_HERTZ = "Hz" FREQUENCY_HERTZ = "Hz"
FREQUENCY_GIGAHERTZ = f"G{FREQUENCY_HERTZ}" FREQUENCY_GIGAHERTZ = "GHz"
# Pressure units # Pressure units
PRESSURE_PA: str = "Pa" PRESSURE_PA: str = "Pa"
@ -433,14 +433,18 @@ PRESSURE_PSI: str = "psi"
# Volume units # Volume units
VOLUME_LITERS: str = "L" VOLUME_LITERS: str = "L"
VOLUME_MILLILITERS: str = "mL" VOLUME_MILLILITERS: str = "mL"
VOLUME_CUBIC_METERS = f"{LENGTH_METERS}³" VOLUME_CUBIC_METERS = "m³"
VOLUME_CUBIC_FEET = f"{LENGTH_FEET}³" VOLUME_CUBIC_FEET = "ft³"
VOLUME_GALLONS: str = "gal" VOLUME_GALLONS: str = "gal"
VOLUME_FLUID_OUNCE: str = "fl. oz." VOLUME_FLUID_OUNCE: str = "fl. oz."
# Volume Flow Rate units
VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR = "m³/h"
VOLUME_FLOW_RATE_CUBIC_FEET_PER_MINUTE = "ft³/m"
# Area units # Area units
AREA_SQUARE_METERS = f"{LENGTH_METERS}²" AREA_SQUARE_METERS = "m²"
# Mass units # Mass units
MASS_GRAMS: str = "g" MASS_GRAMS: str = "g"
@ -452,7 +456,7 @@ MASS_OUNCES: str = "oz"
MASS_POUNDS: str = "lb" MASS_POUNDS: str = "lb"
# Conductivity units # Conductivity units
CONDUCTIVITY: str = f"µS/{LENGTH_CENTIMETERS}" CONDUCTIVITY: str = "µS/cm"
# Light units # Light units
LIGHT_LUX: str = "lx" LIGHT_LUX: str = "lx"
@ -464,17 +468,24 @@ UV_INDEX: str = "UV index"
PERCENTAGE = "%" PERCENTAGE = "%"
# Irradiation units # Irradiation units
IRRADIATION_WATTS_PER_SQUARE_METER = f"{POWER_WATT}/{AREA_SQUARE_METERS}" IRRADIATION_WATTS_PER_SQUARE_METER = "W/m²"
# Precipitation units
PRECIPITATION_MILLIMETERS_PER_HOUR = "mm/h"
# Concentration units # Concentration units
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER = f"{MASS_MICROGRAMS}/{VOLUME_CUBIC_METERS}" CONCENTRATION_MICROGRAMS_PER_CUBIC_METER = "µg/m³"
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER = f"{MASS_MILLIGRAMS}/{VOLUME_CUBIC_METERS}" CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER = "mg/m³"
CONCENTRATION_PARTS_PER_CUBIC_METER = "p/m³"
CONCENTRATION_PARTS_PER_MILLION = "ppm" CONCENTRATION_PARTS_PER_MILLION = "ppm"
CONCENTRATION_PARTS_PER_BILLION = "ppb" CONCENTRATION_PARTS_PER_BILLION = "ppb"
# Speed units # Speed units
SPEED_METERS_PER_SECOND = f"{LENGTH_METERS}/{TIME_SECONDS}" SPEED_MILLIMETERS_PER_DAY = "mm/d"
SPEED_KILOMETERS_PER_HOUR = f"{LENGTH_KILOMETERS}/{TIME_HOURS}" SPEED_INCHES_PER_DAY = "in/d"
SPEED_METERS_PER_SECOND = "m/s"
SPEED_INCHES_PER_HOUR = "in/h"
SPEED_KILOMETERS_PER_HOUR = "km/h"
SPEED_MILES_PER_HOUR = "mph" SPEED_MILES_PER_HOUR = "mph"
# Signal_strength units # Signal_strength units
@ -503,17 +514,17 @@ DATA_PEBIBYTES = "PiB"
DATA_EXBIBYTES = "EiB" DATA_EXBIBYTES = "EiB"
DATA_ZEBIBYTES = "ZiB" DATA_ZEBIBYTES = "ZiB"
DATA_YOBIBYTES = "YiB" DATA_YOBIBYTES = "YiB"
DATA_RATE_BITS_PER_SECOND = f"{DATA_BITS}/{TIME_SECONDS}" DATA_RATE_BITS_PER_SECOND = "bit/s"
DATA_RATE_KILOBITS_PER_SECOND = f"{DATA_KILOBITS}/{TIME_SECONDS}" DATA_RATE_KILOBITS_PER_SECOND = "kbit/s"
DATA_RATE_MEGABITS_PER_SECOND = f"{DATA_MEGABITS}/{TIME_SECONDS}" DATA_RATE_MEGABITS_PER_SECOND = "Mbit/s"
DATA_RATE_GIGABITS_PER_SECOND = f"{DATA_GIGABITS}/{TIME_SECONDS}" DATA_RATE_GIGABITS_PER_SECOND = "Gbit/s"
DATA_RATE_BYTES_PER_SECOND = f"{DATA_BYTES}/{TIME_SECONDS}" DATA_RATE_BYTES_PER_SECOND = "B/s"
DATA_RATE_KILOBYTES_PER_SECOND = f"{DATA_KILOBYTES}/{TIME_SECONDS}" DATA_RATE_KILOBYTES_PER_SECOND = "kB/s"
DATA_RATE_MEGABYTES_PER_SECOND = f"{DATA_MEGABYTES}/{TIME_SECONDS}" DATA_RATE_MEGABYTES_PER_SECOND = "MB/s"
DATA_RATE_GIGABYTES_PER_SECOND = f"{DATA_GIGABYTES}/{TIME_SECONDS}" DATA_RATE_GIGABYTES_PER_SECOND = "GB/s"
DATA_RATE_KIBIBYTES_PER_SECOND = f"{DATA_KIBIBYTES}/{TIME_SECONDS}" DATA_RATE_KIBIBYTES_PER_SECOND = "KiB/s"
DATA_RATE_MEBIBYTES_PER_SECOND = f"{DATA_MEBIBYTES}/{TIME_SECONDS}" DATA_RATE_MEBIBYTES_PER_SECOND = "MiB/s"
DATA_RATE_GIBIBYTES_PER_SECOND = f"{DATA_GIBIBYTES}/{TIME_SECONDS}" DATA_RATE_GIBIBYTES_PER_SECOND = "GiB/s"
# #### SERVICES #### # #### SERVICES ####
SERVICE_HOMEASSISTANT_STOP = "stop" SERVICE_HOMEASSISTANT_STOP = "stop"

View File

@ -2,11 +2,7 @@
from datetime import timedelta from datetime import timedelta
import json import json
from homeassistant.components.accuweather.const import ( from homeassistant.components.accuweather.const import ATTRIBUTION, DOMAIN
ATTRIBUTION,
CONCENTRATION_PARTS_PER_CUBIC_METER,
DOMAIN,
)
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.const import ( from homeassistant.const import (
ATTR_ATTRIBUTION, ATTR_ATTRIBUTION,
@ -14,6 +10,7 @@ from homeassistant.const import (
ATTR_ENTITY_ID, ATTR_ENTITY_ID,
ATTR_ICON, ATTR_ICON,
ATTR_UNIT_OF_MEASUREMENT, ATTR_UNIT_OF_MEASUREMENT,
CONCENTRATION_PARTS_PER_CUBIC_METER,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
LENGTH_METERS, LENGTH_METERS,
LENGTH_MILLIMETERS, LENGTH_MILLIMETERS,

View File

@ -13,7 +13,11 @@ from itertools import chain, repeat
from homeassistant.components.dsmr.const import DOMAIN from homeassistant.components.dsmr.const import DOMAIN
from homeassistant.components.dsmr.sensor import DerivativeDSMREntity from homeassistant.components.dsmr.sensor import DerivativeDSMREntity
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.const import ENERGY_KILO_WATT_HOUR, TIME_HOURS, VOLUME_CUBIC_METERS from homeassistant.const import (
ENERGY_KILO_WATT_HOUR,
VOLUME_CUBIC_METERS,
VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR,
)
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.async_mock import DEFAULT, MagicMock from tests.async_mock import DEFAULT, MagicMock
@ -207,7 +211,7 @@ async def test_derivative():
abs(entity.state - 0.033) < 0.00001 abs(entity.state - 0.033) < 0.00001
), "state should be hourly usage calculated from first and second update" ), "state should be hourly usage calculated from first and second update"
assert entity.unit_of_measurement == f"{VOLUME_CUBIC_METERS}/{TIME_HOURS}" assert entity.unit_of_measurement == VOLUME_FLOW_RATE_CUBIC_METERS_PER_HOUR
async def test_v4_meter(hass, dsmr_connection_fixture): async def test_v4_meter(hass, dsmr_connection_fixture):