def get_PV_generated(start, end, house_ID, pv_model, path_to_data_folder=os.path.join('.', 'data'), max_power_kw=None): # todo: efficiency. If we still have to take into account the efficiency it has to be done in the method # PVModel.get_solar_radiation() because otherwise the max_power_kw restriction would be too strong """ start end house_ID: vin """ # pv_model="PVMODEL_SPV170" # pv_model is set without default to avoid errors logging.debug("pv_model: ".format(pv_model)) assert start.year >= 2017, "solar model is defined starting from Jan 2017" assert end.year >= 2017 if house_ID not in pv_cache: user_id = get_user_id(house_ID, path_to_data_folder) # get area factor area_factor = get_area_factor_for_user(user_id) if user_id is None: # this means we don't have a house for this user raise ValueError( "No vin - myway user_id matching available for {}".format( user_id)) pv = PVModel(str(user_id), scenario=pv_model, path_to_data_folder=path_to_data_folder, area_factor=area_factor) pv_cache[house_ID] = pv pv = pv_cache[house_ID] start_datetime = datetime.datetime.strptime(str(start), "%Y-%m-%d %H:%M:%S") end_datetime = datetime.datetime.strptime(str(end), "%Y-%m-%d %H:%M:%S") generated_energy = pv.get_solar_radiation(scenario=pv_model, startts=start_datetime, endts=end_datetime, max_power_kw=max_power_kw) generated_KWh = generated_energy / 1000 return generated_KWh
def get_kwp(df): all_vins = df.index.tolist() for vin in all_vins: user_id = get_user_id(vin) area_factor = get_area_factor_for_user(user_id) warnings.warn("using fixed pv model") pv = PVModel(user_id, area_factor=area_factor, scenario='PVMODEL_SPV170') df.loc[vin, 'area'] = pv.area df.loc[vin, 'user'] = int(user_id) df.loc[vin, 'max_kW'] = pv.max_W / 1000 pvdict = pv.data['PVMODEL_SPV170'] to_pop_list = ['year_Wh_dc', 'year_Wh_ac', 'year_inv_eff', 'max_W'] for to_pop in to_pop_list: pvdict.pop(to_pop) df.loc[vin, 'max_gen_kw'] = max(list(pvdict.values())) * 2 / 1000 * area_factor return df
def test_get_user_id_in_first_line_of_table(self): user_id = str(get_user_id("004c4ba86e77149b9bfe2dfebb4057a4")) print(user_id) self.assertTrue(user_id == "1665")
def test_user_with_duplicate_entries(self): user_id = str(get_user_id("00000dcb1a3963f3ae1d91cd9755b2d0")) print(user_id) self.assertTrue(user_id == "1598")