-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontainers.py
More file actions
59 lines (47 loc) · 1.75 KB
/
containers.py
File metadata and controls
59 lines (47 loc) · 1.75 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import logging.config
import os
import sys
from dependency_injector import containers, providers
from azure_services import AzureCosmosDbClient
from greenhouse import GreenhouseService
from sensors_and_measures.lcd_display import LcdDisplay
from sensors_and_measures.light_sensor import LightIntensitySensor
from sensors_and_measures.moisture_sensor import SoilMoistureSensor
from sensors_and_measures.tempearature_and_humidity_sensor import TemperatureHumiditySensor
class Container(containers.DeclarativeContainer):
config_file = os.path.join(os.path.dirname(__file__), "config.ini")
config = providers.Configuration(ini_files=[config_file])
logging = providers.Resource(
logging.config.fileConfig,
fname=os.path.join(os.path.dirname(__file__), "logging.ini"),
)
database_client = providers.Singleton(
AzureCosmosDbClient,
config.database.uri,
config.database.name,
config.database.container_name
)
soil_moisture_sensor = providers.Singleton(
SoilMoistureSensor,
config.sensors.soil_moisture_sensor_pin.as_int(),
)
temp_and_humidity_sensor = providers.Singleton(
TemperatureHumiditySensor,
config.sensors.dht_sensor_type,
config.sensors.temperature_humidity_sensor_pin.as_int()
)
light_intensity_sensor = providers.Singleton(
LightIntensitySensor,
config.sensors.light_intensity_sensor_pin.as_int()
)
lcd_display = providers.Singleton(
LcdDisplay
)
greenhouse_service = providers.Singleton(
GreenhouseService,
soil_moisture_sensor,
temp_and_humidity_sensor,
light_intensity_sensor,
lcd_display,
database_client
)