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
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-03 16:41 +0000
1"""Environmental Sensing Service implementation."""
3from __future__ import annotations
5from typing import ClassVar
7from ..characteristics.registry import CharacteristicName
8from .base import BaseGattService
11class EnvironmentalSensingService(BaseGattService):
12 """Environmental Sensing Service implementation (0x181A).
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)
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 """
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 }