"""Units of measure for Zigbee Home Automation.""" from enum import StrEnum from typing import Final class UnitOfTemperature(StrEnum): """Temperature units.""" CELSIUS = "°C" FAHRENHEIT = "°F" KELVIN = "K" class UnitOfMass(StrEnum): """Mass units.""" GRAMS = "g" KILOGRAMS = "kg" MILLIGRAMS = "mg" MICROGRAMS = "µg" OUNCES = "oz" POUNDS = "lb" STONES = "st" class UnitOfPressure(StrEnum): """Pressure units.""" PA = "Pa" HPA = "hPa" KPA = "kPa" BAR = "bar" CBAR = "cbar" MBAR = "mbar" MMHG = "mmHg" INHG = "inHg" PSI = "psi" class UnitOfSoundPressure(StrEnum): """Sound pressure units.""" DECIBEL = "dB" WEIGHTED_DECIBEL_A = "dBA" class UnitOfPower(StrEnum): """Power units.""" MILLIWATT = "mW" WATT = "W" KILO_WATT = "kW" MEGA_WATT = "MW" GIGA_WATT = "GW" TERA_WATT = "TW" BTU_PER_HOUR = "BTU/h" class UnitOfReactivePower(StrEnum): """Reactive power units.""" VOLT_AMPERE_REACTIVE = "var" KILO_VOLT_AMPERE_REACTIVE = "kvar" class UnitOfApparentPower(StrEnum): """Apparent power units.""" VOLT_AMPERE = "VA" class UnitOfElectricCurrent(StrEnum): """Electric current units.""" MILLIAMPERE = "mA" AMPERE = "A" # Electric_potential units class UnitOfElectricPotential(StrEnum): """Electric potential units.""" MICROVOLT = "µV" MILLIVOLT = "mV" VOLT = "V" KILOVOLT = "kV" MEGAVOLT = "MV" class UnitOfFrequency(StrEnum): """Frequency units.""" HERTZ = "Hz" KILOHERTZ = "kHz" MEGAHERTZ = "MHz" GIGAHERTZ = "GHz" class UnitOfVolumeFlowRate(StrEnum): """Volume flow rate units.""" CUBIC_METERS_PER_HOUR = "m³/h" CUBIC_METERS_PER_SECOND = "m³/s" CUBIC_FEET_PER_MINUTE = "ft³/min" LITERS_PER_HOUR = "L/h" LITERS_PER_MINUTE = "L/min" LITERS_PER_SECOND = "L/s" GALLONS_PER_MINUTE = "gal/min" MILLILITERS_PER_SECOND = "mL/s" class UnitOfArea(StrEnum): """Area units.""" SQUARE_METERS = "m²" SQUARE_CENTIMETERS = "cm²" SQUARE_KILOMETERS = "km²" SQUARE_MILLIMETERS = "mm²" SQUARE_INCHES = "in²" SQUARE_FEET = "ft²" SQUARE_YARDS = "yd²" SQUARE_MILES = "mi²" ACRES = "ac" HECTARES = "ha" class UnitOfVolume(StrEnum): """Volume units.""" CUBIC_FEET = "ft³" CENTUM_CUBIC_FEET = "CCF" CUBIC_METERS = "m³" LITERS = "L" MILLILITERS = "mL" GALLONS = "gal" """Assumed to be US gallons in conversion utilities. British/Imperial gallons are not yet supported""" FLUID_OUNCES = "fl. oz." """Assumed to be US fluid ounces in conversion utilities. British/Imperial fluid ounces are not yet supported""" class UnitOfTime(StrEnum): """Time units.""" MICROSECONDS = "μs" MILLISECONDS = "ms" SECONDS = "s" MINUTES = "min" HOURS = "h" DAYS = "d" WEEKS = "w" MONTHS = "m" YEARS = "y" class UnitOfLength(StrEnum): """Length units.""" MILLIMETERS = "mm" CENTIMETERS = "cm" METERS = "m" KILOMETERS = "km" INCHES = "in" FEET = "ft" YARDS = "yd" MILES = "mi" NAUTICAL_MILES = "nmi" class UnitOfEnergy(StrEnum): """Energy units.""" JOULE = "J" KILO_JOULE = "kJ" MEGA_JOULE = "MJ" GIGA_JOULE = "GJ" MILLIWATT_HOUR = "mWh" WATT_HOUR = "Wh" KILO_WATT_HOUR = "kWh" MEGA_WATT_HOUR = "MWh" GIGA_WATT_HOUR = "GWh" TERA_WATT_HOUR = "TWh" CALORIE = "cal" KILO_CALORIE = "kcal" MEGA_CALORIE = "Mcal" GIGA_CALORIE = "Gcal" class UnitOfEnergyDistance(StrEnum): """Energy Distance units.""" KILO_WATT_HOUR_PER_100_KM = "kWh/100km" MILES_PER_KILO_WATT_HOUR = "mi/kWh" KM_PER_KILO_WATT_HOUR = "km/kWh" class UnitOfConductivity(StrEnum): """Conductivity units.""" SIEMENS_PER_CM = "S/cm" MICROSIEMENS_PER_CM = "µS/cm" MILLISIEMENS_PER_CM = "mS/cm" class UnitOfSpeed(StrEnum): """Speed units.""" BEAUFORT = "Beaufort" FEET_PER_SECOND = "ft/s" INCHES_PER_SECOND = "in/s" METERS_PER_SECOND = "m/s" KILOMETERS_PER_HOUR = "km/h" KNOTS = "kn" MILES_PER_HOUR = "mph" MILLIMETERS_PER_SECOND = "mm/s" # Concentration units CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final = "µg/m³" CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER: Final = "mg/m³" CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT: Final = "μg/ft³" CONCENTRATION_PARTS_PER_CUBIC_METER: Final = "p/m³" CONCENTRATION_PARTS_PER_MILLION: Final = "ppm" CONCENTRATION_PARTS_PER_BILLION: Final = "ppb" # Signal_strength units SIGNAL_STRENGTH_DECIBELS: Final = "dB" SIGNAL_STRENGTH_DECIBELS_MILLIWATT: Final = "dBm" # Light units LIGHT_LUX: Final = "lx" # Percentage units PERCENTAGE: Final[str] = "%" # Rotational speed units REVOLUTIONS_PER_MINUTE: Final = "rpm" # Irradiance units class UnitOfIrradiance(StrEnum): """Irradiance units.""" WATTS_PER_SQUARE_METER = "W/m²" BTUS_PER_HOUR_SQUARE_FOOT = "BTU/(h⋅ft²)" # Kinetic energy KILOJOULES_PER_KG: Final = "KJ/kg" # Count COUNT: Final = "count" DEGREE: Final = "°"