예제 #1
0
파일: routes.py 프로젝트: keshava/CROP
def get_advanticsys_data(sensor_id):
    """
    Produces a JSON with the Advanticsys sensor data for a specified sensor.

    Args:
        sensor_id - Advanticsys sensor ID
    Returns:
        result - JSON string
    """

    dt_from, dt_to = parse_date_range_argument(request.args.get("range"))

    query = (db.session.query(
        ReadingsAdvanticsysClass.sensor_id,
        ReadingsAdvanticsysClass.timestamp,
        ReadingsAdvanticsysClass.temperature,
        ReadingsAdvanticsysClass.humidity,
        ReadingsAdvanticsysClass.co2,
        ReadingsAdvanticsysClass.time_created,
        ReadingsAdvanticsysClass.time_updated,
    ).filter(
        and_(
            ReadingsAdvanticsysClass.sensor_id == sensor_id,
            ReadingsAdvanticsysClass.timestamp >= dt_from,
            ReadingsAdvanticsysClass.timestamp <= dt_to,
        )).order_by(desc(ReadingsAdvanticsysClass.timestamp)))

    execute_result = db.session.execute(query).fetchall()
    result = jasonify_query_result(execute_result)

    return result
예제 #2
0
파일: routes.py 프로젝트: keshava/CROP
def get_stark_data(sensor_id):
    """
    Produces a JSON with Stark readings data for a specified sensor (meter).

    Args:
        sensor_id - Stark meter ID
    Returns:
        result - JSON string
    """

    dt_from, dt_to = parse_date_range_argument(request.args.get("range"))

    query = (db.session.query(
        ReadingsEnergyClass.sensor_id,
        ReadingsEnergyClass.timestamp,
        ReadingsEnergyClass.electricity_consumption,
        ReadingsEnergyClass.time_created,
        ReadingsEnergyClass.time_updated,
    ).filter(
        and_(
            ReadingsEnergyClass.sensor_id == sensor_id,
            ReadingsEnergyClass.timestamp >= dt_from,
            ReadingsEnergyClass.timestamp <= dt_to,
        )).order_by(desc(ReadingsEnergyClass.timestamp)))

    execute_result = db.session.execute(query).fetchall()
    result = jasonify_query_result(execute_result)

    return result
예제 #3
0
def get_all_sensors():
    """
    Produces a JSON list with sensors and their latest locations.

    Returns:
        result - JSON string
    """
    # Collecting the general information about the selected sensors
    query = db.session.query(
        SensorLocationClass.sensor_id,
        SensorLocationClass.installation_date,
        TypeClass.sensor_type,
        LocationClass.zone,
        LocationClass.aisle,
        LocationClass.column,
        LocationClass.shelf,
        SensorClass.aranet_code,
        SensorClass.aranet_pro_id,
        SensorClass.serial_number,
    ).filter(
        and_(
            filter_latest_sensor_location(db),
            SensorClass.type_id == TypeClass.id,
            SensorLocationClass.location_id == LocationClass.id,
            SensorLocationClass.sensor_id == SensorClass.id,
        )
    )

    execute_result = db.session.execute(query).fetchall()

    result = jasonify_query_result(execute_result)

    return result
예제 #4
0
def get_weather():
    """
    Produces a JSON with weather data.

    Returns:
        result - JSON string
    """

    dt_from, dt_to = parse_date_range_argument(request.args.get("range"))

    query = (
        db.session.query(
            ReadingsWeatherClass.temperature,
            ReadingsWeatherClass.relative_humidity,
            ReadingsWeatherClass.wind_speed,
            ReadingsWeatherClass.wind_direction,
            ReadingsWeatherClass.rain,
            ReadingsWeatherClass.air_pressure,
            ReadingsWeatherClass.timestamp,
            ReadingsWeatherClass.icon,
        )
        .filter(
            and_(
                ReadingsWeatherClass.timestamp >= dt_from,
                ReadingsWeatherClass.timestamp <= dt_to,
            )
        )
        .order_by(desc(ReadingsWeatherClass.timestamp))
    )

    execute_result = db.session.execute(query).fetchall()
    result = jasonify_query_result(execute_result)

    return result
예제 #5
0
def get_aranet_airvelocity_data(sensor_id):
    """
    Produces a JSON with the Aranet air velocity
    data for a specified sensor.

    Args:
        sensor_id - sensor ID as stored in CROP db (int).
    Returns:
        result - JSON string
    """

    dt_from, dt_to = parse_date_range_argument(request.args.get("range"))

    query = (
        db.session.query(
            ReadingsAranetAirVelocityClass.sensor_id,
            ReadingsAranetAirVelocityClass.timestamp,
            ReadingsAranetAirVelocityClass.current,
            ReadingsAranetAirVelocityClass.air_velocity,
            ReadingsAranetAirVelocityClass.time_created,
            ReadingsAranetAirVelocityClass.time_updated,
        )
        .filter(
            and_(
                ReadingsAranetAirVelocityClass.sensor_id == sensor_id,
                ReadingsAranetAirVelocityClass.timestamp >= dt_from,
                ReadingsAranetAirVelocityClass.timestamp <= dt_to,
            )
        )
        .order_by(desc(ReadingsAranetAirVelocityClass.timestamp))
    )

    execute_result = db.session.execute(query).fetchall()
    result = jasonify_query_result(execute_result)
    return result
예제 #6
0
파일: routes.py 프로젝트: keshava/CROP
def get_all_sensors():
    """
    Produces a JSON list with sensors and their latest locations.

    Returns:
        result - JSON string
    """

    # Getting the latest locations of all sensors
    sensor_temp = (db.session.query(
        SensorLocationClass.sensor_id,
        func.max(
            SensorLocationClass.installation_date).label("installation_date"),
    ).group_by(SensorLocationClass.sensor_id).subquery())

    # Collecting the general information about the selected sensors
    query = db.session.query(
        SensorLocationClass.sensor_id,
        SensorLocationClass.installation_date,
        TypeClass.sensor_type,
        LocationClass.zone,
        LocationClass.aisle,
        LocationClass.column,
        LocationClass.shelf,
    ).filter(
        and_(
            sensor_temp.c.sensor_id == SensorLocationClass.sensor_id,
            sensor_temp.c.installation_date ==
            SensorLocationClass.installation_date,
            sensor_temp.c.sensor_id == SensorClass.id,
            SensorClass.type_id == TypeClass.id,
            SensorLocationClass.location_id == LocationClass.id,
        ))

    execute_result = db.session.execute(query).fetchall()
    result = jasonify_query_result(execute_result)

    return result