mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Use strings instead of f-strings for constants (#40619)
This commit is contained in:
parent
c8a940c59f
commit
30b94892c4
@ -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."
|
||||||
|
@ -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,
|
||||||
),
|
),
|
||||||
|
@ -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": [
|
||||||
|
@ -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,
|
||||||
},
|
},
|
||||||
|
@ -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"],
|
||||||
],
|
],
|
||||||
|
@ -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 = {
|
||||||
|
@ -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),
|
||||||
|
@ -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,
|
||||||
],
|
],
|
||||||
|
@ -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}",
|
||||||
|
@ -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"
|
||||||
|
@ -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,
|
||||||
|
@ -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):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user