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
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
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
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
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
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