Skip to content

Commit 3a8c408

Browse files
Merge pull request #15 from Poshy163/main
Various fixes to support new API calls (VitaPower and Wallbox)
2 parents 8be675c + a579954 commit 3a8c408

File tree

4 files changed

+236
-96
lines changed

4 files changed

+236
-96
lines changed

alphaess/alphaess.py

Lines changed: 141 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
import logging
55
import hashlib
66

7-
logger = logging.getLogger(__name__)
8-
97
from voluptuous import Optional
108

9+
logger = logging.getLogger(__name__)
10+
1111
BASEURL = "https://openapi.alphaess.com/api"
1212

1313

@@ -93,7 +93,7 @@ async def getOneDayPowerBySn(self, sysSn, queryDate) -> Optional(list):
9393
logger.error(f"Error: {e} when calling {resource}")
9494

9595
async def getSumDataForCustomer(self, sysSn) -> Optional(list):
96-
""""According SN to get System Summary data"""
96+
"""According SN to get System Summary data"""
9797
try:
9898
resource = f"{BASEURL}/getSumDataForCustomer?sysSn={sysSn}"
9999

@@ -145,6 +145,127 @@ async def getDisChargeConfigInfo(self, sysSn) -> Optional(list):
145145
except Exception as e:
146146
logger.error(f"Error: {e} when calling {resource}")
147147

148+
async def getEvChargerConfigList(self, sysSn) -> Optional(list):
149+
"""According to SN get Ev Charger Config List"""
150+
try:
151+
resource = f"{BASEURL}/getEvChargerConfigList?sysSn={sysSn}"
152+
153+
logger.debug(f"Trying to call {resource}")
154+
155+
return await self.api_get(resource)
156+
157+
except Exception as e:
158+
logger.error(f"Error: {e} when calling {resource}")
159+
160+
async def setEvChargerCurrentsBySn(self, sysSn, currentsetting) -> Optional(list):
161+
"""According to SN set Ev Charger Currents"""
162+
try:
163+
resource = f"{BASEURL}/setEvChargerCurrentsBySn"
164+
165+
settings = {
166+
"sysSn": sysSn,
167+
"currentsetting": currentsetting
168+
}
169+
170+
logger.debug(f"Trying to call {resource} with settings {settings}")
171+
172+
return await self.api_post(resource, settings)
173+
174+
except Exception as e:
175+
logger.error(f"Error: {e} when calling {resource}")
176+
177+
async def getEvChargerCurrentsBySn(self, sysSn) -> Optional(list):
178+
"""According to SN get Ev Charger Currents"""
179+
try:
180+
resource = f"{BASEURL}/getEvChargerCurrentsBySn?sysSn={sysSn}"
181+
182+
logger.debug(f"Trying to call {resource}")
183+
184+
return await self.api_get(resource)
185+
186+
except Exception as e:
187+
logger.error(f"Error: {e} when calling {resource}")
188+
189+
async def getEvChargerStatusBySn(self, sysSn, evchargerSn) -> Optional(list):
190+
"""According to SN get Ev Charger Status"""
191+
try:
192+
resource = f"{BASEURL}/getEvChargerStatusBySn?sysSn={sysSn}&evchargerSn={evchargerSn}"
193+
194+
logger.debug(f"Trying to call {resource}")
195+
196+
return await self.api_get(resource)
197+
198+
except Exception as e:
199+
logger.error(f"Error: {e} when calling {resource}")
200+
201+
async def remoteControlEvCharger(self, sysSn, evchargerSn, controlMode) -> Optional(dict):
202+
"""According SN to Remote Control Ev Charger"""
203+
try:
204+
resource = f"{BASEURL}/remoteControlEvCharger"
205+
206+
settings = {
207+
"sysSn": sysSn,
208+
"evchargerSn": evchargerSn,
209+
"controlMode": controlMode
210+
}
211+
212+
logger.debug(f"Trying to call {resource} with settings {settings}")
213+
214+
return await self.api_post(resource, settings)
215+
216+
except Exception as e:
217+
logger.error(f"Error: {e} when calling {resource}")
218+
219+
async def bindSn(self, sysSn, code) -> Optional(dict):
220+
"""According to SN to Bind SN"""
221+
try:
222+
resource = f"{BASEURL}/bindSn"
223+
224+
settings = {
225+
"sysSn": sysSn,
226+
"code": code
227+
}
228+
229+
logger.debug(f"Trying to call {resource} with settings {settings}")
230+
231+
return await self.api_post(resource, settings)
232+
233+
except Exception as e:
234+
logger.error(f"Error: {e} when calling {resource}")
235+
236+
async def getVerificationCode(self, sysSn, checkCode) -> Optional(dict):
237+
"""According SN to Get Verification Code"""
238+
try:
239+
resource = f"{BASEURL}/getVerificationCode"
240+
241+
settings = {
242+
"sysSn": sysSn,
243+
"checkCode": checkCode
244+
}
245+
246+
logger.debug(f"Trying to call {resource} with settings {settings}")
247+
248+
return await self.api_post(resource, settings)
249+
250+
except Exception as e:
251+
logger.error(f"Error: {e} when calling {resource}")
252+
253+
async def unBindSn(self, sysSn) -> Optional(dict):
254+
"""According SN to UnBind SN"""
255+
try:
256+
resource = f"{BASEURL}/unBindSn"
257+
258+
settings = {
259+
"sysSn": sysSn
260+
}
261+
262+
logger.debug(f"Trying to call {resource} with settings {settings}")
263+
264+
return await self.api_post(resource, settings)
265+
266+
except Exception as e:
267+
logger.error(f"Error: {e} when calling {resource}")
268+
148269
async def updateChargeConfigInfo(self, sysSn, batHighCap, gridCharge, timeChae1, timeChae2, timeChaf1,
149270
timeChaf2) -> Optional(dict):
150271
"""According SN to Set charging information"""
@@ -191,8 +312,10 @@ async def updateDisChargeConfigInfo(self, sysSn, batUseCap, ctrDis, timeDise1, t
191312
except Exception as e:
192313
logger.error(f"Error: {e} when calling {resource}")
193314

194-
async def api_get(self, path, json={}) -> Optional(list):
315+
async def api_get(self, path, json=None) -> Optional(list):
195316
"""Retrieve ESS list by serial number from Alpha ESS"""
317+
if json is None:
318+
json = {}
196319
try:
197320
headers = self.__headers()
198321

@@ -218,7 +341,6 @@ async def api_get(self, path, json={}) -> Optional(list):
218341
logger.error(f"Unexpected json_response : {json_response} when calling {path}")
219342
return None
220343

221-
222344
except Exception as e:
223345
logger.error(e)
224346
raise
@@ -253,7 +375,7 @@ async def api_post(self, path, json) -> Optional(dict):
253375
logger.error(e)
254376
raise
255377

256-
async def getdata(self, get_power=False, self_delay=0) -> Optional(list):
378+
async def getdata(self, get_power=False, get_ev=False, self_delay=0) -> Optional(list):
257379
"""Get All Data For All serial numbers from Alpha ESS"""
258380
try:
259381
alldata = []
@@ -270,9 +392,22 @@ async def getdata(self, get_power=False, self_delay=0) -> Optional(list):
270392
unit['ChargeConfig'] = await self.getChargeConfigInfo(serial)
271393
await asyncio.sleep(self_delay)
272394
unit['DisChargeConfig'] = await self.getDisChargeConfigInfo(serial)
395+
await asyncio.sleep(self_delay)
273396
if get_power:
274397
await asyncio.sleep(self_delay)
275398
unit['OneDayPower'] = await self.getOneDayPowerBySn(serial, time.strftime("%Y-%m-%d"))
399+
400+
if get_ev:
401+
await asyncio.sleep(self_delay)
402+
unit['EVData'] = await self.getEvChargerConfigList(serial)
403+
await asyncio.sleep(self_delay)
404+
try:
405+
ev_serial = unit['EVData'][0].get('evchargerSn', None)
406+
unit['EVStatus'] = await self.getEvChargerStatusBySn(serial, ev_serial)
407+
unit['EVCurrent'] = await self.getEvChargerCurrentsBySn(serial)
408+
except Exception:
409+
pass
410+
276411
alldata.append(unit)
277412
logger.debug(alldata)
278413
return alldata

0 commit comments

Comments
 (0)