def getInstallationDate(qhawax_id):
    """ Helper qHAWAX function to get Installation Date """
    installation_id = same_helper.getInstallationId(qhawax_id)
    if (installation_id is not None):
        return session.query(QhawaxInstallationHistory.installation_date_zone).\
                       filter(QhawaxInstallationHistory.id == installation_id).first()[0]
    return None
def getDailyValidProcessedData():
    """
    To list all measurement of valid processed measurement table in a define period of time
    """
    qhawax_id = int(request.args.get('id')) \
                if request.args.get('id') is not None else 0
    initial_timestamp_utc = str(request.args.get('start_date'))\
                            if request.args.get('start_date') is not None else "2020-01-01 00:00:00"
    final_timestamp_utc = str(request.args.get('end_date'))\
                          if request.args.get('end_date') is not None else "2020-01-01 01:00:00"
    try:
        installation_id = same_helper.getInstallationId(qhawax_id)
        if (installation_id is not None):
            date_format = '%Y-%m-%d %H:%M:%S'
            valid_processed_measurements = get_data_helper.queryDBDailyValidProcessedByQhawaxScript(installation_id, \
                                                                            initial_timestamp_utc, final_timestamp_utc,\
                                                                            date_format)
            if valid_processed_measurements is not None:
                return make_response(jsonify(valid_processed_measurements),
                                     200)
            return make_response(jsonify('Daily Valid Measurements not found'),
                                 200)
        return make_response(jsonify('qHAWAX ID does not exist in field'), 200)
    except TypeError as e:
        json_message = jsonify({'error': '\'%s\'' % (e)})
        return make_response(json_message, 400)
def getFirstTimestampValidProcessed(qhawax_id):
    """ Helper qHAWAX Installation function to get first timestamp of Valid Processed  """
    installation_id = same_helper.getInstallationId(qhawax_id)
    if(installation_id is not None):
        first_timestamp =session.query(ValidProcessedMeasurement.timestamp_zone). \
                                 filter(ValidProcessedMeasurement.qhawax_installation_id == int(installation_id)). \
                                 order_by(ValidProcessedMeasurement.timestamp_zone.asc()).first()
        return None if (first_timestamp==None) else first_timestamp[0]
    return None
Esempio n. 4
0
def getComercialName(qhawax_id):
    """
    Helper Processed Measurement function to get qHAWAX comercial name

    """
    installation_id = same_helper.getInstallationId(qhawax_id)
    if (installation_id is not None):
        return session.query(QhawaxInstallationHistory.comercial_name).\
                       filter_by(id=installation_id).one()[0]
    return None
Esempio n. 5
0
def saveEndWorkFieldDate(qhawax_id, end_date, date_format):
    """
    Save End Work in Field

    """
    util_helper.check_valid_date(end_date, date_format)

    if (same_helper.qhawaxExistBasedOnID(qhawax_id)):
        installation_id = same_helper.getInstallationId(qhawax_id)
        session.query(QhawaxInstallationHistory).filter_by(id=installation_id).\
                                                 update(values={'end_date_zone': end_date})
        session.commit()
Esempio n. 6
0
def queryDBGasAverageMeasurement(qhawax_name, gas_name):
    """
    Helper function to get gas average measurement based on qHAWAX name and sensor name
    """
    sensor_array = ['CO', 'H2S', 'NO2', 'O3', 'PM25', 'PM10', 'SO2']

    if (isinstance(gas_name, str) is not True):
        raise TypeError("Sensor name " + str(gas_name) + " should be string")

    if (gas_name not in sensor_array):
        raise ValueError("Sensor name " + str(gas_name) +
                         " should be CO, H2S, NO2, O3, PM25, PM10 or SO2")

    qhawax_id = same_helper.getQhawaxID(qhawax_name)
    if (qhawax_id != None):
        installation_id = same_helper.getInstallationId(qhawax_id)
        if (installation_id != None):
            values_list = getTimeQhawaxHistory(installation_id)
            print(values_list)

            initial_timestamp = datetime.datetime.now()
            last_timestamp = datetime.datetime.now() - datetime.timedelta(
                hours=24)

            column_array = [
                AirQualityMeasurement.CO.label('sensor'),
                AirQualityMeasurement.H2S.label('sensor'),
                AirQualityMeasurement.NO2.label('sensor'),
                AirQualityMeasurement.O3.label('sensor'),
                AirQualityMeasurement.PM25.label('sensor'),
                AirQualityMeasurement.PM10.label('sensor'),
                AirQualityMeasurement.SO2.label('sensor')
            ]

            for i in range(len(sensor_array)):
                if (gas_name == sensor_array[i]):
                    sensors = (AirQualityMeasurement.timestamp_zone,
                               column_array[i])

            last_time_turn_on = values_list['last_time_on']
            last_registration_time = values_list['last_time_registration']

            return session.query(*sensors).filter(AirQualityMeasurement.qhawax_id == qhawax_id). \
                                       filter(AirQualityMeasurement.timestamp_zone >= last_timestamp). \
                                       filter(AirQualityMeasurement.timestamp_zone <= initial_timestamp). \
                                       order_by(AirQualityMeasurement.timestamp_zone.asc()).all()
    return None
Esempio n. 7
0
def queryDBValidProcessedByQhawaxScript(qhawax_id, initial_timestamp,
                                        final_timestamp, date_format):
    """
    Helper Valid Processed Measurement function to get valid data to daily table
    """
    sensors = (
        ValidProcessedMeasurement.CO, ValidProcessedMeasurement.CO_ug_m3,
        ValidProcessedMeasurement.H2S, ValidProcessedMeasurement.H2S_ug_m3,
        ValidProcessedMeasurement.NO2, ValidProcessedMeasurement.NO2_ug_m3,
        ValidProcessedMeasurement.O3, ValidProcessedMeasurement.O3_ug_m3,
        ValidProcessedMeasurement.PM25, ValidProcessedMeasurement.PM10,
        ValidProcessedMeasurement.SO2, ValidProcessedMeasurement.SO2_ug_m3,
        ValidProcessedMeasurement.UV, ValidProcessedMeasurement.UVA,
        ValidProcessedMeasurement.UVB, ValidProcessedMeasurement.SPL,
        ValidProcessedMeasurement.humidity, ValidProcessedMeasurement.pressure,
        ValidProcessedMeasurement.temperature, ValidProcessedMeasurement.lat,
        ValidProcessedMeasurement.lon,
        ValidProcessedMeasurement.timestamp_zone)

    if (isinstance(initial_timestamp, str) is not True):
        raise TypeError("Initial timestamp" + str(initial_timestamp) +
                        " should be string")

    if (isinstance(final_timestamp, str) is not True):
        raise TypeError("Last timestamp" + str(final_timestamp) +
                        " should be string")

    initial_timestamp = datetime.datetime.strptime(initial_timestamp,
                                                   date_format)
    final_timestamp = datetime.datetime.strptime(final_timestamp, date_format)
    installation_id = same_helper.getInstallationId(qhawax_id)

    if (installation_id is not None):
        valid_processed_measurements = session.query(*sensors).\
                                       filter(ValidProcessedMeasurement.qhawax_installation_id == int(installation_id)). \
                                       filter(ValidProcessedMeasurement.timestamp_zone >= initial_timestamp). \
                                       filter(ValidProcessedMeasurement.timestamp_zone <= final_timestamp). \
                                       order_by(ValidProcessedMeasurement.timestamp_zone).all()
        if (valid_processed_measurements != []):
            return [
                measurement._asdict()
                for measurement in valid_processed_measurements
            ]
        return []
    return None
Esempio n. 8
0
def storeValidProcessedDataInDB(data, qhawax_id):
    """
    Helper Processed Measurement function to insert Valid Processed Data
    """

    if(isinstance(data, dict) is not True):
        raise TypeError("Valid Processed variable "+str(data)+" should be Json")
    
    installation_id = same_helper.getInstallationId(qhawax_id)
    if(installation_id!=None):
        valid_data = {'timestamp': data['timestamp'],'CO': data['CO'],'CO_ug_m3': data['CO_ug_m3'], 
                      'H2S': data['H2S'],'H2S_ug_m3': data['H2S_ug_m3'],'SO2': data['SO2'],
                      'SO2_ug_m3': data['SO2_ug_m3'],'NO2': data['NO2'],'NO2_ug_m3': data['NO2_ug_m3'],
                      'O3': data['O3'],'O3_ug_m3': data['O3_ug_m3'],'PM25': data['PM25'],
                      'lat':data['lat'],'lon':data['lon'],'PM1': data['PM1'],'PM10': data['PM10'],
                      'UV': data['UV'],'UVA': data['UVA'],'UVB': data['UVB'],'SPL': data['spl'],
                      'humidity': data['humidity'],'pressure': data['pressure'],
                      'temperature': data['temperature'],'timestamp_zone': data['timestamp_zone']}
        valid_processed_measurement = ValidProcessedMeasurement(**valid_data, qhawax_installation_id=installation_id)
        session.add(valid_processed_measurement)
        session.commit()
def storeValidProcessedDataMobileInDB(data, qhawax_id, product_id):
    """Helper Processed Measurement function to insert Valid Processed Data"""
    installation_id = same_helper.getInstallationId(qhawax_id)
    if installation_id != None:
        valid_data = {
            "timestamp": data["timestamp"],
            "CO": data["CO"],
            "CO_ug_m3": data["CO_ug_m3"],
            "H2S": data["H2S"],
            "H2S_ug_m3": data["H2S_ug_m3"],
            "SO2": data["SO2"],
            "SO2_ug_m3": data["SO2_ug_m3"],
            "NO2": data["NO2"],
            "NO2_ug_m3": data["NO2_ug_m3"],
            "O3": data["O3"],
            "O3_ug_m3": data["O3_ug_m3"],
            "PM25": data["PM25"],
            "lat": data["lat"],
            "lon": data["lon"],
            "PM1": data["PM1"],
            "PM10": data["PM10"],
            "UV": data["UV"],
            "UVA": data["UVA"],
            "UVB": data["UVB"],
            "SPL": data["spl"],
            "humidity": data["humidity"],
            "pressure": data["pressure"],
            "temperature": data["temperature"],
            "timestamp_zone": data["timestamp_zone"],
            "I_temperature": data["I_temperature"],
            "VOC": data["VOC"],
            "CO2": data["CO2"],
        }
        valid_processed_measurement = ValidProcessedMeasurement(
            **valid_data, qhawax_installation_id=installation_id
        )
        session.add(valid_processed_measurement)
        session.commit()
 def test_get_installation_valid(self):
     self.assertAlmostEqual(same_helper.getInstallationId(307), 327)
     self.assertAlmostEqual(same_helper.getInstallationId(100), None)