Add sensor state class validation for device classes (#84402)

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
This commit is contained in:
Franck Nijhof 2023-01-16 14:31:24 +01:00 committed by GitHub
parent 8165f487c7
commit 0a367359f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 130 additions and 52 deletions

View file

@ -501,3 +501,64 @@ DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]] = {
SensorDeviceClass.WEIGHT: set(UnitOfMass),
SensorDeviceClass.WIND_SPEED: set(UnitOfSpeed),
}
DEVICE_CLASS_STATE_CLASSES: dict[SensorDeviceClass, set[SensorStateClass | None]] = {
SensorDeviceClass.APPARENT_POWER: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.AQI: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.ATMOSPHERIC_PRESSURE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.BATTERY: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.CO: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.CO2: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.CURRENT: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.DATA_RATE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.DATA_SIZE: set(SensorStateClass),
SensorDeviceClass.DATE: set(),
SensorDeviceClass.DISTANCE: set(SensorStateClass),
SensorDeviceClass.DURATION: set(),
SensorDeviceClass.ENERGY: {
SensorStateClass.TOTAL,
SensorStateClass.TOTAL_INCREASING,
},
SensorDeviceClass.ENUM: set(),
SensorDeviceClass.FREQUENCY: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.GAS: {SensorStateClass.TOTAL, SensorStateClass.TOTAL_INCREASING},
SensorDeviceClass.HUMIDITY: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.ILLUMINANCE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.IRRADIANCE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.MOISTURE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.MONETARY: {SensorStateClass.TOTAL},
SensorDeviceClass.NITROGEN_DIOXIDE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.NITROGEN_MONOXIDE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.NITROUS_OXIDE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.OZONE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.PM1: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.PM10: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.PM25: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.POWER_FACTOR: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.POWER: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.PRECIPITATION: {
SensorStateClass.TOTAL,
SensorStateClass.TOTAL_INCREASING,
},
SensorDeviceClass.PRECIPITATION_INTENSITY: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.PRESSURE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.REACTIVE_POWER: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.SIGNAL_STRENGTH: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.SOUND_PRESSURE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.SPEED: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.SULPHUR_DIOXIDE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.TEMPERATURE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.TIMESTAMP: set(),
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.VOLTAGE: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.VOLUME: {
SensorStateClass.TOTAL,
SensorStateClass.TOTAL_INCREASING,
},
SensorDeviceClass.WATER: {
SensorStateClass.TOTAL,
SensorStateClass.TOTAL_INCREASING,
},
SensorDeviceClass.WEIGHT: {SensorStateClass.TOTAL},
SensorDeviceClass.WIND_SPEED: {SensorStateClass.MEASUREMENT},
}