From 0fbce715a32f5e05c2a66e5cc401105f72083ff5 Mon Sep 17 00:00:00 2001 From: diogo464 Date: Sat, 6 Dec 2025 08:42:50 +0000 Subject: added SensorClass enum --- src/entity_sensor.rs | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/src/entity_sensor.rs b/src/entity_sensor.rs index 4b84c66..702c9de 100644 --- a/src/entity_sensor.rs +++ b/src/entity_sensor.rs @@ -20,6 +20,129 @@ impl StateClass { } } +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum SensorClass { + Generic, + ApparentPower, + Aqi, + AtmosphericPressure, + Battery, + CarbonDioxide, + CarbonMonoxide, + Current, + DataRate, + DataSize, + Date, + Distance, + Duration, + Energy, + EnergyStorage, + Enum, + Frequency, + Gas, + Humidity, + Illuminance, + Irradiance, + Moisture, + Monetary, + NitrogenDioxide, + NitrogenMonoxide, + NitrousOxide, + Ozone, + Ph, + Pm1, + Pm25, + Pm10, + PowerFactor, + Power, + Precipitation, + PrecipitationIntensity, + Pressure, + ReactivePower, + SignalStrength, + SoundPressure, + Speed, + SulphurDioxide, + Temperature, + Timestamp, + VolatileOrganicCompounds, + VolatileOrganicCompoundsParts, + Voltage, + Volume, + VolumeFlowRate, + VolumeStorage, + Water, + Weight, + WindSpeed, + Other(&'static str), +} + +impl Default for SensorClass { + fn default() -> Self { + SensorClass::Generic + } +} + +impl SensorClass { + pub fn as_str(&self) -> Option<&'static str> { + match self { + SensorClass::Generic => None, + SensorClass::Other(s) => Some(s), + SensorClass::ApparentPower => Some(constants::HA_DEVICE_CLASS_SENSOR_APPARENT_POWER), + SensorClass::Aqi => Some(constants::HA_DEVICE_CLASS_SENSOR_AQI), + SensorClass::AtmosphericPressure => Some(constants::HA_DEVICE_CLASS_SENSOR_ATMOSPHERIC_PRESSURE), + SensorClass::Battery => Some(constants::HA_DEVICE_CLASS_SENSOR_BATTERY), + SensorClass::CarbonDioxide => Some(constants::HA_DEVICE_CLASS_SENSOR_CARBON_DIOXIDE), + SensorClass::CarbonMonoxide => Some(constants::HA_DEVICE_CLASS_SENSOR_CARBON_MONOXIDE), + SensorClass::Current => Some(constants::HA_DEVICE_CLASS_SENSOR_CURRENT), + SensorClass::DataRate => Some(constants::HA_DEVICE_CLASS_SENSOR_DATA_RATE), + SensorClass::DataSize => Some(constants::HA_DEVICE_CLASS_SENSOR_DATA_SIZE), + SensorClass::Date => Some(constants::HA_DEVICE_CLASS_SENSOR_DATE), + SensorClass::Distance => Some(constants::HA_DEVICE_CLASS_SENSOR_DISTANCE), + SensorClass::Duration => Some(constants::HA_DEVICE_CLASS_SENSOR_DURATION), + SensorClass::Energy => Some(constants::HA_DEVICE_CLASS_SENSOR_ENERGY), + SensorClass::EnergyStorage => Some(constants::HA_DEVICE_CLASS_SENSOR_ENERGY_STORAGE), + SensorClass::Enum => Some(constants::HA_DEVICE_CLASS_SENSOR_ENUM), + SensorClass::Frequency => Some(constants::HA_DEVICE_CLASS_SENSOR_FREQUENCY), + SensorClass::Gas => Some(constants::HA_DEVICE_CLASS_SENSOR_GAS), + SensorClass::Humidity => Some(constants::HA_DEVICE_CLASS_SENSOR_HUMIDITY), + SensorClass::Illuminance => Some(constants::HA_DEVICE_CLASS_SENSOR_ILLUMINANCE), + SensorClass::Irradiance => Some(constants::HA_DEVICE_CLASS_SENSOR_IRRADIANCE), + SensorClass::Moisture => Some(constants::HA_DEVICE_CLASS_SENSOR_MOISTURE), + SensorClass::Monetary => Some(constants::HA_DEVICE_CLASS_SENSOR_MONETARY), + SensorClass::NitrogenDioxide => Some(constants::HA_DEVICE_CLASS_SENSOR_NITROGEN_DIOXIDE), + SensorClass::NitrogenMonoxide => Some(constants::HA_DEVICE_CLASS_SENSOR_NITROGEN_MONOXIDE), + SensorClass::NitrousOxide => Some(constants::HA_DEVICE_CLASS_SENSOR_NITROUS_OXIDE), + SensorClass::Ozone => Some(constants::HA_DEVICE_CLASS_SENSOR_OZONE), + SensorClass::Ph => Some(constants::HA_DEVICE_CLASS_SENSOR_PH), + SensorClass::Pm1 => Some(constants::HA_DEVICE_CLASS_SENSOR_PM1), + SensorClass::Pm25 => Some(constants::HA_DEVICE_CLASS_SENSOR_PM25), + SensorClass::Pm10 => Some(constants::HA_DEVICE_CLASS_SENSOR_PM10), + SensorClass::PowerFactor => Some(constants::HA_DEVICE_CLASS_SENSOR_POWER_FACTOR), + SensorClass::Power => Some(constants::HA_DEVICE_CLASS_SENSOR_POWER), + SensorClass::Precipitation => Some(constants::HA_DEVICE_CLASS_SENSOR_PRECIPITATION), + SensorClass::PrecipitationIntensity => Some(constants::HA_DEVICE_CLASS_SENSOR_PRECIPITATION_INTENSITY), + SensorClass::Pressure => Some(constants::HA_DEVICE_CLASS_SENSOR_PRESSURE), + SensorClass::ReactivePower => Some(constants::HA_DEVICE_CLASS_SENSOR_REACTIVE_POWER), + SensorClass::SignalStrength => Some(constants::HA_DEVICE_CLASS_SENSOR_SIGNAL_STRENGTH), + SensorClass::SoundPressure => Some(constants::HA_DEVICE_CLASS_SENSOR_SOUND_PRESSURE), + SensorClass::Speed => Some(constants::HA_DEVICE_CLASS_SENSOR_SPEED), + SensorClass::SulphurDioxide => Some(constants::HA_DEVICE_CLASS_SENSOR_SULPHUR_DIOXIDE), + SensorClass::Temperature => Some(constants::HA_DEVICE_CLASS_SENSOR_TEMPERATURE), + SensorClass::Timestamp => Some(constants::HA_DEVICE_CLASS_SENSOR_TIMESTAMP), + SensorClass::VolatileOrganicCompounds => Some(constants::HA_DEVICE_CLASS_SENSOR_VOLATILE_ORGANIC_COMPOUNDS), + SensorClass::VolatileOrganicCompoundsParts => Some(constants::HA_DEVICE_CLASS_SENSOR_VOLATILE_ORGANIC_COMPOUNDS_PARTS), + SensorClass::Voltage => Some(constants::HA_DEVICE_CLASS_SENSOR_VOLTAGE), + SensorClass::Volume => Some(constants::HA_DEVICE_CLASS_SENSOR_VOLUME), + SensorClass::VolumeFlowRate => Some(constants::HA_DEVICE_CLASS_SENSOR_VOLUME_FLOW_RATE), + SensorClass::VolumeStorage => Some(constants::HA_DEVICE_CLASS_SENSOR_VOLUME_STORAGE), + SensorClass::Water => Some(constants::HA_DEVICE_CLASS_SENSOR_WATER), + SensorClass::Weight => Some(constants::HA_DEVICE_CLASS_SENSOR_WEIGHT), + SensorClass::WindSpeed => Some(constants::HA_DEVICE_CLASS_SENSOR_WIND_SPEED), + } + } +} + #[derive(Debug, Default)] pub struct TemperatureSensorConfig { pub common: EntityCommonConfig, -- cgit