54 lines
2.3 KiB
Python
54 lines
2.3 KiB
Python
from rapt.client import ClientException
|
|
from rapt.model.fermentation_chamber import FermentationChamberModel, FermentationChamberTelemetryModel
|
|
from typing import Optional, List
|
|
from pydantic import TypeAdapter
|
|
from loguru import logger
|
|
|
|
|
|
class FermentationChamber():
|
|
def __init__(self, client) -> None:
|
|
self.client = client
|
|
|
|
async def get_fermentation_chambers(self) -> Optional[List[FermentationChamberModel]]:
|
|
logger.debug("## GET FERMENTATION CHAMBERS ##")
|
|
try:
|
|
response_json = await self.client.get_json("/api/fermentationchambers/getfermentationchambers", None)
|
|
logger.trace(response_json)
|
|
fermentation_chambers_adapter = TypeAdapter(list[FermentationChamberModel])
|
|
return fermentation_chambers_adapter.validate_python(response_json)
|
|
except ClientException:
|
|
#TODO: Handle Exception gracefully
|
|
return None
|
|
|
|
async def get_fermentation_chamber(self, fermentation_chamber_id) -> Optional[FermentationChamberModel]:
|
|
logger.debug("## GET FERMENTATION CHAMBER ##")
|
|
params = {
|
|
"fermentationChamberId": fermentation_chamber_id
|
|
}
|
|
try:
|
|
response_json = await self.client.get_json("/api/fermentationchambers/getfermentationchamber", params)
|
|
logger.trace(response_json)
|
|
return FermentationChamberModel.model_validate(response_json)
|
|
except ClientException:
|
|
#TODO: Handle Exception gracefully
|
|
return None
|
|
|
|
|
|
async def get_telemetry(self, fermentation_chamber_id, start_date, end_date, profile_session_id) -> Optional[List[FermentationChamberTelemetryModel]]:
|
|
logger.debug("## GET TELEMETRY ##")
|
|
params = {
|
|
"fermentationChamberId": fermentation_chamber_id,
|
|
"startDate": start_date,
|
|
"endDate": end_date,
|
|
"profileSessionId": profile_session_id
|
|
}
|
|
try:
|
|
response_json = await self.client.get_json("/api/fermentationchambers/gettelemetry", params)
|
|
logger.trace(response_json)
|
|
fermentation_chambers_adapter = TypeAdapter(list[FermentationChamberTelemetryModel])
|
|
return fermentation_chambers_adapter.validate_python(response_json)
|
|
except ClientException:
|
|
#TODO: Handle Exception gracefully
|
|
return None
|
|
|