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

6 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-30 00:10 +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, 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 - CO2 Concentration - Optional 

33 - VOC Concentration - Optional 

34 - Non-Methane VOC Concentration - Optional 

35 - Ammonia Concentration - Optional 

36 - Methane Concentration - Optional 

37 - Nitrogen Dioxide Concentration - Optional 

38 - Ozone Concentration - Optional 

39 - PM1 Concentration - Optional 

40 - PM2.5 Concentration - Optional 

41 - PM10 Concentration - Optional 

42 - Sulfur Dioxide Concentration - Optional 

43 - Elevation - Optional 

44 - Barometric Pressure Trend - Optional 

45 - Pollen Concentration - Optional 

46 - Rainfall - Optional 

47 """ 

48 

49 # All characteristics are optional in this service 

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

51 # Traditional environmental sensors 

52 CharacteristicName.TEMPERATURE: False, 

53 CharacteristicName.HUMIDITY: False, 

54 CharacteristicName.PRESSURE: False, 

55 CharacteristicName.DEW_POINT: False, 

56 CharacteristicName.HEAT_INDEX: False, 

57 CharacteristicName.WIND_CHILL: False, 

58 CharacteristicName.TRUE_WIND_SPEED: False, 

59 CharacteristicName.TRUE_WIND_DIRECTION: False, 

60 CharacteristicName.APPARENT_WIND_SPEED: False, 

61 CharacteristicName.APPARENT_WIND_DIRECTION: False, 

62 # Gas sensor characteristics for air quality monitoring 

63 CharacteristicName.CO2_CONCENTRATION: False, 

64 CharacteristicName.VOC_CONCENTRATION: False, 

65 CharacteristicName.NON_METHANE_VOC_CONCENTRATION: False, 

66 CharacteristicName.AMMONIA_CONCENTRATION: False, 

67 CharacteristicName.METHANE_CONCENTRATION: False, 

68 CharacteristicName.NITROGEN_DIOXIDE_CONCENTRATION: False, 

69 CharacteristicName.OZONE_CONCENTRATION: False, 

70 CharacteristicName.PM1_CONCENTRATION: False, 

71 CharacteristicName.PM25_CONCENTRATION: False, 

72 CharacteristicName.PM10_CONCENTRATION: False, 

73 CharacteristicName.SULFUR_DIOXIDE_CONCENTRATION: False, 

74 # Environmental condition characteristics 

75 CharacteristicName.ELEVATION: False, 

76 CharacteristicName.BAROMETRIC_PRESSURE_TREND: False, 

77 CharacteristicName.POLLEN_CONCENTRATION: False, 

78 CharacteristicName.RAINFALL: False, 

79 }