Coverage for src / bluetooth_sig / gatt / services / environmental_sensing.py: 100%

6 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-03 16:41 +0000

1"""Environmental Sensing Service implementation.""" 

2 

3from __future__ import annotations 

4 

5from typing import ClassVar 

6 

7from ..characteristics.registry import CharacteristicName 

8from .base import BaseGattService 

9 

10 

11class EnvironmentalSensingService(BaseGattService): 

12 """Environmental Sensing Service implementation (0x181A). 

13 

14 Used for environmental monitoring devices including weather stations, 

15 air quality sensors, and comprehensive environmental monitoring systems. 

16 Supports a wide range of environmental measurements including: 

17 - Traditional weather measurements (temperature, humidity, pressure) 

18 - Air quality metrics (gas concentrations, particulate matter) 

19 - Advanced environmental conditions (wind, magnetic, elevation, trends) 

20 

21 Contains comprehensive characteristics for environmental sensing including: 

22 - Temperature - Optional 

23 - Humidity - Optional 

24 - Pressure - Optional 

25 - Dew Point - Optional 

26 - Heat Index - Optional 

27 - Wind Chill - Optional 

28 - True Wind Speed - Optional 

29 - True Wind Direction - Optional 

30 - Apparent Wind Speed - Optional 

31 - Apparent Wind Direction - Optional 

32 - Gust Factor - Optional 

33 - UV Index - Optional 

34 - Irradiance - Optional 

35 - Elevation - Optional 

36 - Barometric Pressure Trend - Optional 

37 - Pollen Concentration - Optional 

38 - Rainfall - Optional 

39 - Magnetic Declination - Optional 

40 - Magnetic Flux Density - 2D - Optional 

41 - Magnetic Flux Density - 3D - Optional 

42 - Ammonia Concentration - Optional 

43 - Carbon Monoxide Concentration - Optional 

44 - Methane Concentration - Optional 

45 - Nitrogen Dioxide Concentration - Optional 

46 - Non-Methane Volatile Organic Compounds Concentration - Optional 

47 - Ozone Concentration - Optional 

48 - Particulate Matter - PM1 Concentration - Optional 

49 - Particulate Matter - PM2.5 Concentration - Optional 

50 - Particulate Matter - PM10 Concentration - Optional 

51 - Sulfur Dioxide Concentration - Optional 

52 - Sulfur Hexafluoride Concentration - Optional 

53 """ 

54 

55 service_characteristics: ClassVar[dict[CharacteristicName, bool]] = { 

56 CharacteristicName.DESCRIPTOR_VALUE_CHANGED: False, 

57 # ESS Measurement permitted characteristics (at least one required if service is present) 

58 # Traditional environmental sensors 

59 CharacteristicName.TEMPERATURE: False, 

60 CharacteristicName.HUMIDITY: False, 

61 CharacteristicName.PRESSURE: False, 

62 CharacteristicName.DEW_POINT: False, 

63 CharacteristicName.HEAT_INDEX: False, 

64 CharacteristicName.WIND_CHILL: False, 

65 CharacteristicName.TRUE_WIND_SPEED: False, 

66 CharacteristicName.TRUE_WIND_DIRECTION: False, 

67 CharacteristicName.APPARENT_WIND_SPEED: False, 

68 CharacteristicName.APPARENT_WIND_DIRECTION: False, 

69 CharacteristicName.GUST_FACTOR: False, 

70 CharacteristicName.UV_INDEX: False, 

71 CharacteristicName.IRRADIANCE: False, 

72 # Environmental condition characteristics 

73 CharacteristicName.ELEVATION: False, 

74 CharacteristicName.BAROMETRIC_PRESSURE_TREND: False, 

75 CharacteristicName.POLLEN_CONCENTRATION: False, 

76 CharacteristicName.RAINFALL: False, 

77 CharacteristicName.MAGNETIC_DECLINATION: False, 

78 CharacteristicName.MAGNETIC_FLUX_DENSITY_2D: False, 

79 CharacteristicName.MAGNETIC_FLUX_DENSITY_3D: False, 

80 # Gas sensor characteristics for air quality monitoring 

81 CharacteristicName.AMMONIA_CONCENTRATION: False, 

82 CharacteristicName.CARBON_MONOXIDE_CONCENTRATION: False, 

83 CharacteristicName.METHANE_CONCENTRATION: False, 

84 CharacteristicName.NITROGEN_DIOXIDE_CONCENTRATION: False, 

85 CharacteristicName.NON_METHANE_VOC_CONCENTRATION: False, 

86 CharacteristicName.OZONE_CONCENTRATION: False, 

87 CharacteristicName.PM1_CONCENTRATION: False, 

88 CharacteristicName.PM25_CONCENTRATION: False, 

89 CharacteristicName.PM10_CONCENTRATION: False, 

90 CharacteristicName.SULFUR_DIOXIDE_CONCENTRATION: False, 

91 CharacteristicName.SULFUR_HEXAFLUORIDE_CONCENTRATION: False, 

92 }