def pv_fixture(): pv = PVAppliance() pv.area = FakeArea() pv.owner = FakeOwnerWithStrategy(FakePVStrategy()) pv.event_activate() return pv
def appliance_fixture(): child1 = Area('child1', appliance=PVAppliance(initially_on=False)) child2 = Area('child2', appliance=PVAppliance()) return area_to_string(Area('parent', [child1, child2]))
def test_strategy_appliance_roundtrip(): area = Area("child", [], None, PVStrategy(), PVAppliance()) recovered = area_from_string(area_to_string(area)) assert type(recovered.strategy) is PVStrategy assert type(recovered.appliance) is PVAppliance
def test_encode_strategy_appliance(): area = Area("child", [], None, PVStrategy(), PVAppliance()) area_dict = json.loads(area_to_string(area)) assert 'children' not in area_dict assert area_dict['strategy']['type'] == 'PVStrategy' assert area_dict['appliance']['type'] == 'PVAppliance'
def budget_keeper_fixture(): child = Area('child', appliance=PVAppliance()) budget_keeper = BudgetKeeper(budget=100.0, days_per_period=30) return area_to_string(Area('parent', [child], budget_keeper=budget_keeper))
def get_setup(config): ConstSettings.GeneralSettings.DEFAULT_UPDATE_INTERVAL = 3 ConstSettings.IAASettings.MARKET_TYPE = 2 ConstSettings.GeneralSettings.DEFAULT_MARKET_MAKER_RATE = 30 Houses_initial_buying_rate = 10 PV_initial = 20 PV_final = 4 area = Area('grid', [ Area('Community', [ Area('house-1-s', [ Area('h1-load-s', strategy=LoadProfileExternalStrategy( daily_load_profile=load1, initial_buying_rate=Houses_initial_buying_rate, use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h1-pv-s', strategy=PVUserProfileExternalStrategy( power_profile=pv1, initial_selling_rate=PV_initial, final_selling_rate=PV_final), appliance=PVAppliance()), Area('h1-storage-s', strategy=StorageExternalStrategy( initial_soc=50, min_allowed_soc=10, battery_capacity_kWh=5, max_abs_battery_power_kW=4), appliance=SwitchableAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, external_connection_available=True), Area( 'house-2', [ Area('h2-load', strategy=DefinedLoadStrategy( daily_load_profile=load2, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h2-pv', strategy=PVUserProfileStrategy( power_profile=pv2, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), Area('h2-storage', strategy=StorageStrategy(initial_soc=50, min_allowed_soc=10, battery_capacity_kWh=5, max_abs_battery_power_kW=4, initial_buying_rate=12, final_buying_rate=15, initial_selling_rate=29, final_selling_rate=15.01), appliance=SwitchableAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-3', [ Area('h3-load', strategy=DefinedLoadStrategy( daily_load_profile=load3, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h3-pv', strategy=PVUserProfileStrategy( power_profile=pv3, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-4', [ Area('h4-load', strategy=DefinedLoadStrategy( daily_load_profile=load4, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h4-pv', strategy=PVUserProfileStrategy( power_profile=pv4, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-5', [ Area('h5-load', strategy=DefinedLoadStrategy( daily_load_profile=load5, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-6', [ Area('h6-load', strategy=DefinedLoadStrategy( daily_load_profile=load6, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h6-pv', strategy=PVUserProfileStrategy( power_profile=pv6, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-7', [ Area('h7-load', strategy=DefinedLoadStrategy( daily_load_profile=load7, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h7-pv', strategy=PVUserProfileStrategy( power_profile=pv7, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-8', [ Area('h8-load', strategy=DefinedLoadStrategy( daily_load_profile=load8, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h8-pv', strategy=PVUserProfileStrategy( power_profile=pv8, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-9', [ Area('h9-load', strategy=DefinedLoadStrategy( daily_load_profile=load9, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h9-pv', strategy=PVUserProfileStrategy( power_profile=pv9, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-10', [ Area('h10-load', strategy=DefinedLoadStrategy( daily_load_profile=load10, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h10-pv', strategy=PVUserProfileStrategy( power_profile=pv10, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), Area( 'house-11', [ Area('h11-load', strategy=DefinedLoadStrategy( daily_load_profile=load11, initial_buying_rate=Houses_initial_buying_rate * round((random() - 0.5) * VARIANCE_RATES + 1, 2), use_market_maker_rate=True), appliance=SwitchableAppliance()), Area('h11-pv', strategy=PVUserProfileStrategy( power_profile=pv11, initial_selling_rate=PV_initial * round( (random() - 0.5) * VARIANCE_RATES + 1, 2), final_selling_rate=PV_final), appliance=PVAppliance()), ], grid_fee_percentage=0, grid_fee_constant=0, ), ], grid_fee_percentage=0, grid_fee_constant=0, external_connection_available=True), Area('Feed-in tariff', strategy=LoadHoursStrategy(avg_power_W=100000000, hrs_per_day=24, hrs_of_day=list(range(0, 24)), initial_buying_rate=11, final_buying_rate=11), appliance=SwitchableAppliance()), Area('Market Maker', strategy=MarketMakerStrategy( energy_rate=ConstSettings.GeneralSettings. DEFAULT_MARKET_MAKER_RATE, grid_connected=True), appliance=SimpleAppliance()), ], config=config, grid_fee_percentage=0, grid_fee_constant=0, external_connection_available=False) return area