-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi_agent.py
120 lines (105 loc) · 4.79 KB
/
api_agent.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from clean_api import connect, post_disconnect_request, get_request
from typing import Optional, List
from framework import AssetSet, MarketInfo, Bid, EnergySystemInfo, ALL_STRATEGIES
from termcolor import colored
import esdl
import logging
logger = logging.getLogger()
CREDENTIALS = {
"AGENT_WIR_PV": "72D6AF61-8C0D-4897-B83E-3C6A709EA016",
"AGENT_VOLT_EL": "8169C61E-0B41-40C3-81B2-BC53B513B2B1",
"AGENT_VLEN_GD": "4242421B-806A-41D5-940B-8CE03B5CD31B",
"AGENT_SFIELD_PV": "68C58B9A-BBAF-4044-B81C-807160BF00B1",
"AGENT_S4E_BA": "FA21AAD8-7753-4D3D-B354-E7D5C95A27C7",
"AGENT_RWE": "DA89F2D8-24A0-4F00-9702-DB8DD48F9979",
"AGENT_PPG_ED": "D29C5CD1-C8EB-4365-88D9-1F83055FEAF4",
"AGENT_OCIN_GD": "FCD43E35-E242-41B4-BCFC-D15CA7BD0F5F",
"AGENT_NOB": "060406A8-E4BC-45CD-8EFD-6C3A7865B288",
"AGENT_LWD_PV": "9CC4D011-5EC7-40C5-8D98-6C1B5776279E",
"AGENT_LWD_HS2": "AF575444-5038-4C94-AADD-BABA449D8F87",
"AGENT_LWD_HS1": "7D0E3AFF-F418-4D20-B1A4-11C99E46032B",
"AGENT_LWD_HP": "5F268415-9289-4873-BA50-1E83A2C81FD0",
"AGENT_LWD_HN": "302D467E-B606-4F81-97BA-F92F6256BC1B",
"AGENT_LWD_HDN": "D3407CA8-45B4-4317-AE76-A5E086CFB39B",
"AGENT_LWD_HD": "D5A59A04-20CA-41FA-A502-0F2ABE110F3F",
"AGENT_LWD_GS": "EF9D8E77-C359-4528-ACEA-258399F86B55",
"AGENT_LWD_GN": "91A00693-201E-4EC5-89B2-B815478D84E7",
"AGENT_LWD_GD": "963A6889-257E-4D0A-AEA8-A220ED365273",
"AGENT_LWD_FC": "A871A41D-D25A-4317-B9B6-0A43D1F8A2B3",
"AGENT_LWD_EN": "0AFAD0DC-13D5-4A3C-8919-776E795BB0B4",
"AGENT_LWD_EL": "AE2C7B02-1281-4D4E-AC0E-38EDEB6649D8",
"AGENT_LWD_ED2": "F859F270-9EC4-49CB-BA9B-2590FBCA15D8",
"AGENT_LWD_ED1": "CA78FF84-54F5-4FAD-8929-60219DF4A047",
"AGENT_LWD_EB": "AEC70B6E-5F3C-4F27-A300-26A6ADFF7D3C",
"AGENT_LWD_BA": "8DF96610-6DE5-413D-A4A9-25FA8973EE8E",
"AGENT_LWD_AEN": "59DDE568-BF3D-4FE6-B6E6-AA58C1D2FA99",
"AGENT_LHVE_EL": "3F3D3967-0C99-4305-95BF-6D125F3D8811",
"AGENT_HYCC_EL": "85B4D440-DD1E-408C-9D22-93559A2CFBB0",
"AGENT_GSP_2": "69D3FC44-29A7-43E2-9D0F-65F574ADC8B1",
"AGENT_GSP_1": "A7F1DFDD-DF39-4FFE-B46A-3B6353D0AEC4",
"AGENT_GROWW_WT": "DBE3E66E-93F7-4329-8C31-98449794F75F",
"AGENT_GN": "A9A6C4AB-1E98-4946-9B6A-A11BA0BA8C61",
"AGENT_GIGA_BA": "4AA169CE-05AF-4DC3-8A8B-D601821F1CDE",
"AGENT_GEMI_WT": "CB4ACF2F-0CD7-4AEA-BEDC-B0B50C7A5250",
"AGENT_GASU_GS": "5989D156-AB35-4AB8-AEC0-0E4122638C72",
"AGENT_ESD_ED": "319035D9-035A-4AA0-902C-DB9B938BCC1B",
"AGENT_ENG_EL": "14A9F905-3B73-49DF-9474-B3EB3168FADB",
"AGENT_ENE": "FD773A6F-393A-488E-A826-C4E2134C995C",
"AGENT_DOWC_ED": "9F5C9F89-7997-42F5-9C68-AAD69C0D943D",
"AGENT_BIOLNG": "0268CADA-7ED6-4275-82B7-1600C81C5AC6",
"AGENT_BERMG": "7063E512-AE38-428F-B75C-E85EB277A9C9",
"AGENT_DSO_E_GSP": "9CAAE8D6-38C9-49F9-8188-7F46E718024A",
"AGENT_DSO_G_GSP": "361B98D8-A5F3-467B-B5B6-960D7B448AD9",
"AGENT_DSO_H_GSP": "21407C01-D5A7-4A53-A1F0-6E727731CF2A",
"AGENT_DSO_E_ECL": "A81A69C2-1425-4658-BD4F-86E644DC4C1C",
"AGENT_DSO_G_ECL": "62E6826C-209F-4347-9920-D92CA3986E50",
"AGENT_DSO_H_ECL": "3918E768-D2D4-4220-BDD0-13A661EE0688"
}
TEST_AGENTS = [
# "AGENT_GIGA_BA",
"AGENT_OCIN_GD",
"AGENT_VLEN_GD",
"AGENT_GASU_GS",
"AGENT_ENE",
"AGENT_WIR_PV",
"AGENT_SFIELD_PV",
"AGENT_GSP_1",
"AGENT_NOB",
"AGENT_GEMI_WT",
"AGENT_GSP_2",
"AGENT_LWD_ED2",
"AGENT_BIOLNG",
"AGENT_BERMG",
"AGENT_LWD_PV",
"AGENT_LWD_HD",
"AGENT_LWD_HP",
"AGENT_LWD_EB",
"AGENT_LWD_GS",
"AGENT_LWD_HDN",
"AGENT_LWD_AEN",
"AGENT_LWD_ED1"
]
class APIAgent:
def __init__(self, username):
self.username = username
self.password = CREDENTIALS[username]
def connect(self, write_esdl: bool = False):
if connect(self.username, self.password):
logger.info(f"Agent {self.username} {colored('connected', 'green')}")
else:
logger.info(f"Agent {self.username} {colored('could not connect', 'red')}")
if write_esdl:
data = get_request('readActualTestrun', {})
with open('run.esdl', 'w') as file:
file.write(data['EsdlFile'])
def disconnect(self):
post_disconnect_request()
def asset_set(self) -> AssetSet:
for party in esdl.Party.allInstances():
if party.shortName == self.username:
return AssetSet(list(party.owns), self.username)
raise Exception(f"Couldn't find a Party with shortname={self.username} in ESDL")
def get_bids(self, market_info: MarketInfo, esi: EnergySystemInfo) -> Optional[List[Bid]]:
return ALL_STRATEGIES[self.username](self.asset_set(), market_info, esi)
def get_agents() -> List[APIAgent]:
return [APIAgent(username) for username in TEST_AGENTS]