Source code for pi_weather.api.agg_models

"""Logic to merge 2 sensors data into one aggregate reading"""

from typing import Optional

from pi_weather.api.models import (
    LatestAggregateReading,
    LatestSensorReading,
    LatestSTCC4SensorReading,
)
from pi_weather.utils.logs import get_logger

logger = get_logger(__name__)


[docs] def get_latest_aggregate_reading( data_bmp390: LatestSensorReading | None = None, data_stcc4: LatestSTCC4SensorReading | None = None, ) -> Optional[LatestAggregateReading]: """ Function to merge 2 inputs readings into an aggregate reading :param data_bmp390: Latest reading data for BMP390 :type data_bmp390: LatestSensorReading :param data_stcc4: Latest reading data for STCC4 :type data_stcc4: LatestSTCC4SensorReading :return: Agg readings :rtype: Optional[LatestAggregateReading] """ if data_bmp390 is None: logger.error("Invalid input data for sensor BMP390") return None if data_stcc4 is None: logger.error("Invalid input data for sensor STCC4") return None logger.info("Merging aggregate reading data") data_agg: LatestAggregateReading = LatestAggregateReading( bmp390_event_ts=data_bmp390.event_ts, bmp390_sensor_ts=data_bmp390.sensor_ts, bmp390_pressure=data_bmp390.pressure, bmp390_temperature=data_bmp390.temperature, bmp390_altitude=data_bmp390.altitude, stcc4_event_ts=data_stcc4.event_ts, stcc4_sensor_status=data_stcc4.sensor_status, stcc4_temperature=data_stcc4.temperature, stcc4_humidity=data_stcc4.humidity, stcc4_co2_concentration=data_stcc4.co2_concentration, stcc4_air_quality=data_stcc4.air_quality, ) return data_agg