Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 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")
Exemplo n.º 4
0
 def test_user_with_duplicate_entries(self):
     user_id = str(get_user_id("00000dcb1a3963f3ae1d91cd9755b2d0"))
     print(user_id)
     self.assertTrue(user_id == "1598")