Пример #1
0
def checkNumberValues(data_json):
    """ Helper Processed Measurement function to check number values """
    data_json = exceptions.checkDictionaryVariable(data_json)
    for i in range(len(array_ppb)):
        if(data_json[array_ppb[i]]=="Nan"):
            data_json[array_ppb[i]] = 0
    return data_json
Пример #2
0
def gasConversionPPBtoMG(data_json,season):
    data_json = exceptions.checkDictionaryVariable(data_json)
    season = exceptions.checkListVariable(season)

    data={'ID': data_json['ID'],'CO': data_json['CO'], 'CO_ug_m3': None,'H2S': data_json['H2S'],
          'H2S_ug_m3': None,'NO2': data_json['NO2'],'NO2_ug_m3': None,'O3': data_json['O3'],
          'O3_ug_m3': None, 'PM1': data_json['PM1'],'PM10': data_json['PM10'],'PM25': data_json['PM25'],
          'SO2': data_json['SO2'],'SO2_ug_m3': None,'spl': data_json['spl'],'UV': data_json['UV'],
          'UVA': data_json['UVA'],'UVB': data_json['UVB'],'humidity': data_json['humidity'],
          'lat':data_json['lat'],'lon':data_json['lon'],'pressure': data_json['pressure'],
          'temperature': data_json['temperature'],'timestamp': data_json['timestamp'],
          'timestamp_zone': data_json['timestamp_zone'],'VOC': data_json['VOC'] if ('VOC' in data_json) else None,
          'CO2': data_json['CO2'] if ('CO2' in data_json) else None,
          'I_temperature': data_json['I_temperature'] if ('I_temperature' in data_json) else None}

    for key in data:
        if(key in pollutant):
            if((type(data[key]) is float) or (type(data[key]) is int)):
                if(key=='SO2'):
                    data['SO2_ug_m3']=data[key]*season[0]
                elif(key=='NO2'):
                    data['NO2_ug_m3']=data[key]*season[1]
                elif(key=='O3'):
                    data['O3_ug_m3']=data[key]*season[2]
                elif(key=='CO'):
                    data['CO_ug_m3']=data[key]*season[3]
                elif(key=='H2S'):
                    data['H2S_ug_m3']=data[key]*season[4]
    return data
Пример #3
0
def setNoneStringElements(data_json):
    string_fields = ['ID','timestamp_zone','timestamp','zone']
    data_json = exceptions.checkDictionaryVariable(data_json)
    for key in data_json:
        if((type(data_json[key]) is str) and (key not in string_fields)):
            data_json[key]=None
    return data_json
Пример #4
0
def validAndBeautyJsonValidProcessed(data_json,product_id,inca_value):
    """ Helper function to valid json Valid Processed table """
    data_json = exceptions.checkDictionaryVariable(data_json)
    product_id = exceptions.checkStringVariable(product_id)
    storeValidProcessedDataInDB(data_json,product_id)
    if(inca_value==0.0):
      post_business_helper.updateMainIncaQhawaxTable(1,product_id)
      post_business_helper.updateMainIncaQhawaxInstallationTable(1,product_id)
Пример #5
0
def storeProcessedDataInDB(data):
    """ Helper Processed Measurement function to store Processed Data """
    data = exceptions.checkDictionaryVariable(data)
    qhawax_name = data.pop('ID', None)
    qhawax_id = same_helper.getQhawaxID(qhawax_name)
    processed_measurement = ProcessedMeasurement(**data, qhawax_id=qhawax_id)
    session.add(processed_measurement)
    session.commit()
Пример #6
0
def validTimeJsonProcessed(data_json):
    data_json = exceptions.checkDictionaryVariable(data_json)
    datetime_array = data_json['timestamp'].split() 
    measurement_year = datetime.datetime.strptime(datetime_array[0], '%Y-%m-%d').year
    if(measurement_year > datetime.date.today().year):
        data_json['timestamp'] = (datetime.datetime.now(dateutil.tz.tzutc())-datetime.timedelta(hours=5)).strftime("%Y-%m-%d %H:%M:%S")
        data_json['timestamp_zone'] = (datetime.datetime.now(dateutil.tz.tzutc())).strftime("%Y-%m-%d %H:%M:%S")
    return data_json
Пример #7
0
def validTimeOfValidProcessed(time_valid,time_type, last_time_turn_on,data_json,product_id,inca_value):
    """ Helper function to valid time of Valid Processed table """
    time_valid = exceptions.checkIntegerVariable(time_valid)
    time_type = exceptions.checkStringVariable(time_type)
    data_json = exceptions.checkDictionaryVariable(data_json)
    product_id = exceptions.checkStringVariable(product_id)
    aditional_time = datetime.timedelta(hours=time_valid) if (time_type=="hour") else datetime.timedelta(minutes=time_valid)
    if(last_time_turn_on + aditional_time < datetime.datetime.now(dateutil.tz.tzutc())):
      validAndBeautyJsonValidProcessed(data_json,product_id,inca_value)
Пример #8
0
def storeGasIncaInDB(data):
    """ Helper function to record GAS INCA measurement"""
    data = exceptions.checkDictionaryVariable(data)
    gas_inca_data = {'CO': data['CO'],'H2S': data['H2S'],'SO2': data['SO2'],'NO2': data['NO2'],'timestamp_zone':data['timestamp_zone'],
                     'O3': data['O3'],'PM25': data['PM25'],'PM10': data['PM10'],'main_inca':data['main_inca']}
    qhawax_name = data.pop('ID', None)
    qhawax_id = same_helper.getQhawaxID(qhawax_name)
    gas_inca_processed = GasInca(**gas_inca_data, qhawax_id=qhawax_id)
    session.add(gas_inca_processed)
    session.commit()
Пример #9
0
def formatTelemetryForStorage(telemetry):
    telemetry = exceptions.checkDictionaryVariable(telemetry)
    rcout= telemetry['rcout'] if telemetry['rcout'] is not None else [-1,-1,-1,-1,-1,-1,-1,-1]
    compass1= telemetry['compass1'] if telemetry['compass1'] is not None else [-1,-1,-1]
    compass2= telemetry['compass2'] if telemetry['compass2'] is not None else [-1,-1,-1]
    gps= telemetry['gps'] if telemetry['gps'] is not None else {"satellites":-1,"fix_type":-1}
    vibrations= telemetry['vibrations'] if telemetry['vibrations'] is not None else [-1,-1,-1]

    return {
        'airspeed': telemetry['airspeed'], # obligatorio
        'alt': telemetry['alt'], # obligatorio
        'battery_perc': telemetry['level'],  # obligatorio
        'dist_home': telemetry['dist_home'], # obligatorio
        'compass1_x': compass1[0], # obligatorio
        'compass1_y': compass1[1], # obligatorio
        'compass1_z': compass1[2], # obligatorio
        'compass2_x': compass2[0], # obligatorio
        'compass2_y': compass2[1], # obligatorio
        'compass2_z': compass2[2], # obligatorio
        'compass_variance': telemetry['ekf_status']['compass_variance'] if telemetry['ekf_status'] is not None else -1, # obligatorio
        'current': telemetry['current'], # obligatorio
        'fix_type': telemetry['fix_type'], # obligatorio
        'flight_mode': telemetry['flight_mode'], # obligatorio
        'gps_sats': gps['satellites'], # obligatorio
        'gps_fix': gps['fix_type'], # obligatorio
        'gps2_sats': telemetry['gps2']['satellites'] if telemetry['gps2'] is not None else -1, # obligatorio
        'gps2_fix': telemetry['gps2']['fix_type'] if telemetry['gps2'] is not None else -1, # obligatorio
        'irlock_x': telemetry['irlock'][0] if telemetry['irlock'] is not None else -1, # obligatorio
        'irlock_y': telemetry['irlock'][1] if telemetry['irlock'] is not None else -1, # obligatorio
        'irlock_status': telemetry['IRLOCK_status'], # obligatorio
        'lat': telemetry['lat'], # obligatorio
        'lon': telemetry['lon'], # obligatorio
        'num_gps': telemetry['num_gps'], # obligatorio
        'pos_horiz_variance': telemetry['ekf_status']['pos_horiz_variance'] if telemetry['ekf_status'] is not None else -1, # obligatorio
        'pos_vert_variance': telemetry['ekf_status']['pos_vert_variance'] if telemetry['ekf_status'] is not None else -1, # obligatorio
        'rcout1': rcout[0], # obligatorio
        'rcout2': rcout[1], # obligatorio
        'rcout3': rcout[2], # obligatorio
        'rcout4': rcout[3], # obligatorio
        'rcout5': rcout[4], # obligatorio
        'rcout6': rcout[5], # obligatorio
        'rcout7': rcout[6], # obligatorio
        'rcout8': rcout[7], # obligatorio
        'sonar_dist': telemetry['sonar_dist'], # obligatorio
        'throttle': telemetry['throttle'], # obligatorio
        'vibrations_x': vibrations[0], # obligatorio
        'vibrations_y': vibrations[1], # obligatorio
        'vibrations_z': vibrations[2], # obligatorio
        'voltage': telemetry['voltage'], # obligatorio
        'velocity_variance': telemetry['ekf_status']['velocity_variance'] if telemetry['ekf_status'] is not None else -1, # obligatorio
        'terrain_alt_variance': telemetry['ekf_status']['terrain_alt_variance'] if telemetry['ekf_status'] is not None else -1, # obligatorio
        'waypoint': telemetry['waypoint'], # obligatorio
        'yaw': telemetry['yaw'] # obligatorio
    }
Пример #10
0
def validAndBeautyJsonProcessed(data_json):
    arr_season=[2.62,1.88,1.96,1.15,1.39] #Arreglo de 25C
    data_json = exceptions.checkDictionaryVariable(data_json)
    
    if  'timestamp_zone' not in data_json:
        data_json["timestamp_zone"] = data_json["timestamp"]
    data_json = gasConversionPPBtoMG(data_json, arr_season)
    #Convertir los pascales a hectopascales
    data_json['pressure']= float(data_json['pressure'])*0.01 if (data_json['pressure']!="Nan") else "Nan"
    data_json = roundUpThree(data_json)
    return data_json
Пример #11
0
def storeAirQualityDataInDB(data):
    """ Helper function to record Air Quality measurement """
    data = exceptions.checkDictionaryVariable(data)
    qhawax_name = data.pop('ID', None)
    qhawax_id = same_helper.getQhawaxID(qhawax_name)
    if(qhawax_id!=None):
        air_quality_data = {'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_ug_m3': data['O3_ug_m3'], 'PM25': data['PM25'], 'PM10': data['PM10'], 'O3': data['O3'],
                          'lat': data['lat'],'lon': data['lon'], 'alt': data['alt'], 'uv':data['UV'],'spl':data['SPL'], 
                          'temperature':data['temperature'],'timestamp_zone': data['timestamp_zone'],
                          'I_temperature':data['I_temperature'],'humidity':data['humidity'],'pressure':data['pressure'],}
        air_quality_measurement = AirQualityMeasurement(**air_quality_data, qhawax_id=qhawax_id)
        session.add(air_quality_measurement)
        session.commit()
Пример #12
0
def storeLogs(telemetry, drone_name):
    global drone_elapsed_time, drone_telemetry, drone_storage
    telemetry = exceptions.checkDictionaryVariable(telemetry)
    drone_name = exceptions.checkStringVariable(drone_name)
    if drone_elapsed_time is None:
        drone_elapsed_time = time.time()

    if drone_name not in drone_storage:
        qhawax_id = same_helper.getQhawaxID(drone_name) if same_helper.getQhawaxID(drone_name) is not None else 'qH001'
        drone_storage[drone_name] = qhawax_id

    if time.time() - drone_elapsed_time > MAX_SECONDS_DATA_STORAGE:
        drone_telemetry = formatTelemetryForStorage(telemetry)
        drone_telemetry['timestamp'] = datetime.datetime.now(dateutil.tz.tzutc())
        drone_telemetry['qhawax_id'] = drone_storage[drone_name]
        drone_telemetry = DroneTelemetry(**drone_telemetry)
        session.add(drone_telemetry)
        session.commit()
        drone_elapsed_time = time.time() 
Пример #13
0
def areFieldsValid(data):
    data = exceptions.checkDictionaryVariable(data)
    for i in range(len(array_installation)):
        if(data[array_installation[i]]=='' or data[array_installation[i]]==None):
            return False
    return True
Пример #14
0
def roundUpThree(data_json):
    data_json = exceptions.checkDictionaryVariable(data_json)
    for i in range(len(array_ug_m3)):
        if((type(data_json[array_ug_m3[i]]) is float) or (type(data_json[array_ug_m3[i]]) is int)):
            data_json[array_ug_m3[i]] = round(data_json[array_ug_m3[i]],3)
    return data_json