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