blob: 30a459ecbb6c1b8d87c10d19274903f71ebf4910 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
from importlib import import_module
__all__ = [
'SensorType',
'TempHumSensor',
'TempHumNodes',
'create_sensor'
]
def __import_sensor(name):
if name == 'si7021':
return import_module('.si7021', __name__).Si7021
elif name == 'dht12':
return import_module('.dht12', __name__).DHT12
else:
raise ValueError(f'unexpected sensor type: {name}')
def __getattr__(name):
if name == 'create_sensor':
base = import_module('.base', __name__)
def create_sensor(type: base.SensorType, bus: int) -> base.TempHumSensor:
if type == base.SensorType.Si7021:
return __import_sensor('si7021')(bus)
elif type == base.SensorType.DHT12:
return __import_sensor('dht12')(bus)
else:
raise ValueError(f'unexpected sensor type: {type}')
return create_sensor
elif name in ('SensorType', 'TempHumSensor'):
return getattr(import_module('.base', __name__), name)
elif name == 'TempHumNodes':
return import_module('.nodes', __name__).TempHumNodes
|