def pv_fixture():
    pv = PVAppliance()
    pv.area = FakeArea()
    pv.owner = FakeOwnerWithStrategy(FakePVStrategy())
    pv.event_activate()
    return pv
Exemple #2
0
def appliance_fixture():
    child1 = Area('child1', appliance=PVAppliance(initially_on=False))
    child2 = Area('child2', appliance=PVAppliance())
    return area_to_string(Area('parent', [child1, child2]))
Exemple #3
0
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
Exemple #4
0
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'
Exemple #5
0
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))
Exemple #6
0
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