44import logging
55import hashlib
66
7- logger = logging .getLogger (__name__ )
8-
97from voluptuous import Optional
108
9+ logger = logging .getLogger (__name__ )
10+
1111BASEURL = "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